clarion-shared-types 1.0.85 → 1.0.87

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 (51) hide show
  1. package/dist/cjs/index.js +1 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/modules/partner/enums/partner-enums.js +171 -0
  4. package/dist/cjs/modules/partner/enums/partner-enums.js.map +1 -0
  5. package/dist/cjs/modules/partner/index.js +28 -0
  6. package/dist/cjs/modules/partner/index.js.map +1 -0
  7. package/dist/cjs/modules/partner/interfaces/incident-partner-routing.dto.js +3 -0
  8. package/dist/cjs/modules/partner/interfaces/incident-partner-routing.dto.js.map +1 -0
  9. package/dist/cjs/modules/partner/interfaces/partner-coverage-rule.dto.js +3 -0
  10. package/dist/cjs/modules/partner/interfaces/partner-coverage-rule.dto.js.map +1 -0
  11. package/dist/cjs/modules/partner/interfaces/partner-dispatch-progress.dto.js +3 -0
  12. package/dist/cjs/modules/partner/interfaces/partner-dispatch-progress.dto.js.map +1 -0
  13. package/dist/cjs/modules/partner/interfaces/partner-dispatch.dto.js +3 -0
  14. package/dist/cjs/modules/partner/interfaces/partner-dispatch.dto.js.map +1 -0
  15. package/dist/cjs/modules/partner/interfaces/partner-integration.dto.js +3 -0
  16. package/dist/cjs/modules/partner/interfaces/partner-integration.dto.js.map +1 -0
  17. package/dist/cjs/modules/partner/interfaces/partner-provider.dto.js +3 -0
  18. package/dist/cjs/modules/partner/interfaces/partner-provider.dto.js.map +1 -0
  19. package/dist/cjs/modules/partner/utils/partner-display.util.js +140 -0
  20. package/dist/cjs/modules/partner/utils/partner-display.util.js.map +1 -0
  21. package/dist/esm/index.js +1 -0
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/modules/partner/enums/partner-enums.js +168 -0
  24. package/dist/esm/modules/partner/enums/partner-enums.js.map +1 -0
  25. package/dist/esm/modules/partner/index.js +12 -0
  26. package/dist/esm/modules/partner/index.js.map +1 -0
  27. package/dist/esm/modules/partner/interfaces/incident-partner-routing.dto.js +2 -0
  28. package/dist/esm/modules/partner/interfaces/incident-partner-routing.dto.js.map +1 -0
  29. package/dist/esm/modules/partner/interfaces/partner-coverage-rule.dto.js +2 -0
  30. package/dist/esm/modules/partner/interfaces/partner-coverage-rule.dto.js.map +1 -0
  31. package/dist/esm/modules/partner/interfaces/partner-dispatch-progress.dto.js +2 -0
  32. package/dist/esm/modules/partner/interfaces/partner-dispatch-progress.dto.js.map +1 -0
  33. package/dist/esm/modules/partner/interfaces/partner-dispatch.dto.js +2 -0
  34. package/dist/esm/modules/partner/interfaces/partner-dispatch.dto.js.map +1 -0
  35. package/dist/esm/modules/partner/interfaces/partner-integration.dto.js +2 -0
  36. package/dist/esm/modules/partner/interfaces/partner-integration.dto.js.map +1 -0
  37. package/dist/esm/modules/partner/interfaces/partner-provider.dto.js +2 -0
  38. package/dist/esm/modules/partner/interfaces/partner-provider.dto.js.map +1 -0
  39. package/dist/esm/modules/partner/utils/partner-display.util.js +134 -0
  40. package/dist/esm/modules/partner/utils/partner-display.util.js.map +1 -0
  41. package/dist/types/index.d.ts +1 -0
  42. package/dist/types/modules/partner/enums/partner-enums.d.ts +154 -0
  43. package/dist/types/modules/partner/index.d.ts +8 -0
  44. package/dist/types/modules/partner/interfaces/incident-partner-routing.dto.d.ts +41 -0
  45. package/dist/types/modules/partner/interfaces/partner-coverage-rule.dto.d.ts +42 -0
  46. package/dist/types/modules/partner/interfaces/partner-dispatch-progress.dto.d.ts +49 -0
  47. package/dist/types/modules/partner/interfaces/partner-dispatch.dto.d.ts +144 -0
  48. package/dist/types/modules/partner/interfaces/partner-integration.dto.d.ts +86 -0
  49. package/dist/types/modules/partner/interfaces/partner-provider.dto.d.ts +70 -0
  50. package/dist/types/modules/partner/utils/partner-display.util.d.ts +50 -0
  51. package/package.json +1 -1
