@pam-ai/pam-ordo-contracts 3.35.0 → 3.37.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/dist/generated.d.ts +146 -1
- package/dist/generated.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/fixtures/manifest.json +4 -0
- package/fixtures/producer-ro-status-text-command-v1.json +40 -0
- package/fixtures/ro-snooze-preference-command.json +6 -0
- package/fixtures/ro-snooze-preference-result.json +10 -0
- package/fixtures/ro-snooze-settings.json +7 -0
- package/openapi/openapi.json +251 -3
- package/package.json +1 -1
package/dist/generated.d.ts
CHANGED
|
@@ -263,6 +263,26 @@ export interface paths {
|
|
|
263
263
|
patch?: never;
|
|
264
264
|
trace?: never;
|
|
265
265
|
};
|
|
266
|
+
"/v1/inbox/ro-snooze-settings": {
|
|
267
|
+
parameters: {
|
|
268
|
+
query?: never;
|
|
269
|
+
header?: never;
|
|
270
|
+
path?: never;
|
|
271
|
+
cookie?: never;
|
|
272
|
+
};
|
|
273
|
+
/**
|
|
274
|
+
* Read the authenticated User's Repair Order auto-snooze preferences
|
|
275
|
+
* @description Returns whether Ordo snoozes the caller's owned work automatically when a Repair Order opens or closes at the selected rooftop. Values the User has never set report the product defaults: snooze on RO open, do not snooze on RO close. An auto-snooze has no scheduled return; the work comes back when the Customer writes, and a Repair Order close wakes it unless the close preference is on.
|
|
276
|
+
*/
|
|
277
|
+
get: operations["getRoSnoozeSettings"];
|
|
278
|
+
put?: never;
|
|
279
|
+
post?: never;
|
|
280
|
+
delete?: never;
|
|
281
|
+
options?: never;
|
|
282
|
+
head?: never;
|
|
283
|
+
patch?: never;
|
|
284
|
+
trace?: never;
|
|
285
|
+
};
|
|
266
286
|
"/v1/inbox/commands/create-customer": {
|
|
267
287
|
parameters: {
|
|
268
288
|
query?: never;
|
|
@@ -627,6 +647,26 @@ export interface paths {
|
|
|
627
647
|
patch?: never;
|
|
628
648
|
trace?: never;
|
|
629
649
|
};
|
|
650
|
+
"/v1/inbox/commands/set-ro-snooze-preference": {
|
|
651
|
+
parameters: {
|
|
652
|
+
query?: never;
|
|
653
|
+
header?: never;
|
|
654
|
+
path?: never;
|
|
655
|
+
cookie?: never;
|
|
656
|
+
};
|
|
657
|
+
get?: never;
|
|
658
|
+
put?: never;
|
|
659
|
+
/**
|
|
660
|
+
* Set the authenticated User's rooftop-specific Repair Order auto-snooze preferences
|
|
661
|
+
* @description Replaces both preferences for the caller at the selected rooftop. Only work the User owns when the Repair Order transition arrives is affected, and only transitions accepted after the change. Reusing an operationId with a different payload returns a conflict.
|
|
662
|
+
*/
|
|
663
|
+
post: operations["setRoSnoozePreference"];
|
|
664
|
+
delete?: never;
|
|
665
|
+
options?: never;
|
|
666
|
+
head?: never;
|
|
667
|
+
patch?: never;
|
|
668
|
+
trace?: never;
|
|
669
|
+
};
|
|
630
670
|
"/v1/inbox/commands/register-desktop-push-subscription": {
|
|
631
671
|
parameters: {
|
|
632
672
|
query?: never;
|
|
@@ -1561,6 +1601,8 @@ export interface components {
|
|
|
1561
1601
|
kind: string;
|
|
1562
1602
|
/** @description Optional terminal outcome for a call or voicemail Interaction, carried from the source record. Older calls and sources without an authoritative outcome omit it. A reader must not infer answered from absence or from the Interaction kind alone. */
|
|
1563
1603
|
callOutcome?: components["schemas"]["CallTerminalOutcomeV1"];
|
|
1604
|
+
/** @description Present only when the source marked this Interaction as sent automatically. Absent means a person wrote it or the source did not say. */
|
|
1605
|
+
automation?: components["schemas"]["InteractionAutomationV1"];
|
|
1564
1606
|
channel?: string | null;
|
|
1565
1607
|
/** @enum {string} */
|
|
1566
1608
|
direction: "INBOUND" | "OUTBOUND" | "INTERNAL";
|
|
@@ -1952,8 +1994,19 @@ export interface components {
|
|
|
1952
1994
|
recipientUserExternalId?: string;
|
|
1953
1995
|
/** @description Optional terminal telephony outcome for kind call or voicemail. Producers must not infer it from a transient ringing state or from an absent recording. Missing means outcome was not authoritatively established, not that the call was answered. Existing voicemail producers may omit it during the additive rollout. */
|
|
1954
1996
|
callOutcome?: components["schemas"]["CallTerminalOutcomeV1"];
|
|
1997
|
+
/** @description Set by the producer that generated the message automatically. Omit it for a message a person wrote, even one sent under an advisor's name. */
|
|
1998
|
+
automation?: components["schemas"]["InteractionAutomationV1"];
|
|
1955
1999
|
dynamoLocator?: components["schemas"]["ProducerDynamoLocatorV1"];
|
|
1956
2000
|
};
|
|
2001
|
+
/** @description Marks an Interaction a system sent automatically, so consumers never infer it from the body or the sender. `ro_status_text` is the Repair Order status text sent to the Customer under the advisor's name when an RO opens or is finished; Ordo auto-snoozes the owner's work on it when the owner asked for that. */
|
|
2002
|
+
InteractionAutomationV1: {
|
|
2003
|
+
/** @enum {string} */
|
|
2004
|
+
kind: "ro_status_text";
|
|
2005
|
+
/** @enum {string} */
|
|
2006
|
+
repairOrderTransition: "RO_OPENED" | "RO_CLOSED";
|
|
2007
|
+
/** @description The DMS appointment the text was about, when the producer knows it. */
|
|
2008
|
+
externalAppointmentId?: string;
|
|
2009
|
+
};
|
|
1957
2010
|
ProducerRepairOrderTransitionV1: {
|
|
1958
2011
|
/** @enum {string} */
|
|
1959
2012
|
transition: "RO_OPENED" | "RO_CLOSED";
|
|
@@ -2259,6 +2312,14 @@ export interface components {
|
|
|
2259
2312
|
/** @description Explicit User setting, or null to inherit the rooftop default. */
|
|
2260
2313
|
override: boolean | null;
|
|
2261
2314
|
};
|
|
2315
|
+
SetRoSnoozePreferenceCommand: {
|
|
2316
|
+
operationId: string;
|
|
2317
|
+
clientOrgId: string;
|
|
2318
|
+
/** @description Snooze owned work when a Repair Order opens on it. */
|
|
2319
|
+
autoSnoozeNewRo: boolean;
|
|
2320
|
+
/** @description Snooze owned open work when its Repair Order closes, and keep snoozed work snoozed instead of waking it. */
|
|
2321
|
+
autoSnoozeClosedRo: boolean;
|
|
2322
|
+
};
|
|
2262
2323
|
WebPushSubscriptionKeys: {
|
|
2263
2324
|
p256dh: string;
|
|
2264
2325
|
auth: string;
|
|
@@ -2706,6 +2767,23 @@ export interface components {
|
|
|
2706
2767
|
effectiveEnabled: boolean;
|
|
2707
2768
|
};
|
|
2708
2769
|
};
|
|
2770
|
+
RoSnoozeSettingsResponse: {
|
|
2771
|
+
data: {
|
|
2772
|
+
clientOrgId: string;
|
|
2773
|
+
autoSnoozeNewRo: boolean;
|
|
2774
|
+
autoSnoozeClosedRo: boolean;
|
|
2775
|
+
};
|
|
2776
|
+
};
|
|
2777
|
+
RoSnoozePreferenceResult: {
|
|
2778
|
+
data: {
|
|
2779
|
+
operationId: string;
|
|
2780
|
+
applied: boolean;
|
|
2781
|
+
replayed: boolean;
|
|
2782
|
+
clientOrgId: string;
|
|
2783
|
+
autoSnoozeNewRo: boolean;
|
|
2784
|
+
autoSnoozeClosedRo: boolean;
|
|
2785
|
+
};
|
|
2786
|
+
};
|
|
2709
2787
|
DesktopPushSubscriptionResult: {
|
|
2710
2788
|
data: {
|
|
2711
2789
|
operationId: string;
|
|
@@ -2831,6 +2909,16 @@ export interface components {
|
|
|
2831
2909
|
"application/json": components["schemas"]["DesktopNotificationPreferenceResult"];
|
|
2832
2910
|
};
|
|
2833
2911
|
};
|
|
2912
|
+
/** @description Applied or idempotently replayed Repair Order auto-snooze preferences. */
|
|
2913
|
+
RoSnoozePreferenceApplied: {
|
|
2914
|
+
headers: {
|
|
2915
|
+
"x-correlation-id": components["headers"]["CorrelationId"];
|
|
2916
|
+
[name: string]: unknown;
|
|
2917
|
+
};
|
|
2918
|
+
content: {
|
|
2919
|
+
"application/json": components["schemas"]["RoSnoozePreferenceResult"];
|
|
2920
|
+
};
|
|
2921
|
+
};
|
|
2834
2922
|
/** @description Registered, refreshed, or idempotently replayed browser subscription. */
|
|
2835
2923
|
DesktopPushSubscriptionRegistered: {
|
|
2836
2924
|
headers: {
|
|
@@ -3058,6 +3146,11 @@ export interface components {
|
|
|
3058
3146
|
"application/json": components["schemas"]["SetDesktopNotificationPreferenceCommand"];
|
|
3059
3147
|
};
|
|
3060
3148
|
};
|
|
3149
|
+
SetRoSnoozePreferenceCommand: {
|
|
3150
|
+
content: {
|
|
3151
|
+
"application/json": components["schemas"]["SetRoSnoozePreferenceCommand"];
|
|
3152
|
+
};
|
|
3153
|
+
};
|
|
3061
3154
|
RegisterDesktopPushSubscriptionCommand: {
|
|
3062
3155
|
content: {
|
|
3063
3156
|
"application/json": components["schemas"]["RegisterDesktopPushSubscriptionCommand"];
|
|
@@ -3526,10 +3619,13 @@ export interface operations {
|
|
|
3526
3619
|
* @description Narrow to Customers by the state of their car, using the same three values and the same meanings as the Conversation list: OPEN is a currently active repair order, CLOSED has had one and has none now, NONE never had one.
|
|
3527
3620
|
* This is what makes an omitted query answerable. "Everyone with a car in the shop right now" is a question an advisor actually has, and it is bounded by the service drive rather than by the size of the rooftop; "everyone" is not, which is why browsing without either a query or a roState is refused.
|
|
3528
3621
|
* An EMPTY ARRAY IS A 400, not an unfiltered browse. Presence is not a filter: `?roState=` names no state, so it would satisfy the at-least-one rule while asking for exactly the unbounded page that rule exists to refuse — and it is the shape a client reaches by serialising an empty selection rather than omitting the parameter, so it arrives by accident rather than by intent.
|
|
3622
|
+
* CLOSED AND NONE ARE MINE-ONLY BROWSES (since 3.36.0). They are accepted only without a query and with relationship=MINE, where the reader's own Conversations bound the answer: an advisor's book is a list somebody can open onto, and "every Customer at the rooftop who has no car in the shop" is not. The same states with EVERYONE or ALL, or alongside a query, remain a 400. A MINE browse considers at most the reader's 2,000 most recently assigned owned Conversations.
|
|
3529
3623
|
*/
|
|
3530
3624
|
roState?: ("OPEN" | "CLOSED" | "NONE")[];
|
|
3531
3625
|
/**
|
|
3532
|
-
* @description RECENT_REPAIR_ORDER puts the most
|
|
3626
|
+
* @description RECENT_REPAIR_ORDER puts the most recent repair order first, which is the order a service drive works in — the car that just arrived is the call that has not been made yet. NAME is the stable alphabetical order a search result wants.
|
|
3627
|
+
* Recency is the repair order's appointment date, then when PAM first recorded it. Not openedAt: most source systems never report one, and an order nobody can rank would sort as noise. On a MINE browse that spans several roState values, Customers with an OPEN order come first, then CLOSED by their latest order, then NONE; each group is newest first.
|
|
3628
|
+
* A BROWSE IS ONLY EVER RANKED BY RECENCY (since 3.36.0). Without a query there is no name the reader typed to put first, and the directory pages a browse in repair-order order, so sort=NAME without a query is a 400 rather than a request that is silently answered in another order.
|
|
3533
3629
|
* Defaults to NAME when a query is given and RECENT_REPAIR_ORDER when one is not, because a browse has no relevance to fall back on.
|
|
3534
3630
|
*/
|
|
3535
3631
|
sort?: "NAME" | "RECENT_REPAIR_ORDER";
|
|
@@ -3628,6 +3724,34 @@ export interface operations {
|
|
|
3628
3724
|
503: components["responses"]["ServiceUnavailable"];
|
|
3629
3725
|
};
|
|
3630
3726
|
};
|
|
3727
|
+
getRoSnoozeSettings: {
|
|
3728
|
+
parameters: {
|
|
3729
|
+
query?: never;
|
|
3730
|
+
header: {
|
|
3731
|
+
/** @description Authorized rooftop context. For commands this value must match body.clientOrgId; neither value is trusted without DASH-233 resolution. */
|
|
3732
|
+
"x-client-org-id": components["parameters"]["ClientOrgId"];
|
|
3733
|
+
};
|
|
3734
|
+
path?: never;
|
|
3735
|
+
cookie?: never;
|
|
3736
|
+
};
|
|
3737
|
+
requestBody?: never;
|
|
3738
|
+
responses: {
|
|
3739
|
+
/** @description Effective Repair Order auto-snooze preferences for the selected rooftop. */
|
|
3740
|
+
200: {
|
|
3741
|
+
headers: {
|
|
3742
|
+
"x-correlation-id": components["headers"]["CorrelationId"];
|
|
3743
|
+
[name: string]: unknown;
|
|
3744
|
+
};
|
|
3745
|
+
content: {
|
|
3746
|
+
"application/json": components["schemas"]["RoSnoozeSettingsResponse"];
|
|
3747
|
+
};
|
|
3748
|
+
};
|
|
3749
|
+
401: components["responses"]["Unauthorized"];
|
|
3750
|
+
403: components["responses"]["Forbidden"];
|
|
3751
|
+
500: components["responses"]["InternalError"];
|
|
3752
|
+
503: components["responses"]["ServiceUnavailable"];
|
|
3753
|
+
};
|
|
3754
|
+
};
|
|
3631
3755
|
createInboxCustomer: {
|
|
3632
3756
|
parameters: {
|
|
3633
3757
|
query?: never;
|
|
@@ -4080,6 +4204,27 @@ export interface operations {
|
|
|
4080
4204
|
503: components["responses"]["ServiceUnavailable"];
|
|
4081
4205
|
};
|
|
4082
4206
|
};
|
|
4207
|
+
setRoSnoozePreference: {
|
|
4208
|
+
parameters: {
|
|
4209
|
+
query?: never;
|
|
4210
|
+
header: {
|
|
4211
|
+
/** @description Authorized rooftop context. For commands this value must match body.clientOrgId; neither value is trusted without DASH-233 resolution. */
|
|
4212
|
+
"x-client-org-id": components["parameters"]["ClientOrgId"];
|
|
4213
|
+
};
|
|
4214
|
+
path?: never;
|
|
4215
|
+
cookie?: never;
|
|
4216
|
+
};
|
|
4217
|
+
requestBody: components["requestBodies"]["SetRoSnoozePreferenceCommand"];
|
|
4218
|
+
responses: {
|
|
4219
|
+
200: components["responses"]["RoSnoozePreferenceApplied"];
|
|
4220
|
+
400: components["responses"]["BadRequest"];
|
|
4221
|
+
401: components["responses"]["Unauthorized"];
|
|
4222
|
+
403: components["responses"]["Forbidden"];
|
|
4223
|
+
409: components["responses"]["Conflict"];
|
|
4224
|
+
500: components["responses"]["InternalError"];
|
|
4225
|
+
503: components["responses"]["ServiceUnavailable"];
|
|
4226
|
+
};
|
|
4227
|
+
};
|
|
4083
4228
|
registerDesktopPushSubscription: {
|
|
4084
4229
|
parameters: {
|
|
4085
4230
|
query?: never;
|