@memberjunction/integration-connectors 5.35.0 → 5.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.
Files changed (81) hide show
  1. package/dist/AptifyConnector.d.ts +88 -0
  2. package/dist/AptifyConnector.d.ts.map +1 -0
  3. package/dist/AptifyConnector.js +737 -0
  4. package/dist/AptifyConnector.js.map +1 -0
  5. package/dist/BettyConnector.d.ts +288 -0
  6. package/dist/BettyConnector.d.ts.map +1 -0
  7. package/dist/BettyConnector.js +909 -0
  8. package/dist/BettyConnector.js.map +1 -0
  9. package/dist/BlackbaudConnector.d.ts +64 -0
  10. package/dist/BlackbaudConnector.d.ts.map +1 -0
  11. package/dist/BlackbaudConnector.js +916 -0
  12. package/dist/BlackbaudConnector.js.map +1 -0
  13. package/dist/ConstantContactConnector.d.ts +126 -0
  14. package/dist/ConstantContactConnector.d.ts.map +1 -0
  15. package/dist/ConstantContactConnector.js +636 -0
  16. package/dist/ConstantContactConnector.js.map +1 -0
  17. package/dist/GrowthZoneConnector.d.ts +185 -0
  18. package/dist/GrowthZoneConnector.d.ts.map +1 -0
  19. package/dist/GrowthZoneConnector.js +745 -0
  20. package/dist/GrowthZoneConnector.js.map +1 -0
  21. package/dist/HubSpotConnector.d.ts +2 -2
  22. package/dist/HubSpotConnector.d.ts.map +1 -1
  23. package/dist/HubSpotConnector.js +3 -3
  24. package/dist/HubSpotConnector.js.map +1 -1
  25. package/dist/IMISConnector.d.ts +155 -0
  26. package/dist/IMISConnector.d.ts.map +1 -0
  27. package/dist/IMISConnector.js +686 -0
  28. package/dist/IMISConnector.js.map +1 -0
  29. package/dist/MJToMJConnector.d.ts +279 -0
  30. package/dist/MJToMJConnector.d.ts.map +1 -0
  31. package/dist/MJToMJConnector.js +893 -0
  32. package/dist/MJToMJConnector.js.map +1 -0
  33. package/dist/MagnetMailConnector.d.ts +163 -0
  34. package/dist/MagnetMailConnector.d.ts.map +1 -0
  35. package/dist/MagnetMailConnector.js +816 -0
  36. package/dist/MagnetMailConnector.js.map +1 -0
  37. package/dist/MailchimpConnector.d.ts +188 -0
  38. package/dist/MailchimpConnector.d.ts.map +1 -0
  39. package/dist/MailchimpConnector.js +753 -0
  40. package/dist/MailchimpConnector.js.map +1 -0
  41. package/dist/NetForumConnector.d.ts +51 -0
  42. package/dist/NetForumConnector.d.ts.map +1 -0
  43. package/dist/NetForumConnector.js +419 -0
  44. package/dist/NetForumConnector.js.map +1 -0
  45. package/dist/NetSuiteConnector.d.ts +70 -0
  46. package/dist/NetSuiteConnector.d.ts.map +1 -0
  47. package/dist/NetSuiteConnector.js +605 -0
  48. package/dist/NetSuiteConnector.js.map +1 -0
  49. package/dist/NimbleAMSConnector.d.ts +49 -0
  50. package/dist/NimbleAMSConnector.d.ts.map +1 -0
  51. package/dist/NimbleAMSConnector.js +408 -0
  52. package/dist/NimbleAMSConnector.js.map +1 -0
  53. package/dist/PropFuelConnector.d.ts +68 -0
  54. package/dist/PropFuelConnector.d.ts.map +1 -0
  55. package/dist/PropFuelConnector.js +514 -0
  56. package/dist/PropFuelConnector.js.map +1 -0
  57. package/dist/RasaConnector.d.ts +26 -0
  58. package/dist/RasaConnector.d.ts.map +1 -1
  59. package/dist/RasaConnector.js +233 -1
  60. package/dist/RasaConnector.js.map +1 -1
  61. package/dist/Reach360Connector.d.ts +165 -0
  62. package/dist/Reach360Connector.d.ts.map +1 -0
  63. package/dist/Reach360Connector.js +710 -0
  64. package/dist/Reach360Connector.js.map +1 -0
  65. package/dist/SharePointConnector.d.ts +181 -0
  66. package/dist/SharePointConnector.d.ts.map +1 -0
  67. package/dist/SharePointConnector.js +796 -0
  68. package/dist/SharePointConnector.js.map +1 -0
  69. package/dist/WicketConnector.d.ts +1 -0
  70. package/dist/WicketConnector.d.ts.map +1 -1
  71. package/dist/WicketConnector.js +6 -0
  72. package/dist/WicketConnector.js.map +1 -1
  73. package/dist/WildApricotConnector.d.ts +188 -0
  74. package/dist/WildApricotConnector.d.ts.map +1 -0
  75. package/dist/WildApricotConnector.js +1092 -0
  76. package/dist/WildApricotConnector.js.map +1 -0
  77. package/dist/index.d.ts +16 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +16 -0
  80. package/dist/index.js.map +1 -1
  81. package/package.json +6 -6