@@ -0,0 +1,86 @@
1
+ import { CountryCode } from '../../country/enums/country-code.enum';
2
+ import { PartnerIntegrationEnvironment, PartnerIntegrationStatus, PartnerProviderCode, PartnerRoutingMode, PartnerServiceCapability } from '../enums/partner-enums';
3
+ import { PartnerCoverageRuleDto } from './partner-coverage-rule.dto';
4
+ /**
5
+ * Frontend view of an organization's partnership with a third-party service
6
+ * partner.
7
+ *
8
+ * NEVER carries the credential value, and never even the reference: the backend
9
+ * returns `credentialConfigured` instead, so the admin can show "configured" or
10
+ * "not configured" without any part of the secret reaching the browser.
11
+ */
12
+ export interface PartnerIntegrationDto {
13
+ id: number;
14
+ organizationId: number;
15
+ controlCentreId: number | null;
16
+ providerCode: PartnerProviderCode;
17
+ name: string;
18
+ environment: PartnerIntegrationEnvironment;
19
+ baseUrl: string;
20
+ credentialConfigured: boolean;
21
+ configuration: Record<string, unknown>;
22
+ capabilities: PartnerServiceCapability[];
23
+ routingMode: PartnerRoutingMode;
24
+ approvalWindowMinutes: number | null;
25
+ enabled: boolean;
26
+ priority: number;
27
+ countryCode: CountryCode;
28
+ status: PartnerIntegrationStatus;
29
+ partnerContactName: string | null;
30
+ partnerContactPhone: string | null;
31
+ partnerContactEmail: string | null;
32
+ lastHealthCheckAt: string | null;
33
+ lastSuccessAt: string | null;
34
+ lastErrorAt: string | null;
35
+ lastErrorCode: string | null;
36
+ lastErrorMessage: string | null;
37
+ createdBy: number | null;
38
+ updatedBy: number | null;
39
+ createdAt: string;
40
+ updatedAt: string;
41
+ /** Present on the detail endpoint. */
42
+ coverageRules?: PartnerCoverageRuleDto[];
43
+ }
44
+ export interface CreatePartnerIntegrationDto {
45
+ /** Super-Admin only: which tenant the partnership belongs to. */
46
+ organizationId?: number;
47
+ controlCentreId?: number;
48
+ providerCode: PartnerProviderCode;
49
+ name: string;
50
+ environment?: PartnerIntegrationEnvironment;
51
+ /** Defaults to the adapter's base URL for the chosen environment. */
52
+ baseUrl?: string;
53
+ /** A secret NAME/reference - never the credential value. */
54
+ credentialReference: string;
55
+ configuration?: Record<string, unknown>;
56
+ capabilities: PartnerServiceCapability[];
57
+ /** Defaults to MANUAL, so a new partnership never dispatches unattended. */
58
+ routingMode?: PartnerRoutingMode;
59
+ approvalWindowMinutes?: number;
60
+ enabled?: boolean;
61
+ priority?: number;
62
+ countryCode?: CountryCode;
63
+ partnerContactName?: string;
64
+ partnerContactPhone?: string;
65
+ partnerContactEmail?: string;
66
+ }
67
+ /**
68
+ * `providerCode` and `organizationId` are deliberately absent: changing either
69
+ * would repoint an existing dispatch history at a different partner or tenant,
70
+ * so a move is a delete and a create.
71
+ */
72
+ export type UpdatePartnerIntegrationDto = Partial<Omit<CreatePartnerIntegrationDto, 'providerCode' | 'organizationId'>>;
73
+ /** List filters for the partnerships table. */
74
+ export interface PartnerIntegrationQueryParams {
75
+ page?: number;
76
+ limit?: number;
77
+ sortBy?: string;
78
+ sortOrder?: 'ASC' | 'DESC';
79
+ /** Super-Admin only. */
80
+ organizationId?: number;
81
+ providerCode?: PartnerProviderCode;
82
+ environment?: PartnerIntegrationEnvironment;
83
+ routingMode?: PartnerRoutingMode;
84
+ countryCode?: CountryCode;
85
+ enabled?: boolean;
86
+ }
@@ -0,0 +1,70 @@
1
+ import { PartnerIntegrationEnvironment, PartnerProviderCode, PartnerServiceCapability } from '../enums/partner-enums';
2
+ /** A credential a partnership must supply, described by the backend adapter. */
3
+ export interface PartnerProviderCredentialFieldDto {
4
+ key: string;
5
+ label: string;
6
+ description?: string;
7
+ required: boolean;
8
+ /** Always true: a credential is supplied as a secret REFERENCE, never a value. */
9
+ secret: boolean;
10
+ }
11
+ /** A non-secret setting a partnership must (or may) supply for a provider. */
12
+ export interface PartnerProviderConfigFieldDto {
13
+ key: string;
14
+ label: string;
15
+ description?: string;
16
+ required: boolean;
17
+ type: 'string' | 'number' | 'boolean' | 'enum';
18
+ allowedValues?: string[];
19
+ defaultValue?: string | number | boolean;
20
+ maxLength?: number;
21
+ }
22
+ /**
23
+ * What one partner adapter can do, served by `GET /partner-services/providers`.
24
+ *
25
+ * The "add a partner" form is BUILT from these descriptors rather than
26
+ * hard-coded, so the fields the admin asks for can never drift from what the
27
+ * backend adapter actually needs. `available: false` marks a reserved partner
28
+ * that has no adapter yet - show it, but do not let anyone configure it.
29
+ */
30
+ export interface PartnerProviderDescriptorDto {
31
+ providerCode: PartnerProviderCode;
32
+ name: string;
33
+ description: string;
34
+ capabilities: PartnerServiceCapability[];
35
+ defaultBaseUrls: Partial<Record<PartnerIntegrationEnvironment, string>>;
36
+ configFields: PartnerProviderConfigFieldDto[];
37
+ credentialFields: PartnerProviderCredentialFieldDto[];
38
+ supportsHealthCheck: boolean;
39
+ /**
40
+ * True when the partner publishes the state of a request already sent, so
41
+ * progress can be shown and a dispatch can move past SENT on its own.
42
+ */
43
+ supportsStatusPolling: boolean;
44
+ /**
45
+ * True when a request can be stood down after the partner accepted it.
46
+ *
47
+ * When false the admin must NOT offer a stand-down button: the honest answer
48
+ * is to telephone the partner, and a button that changed a status here while
49
+ * a crew kept driving would be worse than none.
50
+ */
51
+ supportsWithdrawal: boolean;
52
+ /** True when the details of a live request can be corrected. */
53
+ supportsAmendment: boolean;
54
+ /** True when the partner can be asked whether a request already exists. */
55
+ supportsDuplicateDetection: boolean;
56
+ available: boolean;
57
+ }
58
+ /** Result of the admin's "test connection" button. Never creates an emergency. */
59
+ export interface PartnerConnectionTestResultDto {
60
+ integrationId: number;
61
+ status: string;
62
+ success: boolean;
63
+ /** True when the stored credential was accepted, even if health then failed. */
64
+ authenticated: boolean;
65
+ partnerServiceVersion?: string | null;
66
+ latencyMs: number;
67
+ checkedAt: string;
68
+ errorCode?: string | null;
69
+ errorMessage?: string | null;
70
+ }
@@ -0,0 +1,50 @@
1
+ import { IncidentPartnerRoutingStatus, PartnerEngagementState, PartnerCoverageMatchType, PartnerDispatchStatus, PartnerIntegrationStatus, PartnerRoutingMode, PartnerServiceCapability } from '../enums/partner-enums';
2
+ /**
3
+ * Human labels for the partner enums.
4
+ *
5
+ * Kept in the shared package rather than in the admin app so every screen that
6
+ * shows a dispatch - the list, the detail drawer, the incident view - names the
7
+ * same state the same way. An operator reading "Waiting for confirmation" in one
8
+ * place and "Pending approval" in another would reasonably assume they were
9
+ * different things.
10
+ */
11
+ export declare const PARTNER_DISPATCH_STATUS_LABELS: Readonly<Record<PartnerDispatchStatus, string>>;
12
+ /** How a partner's own progress state reads on screen. */
13
+ export declare const PARTNER_ENGAGEMENT_STATE_LABELS: Readonly<Record<PartnerEngagementState, string>>;
14
+ export declare const INCIDENT_PARTNER_ROUTING_STATUS_LABELS: Readonly<Record<IncidentPartnerRoutingStatus, string>>;
15
+ export declare const PARTNER_ROUTING_MODE_LABELS: Readonly<Record<PartnerRoutingMode, string>>;
16
+ export declare const PARTNER_INTEGRATION_STATUS_LABELS: Readonly<Record<PartnerIntegrationStatus, string>>;
17
+ export declare const PARTNER_CAPABILITY_LABELS: Readonly<Record<PartnerServiceCapability, string>>;
18
+ export declare const PARTNER_COVERAGE_MATCH_TYPE_LABELS: Readonly<Record<PartnerCoverageMatchType, string>>;
19
+ /**
20
+ * Chip family for a dispatch status, matching the admin's existing chip
21
+ * vocabulary: `success` for anything the partner has, `warn` for anything still
22
+ * needing a human, `danger` for a failure, `neutral` for a settled non-event.
23
+ */
24
+ export declare function partnerDispatchStatusTone(status: PartnerDispatchStatus): 'success' | 'warn' | 'danger' | 'neutral';
25
+ /** The same tone mapping for the incident-level rolled-up status. */
26
+ export declare function incidentPartnerRoutingTone(status: IncidentPartnerRoutingStatus): 'success' | 'warn' | 'danger' | 'neutral';
27
+ /**
28
+ * Whether an operator can act on a dispatch, so a table can enable or hide its
29
+ * buttons without duplicating the backend's transition rules.
30
+ *
31
+ * The two withdrawals are separate answers: `canCancel` is a local decision
32
+ * before the partner has it, `canStandDown` means telling THEM - which is only
33
+ * possible for a partner whose API supports it.
34
+ */
35
+ export declare function partnerDispatchActions(status: PartnerDispatchStatus, capabilities?: PartnerActionCapabilities): {
36
+ canApprove: boolean;
37
+ canReject: boolean;
38
+ canCancel: boolean;
39
+ canStandDown: boolean;
40
+ canAmend: boolean;
41
+ canResend: boolean;
42
+ };
43
+ /**
44
+ * What the partner behind a dispatch can actually do, taken from its provider
45
+ * descriptor. Passed in rather than assumed, because it differs per partner.
46
+ */
47
+ export interface PartnerActionCapabilities {
48
+ supportsWithdrawal?: boolean;
49
+ supportsAmendment?: boolean;
50
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarion-shared-types",
3
- "version": "1.0.85",
3
+ "version": "1.0.87",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",