@@ -0,0 +1,155 @@
1
+ import { type UserInfo } from '@memberjunction/core';
2
+ import type { MJCompanyIntegrationEntity, MJIntegrationObjectEntity } from '@memberjunction/core-entities';
3
+ import { BaseRESTIntegrationConnector, type RESTAuthContext, type RESTResponse, type PaginationState, type PaginationType, type ConnectionTestResult, type FetchContext, type FetchBatchResult, type ExternalObjectSchema, type ExternalFieldSchema, type DefaultFieldMapping, type DefaultIntegrationConfig, type CRUDResult, type CreateRecordContext, type UpdateRecordContext, type DeleteRecordContext, type GetRecordContext, type ExternalRecord } from '@memberjunction/integration-engine';
4
+ /**
5
+ * iMIS REST API connection configuration. Supports the OAuth 2.0 Password Grant
6
+ * flow (recommended for server-to-server) and the optional SSO refresh-token
7
+ * flow (when ClientId + ClientSecret + RefreshToken are supplied).
8
+ */
9
+ export interface IMISConnectionConfig {
10
+ /** Full base URL to the customer's iMIS API (no trailing slash) */
11
+ BaseUrl: string;
12
+ /** API username (must hold the iMIS RemoteService role) for Password Grant */
13
+ Username: string;
14
+ /** API password for Password Grant */
15
+ Password: string;
16
+ /** Optional OAuth SSO Client ID (only used when switching to SSO refresh-token flow) */
17
+ ClientId?: string;
18
+ /** Optional OAuth SSO Client Secret */
19
+ ClientSecret?: string;
20
+ /** Optional SSO refresh token */
21
+ RefreshToken?: string;
22
+ /** Maximum retries for rate-limited or failed requests. Default: 3 */
23
+ MaxRetries?: number;
24
+ /** HTTP request timeout in milliseconds. Default: 60000 */
25
+ RequestTimeoutMs?: number;
26
+ /** Minimum milliseconds between API requests. Default: 200 */
27
+ MinRequestIntervalMs?: number;
28
+ }
29
+ /**
30
+ * Connector for iMIS EMS (Advanced Solutions International) REST API.
31
+ *
32
+ * Extends BaseRESTIntegrationConnector so the generic metadata-driven fetch
33
+ * loop handles pagination, template variables, and record normalization.
34
+ * Adds iMIS-specific:
35
+ * - OAuth 2.0 Password Grant / SSO refresh-token authentication
36
+ * - /{entity}/metadata runtime field discovery (merged with static IntegrationObjectField metadata, IsCustom=true)
37
+ * - /BOEntityDefinition runtime object discovery (customer Business Objects, IsCustom=true)
38
+ * - PagedResult envelope with Offset/Limit + HasNext flag
39
+ * - UpdatedOn=gt:<iso-date> watermark filter for incremental sync
40
+ * - PUT (full replace) for updates with automatic read-modify-write merge
41
+ *
42
+ * Reference: https://developer.imis.com/docs/imis-rest-api-data-models-and-swagger-json-files
43
+ */
44
+ export declare class IMISConnector extends BaseRESTIntegrationConnector {
45
+ private authState;
46
+ private lastRequestTime;
47
+ /** Current watermark for the in-flight FetchChanges — used by AppendDefaultQueryParams */
48
+ private currentWatermark;
49
+ get SupportsCreate(): boolean;
50
+ get SupportsUpdate(): boolean;
51
+ get SupportsDelete(): boolean;
52
+ get SupportsSearch(): boolean;
53
+ get SupportsListing(): boolean;
54
+ get IntegrationName(): string;
55
+ protected Authenticate(companyIntegration: MJCompanyIntegrationEntity, contextUser: UserInfo): Promise<RESTAuthContext>;
56
+ protected BuildHeaders(auth: RESTAuthContext): Record<string, string>;
57
+ protected MakeHTTPRequest(auth: RESTAuthContext, url: string, method: string, headers: Record<string, string>, body?: unknown): Promise<RESTResponse>;
58
+ protected NormalizeResponse(rawBody: unknown, responseDataKey: string | null): Record<string, unknown>[];
59
+ protected ExtractPaginationInfo(rawBody: unknown, paginationType: PaginationType, currentPage: number, currentOffset: number, pageSize: number): PaginationState;
60
+ protected GetBaseURL(_companyIntegration: MJCompanyIntegrationEntity, auth: RESTAuthContext): string;
61
+ /**
62
+ * iMIS pagination uses `Offset` and `Limit` query parameters (capitalized).
63
+ * Override the base class helper to match iMIS's param names.
64
+ */
65
+ protected BuildPaginatedURL(basePath: string, obj: MJIntegrationObjectEntity, page: number, offset: number, cursor?: string, effectivePageSize?: number): string;
66
+ /**
67
+ * Inject watermark filter (UpdatedOn=gt:<iso>) when an incremental sync is active.
68
+ * The iMIS REST API accepts operator-prefixed filter values (`gt:`, `ge:`, `lt:`) on list endpoints.
69
+ */
70
+ protected AppendDefaultQueryParams(url: string, obj: MJIntegrationObjectEntity): string;
71
+ /**
72
+ * Test the connection by authenticating and hitting the /Party list endpoint
73
+ * with a minimal page size. Confirms both auth + data-plane connectivity.
74
+ */
75
+ TestConnection(companyIntegration: MJCompanyIntegrationEntity, contextUser: UserInfo): Promise<ConnectionTestResult>;
76
+ /**
77
+ * Discover objects by merging:
78
+ * 1. Static IntegrationObject metadata (from MJ: Integration Objects table)
79
+ * 2. Runtime-discovered customer Business Objects via GET /BOEntityDefinition
80
+ * — marked with IsCustom=true when not already present in static metadata.
81
+ */
82
+ DiscoverObjects(companyIntegration: MJCompanyIntegrationEntity, contextUser: UserInfo): Promise<ExternalObjectSchema[]>;
83
+ /**
84
+ * Discover fields by merging:
85
+ * 1. Static IntegrationObjectField metadata (from MJ: Integration Object Fields table)
86
+ * 2. Runtime-discovered fields via GET /{entity}/metadata
87
+ * — any live field not in the static metadata is appended with IsCustom=true
88
+ * (surfaced to callers via the IsForeignKey=false / IsReadOnly mix from the live API).
89
+ */
90
+ DiscoverFields(companyIntegration: MJCompanyIntegrationEntity, objectName: string, contextUser: UserInfo): Promise<ExternalFieldSchema[]>;
91
+ /**
92
+ * Override FetchChanges to stash the current watermark so AppendDefaultQueryParams
93
+ * can inject the UpdatedOn filter on list requests.
94
+ */
95
+ FetchChanges(ctx: FetchContext): Promise<FetchBatchResult>;
96
+ CreateRecord(ctx: CreateRecordContext): Promise<CRUDResult>;
97
+ UpdateRecord(ctx: UpdateRecordContext): Promise<CRUDResult>;
98
+ DeleteRecord(ctx: DeleteRecordContext): Promise<CRUDResult>;
99
+ GetRecord(ctx: GetRecordContext): Promise<ExternalRecord | null>;
100
+ GetDefaultConfiguration(): DefaultIntegrationConfig;
101
+ GetDefaultFieldMappings(objectName: string, _entityName: string): DefaultFieldMapping[];
102
+ /**
103
+ * Returns a valid auth context, refreshing the access token as needed.
104
+ * Accepts either (companyIntegration, contextUser) for the first call
105
+ * or a pre-parsed config for silent refresh from MakeHTTPRequest.
106
+ */
107
+ private GetAuth;
108
+ private IsConfig;
109
+ private IsTokenValid;
110
+ private AcquireToken;
111
+ /**
112
+ * iMIS issues tokens at the scheduler path, not under /api/. Strip /api[/]
113
+ * from the BaseUrl when constructing the token endpoint.
114
+ */
115
+ private ResolveTokenEndpoint;
116
+ private BuildTokenRequestBody;
117
+ private ParseConfig;
118
+ private ParseConfigFromCredential;
119
+ private ExtractConfig;
120
+ private DiscoverBusinessObjects;
121
+ private DiscoverFieldsFromLiveAPI;
122
+ private PropertyDefinitionToFieldSchema;
123
+ /**
124
+ * Merge live-discovered fields with static metadata. Live-only fields are
125
+ * treated as custom — surfaced with whatever properties the live API reports.
126
+ * Static fields override live fields on matching names (static metadata
127
+ * reflects the curated MJ schema).
128
+ */
129
+ private MergeFieldSchemas;
130
+ /**
131
+ * Resolve an object name to its API path. Prefers the configured APIPath
132
+ * from IntegrationObject metadata; falls back to `/{ObjectName}` for
133
+ * runtime-discovered Business Objects.
134
+ */
135
+ private ResolveObjectPath;
136
+ /** Derive the URL path segment used by CRUD operations (no leading slash). */
137
+ private NormalizeObjectPath;
138
+ private FetchSingleRecord;
139
+ private ExtractIdFromRecord;
140
+ private ComputeNewWatermark;
141
+ private ExecuteFetch;
142
+ private BuildRESTResponse;
143
+ private ParseJsonSafely;
144
+ private ShouldRetry;
145
+ private ComputeRetryDelay;
146
+ private Throttle;
147
+ private Sleep;
148
+ private ExtractServerVersion;
149
+ private IsPagedResult;
150
+ private StripTrailingSlash;
151
+ private BuildCRUDError;
152
+ }
153
+ /** Tree-shaking prevention — import and call from module entry point */
154
+ export declare function LoadIMISConnector(): void;
155
+ //# sourceMappingURL=IMISConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMISConnector.d.ts","sourceRoot":"","sources":["../src/IMISConnector.ts"],"names":[],"mappings":"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"}