@memberjunction/integration-connectors 5.51.0 → 6.1.0-edge.1
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/LICENSE +7 -0
- package/README.md +109 -277
- package/dist/index.d.ts +0 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -38
- package/dist/index.js.map +1 -1
- package/package.json +14 -19
- package/dist/AptifyConnector.d.ts +0 -95
- package/dist/AptifyConnector.d.ts.map +0 -1
- package/dist/AptifyConnector.js +0 -760
- package/dist/AptifyConnector.js.map +0 -1
- package/dist/BlackbaudConnector.d.ts +0 -64
- package/dist/BlackbaudConnector.d.ts.map +0 -1
- package/dist/BlackbaudConnector.js +0 -916
- package/dist/BlackbaudConnector.js.map +0 -1
- package/dist/ConstantContactConnector.d.ts +0 -137
- package/dist/ConstantContactConnector.d.ts.map +0 -1
- package/dist/ConstantContactConnector.js +0 -663
- package/dist/ConstantContactConnector.js.map +0 -1
- package/dist/CventConnector.d.ts +0 -146
- package/dist/CventConnector.d.ts.map +0 -1
- package/dist/CventConnector.js +0 -540
- package/dist/CventConnector.js.map +0 -1
- package/dist/DynamicsDataverseConnector.d.ts +0 -296
- package/dist/DynamicsDataverseConnector.d.ts.map +0 -1
- package/dist/DynamicsDataverseConnector.js +0 -790
- package/dist/DynamicsDataverseConnector.js.map +0 -1
- package/dist/FileFeedConnector.d.ts +0 -64
- package/dist/FileFeedConnector.d.ts.map +0 -1
- package/dist/FileFeedConnector.js +0 -190
- package/dist/FileFeedConnector.js.map +0 -1
- package/dist/FontevaConnector.d.ts +0 -153
- package/dist/FontevaConnector.d.ts.map +0 -1
- package/dist/FontevaConnector.js +0 -421
- package/dist/FontevaConnector.js.map +0 -1
- package/dist/GrowthZoneConnector.d.ts +0 -183
- package/dist/GrowthZoneConnector.d.ts.map +0 -1
- package/dist/GrowthZoneConnector.js +0 -702
- package/dist/GrowthZoneConnector.js.map +0 -1
- package/dist/HivebriteConnector.d.ts +0 -151
- package/dist/HivebriteConnector.d.ts.map +0 -1
- package/dist/HivebriteConnector.js +0 -533
- package/dist/HivebriteConnector.js.map +0 -1
- package/dist/HubSpotConnector.d.ts +0 -523
- package/dist/HubSpotConnector.d.ts.map +0 -1
- package/dist/HubSpotConnector.js +0 -3110
- package/dist/HubSpotConnector.js.map +0 -1
- package/dist/IMISConnector.d.ts +0 -171
- package/dist/IMISConnector.d.ts.map +0 -1
- package/dist/IMISConnector.js +0 -695
- package/dist/IMISConnector.js.map +0 -1
- package/dist/MJToMJConnector.d.ts +0 -279
- package/dist/MJToMJConnector.d.ts.map +0 -1
- package/dist/MJToMJConnector.js +0 -893
- package/dist/MJToMJConnector.js.map +0 -1
- package/dist/MagnetMailConnector.d.ts +0 -163
- package/dist/MagnetMailConnector.d.ts.map +0 -1
- package/dist/MagnetMailConnector.js +0 -823
- package/dist/MagnetMailConnector.js.map +0 -1
- package/dist/MailchimpConnector.d.ts +0 -197
- package/dist/MailchimpConnector.d.ts.map +0 -1
- package/dist/MailchimpConnector.js +0 -791
- package/dist/MailchimpConnector.js.map +0 -1
- package/dist/MemberSuiteConnector.d.ts +0 -185
- package/dist/MemberSuiteConnector.d.ts.map +0 -1
- package/dist/MemberSuiteConnector.js +0 -762
- package/dist/MemberSuiteConnector.js.map +0 -1
- package/dist/NeonCRMConnector.d.ts +0 -273
- package/dist/NeonCRMConnector.d.ts.map +0 -1
- package/dist/NeonCRMConnector.js +0 -1039
- package/dist/NeonCRMConnector.js.map +0 -1
- package/dist/NetForumConnector.d.ts +0 -170
- package/dist/NetForumConnector.d.ts.map +0 -1
- package/dist/NetForumConnector.js +0 -778
- package/dist/NetForumConnector.js.map +0 -1
- package/dist/NetSuiteConnector.d.ts +0 -136
- package/dist/NetSuiteConnector.d.ts.map +0 -1
- package/dist/NetSuiteConnector.js +0 -703
- package/dist/NetSuiteConnector.js.map +0 -1
- package/dist/NimbleAMSConnector.d.ts +0 -142
- package/dist/NimbleAMSConnector.d.ts.map +0 -1
- package/dist/NimbleAMSConnector.js +0 -703
- package/dist/NimbleAMSConnector.js.map +0 -1
- package/dist/NoviConnector.d.ts +0 -178
- package/dist/NoviConnector.d.ts.map +0 -1
- package/dist/NoviConnector.js +0 -566
- package/dist/NoviConnector.js.map +0 -1
- package/dist/ORCIDConnector.d.ts +0 -207
- package/dist/ORCIDConnector.d.ts.map +0 -1
- package/dist/ORCIDConnector.js +0 -708
- package/dist/ORCIDConnector.js.map +0 -1
- package/dist/OpenWaterConnector.d.ts +0 -173
- package/dist/OpenWaterConnector.d.ts.map +0 -1
- package/dist/OpenWaterConnector.js +0 -893
- package/dist/OpenWaterConnector.js.map +0 -1
- package/dist/PathLMSConnector.d.ts +0 -395
- package/dist/PathLMSConnector.d.ts.map +0 -1
- package/dist/PathLMSConnector.js +0 -1281
- package/dist/PathLMSConnector.js.map +0 -1
- package/dist/PheedLoopConnector.d.ts +0 -119
- package/dist/PheedLoopConnector.d.ts.map +0 -1
- package/dist/PheedLoopConnector.js +0 -429
- package/dist/PheedLoopConnector.js.map +0 -1
- package/dist/PropFuelConnector.d.ts +0 -153
- package/dist/PropFuelConnector.d.ts.map +0 -1
- package/dist/PropFuelConnector.js +0 -450
- package/dist/PropFuelConnector.js.map +0 -1
- package/dist/QuickBooksConnector.d.ts +0 -92
- package/dist/QuickBooksConnector.d.ts.map +0 -1
- package/dist/QuickBooksConnector.js +0 -713
- package/dist/QuickBooksConnector.js.map +0 -1
- package/dist/RasaConnector.d.ts +0 -152
- package/dist/RasaConnector.d.ts.map +0 -1
- package/dist/RasaConnector.js +0 -929
- package/dist/RasaConnector.js.map +0 -1
- package/dist/Reach360Connector.d.ts +0 -175
- package/dist/Reach360Connector.d.ts.map +0 -1
- package/dist/Reach360Connector.js +0 -796
- package/dist/Reach360Connector.js.map +0 -1
- package/dist/RelationalDBConnector.d.ts +0 -108
- package/dist/RelationalDBConnector.d.ts.map +0 -1
- package/dist/RelationalDBConnector.js +0 -228
- package/dist/RelationalDBConnector.js.map +0 -1
- package/dist/RhythmConnector.d.ts +0 -188
- package/dist/RhythmConnector.d.ts.map +0 -1
- package/dist/RhythmConnector.js +0 -784
- package/dist/RhythmConnector.js.map +0 -1
- package/dist/SageIntacctConnector.d.ts +0 -337
- package/dist/SageIntacctConnector.d.ts.map +0 -1
- package/dist/SageIntacctConnector.js +0 -2081
- package/dist/SageIntacctConnector.js.map +0 -1
- package/dist/SalesforceConnector.d.ts +0 -461
- package/dist/SalesforceConnector.d.ts.map +0 -1
- package/dist/SalesforceConnector.js +0 -1862
- package/dist/SalesforceConnector.js.map +0 -1
- package/dist/SharePointConnector.d.ts +0 -188
- package/dist/SharePointConnector.d.ts.map +0 -1
- package/dist/SharePointConnector.js +0 -716
- package/dist/SharePointConnector.js.map +0 -1
- package/dist/WicketConnector.d.ts +0 -252
- package/dist/WicketConnector.d.ts.map +0 -1
- package/dist/WicketConnector.js +0 -938
- package/dist/WicketConnector.js.map +0 -1
- package/dist/WildApricotConnector.d.ts +0 -201
- package/dist/WildApricotConnector.d.ts.map +0 -1
- package/dist/WildApricotConnector.js +0 -1129
- package/dist/WildApricotConnector.js.map +0 -1
- package/dist/YourMembershipConnector.d.ts +0 -349
- package/dist/YourMembershipConnector.d.ts.map +0 -1
- package/dist/YourMembershipConnector.js +0 -4062
- package/dist/YourMembershipConnector.js.map +0 -1
- package/dist/generate-integration-actions.d.ts +0 -23
- package/dist/generate-integration-actions.d.ts.map +0 -1
- package/dist/generate-integration-actions.js +0 -201
- package/dist/generate-integration-actions.js.map +0 -1
|
@@ -1,4062 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var YourMembershipConnector_1;
|
|
8
|
-
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
-
import { Metadata } from '@memberjunction/core';
|
|
10
|
-
import { BaseIntegrationConnector, BaseRESTIntegrationConnector, } from '@memberjunction/integration-engine';
|
|
11
|
-
/** YM REST API base URL */
|
|
12
|
-
const YM_API_BASE = 'https://ws.yourmembership.com';
|
|
13
|
-
/** Sessions expire after 14 minutes (YM sessions last ~15 min) */
|
|
14
|
-
const SESSION_TTL_MS = 14 * 60 * 1000;
|
|
15
|
-
/** Maximum retries for rate-limited or failed requests */
|
|
16
|
-
const MAX_RETRIES = 5;
|
|
17
|
-
/** HTTP request timeout in milliseconds */
|
|
18
|
-
const REQUEST_TIMEOUT_MS = 30000;
|
|
19
|
-
/** Minimum milliseconds between API requests to avoid rate limiting */
|
|
20
|
-
const MIN_REQUEST_INTERVAL_MS = 1000;
|
|
21
|
-
/** Number of members to enrich per batch before writing to DB */
|
|
22
|
-
const ENRICH_BATCH_SIZE = 500;
|
|
23
|
-
/** JSON parsing timeout in milliseconds */
|
|
24
|
-
const JSON_TIMEOUT_MS = 30000;
|
|
25
|
-
/** Detail enrichment timeout per record in milliseconds */
|
|
26
|
-
const ENRICH_TIMEOUT_MS = 45000;
|
|
27
|
-
/** YM API metadata keys that should be filtered from record data */
|
|
28
|
-
const METADATA_KEYS = new Set([
|
|
29
|
-
'ResponseStatus', 'UsingRedis', 'AppInitTime', 'ServerID',
|
|
30
|
-
'ClientID', 'BypassCache', 'DateCached', 'Device',
|
|
31
|
-
]);
|
|
32
|
-
/**
|
|
33
|
-
* Endpoints that live under the /Ymc/ base URL instead of /Ams/.
|
|
34
|
-
* These are Career Center endpoints requiring the alternate base path.
|
|
35
|
-
*/
|
|
36
|
-
const YM_YMC_ENDPOINTS = new Set([
|
|
37
|
-
'jobalerts', 'jobalertscriteria', 'jobsearch',
|
|
38
|
-
'locationcoordinates', 'pinpoint', 'savedjobs', 'templates',
|
|
39
|
-
]);
|
|
40
|
-
/**
|
|
41
|
-
* Server-side date filter params for incremental sync, sourced directly from the
|
|
42
|
-
* research analysis (yourmembership_analysis.json → incremental.server_filter_params).
|
|
43
|
-
*
|
|
44
|
-
* Maps lowercase object name → the query param name to pass with the watermark ISO date.
|
|
45
|
-
* EventIDs is the only confirmed (high-confidence) server-side filter; the rest are
|
|
46
|
-
* "probable" — accepted at runtime, confirmed by integration testing.
|
|
47
|
-
*/
|
|
48
|
-
const YM_SERVER_FILTER_PARAMS = {
|
|
49
|
-
'eventids': 'LastModifiedDate', // server_side_filter (confirmed high confidence)
|
|
50
|
-
'campaignreports': 'FromDate', // server_side_filter_probable
|
|
51
|
-
'careeropenings': 'DateFrom', // server_side_filter_probable
|
|
52
|
-
'dashboarddata': 'EndDate', // server_side_filter_probable
|
|
53
|
-
'donationtransactions': 'DateFrom', // server_side_filter_probable
|
|
54
|
-
'duestionstransactions': 'DateFrom', // server_side_filter_probable — alias
|
|
55
|
-
'duestransactions': 'DateFrom', // server_side_filter_probable
|
|
56
|
-
'groupmembershiplogs': 'StartDate', // server_side_filter_probable
|
|
57
|
-
'invoiceitems': 'DateFrom', // server_side_filter_probable
|
|
58
|
-
'storeorderdetails': 'DateFrom', // server_side_filter_probable
|
|
59
|
-
'storeorders': 'StartDate', // server_side_filter_probable
|
|
60
|
-
'topcontributors': 'DateEnd', // server_side_filter_probable
|
|
61
|
-
'trendingposts': 'EndDate', // server_side_filter_probable
|
|
62
|
-
};
|
|
63
|
-
/**
|
|
64
|
-
* Client-side watermark fields for endpoints that have no server-side date filter
|
|
65
|
-
* but include a date field in each record that can be used for client-side filtering.
|
|
66
|
-
* Maps lowercase object name → { fieldName, strategy }.
|
|
67
|
-
*
|
|
68
|
-
* 'partial' means only creation date is available (misses updates to existing records).
|
|
69
|
-
* 'full' means a last-updated timestamp is available (catches both creates and updates).
|
|
70
|
-
*
|
|
71
|
-
* Source: yourmembership_analysis.json → incremental.watermark_fields
|
|
72
|
-
*/
|
|
73
|
-
const YM_CLIENT_WATERMARK_FIELDS = {
|
|
74
|
-
'allcampaigns': { field: 'DateCreated', strategy: 'partial' },
|
|
75
|
-
// 'campaigns' is NOT here — it's parameterized (Campaigns/{id}) and routes via YM_PARENT_SCOPED
|
|
76
|
-
'memberlist': { field: 'LastUpdated', strategy: 'full' },
|
|
77
|
-
'membersprofiles': { field: 'LastUpdated', strategy: 'full' },
|
|
78
|
-
};
|
|
79
|
-
/**
|
|
80
|
-
* Parent-scoped endpoints that require enumerating parent IDs before fetching.
|
|
81
|
-
* Maps lowercase endpoint name → YMParentScopeConfig.
|
|
82
|
-
* pathTemplate uses {parentId} as placeholder for the resolved parent ID.
|
|
83
|
-
*/
|
|
84
|
-
const YM_PARENT_SCOPED = {
|
|
85
|
-
// ── Event-scoped ──────────────────────────────────────────────────
|
|
86
|
-
'eventalias': { parentType: 'Event', pathTemplate: 'Event/{parentId}/Alias' },
|
|
87
|
-
'eventattendeesessions': { parentType: 'Event', pathTemplate: 'Event/{parentId}/AttendeeTypeSessions' },
|
|
88
|
-
'eventattendeetypesessions': { parentType: 'Event', pathTemplate: 'Event/{parentId}/AttendeeTypeSessions' },
|
|
89
|
-
'eventattendeetypetickets': { parentType: 'Event', pathTemplate: 'Event/{parentId}/AttendeeTypeTickets' },
|
|
90
|
-
'eventattendeetypes': { parentType: 'Event', pathTemplate: 'Event/{parentId}/AttendeeTypes' },
|
|
91
|
-
'eventceuawards': { parentType: 'Event', pathTemplate: 'Event/{parentId}/CEUAwards' },
|
|
92
|
-
'eventcustomlabels': { parentType: 'Event', pathTemplate: 'Event/{parentId}/EventCustomLabels' },
|
|
93
|
-
'eventsessiongroups': { parentType: 'Event', pathTemplate: 'Event/{parentId}/EventSessionGroups' },
|
|
94
|
-
'eventsessions': { parentType: 'Event', pathTemplate: 'Event/{parentId}/Sessions' },
|
|
95
|
-
'eventtickets': { parentType: 'Event', pathTemplate: 'Event/{parentId}/Tickets' },
|
|
96
|
-
'eventvirtualmeetings': { parentType: 'Event', pathTemplate: 'Event/{parentId}/VirtualMeetings' },
|
|
97
|
-
'eventvirtualwebinars': { parentType: 'Event', pathTemplate: 'Event/{parentId}/VirtualWebinars' },
|
|
98
|
-
'eventvirtualusers': { parentType: 'Event', pathTemplate: 'Event/{parentId}/VirtualUsers' },
|
|
99
|
-
'eventregistrations': { parentType: 'Event', pathTemplate: 'Event/{parentId}/EventRegistrants' },
|
|
100
|
-
'eventregistrationids': { parentType: 'Event', pathTemplate: 'Event/{parentId}/EventRegistrationIDs' },
|
|
101
|
-
'registrationsessionrequest': { parentType: 'Event', pathTemplate: 'Event/{parentId}/EventRegistrationSessions' },
|
|
102
|
-
'eventsessionceuawards': { parentType: 'Event', pathTemplate: 'Event/{parentId}/Sessions' },
|
|
103
|
-
// ── Member-scoped ─────────────────────────────────────────────────
|
|
104
|
-
'basicmemberprofile': { parentType: 'Member', pathTemplate: 'Member/{parentId}/BasicMemberProfile' },
|
|
105
|
-
'connections': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Connections' },
|
|
106
|
-
'contentproxy': { parentType: 'Member', pathTemplate: 'Member/{parentId}/ContentProxy' },
|
|
107
|
-
'donationhistory': { parentType: 'Member', pathTemplate: 'Member/{parentId}/DonationHistory' },
|
|
108
|
-
'engagementscores': { parentType: 'Member', pathTemplate: 'Member/{parentId}/EngagementScores' },
|
|
109
|
-
'favorites': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Favorites' },
|
|
110
|
-
'memberfavorites': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Favorites' },
|
|
111
|
-
'memberconfig': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Config' },
|
|
112
|
-
'membergroups': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Groups' },
|
|
113
|
-
'membernetworks': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Networks' },
|
|
114
|
-
'memberprofile': { parentType: 'Member', pathTemplate: 'Member/{parentId}/MemberProfile' },
|
|
115
|
-
'memberpulse': { parentType: 'Member', pathTemplate: 'Member/{parentId}/MemberPulse' },
|
|
116
|
-
'messagefolders': { parentType: 'Member', pathTemplate: 'Member/{parentId}/MessageFolders' },
|
|
117
|
-
'messages': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Messages' },
|
|
118
|
-
'notificationsubscription': { parentType: 'Member', pathTemplate: 'Member/{parentId}/NotificationSubscription' },
|
|
119
|
-
'wallcomments': { parentType: 'Member', pathTemplate: 'Member/{parentId}/WallComments' },
|
|
120
|
-
'wallpostfirst': { parentType: 'Member', pathTemplate: 'Member/{parentId}/WallPostFirst' },
|
|
121
|
-
'wallposts': { parentType: 'Member', pathTemplate: 'Member/{parentId}/WallPosts' },
|
|
122
|
-
// ── Additional Member-scoped (from research SOT) ─────────────────
|
|
123
|
-
'connectioncategorylist': { parentType: 'Member', pathTemplate: 'Member/{parentId}/ConnectionCategoryList' },
|
|
124
|
-
'connectionsuggestions': { parentType: 'Member', pathTemplate: 'Member/{parentId}/ConnectionSuggestions' },
|
|
125
|
-
'directorysearch': { parentType: 'Member', pathTemplate: 'Member/{parentId}/DirectorySearch' },
|
|
126
|
-
'eventregistrants': { parentType: 'Member', pathTemplate: 'Member/{parentId}/EventRegistrants' },
|
|
127
|
-
'eventsearch': { parentType: 'Member', pathTemplate: 'Member/{parentId}/EventSearch' },
|
|
128
|
-
'feeds': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Feeds' },
|
|
129
|
-
'mediagalleryalbum': { parentType: 'Member', pathTemplate: 'Member/{parentId}/MediaGalleryAlbum' },
|
|
130
|
-
'networks': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Networks' },
|
|
131
|
-
'networktypes': { parentType: 'Member', pathTemplate: 'Member/{parentId}/NetworkTypes' },
|
|
132
|
-
'networkscloud': { parentType: 'Member', pathTemplate: 'Member/{parentId}/NetworksCloud' },
|
|
133
|
-
'notifications': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Notifications' },
|
|
134
|
-
'photos': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Photos' },
|
|
135
|
-
'pushnotificationsconfig': { parentType: 'Member', pathTemplate: 'Member/{parentId}/PushNotificationsConfig' },
|
|
136
|
-
'sponsorposts': { parentType: 'Member', pathTemplate: 'Member/{parentId}/SponsorPosts' },
|
|
137
|
-
// ── /Ymc/ member-scoped (base URL handled separately) ────────────
|
|
138
|
-
'jobalerts': { parentType: 'Member', pathTemplate: 'Member/{parentId}/JobAlerts' },
|
|
139
|
-
'jobalertscriteria': { parentType: 'Member', pathTemplate: 'Member/{parentId}/JobAlertsCriteria' },
|
|
140
|
-
'jobsearch': { parentType: 'Member', pathTemplate: 'Member/{parentId}/JobSearch' },
|
|
141
|
-
'locationcoordinates': { parentType: 'Member', pathTemplate: 'Member/{parentId}/LocationCoordinates' },
|
|
142
|
-
'pinpoint': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Pinpoint' },
|
|
143
|
-
'savedjobs': { parentType: 'Member', pathTemplate: 'Member/{parentId}/SavedJobs' },
|
|
144
|
-
'templates': { parentType: 'Member', pathTemplate: 'Member/{parentId}/Templates' },
|
|
145
|
-
// ── Custom-enumerated (IDs fetched from a secondary list endpoint) ─
|
|
146
|
-
// Locations/{countryId} — enumerate country IDs from Countries endpoint
|
|
147
|
-
'locations': {
|
|
148
|
-
parentType: 'Custom',
|
|
149
|
-
pathTemplate: 'Locations/{parentId}',
|
|
150
|
-
idSourcePath: 'Countries',
|
|
151
|
-
idResponseKey: 'countryList',
|
|
152
|
-
idField: 'countryId',
|
|
153
|
-
},
|
|
154
|
-
// MarkupRender/{MarkupId} — enumerate markup IDs from Markup list endpoint
|
|
155
|
-
'markuprender': {
|
|
156
|
-
parentType: 'Custom',
|
|
157
|
-
pathTemplate: 'MarkupRender/{parentId}',
|
|
158
|
-
idSourcePath: 'Markup',
|
|
159
|
-
idResponseKey: 'MarkupList',
|
|
160
|
-
idField: 'MarkupId',
|
|
161
|
-
},
|
|
162
|
-
// MemberReferrals/{ProfileID} — enumerate member IDs from PeopleIDs endpoint
|
|
163
|
-
'memberreferrals': { parentType: 'Member', pathTemplate: 'Member/{parentId}/MemberReferrals' },
|
|
164
|
-
// StoreOrders/{ProfileID} — enumerate member IDs from PeopleIDs endpoint (requires ProfileID)
|
|
165
|
-
'storeorders': { parentType: 'Member', pathTemplate: 'Member/{parentId}/StoreOrders' },
|
|
166
|
-
// GroupMembershipLogs/{GroupID} — enumerate group IDs from Groups endpoint
|
|
167
|
-
'groupmembershiplogs': { parentType: 'Group', pathTemplate: 'Group/{parentId}/MembershipLogs' },
|
|
168
|
-
// FinanceBatchDetails/{BatchId} — enumerate batch IDs from FinanceBatches endpoint
|
|
169
|
-
'financebatchdetails': {
|
|
170
|
-
parentType: 'Custom',
|
|
171
|
-
pathTemplate: 'FinanceBatchDetails/{parentId}',
|
|
172
|
-
idSourcePath: 'FinanceBatches',
|
|
173
|
-
idResponseKey: 'FinanceBatch',
|
|
174
|
-
idField: 'BatchID',
|
|
175
|
-
},
|
|
176
|
-
// CustomPageVersions/{PageID} — enumerate page IDs from CustomPages endpoint
|
|
177
|
-
'custompageversions': {
|
|
178
|
-
parentType: 'Custom',
|
|
179
|
-
pathTemplate: 'CustomPageVersions/{parentId}',
|
|
180
|
-
idSourcePath: 'CustomPages',
|
|
181
|
-
idResponseKey: 'CustomPages',
|
|
182
|
-
idField: 'PageID',
|
|
183
|
-
},
|
|
184
|
-
// MembershipModifiers/{MembershipID} — enumerate membership type IDs from Memberships
|
|
185
|
-
'membershipmodifiers': {
|
|
186
|
-
parentType: 'Custom',
|
|
187
|
-
pathTemplate: 'MembershipModifiers/{parentId}',
|
|
188
|
-
idSourcePath: 'Memberships/',
|
|
189
|
-
idResponseKey: 'membershipList',
|
|
190
|
-
idField: 'MemberTypeId',
|
|
191
|
-
},
|
|
192
|
-
// MembershipPromoCodes/{MembershipID}/ — enumerate membership type IDs from Memberships
|
|
193
|
-
'membershipPromoCodes': {
|
|
194
|
-
parentType: 'Custom',
|
|
195
|
-
pathTemplate: 'MembershipPromoCodes/{parentId}/',
|
|
196
|
-
idSourcePath: 'Memberships/',
|
|
197
|
-
idResponseKey: 'membershipList',
|
|
198
|
-
idField: 'MemberTypeId',
|
|
199
|
-
},
|
|
200
|
-
// MembershipRenewalReminder/{id} — enumerate membership type IDs from Memberships
|
|
201
|
-
'membershiprenewalremindergetrequest': {
|
|
202
|
-
parentType: 'Custom',
|
|
203
|
-
pathTemplate: 'MembershipRenewalReminder/{parentId}',
|
|
204
|
-
idSourcePath: 'Memberships/',
|
|
205
|
-
idResponseKey: 'membershipList',
|
|
206
|
-
idField: 'MemberTypeId',
|
|
207
|
-
},
|
|
208
|
-
// Campaigns/{CampaignId} — enumerate campaign IDs from AllCampaigns (response.Campaigns[].Id)
|
|
209
|
-
'campaigns': {
|
|
210
|
-
parentType: 'Custom',
|
|
211
|
-
pathTemplate: 'Campaigns/{parentId}',
|
|
212
|
-
idSourcePath: 'AllCampaigns',
|
|
213
|
-
idResponseKey: 'Campaigns',
|
|
214
|
-
idField: 'Id',
|
|
215
|
-
},
|
|
216
|
-
// CampaignReports/{CampaignId} — enumerate campaign IDs from AllCampaigns
|
|
217
|
-
'campaignreports': {
|
|
218
|
-
parentType: 'Custom',
|
|
219
|
-
pathTemplate: 'CampaignReports/{parentId}',
|
|
220
|
-
idSourcePath: 'AllCampaigns',
|
|
221
|
-
idResponseKey: 'Campaigns',
|
|
222
|
-
idField: 'Id',
|
|
223
|
-
},
|
|
224
|
-
// CampaignEmailListDuplicates/{ListId} — enumerate list IDs from CampaignEmailLists (response.CampaignEmailLists[].ListId)
|
|
225
|
-
'campaignemaillistduplicates': {
|
|
226
|
-
parentType: 'Custom',
|
|
227
|
-
pathTemplate: 'CampaignEmailListDuplicates/{parentId}',
|
|
228
|
-
idSourcePath: 'CampaignEmailLists',
|
|
229
|
-
idResponseKey: 'CampaignEmailLists',
|
|
230
|
-
idField: 'ListId',
|
|
231
|
-
},
|
|
232
|
-
// NOTE: Two parameterized endpoints are intentionally NOT in this map:
|
|
233
|
-
// - 'eventattendees': doubly nested (Member/{MemberId}/Event/{EventId}/EventAttendees) — needs
|
|
234
|
-
// both member and event IDs. Falls through to super.FetchChanges() which will fail. Requires
|
|
235
|
-
// custom FetchChanges logic if sync is needed.
|
|
236
|
-
// - 'customformfields': scoped by FormID (CustomForms/{FormID}/Fields) — no flat form list
|
|
237
|
-
// endpoint to enumerate IDs from. Requires manual form ID configuration if sync is needed.
|
|
238
|
-
};
|
|
239
|
-
// ─── Connector Implementation ───────────────────────────────────────
|
|
240
|
-
/**
|
|
241
|
-
* Connector for the YourMembership (YM) AMS REST API.
|
|
242
|
-
*
|
|
243
|
-
* Extends BaseRESTIntegrationConnector to leverage metadata-driven object/field
|
|
244
|
-
* discovery from IntegrationEngineBase cache and generic pagination handling.
|
|
245
|
-
*
|
|
246
|
-
* Auth flow:
|
|
247
|
-
* 1. POST /Ams/Authenticate with credentials + ClientID
|
|
248
|
-
* 2. Receive SessionId
|
|
249
|
-
* 3. Pass SessionId as X-SS-ID header on all data requests
|
|
250
|
-
*
|
|
251
|
-
* Configuration JSON (required + optional overrides):
|
|
252
|
-
* {
|
|
253
|
-
* "ClientID": "25363",
|
|
254
|
-
* "APIKey": "...",
|
|
255
|
-
* "APIPassword": "...",
|
|
256
|
-
* "MaxRetries": 5, // optional, default: 5
|
|
257
|
-
* "RequestTimeoutMs": 30000, // optional, default: 30000
|
|
258
|
-
* "MinRequestIntervalMs": 600, // optional, default: 600
|
|
259
|
-
* "EnrichBatchSize": 500, // optional, default: 500
|
|
260
|
-
* "JsonTimeoutMs": 30000, // optional, default: 30000
|
|
261
|
-
* "EnrichTimeoutMs": 45000 // optional, default: 45000
|
|
262
|
-
* }
|
|
263
|
-
*/
|
|
264
|
-
// ─── Action Metadata Objects ──────────────────────────────────────────
|
|
265
|
-
/**
|
|
266
|
-
* All 123 YourMembership API objects — used for action generation and
|
|
267
|
-
* schema discovery (YM API has no programmatic schema endpoint).
|
|
268
|
-
* Same pattern as QuickBooks connector.
|
|
269
|
-
*/
|
|
270
|
-
const YM_ACTION_OBJECTS = [
|
|
271
|
-
// ── Membership ────────────────────────────────────────
|
|
272
|
-
{
|
|
273
|
-
Name: 'Members', DisplayName: 'Members',
|
|
274
|
-
Description: 'Organization members with profile, contact, and membership details', SupportsWrite: true,
|
|
275
|
-
Fields: [
|
|
276
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Profile ID' },
|
|
277
|
-
{ Name: 'FirstName', DisplayName: 'First Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'First Name' },
|
|
278
|
-
{ Name: 'LastName', DisplayName: 'Last Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Last Name' },
|
|
279
|
-
{ Name: 'EmailAddr', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Email' },
|
|
280
|
-
{ Name: 'MemberTypeCode', DisplayName: 'Member Type Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Member Type Code' },
|
|
281
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Status' },
|
|
282
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Organization' },
|
|
283
|
-
{ Name: 'Phone', DisplayName: 'Phone', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Phone' },
|
|
284
|
-
{ Name: 'Address1', DisplayName: 'Address 1', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Address 1' },
|
|
285
|
-
{ Name: 'Address2', DisplayName: 'Address 2', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Address 2' },
|
|
286
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'City' },
|
|
287
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'State' },
|
|
288
|
-
{ Name: 'PostalCode', DisplayName: 'Postal Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Postal Code' },
|
|
289
|
-
{ Name: 'Country', DisplayName: 'Country', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Country' },
|
|
290
|
-
{ Name: 'Title', DisplayName: 'Title', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Title' },
|
|
291
|
-
{ Name: 'JoinDate', DisplayName: 'Join Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Join Date' },
|
|
292
|
-
{ Name: 'RenewalDate', DisplayName: 'Renewal Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Renewal Date' },
|
|
293
|
-
{ Name: 'ExpirationDate', DisplayName: 'Expiration Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Expiration Date' },
|
|
294
|
-
{ Name: 'MemberSinceDate', DisplayName: 'Member Since', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member Since' },
|
|
295
|
-
{ Name: 'WebsiteUrl', DisplayName: 'Website URL', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Website URL' },
|
|
296
|
-
],
|
|
297
|
-
},
|
|
298
|
-
{
|
|
299
|
-
Name: 'MemberTypes', DisplayName: 'Member Types',
|
|
300
|
-
Description: 'Classification types for members (e.g., Individual, Corporate, Student)', SupportsWrite: false,
|
|
301
|
-
Fields: [
|
|
302
|
-
{ Name: 'ID', DisplayName: 'Type ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Type ID' },
|
|
303
|
-
{ Name: 'TypeCode', DisplayName: 'Type Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Type Code' },
|
|
304
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Name' },
|
|
305
|
-
{ Name: 'IsDefault', DisplayName: 'Is Default', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Is Default' },
|
|
306
|
-
{ Name: 'PresetType', DisplayName: 'Preset Type', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Preset Type' },
|
|
307
|
-
{ Name: 'SortOrder', DisplayName: 'Sort Order', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Sort Order' },
|
|
308
|
-
],
|
|
309
|
-
},
|
|
310
|
-
{
|
|
311
|
-
Name: 'Memberships', DisplayName: 'Memberships',
|
|
312
|
-
Description: 'Membership plans with dues amounts, proration rules, and invoice settings', SupportsWrite: false,
|
|
313
|
-
Fields: [
|
|
314
|
-
{ Name: 'Id', DisplayName: 'Membership ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Membership ID' },
|
|
315
|
-
{ Name: 'Code', DisplayName: 'Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Code' },
|
|
316
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Name' },
|
|
317
|
-
{ Name: 'DuesAmount', DisplayName: 'Dues Amount', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Dues Amount' },
|
|
318
|
-
{ Name: 'ProRatedDues', DisplayName: 'Pro-Rated Dues', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Pro-Rated Dues' },
|
|
319
|
-
{ Name: 'AllowMultipleOpenInvoices', DisplayName: 'Allow Multiple Invoices', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Allow Multiple Invoices' },
|
|
320
|
-
],
|
|
321
|
-
},
|
|
322
|
-
{
|
|
323
|
-
Name: 'MembersProfiles', DisplayName: 'Members Profiles',
|
|
324
|
-
Description: 'Comprehensive member profile data including custom fields, richer than basic member list', SupportsWrite: false,
|
|
325
|
-
Fields: [
|
|
326
|
-
{ Name: 'WebSiteMemberID', DisplayName: 'WebSiteMemberID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'WebSiteMemberID' },
|
|
327
|
-
{ Name: 'FirstName', DisplayName: 'First Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'First Name' },
|
|
328
|
-
{ Name: 'LastName', DisplayName: 'Last Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Last Name' },
|
|
329
|
-
{ Name: 'EmailAddress', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Email' },
|
|
330
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Organization' },
|
|
331
|
-
{ Name: 'Title', DisplayName: 'Title', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Title' },
|
|
332
|
-
{ Name: 'MemberTypeCode', DisplayName: 'Member Type Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Member Type Code' },
|
|
333
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Status' },
|
|
334
|
-
{ Name: 'JoinDate', DisplayName: 'Join Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Join Date' },
|
|
335
|
-
{ Name: 'ExpirationDate', DisplayName: 'Expiration Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Expiration Date' },
|
|
336
|
-
{ Name: 'LastModifiedDate', DisplayName: 'Last Modified', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Modified' },
|
|
337
|
-
],
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
Name: 'PeopleIDs', DisplayName: 'People IDs',
|
|
341
|
-
Description: 'Member and non-member identity records for data synchronization with timestamp support', SupportsWrite: false,
|
|
342
|
-
Fields: [
|
|
343
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Profile ID' },
|
|
344
|
-
{ Name: 'ID', DisplayName: 'Person ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Person ID' },
|
|
345
|
-
{ Name: 'UserType', DisplayName: 'User Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'User Type' },
|
|
346
|
-
{ Name: 'DateRegistered', DisplayName: 'Date Registered', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Registered' },
|
|
347
|
-
],
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
Name: 'MemberSubAccounts', DisplayName: 'Member Sub Accounts',
|
|
351
|
-
Description: 'Sub-account relationships linking dependent members to primary accounts', SupportsWrite: false,
|
|
352
|
-
Fields: [
|
|
353
|
-
{ Name: 'ID', DisplayName: 'Sub-Account ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Sub-Account ID' },
|
|
354
|
-
{ Name: 'ParentID', DisplayName: 'Parent Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Parent Member ID' },
|
|
355
|
-
{ Name: 'DateRegistered', DisplayName: 'Date Registered', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Registered' },
|
|
356
|
-
],
|
|
357
|
-
},
|
|
358
|
-
{
|
|
359
|
-
Name: 'MembershipModifiers', DisplayName: 'Membership Modifiers',
|
|
360
|
-
Description: 'Price modifier rules per membership plan (discounts, surcharges)', SupportsWrite: false,
|
|
361
|
-
Fields: [
|
|
362
|
-
{ Name: 'ID', DisplayName: 'Modifier ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Modifier ID' },
|
|
363
|
-
{ Name: 'MembershipID', DisplayName: 'Membership ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Membership ID' },
|
|
364
|
-
{ Name: 'Name', DisplayName: 'Modifier Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Modifier Name' },
|
|
365
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Description' },
|
|
366
|
-
{ Name: 'Amount', DisplayName: 'Amount', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Amount' },
|
|
367
|
-
],
|
|
368
|
-
},
|
|
369
|
-
{
|
|
370
|
-
Name: 'MembershipPromoCodes', DisplayName: 'Membership Promo Codes',
|
|
371
|
-
Description: 'Promotional discount codes per membership plan with usage limits and expiration', SupportsWrite: true,
|
|
372
|
-
Fields: [
|
|
373
|
-
{ Name: 'PromoCodeId', DisplayName: 'Promo Code ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Promo Code ID' },
|
|
374
|
-
{ Name: 'MembershipID', DisplayName: 'Membership ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Membership ID' },
|
|
375
|
-
{ Name: 'FriendlyName', DisplayName: 'Friendly Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Friendly Name' },
|
|
376
|
-
{ Name: 'DiscountAmount', DisplayName: 'Discount Amount', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Discount Amount' },
|
|
377
|
-
{ Name: 'ExpirationDate', DisplayName: 'Expiration Date', Type: 'datetime', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Expiration Date' },
|
|
378
|
-
{ Name: 'UsageLimit', DisplayName: 'Usage Limit', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Usage Limit' },
|
|
379
|
-
],
|
|
380
|
-
},
|
|
381
|
-
// ── Events ────────────────────────────────────────────
|
|
382
|
-
{
|
|
383
|
-
Name: 'Events', DisplayName: 'Events',
|
|
384
|
-
Description: 'Events including conferences, webinars, and meetings with dates and virtual meeting info', SupportsWrite: true,
|
|
385
|
-
Fields: [
|
|
386
|
-
{ Name: 'EventId', DisplayName: 'Event ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Event ID' },
|
|
387
|
-
{ Name: 'Name', DisplayName: 'Event Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Event Name' },
|
|
388
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Active' },
|
|
389
|
-
{ Name: 'StartDate', DisplayName: 'Start Date', Type: 'datetime', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Start Date' },
|
|
390
|
-
{ Name: 'EndDate', DisplayName: 'End Date', Type: 'datetime', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'End Date' },
|
|
391
|
-
{ Name: 'StartTime', DisplayName: 'Start Time', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Start Time' },
|
|
392
|
-
{ Name: 'EndTime', DisplayName: 'End Time', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'End Time' },
|
|
393
|
-
{ Name: 'IsVirtual', DisplayName: 'Is Virtual', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Is Virtual' },
|
|
394
|
-
{ Name: 'VirtualMeetingType', DisplayName: 'Virtual Meeting Type', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Virtual Meeting Type' },
|
|
395
|
-
],
|
|
396
|
-
},
|
|
397
|
-
{
|
|
398
|
-
Name: 'EventRegistrations', DisplayName: 'Event Registrations',
|
|
399
|
-
Description: 'Event registration records with attendee details, status, badge numbers, and attendance tracking', SupportsWrite: true,
|
|
400
|
-
Fields: [
|
|
401
|
-
{ Name: 'Id', DisplayName: 'Registrant ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Registrant ID' },
|
|
402
|
-
{ Name: 'EventId', DisplayName: 'Event ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Event ID' },
|
|
403
|
-
{ Name: 'RegistrationID', DisplayName: 'Registration ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Registration ID' },
|
|
404
|
-
{ Name: 'FirstName', DisplayName: 'First Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'First Name' },
|
|
405
|
-
{ Name: 'LastName', DisplayName: 'Last Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Name' },
|
|
406
|
-
{ Name: 'DisplayName', DisplayName: 'Display Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Display Name' },
|
|
407
|
-
{ Name: 'HeadShotImage', DisplayName: 'Head Shot Image', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Head Shot Image' },
|
|
408
|
-
{ Name: 'DateRegistered', DisplayName: 'Date Registered', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Registered' },
|
|
409
|
-
{ Name: 'IsPrimary', DisplayName: 'Is Primary', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Is Primary' },
|
|
410
|
-
{ Name: 'BadgeNumber', DisplayName: 'Badge Number', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Badge Number' },
|
|
411
|
-
],
|
|
412
|
-
},
|
|
413
|
-
{
|
|
414
|
-
Name: 'EventSessions', DisplayName: 'Event Sessions',
|
|
415
|
-
Description: 'Breakout sessions within events including presenter, schedule, and CEU eligibility', SupportsWrite: true,
|
|
416
|
-
Fields: [
|
|
417
|
-
{ Name: 'SessionId', DisplayName: 'Session ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Session ID' },
|
|
418
|
-
{ Name: 'EventId', DisplayName: 'Event ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Event ID' },
|
|
419
|
-
{ Name: 'Name', DisplayName: 'Session Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Session Name' },
|
|
420
|
-
{ Name: 'Presenter', DisplayName: 'Presenter', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Presenter' },
|
|
421
|
-
{ Name: 'StartDate', DisplayName: 'Start Date', Type: 'datetime', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Start Date' },
|
|
422
|
-
{ Name: 'StartTime', DisplayName: 'Start Time', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Start Time' },
|
|
423
|
-
{ Name: 'EndDate', DisplayName: 'End Date', Type: 'datetime', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'End Date' },
|
|
424
|
-
{ Name: 'EndTime', DisplayName: 'End Time', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'End Time' },
|
|
425
|
-
{ Name: 'MaxRegistrants', DisplayName: 'Max Registrants', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Max Registrants' },
|
|
426
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Description' },
|
|
427
|
-
{ Name: 'AllowCEUs', DisplayName: 'Allow CEUs', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Allow CEUs' },
|
|
428
|
-
],
|
|
429
|
-
},
|
|
430
|
-
{
|
|
431
|
-
Name: 'EventTickets', DisplayName: 'Event Tickets',
|
|
432
|
-
Description: 'Ticket types for events with pricing, quantity limits, and categories', SupportsWrite: true,
|
|
433
|
-
Fields: [
|
|
434
|
-
{ Name: 'TicketId', DisplayName: 'Ticket ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Ticket ID' },
|
|
435
|
-
{ Name: 'EventId', DisplayName: 'Event ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Event ID' },
|
|
436
|
-
{ Name: 'Name', DisplayName: 'Ticket Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Ticket Name' },
|
|
437
|
-
{ Name: 'Quantity', DisplayName: 'Quantity', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Quantity' },
|
|
438
|
-
{ Name: 'UnitPrice', DisplayName: 'Unit Price', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Unit Price' },
|
|
439
|
-
{ Name: 'Type', DisplayName: 'Type', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Type' },
|
|
440
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Description' },
|
|
441
|
-
{ Name: 'Category', DisplayName: 'Category', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Category' },
|
|
442
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Active' },
|
|
443
|
-
],
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
Name: 'EventCategories', DisplayName: 'Event Categories',
|
|
447
|
-
Description: 'Categories for organizing and classifying events', SupportsWrite: false,
|
|
448
|
-
Fields: [
|
|
449
|
-
{ Name: 'Id', DisplayName: 'Category ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Category ID' },
|
|
450
|
-
{ Name: 'Name', DisplayName: 'Category Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Category Name' },
|
|
451
|
-
],
|
|
452
|
-
},
|
|
453
|
-
{
|
|
454
|
-
Name: 'EventAttendeeTypes', DisplayName: 'Event Attendee Types',
|
|
455
|
-
Description: 'Attendee type definitions per event (e.g., Member, Non-Member, Speaker)', SupportsWrite: true,
|
|
456
|
-
Fields: [
|
|
457
|
-
{ Name: 'Id', DisplayName: 'Attendee Type ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Attendee Type ID' },
|
|
458
|
-
{ Name: 'EventId', DisplayName: 'Event ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Event ID' },
|
|
459
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Name' },
|
|
460
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Description' },
|
|
461
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Active' },
|
|
462
|
-
],
|
|
463
|
-
},
|
|
464
|
-
{
|
|
465
|
-
Name: 'EventSessionGroups', DisplayName: 'Event Session Groups',
|
|
466
|
-
Description: 'Logical groupings of sessions within events (e.g., tracks, time slots)', SupportsWrite: true,
|
|
467
|
-
Fields: [
|
|
468
|
-
{ Name: 'SessionGroupId', DisplayName: 'Session Group ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Session Group ID' },
|
|
469
|
-
{ Name: 'EventId', DisplayName: 'Event ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Event ID' },
|
|
470
|
-
{ Name: 'Name', DisplayName: 'Group Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Group Name' },
|
|
471
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Description' },
|
|
472
|
-
],
|
|
473
|
-
},
|
|
474
|
-
{
|
|
475
|
-
Name: 'EventCEUAwards', DisplayName: 'Event CEU Awards',
|
|
476
|
-
Description: 'Continuing education credit awards linked to events and certifications', SupportsWrite: false,
|
|
477
|
-
Fields: [
|
|
478
|
-
{ Name: 'AwardID', DisplayName: 'Award ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Award ID' },
|
|
479
|
-
{ Name: 'EventId', DisplayName: 'Event ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Event ID' },
|
|
480
|
-
{ Name: 'CertificationID', DisplayName: 'Certification ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Certification ID' },
|
|
481
|
-
{ Name: 'CreditTypeID', DisplayName: 'Credit Type ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Credit Type ID' },
|
|
482
|
-
{ Name: 'Credits', DisplayName: 'Credits', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Credits' },
|
|
483
|
-
],
|
|
484
|
-
},
|
|
485
|
-
{
|
|
486
|
-
Name: 'EventRegistrationForms', DisplayName: 'Event Registration Forms',
|
|
487
|
-
Description: 'Registration form definitions for events with auto-approval settings', SupportsWrite: true,
|
|
488
|
-
Fields: [
|
|
489
|
-
{ Name: 'FormId', DisplayName: 'Form ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Form ID' },
|
|
490
|
-
{ Name: 'FormName', DisplayName: 'Form Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Form Name' },
|
|
491
|
-
{ Name: 'AutoApprove', DisplayName: 'Auto Approve', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Auto Approve' },
|
|
492
|
-
],
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
Name: 'EventIDs', DisplayName: 'Event IDs',
|
|
496
|
-
Description: 'Lightweight event identifier list for sync with last-modified date filtering', SupportsWrite: false,
|
|
497
|
-
Fields: [
|
|
498
|
-
{ Name: 'ID', DisplayName: 'ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' },
|
|
499
|
-
{ Name: 'LastModifiedDate', DisplayName: 'Last Modified', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Modified' },
|
|
500
|
-
],
|
|
501
|
-
},
|
|
502
|
-
// ── Finance ───────────────────────────────────────────
|
|
503
|
-
{
|
|
504
|
-
Name: 'DonationFunds', DisplayName: 'Donation Funds',
|
|
505
|
-
Description: 'Donation fund definitions for directing charitable contributions', SupportsWrite: false,
|
|
506
|
-
Fields: [
|
|
507
|
-
{ Name: 'fundId', DisplayName: 'Fund ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Fund ID' },
|
|
508
|
-
{ Name: 'fundName', DisplayName: 'Fund Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Fund Name' },
|
|
509
|
-
{ Name: 'fundOptionsCount', DisplayName: 'Options Count', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Options Count' },
|
|
510
|
-
],
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
Name: 'InvoiceItems', DisplayName: 'Invoice Items',
|
|
514
|
-
Description: 'Individual line items from invoices including dues, events, store purchases, and donations', SupportsWrite: false,
|
|
515
|
-
Fields: [
|
|
516
|
-
{ Name: 'LineItemID', DisplayName: 'Line Item ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Line Item ID' },
|
|
517
|
-
{ Name: 'InvoiceNo', DisplayName: 'Invoice Number', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Invoice Number' },
|
|
518
|
-
{ Name: 'InvoiceType', DisplayName: 'Invoice Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Invoice Type' },
|
|
519
|
-
{ Name: 'WebSiteMemberID', DisplayName: 'Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member ID' },
|
|
520
|
-
{ Name: 'ConstituentID', DisplayName: 'Constituent ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Constituent ID' },
|
|
521
|
-
{ Name: 'InvoiceNameFirst', DisplayName: 'First Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'First Name' },
|
|
522
|
-
{ Name: 'InvoiceNameLast', DisplayName: 'Last Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Name' },
|
|
523
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
524
|
-
{ Name: 'EmailAddress', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
525
|
-
{ Name: 'LineItemType', DisplayName: 'Line Item Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Line Item Type' },
|
|
526
|
-
{ Name: 'LineItemDescription', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
527
|
-
{ Name: 'LineItemDate', DisplayName: 'Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date' },
|
|
528
|
-
{ Name: 'LineItemDateEntered', DisplayName: 'Date Entered', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Entered' },
|
|
529
|
-
{ Name: 'LineItemAmount', DisplayName: 'Amount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Amount' },
|
|
530
|
-
{ Name: 'LineItemQuantity', DisplayName: 'Quantity', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Quantity' },
|
|
531
|
-
{ Name: 'LineTotal', DisplayName: 'Line Total', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Line Total' },
|
|
532
|
-
{ Name: 'OutstandingBalance', DisplayName: 'Outstanding Balance', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Outstanding Balance' },
|
|
533
|
-
{ Name: 'PaymentTerms', DisplayName: 'Payment Terms', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Payment Terms' },
|
|
534
|
-
{ Name: 'GLCodeItemName', DisplayName: 'GL Code', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GL Code' },
|
|
535
|
-
{ Name: 'QBClassItemName', DisplayName: 'QB Class', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'QB Class' },
|
|
536
|
-
{ Name: 'PaymentOption', DisplayName: 'Payment Option', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Payment Option' },
|
|
537
|
-
],
|
|
538
|
-
},
|
|
539
|
-
{
|
|
540
|
-
Name: 'DuesTransactions', DisplayName: 'Dues Transactions',
|
|
541
|
-
Description: 'Membership dues payment transactions with status, amounts, and membership details', SupportsWrite: false,
|
|
542
|
-
Fields: [
|
|
543
|
-
{ Name: 'TransactionID', DisplayName: 'Transaction ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Transaction ID' },
|
|
544
|
-
{ Name: 'InvoiceNumber', DisplayName: 'Invoice Number', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Invoice Number' },
|
|
545
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
546
|
-
{ Name: 'WebsiteMemberID', DisplayName: 'Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member ID' },
|
|
547
|
-
{ Name: 'ConstituentID', DisplayName: 'Constituent ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Constituent ID' },
|
|
548
|
-
{ Name: 'FirstName', DisplayName: 'First Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'First Name' },
|
|
549
|
-
{ Name: 'LastName', DisplayName: 'Last Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Name' },
|
|
550
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
551
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
552
|
-
{ Name: 'Amount', DisplayName: 'Amount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Amount' },
|
|
553
|
-
{ Name: 'BalanceDue', DisplayName: 'Balance Due', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Balance Due' },
|
|
554
|
-
{ Name: 'PaymentType', DisplayName: 'Payment Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Payment Type' },
|
|
555
|
-
{ Name: 'DateSubmitted', DisplayName: 'Date Submitted', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Submitted' },
|
|
556
|
-
{ Name: 'DateProcessed', DisplayName: 'Date Processed', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Processed' },
|
|
557
|
-
{ Name: 'MembershipRequested', DisplayName: 'Membership Requested', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Membership Requested' },
|
|
558
|
-
{ Name: 'CurrentMembership', DisplayName: 'Current Membership', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Current Membership' },
|
|
559
|
-
{ Name: 'CurrentMembershipExpDate', DisplayName: 'Membership Expiration', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Membership Expiration' },
|
|
560
|
-
{ Name: 'MemberType', DisplayName: 'Member Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member Type' },
|
|
561
|
-
{ Name: 'DateMemberSignup', DisplayName: 'Member Signup Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member Signup Date' },
|
|
562
|
-
{ Name: 'InvoiceDate', DisplayName: 'Invoice Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Invoice Date' },
|
|
563
|
-
{ Name: 'ClosedBy', DisplayName: 'Closed By', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Closed By' },
|
|
564
|
-
],
|
|
565
|
-
},
|
|
566
|
-
{
|
|
567
|
-
Name: 'DonationHistory', DisplayName: 'Donation History',
|
|
568
|
-
Description: 'Individual donation records per member with amounts, funds, and payment methods', SupportsWrite: false,
|
|
569
|
-
Fields: [
|
|
570
|
-
{ Name: 'intDonationId', DisplayName: 'Donation ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Donation ID' },
|
|
571
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Profile ID' },
|
|
572
|
-
{ Name: 'DatDonation', DisplayName: 'Donation Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Donation Date' },
|
|
573
|
-
{ Name: 'dblDonation', DisplayName: 'Donation Amount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Donation Amount' },
|
|
574
|
-
{ Name: 'strStatus', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
575
|
-
{ Name: 'strFundName', DisplayName: 'Fund Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Fund Name' },
|
|
576
|
-
{ Name: 'strDonorName', DisplayName: 'Donor Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Donor Name' },
|
|
577
|
-
{ Name: 'strPaymentMethod', DisplayName: 'Payment Method', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Payment Method' },
|
|
578
|
-
],
|
|
579
|
-
},
|
|
580
|
-
{
|
|
581
|
-
Name: 'DonationTransactions', DisplayName: 'Donation Transactions',
|
|
582
|
-
Description: 'Donation payment transactions with member, fund, and payment details. DateFrom must be within 90 days.', SupportsWrite: false,
|
|
583
|
-
Fields: [
|
|
584
|
-
{ Name: 'TransactionID', DisplayName: 'Transaction ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Transaction ID' },
|
|
585
|
-
{ Name: 'WebsiteMemberID', DisplayName: 'Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member ID' },
|
|
586
|
-
{ Name: 'ConstituentID', DisplayName: 'Constituent ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Constituent ID' },
|
|
587
|
-
{ Name: 'FirstName', DisplayName: 'First Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'First Name' },
|
|
588
|
-
{ Name: 'LastName', DisplayName: 'Last Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Name' },
|
|
589
|
-
{ Name: 'Amount', DisplayName: 'Amount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Amount' },
|
|
590
|
-
{ Name: 'FundName', DisplayName: 'Fund Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Fund Name' },
|
|
591
|
-
{ Name: 'DateSubmitted', DisplayName: 'Date Submitted', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Submitted' },
|
|
592
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
593
|
-
{ Name: 'PaymentType', DisplayName: 'Payment Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Payment Type' },
|
|
594
|
-
],
|
|
595
|
-
},
|
|
596
|
-
{
|
|
597
|
-
Name: 'StoreOrders', DisplayName: 'Store Orders',
|
|
598
|
-
Description: 'Online store order headers with order date, status, and shipping info', SupportsWrite: false,
|
|
599
|
-
Fields: [
|
|
600
|
-
{ Name: 'InvoiceID', DisplayName: 'InvoiceID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'InvoiceID' },
|
|
601
|
-
{ Name: 'WebsiteMemberID', DisplayName: 'Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member ID' },
|
|
602
|
-
{ Name: 'OrderDate', DisplayName: 'Order Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Order Date' },
|
|
603
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
604
|
-
{ Name: 'TotalAmount', DisplayName: 'Total Amount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Total Amount' },
|
|
605
|
-
{ Name: 'ShippingMethod', DisplayName: 'Shipping Method', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shipping Method' },
|
|
606
|
-
{ Name: 'TrackingNumber', DisplayName: 'Tracking Number', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Tracking Number' },
|
|
607
|
-
],
|
|
608
|
-
},
|
|
609
|
-
{
|
|
610
|
-
Name: 'StoreOrderDetails', DisplayName: 'Store Order Details',
|
|
611
|
-
Description: 'Individual line items within store orders with product, pricing, and quantity details', SupportsWrite: false,
|
|
612
|
-
Fields: [
|
|
613
|
-
{ Name: 'OrderID', DisplayName: 'OrderID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Parent order ID' },
|
|
614
|
-
{ Name: 'InvoiceNumber', DisplayName: 'Invoice Number', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Invoice Number' },
|
|
615
|
-
{ Name: 'WebsiteMemberID', DisplayName: 'Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member ID' },
|
|
616
|
-
{ Name: 'ProductName', DisplayName: 'Product Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Product Name' },
|
|
617
|
-
{ Name: 'Quantity', DisplayName: 'Quantity', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Quantity' },
|
|
618
|
-
{ Name: 'UnitPrice', DisplayName: 'Unit Price', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Unit Price' },
|
|
619
|
-
{ Name: 'TotalPrice', DisplayName: 'Total Price', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Total Price' },
|
|
620
|
-
{ Name: 'OrderDate', DisplayName: 'Order Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Order Date' },
|
|
621
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
622
|
-
{ Name: 'ShippingMethod', DisplayName: 'Shipping Method', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shipping Method' },
|
|
623
|
-
{ Name: 'ProductCode', DisplayName: 'Product Code', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Product Code' },
|
|
624
|
-
],
|
|
625
|
-
},
|
|
626
|
-
{
|
|
627
|
-
Name: 'GLCodes', DisplayName: 'GL Codes',
|
|
628
|
-
Description: 'General ledger codes for financial reporting and accounting integration', SupportsWrite: false,
|
|
629
|
-
Fields: [
|
|
630
|
-
{ Name: 'GLCodeId', DisplayName: 'GL Code ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'GL Code ID' },
|
|
631
|
-
{ Name: 'GLCodeName', DisplayName: 'GL Code Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'GL Code Name' },
|
|
632
|
-
],
|
|
633
|
-
},
|
|
634
|
-
{
|
|
635
|
-
Name: 'FinanceBatches', DisplayName: 'Finance Batches',
|
|
636
|
-
Description: 'Financial processing batches grouping transactions by commerce type and close date. DISABLED: YM API pagination is broken for this endpoint — returns the same full result set on every page regardless of PageNumber, causing infinite loops.', SupportsWrite: true,
|
|
637
|
-
Fields: [
|
|
638
|
-
{ Name: 'BatchID', DisplayName: 'Batch ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Batch ID' },
|
|
639
|
-
{ Name: 'CommerceType', DisplayName: 'Commerce Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Commerce Type' },
|
|
640
|
-
{ Name: 'ItemCount', DisplayName: 'Item Count', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Item Count' },
|
|
641
|
-
{ Name: 'ClosedDate', DisplayName: 'Closed Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Closed Date' },
|
|
642
|
-
{ Name: 'CreateDateTime', DisplayName: 'Created', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Created' },
|
|
643
|
-
],
|
|
644
|
-
},
|
|
645
|
-
{
|
|
646
|
-
Name: 'FinanceBatchDetails', DisplayName: 'Finance Batch Details',
|
|
647
|
-
Description: 'Detailed invoice and payment records within financial processing batches', SupportsWrite: false,
|
|
648
|
-
Fields: [
|
|
649
|
-
{ Name: 'LineItemID', DisplayName: 'LineItemID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'LineItemID' },
|
|
650
|
-
{ Name: 'BatchID', DisplayName: 'Batch ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Batch ID' },
|
|
651
|
-
{ Name: 'InvoiceNumber', DisplayName: 'Invoice Number', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Invoice Number' },
|
|
652
|
-
{ Name: 'Amount', DisplayName: 'Amount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Amount' },
|
|
653
|
-
{ Name: 'PaymentType', DisplayName: 'Payment Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Payment Type' },
|
|
654
|
-
{ Name: 'TransactionDate', DisplayName: 'Transaction Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Transaction Date' },
|
|
655
|
-
],
|
|
656
|
-
},
|
|
657
|
-
{
|
|
658
|
-
Name: 'DuesRules', DisplayName: 'Dues Rules',
|
|
659
|
-
Description: 'Dues calculation rules with names, descriptions, and amount modifiers', SupportsWrite: false,
|
|
660
|
-
Fields: [
|
|
661
|
-
{ Name: 'ID', DisplayName: 'Rule ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Rule ID' },
|
|
662
|
-
{ Name: 'Name', DisplayName: 'Rule Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Rule Name' },
|
|
663
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Description' },
|
|
664
|
-
{ Name: 'Amount', DisplayName: 'Amount', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Amount' },
|
|
665
|
-
{ Name: 'Selected', DisplayName: 'Selected', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Selected' },
|
|
666
|
-
],
|
|
667
|
-
},
|
|
668
|
-
// ── Groups ────────────────────────────────────────────
|
|
669
|
-
{
|
|
670
|
-
Name: 'Groups', DisplayName: 'Groups',
|
|
671
|
-
Description: 'Committees, chapters, sections, and other organizational groups', SupportsWrite: true,
|
|
672
|
-
Fields: [
|
|
673
|
-
{ Name: 'Id', DisplayName: 'Group ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Group ID' },
|
|
674
|
-
{ Name: 'Name', DisplayName: 'Group Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Group Name' },
|
|
675
|
-
{ Name: 'GroupTypeName', DisplayName: 'Group Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Group Type' },
|
|
676
|
-
{ Name: 'GroupTypeId', DisplayName: 'Group Type ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Group Type ID' },
|
|
677
|
-
],
|
|
678
|
-
},
|
|
679
|
-
{
|
|
680
|
-
Name: 'MemberGroups', DisplayName: 'Member Groups',
|
|
681
|
-
Description: 'Association between members and their group/committee memberships', SupportsWrite: true,
|
|
682
|
-
Fields: [
|
|
683
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Id' },
|
|
684
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Profile ID' },
|
|
685
|
-
{ Name: 'GroupId', DisplayName: 'Group ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Group ID' },
|
|
686
|
-
{ Name: 'GroupName', DisplayName: 'Group Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Group Name' },
|
|
687
|
-
{ Name: 'GroupTypeName', DisplayName: 'Group Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Group Type' },
|
|
688
|
-
{ Name: 'GroupTypeId', DisplayName: 'Group Type ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Group Type ID' },
|
|
689
|
-
],
|
|
690
|
-
},
|
|
691
|
-
{
|
|
692
|
-
Name: 'GroupTypes', DisplayName: 'Group Types',
|
|
693
|
-
Description: 'Classification types for groups (e.g., Committee, Chapter, Section)', SupportsWrite: false,
|
|
694
|
-
Fields: [
|
|
695
|
-
{ Name: 'Id', DisplayName: 'Group Type ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Group Type ID' },
|
|
696
|
-
{ Name: 'TypeName', DisplayName: 'Type Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Type Name' },
|
|
697
|
-
{ Name: 'SortIndex', DisplayName: 'Sort Index', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Sort Index' },
|
|
698
|
-
],
|
|
699
|
-
},
|
|
700
|
-
{
|
|
701
|
-
Name: 'MembersGroupsBulk', DisplayName: 'Members Groups Bulk',
|
|
702
|
-
Description: 'Bulk member-to-group assignments with group codes and primary group designation', SupportsWrite: false,
|
|
703
|
-
Fields: [
|
|
704
|
-
{ Name: 'WebSiteMemberID', DisplayName: 'Member ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Member ID' },
|
|
705
|
-
{ Name: 'GroupID', DisplayName: 'Group ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Group ID' },
|
|
706
|
-
{ Name: 'GroupCode', DisplayName: 'Group Code', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Group Code' },
|
|
707
|
-
{ Name: 'GroupName', DisplayName: 'Group Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Group Name' },
|
|
708
|
-
{ Name: 'PrimaryGroup', DisplayName: 'Primary Group', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Primary Group' },
|
|
709
|
-
],
|
|
710
|
-
},
|
|
711
|
-
{
|
|
712
|
-
Name: 'GroupMembershipLogs', DisplayName: 'Group Membership Logs',
|
|
713
|
-
Description: 'Audit trail of group membership changes with member details and timestamps', SupportsWrite: false,
|
|
714
|
-
Fields: [
|
|
715
|
-
{ Name: 'ItemID', DisplayName: 'Item ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Item ID' },
|
|
716
|
-
{ Name: 'ID', DisplayName: 'ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ID' },
|
|
717
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Profile ID' },
|
|
718
|
-
{ Name: 'NamePrefix', DisplayName: 'Name Prefix', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name Prefix' },
|
|
719
|
-
{ Name: 'FirstName', DisplayName: 'First Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'First Name' },
|
|
720
|
-
{ Name: 'MiddleName', DisplayName: 'Middle Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Middle Name' },
|
|
721
|
-
{ Name: 'LastName', DisplayName: 'Last Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Name' },
|
|
722
|
-
{ Name: 'Suffix', DisplayName: 'Suffix', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Suffix' },
|
|
723
|
-
{ Name: 'Nickname', DisplayName: 'Nickname', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Nickname' },
|
|
724
|
-
{ Name: 'EmployerName', DisplayName: 'Employer Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Employer Name' },
|
|
725
|
-
{ Name: 'WorkTitle', DisplayName: 'Work Title', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Work Title' },
|
|
726
|
-
{ Name: 'Date', DisplayName: 'Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date' },
|
|
727
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
728
|
-
],
|
|
729
|
-
},
|
|
730
|
-
// ── Certifications ────────────────────────────────────
|
|
731
|
-
{
|
|
732
|
-
Name: 'Certifications', DisplayName: 'Certifications',
|
|
733
|
-
Description: 'Professional certifications and continuing education programs', SupportsWrite: false,
|
|
734
|
-
Fields: [
|
|
735
|
-
{ Name: 'CertificationID', DisplayName: 'Certification ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Certification ID' },
|
|
736
|
-
{ Name: 'ID', DisplayName: 'ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ID' },
|
|
737
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Name' },
|
|
738
|
-
{ Name: 'IsActive', DisplayName: 'Is Active', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Is Active' },
|
|
739
|
-
{ Name: 'CEUsRequired', DisplayName: 'CEUs Required', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'CEUs Required' },
|
|
740
|
-
{ Name: 'Code', DisplayName: 'Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Code' },
|
|
741
|
-
],
|
|
742
|
-
},
|
|
743
|
-
{
|
|
744
|
-
Name: 'CertificationsJournals', DisplayName: 'Certifications Journals',
|
|
745
|
-
Description: 'Continuing education journal entries tracking CEU credits earned by members', SupportsWrite: true,
|
|
746
|
-
Fields: [
|
|
747
|
-
{ Name: 'EntryID', DisplayName: 'Entry ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Entry ID' },
|
|
748
|
-
{ Name: 'CertificationName', DisplayName: 'Certification Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Certification Name' },
|
|
749
|
-
{ Name: 'CEUsEarned', DisplayName: 'CEUs Earned', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CEUs Earned' },
|
|
750
|
-
{ Name: 'EntryDate', DisplayName: 'Entry Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Entry Date' },
|
|
751
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
752
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
753
|
-
{ Name: 'WebsiteMemberID', DisplayName: 'Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Member ID' },
|
|
754
|
-
],
|
|
755
|
-
},
|
|
756
|
-
{
|
|
757
|
-
Name: 'CertificationCreditTypes', DisplayName: 'Certification Credit Types',
|
|
758
|
-
Description: 'Types of continuing education credits (e.g., CEU, CPE) with expiration rules', SupportsWrite: false,
|
|
759
|
-
Fields: [
|
|
760
|
-
{ Name: 'ID', DisplayName: 'Credit Type ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Credit Type ID' },
|
|
761
|
-
{ Name: 'Code', DisplayName: 'Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Code' },
|
|
762
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Name' },
|
|
763
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Description' },
|
|
764
|
-
{ Name: 'IsDefault', DisplayName: 'Is Default', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Is Default' },
|
|
765
|
-
{ Name: 'CreditsExpire', DisplayName: 'Credits Expire', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Credits Expire' },
|
|
766
|
-
],
|
|
767
|
-
},
|
|
768
|
-
// ── Products ──────────────────────────────────────────
|
|
769
|
-
{
|
|
770
|
-
Name: 'Products', DisplayName: 'Products',
|
|
771
|
-
Description: 'Store products available for purchase with pricing, inventory, and tax info', SupportsWrite: false,
|
|
772
|
-
Fields: [
|
|
773
|
-
{ Name: 'id', DisplayName: 'Product ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Product ID' },
|
|
774
|
-
{ Name: 'description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Description' },
|
|
775
|
-
{ Name: 'amount', DisplayName: 'Amount', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Amount' },
|
|
776
|
-
{ Name: 'weight', DisplayName: 'Weight', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Weight' },
|
|
777
|
-
{ Name: 'taxRate', DisplayName: 'Tax Rate', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Tax Rate' },
|
|
778
|
-
{ Name: 'quantity', DisplayName: 'Quantity', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Quantity' },
|
|
779
|
-
{ Name: 'ProductActive', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Active' },
|
|
780
|
-
{ Name: 'IsFeatured', DisplayName: 'Is Featured', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Is Featured' },
|
|
781
|
-
{ Name: 'ListInStore', DisplayName: 'List In Store', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'List In Store' },
|
|
782
|
-
{ Name: 'taxable', DisplayName: 'Taxable', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Taxable' },
|
|
783
|
-
],
|
|
784
|
-
},
|
|
785
|
-
{
|
|
786
|
-
Name: 'ProductCategories', DisplayName: 'Product Categories',
|
|
787
|
-
Description: 'Categories for organizing store products', SupportsWrite: false,
|
|
788
|
-
Fields: [
|
|
789
|
-
{ Name: 'Id', DisplayName: 'Category ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Category ID' },
|
|
790
|
-
{ Name: 'Name', DisplayName: 'Category Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Category Name' },
|
|
791
|
-
],
|
|
792
|
-
},
|
|
793
|
-
// ── Marketing ─────────────────────────────────────────
|
|
794
|
-
{
|
|
795
|
-
Name: 'Campaigns', DisplayName: 'Campaigns',
|
|
796
|
-
Description: 'Email marketing campaigns with scheduling, sender, and delivery status', SupportsWrite: true,
|
|
797
|
-
Fields: [
|
|
798
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Id' },
|
|
799
|
-
{ Name: 'CampaignName', DisplayName: 'Campaign Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Campaign Name' },
|
|
800
|
-
{ Name: 'Subject', DisplayName: 'Subject', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Subject' },
|
|
801
|
-
{ Name: 'SenderEmail', DisplayName: 'Sender Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Sender Email' },
|
|
802
|
-
{ Name: 'DateScheduled', DisplayName: 'Date Scheduled', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Scheduled' },
|
|
803
|
-
{ Name: 'DateSent', DisplayName: 'Date Sent', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Sent' },
|
|
804
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
805
|
-
],
|
|
806
|
-
},
|
|
807
|
-
{
|
|
808
|
-
Name: 'AllCampaigns', DisplayName: 'All Campaigns',
|
|
809
|
-
Description: 'Extended campaign data with scheduling, processing counts, categories, and version info', SupportsWrite: false,
|
|
810
|
-
Fields: [
|
|
811
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Id' },
|
|
812
|
-
{ Name: 'CampaignName', DisplayName: 'Campaign Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Campaign Name' },
|
|
813
|
-
{ Name: 'Subject', DisplayName: 'Subject', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Subject' },
|
|
814
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
815
|
-
{ Name: 'Category', DisplayName: 'Category', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Category' },
|
|
816
|
-
{ Name: 'Type', DisplayName: 'Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Type' },
|
|
817
|
-
{ Name: 'DateScheduled', DisplayName: 'Date Scheduled', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Scheduled' },
|
|
818
|
-
{ Name: 'DateSent', DisplayName: 'Date Sent', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Sent' },
|
|
819
|
-
{ Name: 'ProcessingCount', DisplayName: 'Processing Count', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Processing Count' },
|
|
820
|
-
],
|
|
821
|
-
},
|
|
822
|
-
{
|
|
823
|
-
Name: 'CampaignEmailLists', DisplayName: 'Campaign Email Lists',
|
|
824
|
-
Description: 'Email distribution lists for campaigns with totals, bounces, and opt-out metrics', SupportsWrite: true,
|
|
825
|
-
Fields: [
|
|
826
|
-
{ Name: 'ListId', DisplayName: 'List ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'List ID' },
|
|
827
|
-
{ Name: 'ListType', DisplayName: 'List Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'List Type' },
|
|
828
|
-
{ Name: 'ListSize', DisplayName: 'List Size', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'List Size' },
|
|
829
|
-
{ Name: 'ListName', DisplayName: 'List Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'List Name' },
|
|
830
|
-
{ Name: 'ListArea', DisplayName: 'List Area', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'List Area' },
|
|
831
|
-
{ Name: 'DateCreated', DisplayName: 'Date Created', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Created' },
|
|
832
|
-
{ Name: 'DateModified', DisplayName: 'Date Modified', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Modified' },
|
|
833
|
-
{ Name: 'DateLastUpdated', DisplayName: 'Date Last Updated', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Last Updated' },
|
|
834
|
-
],
|
|
835
|
-
},
|
|
836
|
-
{
|
|
837
|
-
Name: 'Announcements', DisplayName: 'Announcements',
|
|
838
|
-
Description: 'Admin announcements with title, text, publication dates, and active status', SupportsWrite: true,
|
|
839
|
-
Fields: [
|
|
840
|
-
{ Name: 'AnnouncementId', DisplayName: 'Announcement ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Announcement ID' },
|
|
841
|
-
{ Name: 'Title', DisplayName: 'Title', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Title' },
|
|
842
|
-
{ Name: 'Text', DisplayName: 'Text', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Text' },
|
|
843
|
-
{ Name: 'StartDate', DisplayName: 'Start Date', Type: 'datetime', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Start Date' },
|
|
844
|
-
{ Name: 'EndDate', DisplayName: 'End Date', Type: 'datetime', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'End Date' },
|
|
845
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Active' },
|
|
846
|
-
],
|
|
847
|
-
},
|
|
848
|
-
{
|
|
849
|
-
Name: 'EmailSuppressionList', DisplayName: 'Email Suppression List',
|
|
850
|
-
Description: 'Email addresses suppressed from delivery with bounce counts and health rates', SupportsWrite: false,
|
|
851
|
-
Fields: [
|
|
852
|
-
{ Name: 'EmailAddress', DisplayName: 'EmailAddress', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'EmailAddress' },
|
|
853
|
-
{ Name: 'SuppressionType', DisplayName: 'Suppression Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Suppression Type' },
|
|
854
|
-
{ Name: 'BounceCount', DisplayName: 'Bounce Count', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Bounce Count' },
|
|
855
|
-
{ Name: 'HealthRate', DisplayName: 'Health Rate', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Health Rate' },
|
|
856
|
-
],
|
|
857
|
-
},
|
|
858
|
-
{
|
|
859
|
-
Name: 'SponsorRotators', DisplayName: 'Sponsor Rotators',
|
|
860
|
-
Description: 'Sponsor advertisement rotator configurations with display settings', SupportsWrite: false,
|
|
861
|
-
Fields: [
|
|
862
|
-
{ Name: 'RotatorId', DisplayName: 'Rotator ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Rotator ID' },
|
|
863
|
-
{ Name: 'AutoScroll', DisplayName: 'Auto Scroll', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Auto Scroll' },
|
|
864
|
-
{ Name: 'Random', DisplayName: 'Random', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Random' },
|
|
865
|
-
{ Name: 'DateAdded', DisplayName: 'Date Added', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Added' },
|
|
866
|
-
{ Name: 'Mode', DisplayName: 'Mode', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Mode' },
|
|
867
|
-
{ Name: 'Orientation', DisplayName: 'Orientation', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Orientation' },
|
|
868
|
-
{ Name: 'SchoolId', DisplayName: 'School ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'School ID' },
|
|
869
|
-
{ Name: 'Speed', DisplayName: 'Speed', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Speed' },
|
|
870
|
-
{ Name: 'Title', DisplayName: 'Title', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Title' },
|
|
871
|
-
{ Name: 'ClientId', DisplayName: 'Client ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Client ID' },
|
|
872
|
-
{ Name: 'Heading', DisplayName: 'Heading', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Heading' },
|
|
873
|
-
{ Name: 'Height', DisplayName: 'Height', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Height' },
|
|
874
|
-
],
|
|
875
|
-
},
|
|
876
|
-
// ── Engagement ────────────────────────────────────────
|
|
877
|
-
{
|
|
878
|
-
Name: 'Connections', DisplayName: 'Connections',
|
|
879
|
-
Description: 'Networking connections between members including contact info and connection status', SupportsWrite: true,
|
|
880
|
-
Fields: [
|
|
881
|
-
{ Name: 'ConnectionId', DisplayName: 'Connection ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Connection ID' },
|
|
882
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Profile ID' },
|
|
883
|
-
{ Name: 'FirstName', DisplayName: 'First Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'First Name' },
|
|
884
|
-
{ Name: 'LastName', DisplayName: 'Last Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Name' },
|
|
885
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
886
|
-
{ Name: 'WorkTitle', DisplayName: 'Work Title', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Work Title' },
|
|
887
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
888
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'State' },
|
|
889
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
890
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
891
|
-
],
|
|
892
|
-
},
|
|
893
|
-
{
|
|
894
|
-
Name: 'EngagementScores', DisplayName: 'Engagement Scores',
|
|
895
|
-
Description: 'Member engagement scoring metrics tracking participation and activity levels', SupportsWrite: true,
|
|
896
|
-
Fields: [
|
|
897
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Profile ID' },
|
|
898
|
-
{ Name: 'EngagementScore', DisplayName: 'Engagement Score', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Engagement Score' },
|
|
899
|
-
{ Name: 'LastUpdated', DisplayName: 'Last Updated', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Last Updated' },
|
|
900
|
-
],
|
|
901
|
-
},
|
|
902
|
-
{
|
|
903
|
-
Name: 'MemberReferrals', DisplayName: 'Member Referrals',
|
|
904
|
-
Description: 'Member-to-member referral tracking records', SupportsWrite: false,
|
|
905
|
-
Fields: [
|
|
906
|
-
{ Name: 'ReferralId', DisplayName: 'Referral ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Referral ID' },
|
|
907
|
-
{ Name: 'ReferrerID', DisplayName: 'Referrer Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Referrer Member ID' },
|
|
908
|
-
{ Name: 'ReferredID', DisplayName: 'Referred Member ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Referred Member ID' },
|
|
909
|
-
{ Name: 'ReferralDate', DisplayName: 'Referral Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Referral Date' },
|
|
910
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
911
|
-
],
|
|
912
|
-
},
|
|
913
|
-
{
|
|
914
|
-
Name: 'MemberNetworks', DisplayName: 'Member Networks',
|
|
915
|
-
Description: 'Social network profile links for members (LinkedIn, Twitter, etc.)', SupportsWrite: false,
|
|
916
|
-
Fields: [
|
|
917
|
-
{ Name: 'NetworkId', DisplayName: 'Network ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Network ID' },
|
|
918
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Profile ID' },
|
|
919
|
-
{ Name: 'NetworkType', DisplayName: 'Network Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Network Type' },
|
|
920
|
-
{ Name: 'ProfileUrl', DisplayName: 'Profile URL', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Profile URL' },
|
|
921
|
-
],
|
|
922
|
-
},
|
|
923
|
-
{
|
|
924
|
-
Name: 'MemberFavorites', DisplayName: 'Member Favorites',
|
|
925
|
-
Description: 'Bookmarked/favorited items per member for personalization tracking', SupportsWrite: false,
|
|
926
|
-
Fields: [
|
|
927
|
-
{ Name: 'FavoriteId', DisplayName: 'Favorite ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Favorite ID' },
|
|
928
|
-
{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Profile ID' },
|
|
929
|
-
{ Name: 'ItemType', DisplayName: 'Item Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Item Type' },
|
|
930
|
-
{ Name: 'ItemId', DisplayName: 'Item ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Item ID' },
|
|
931
|
-
{ Name: 'DateAdded', DisplayName: 'Date Added', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Added' },
|
|
932
|
-
],
|
|
933
|
-
},
|
|
934
|
-
// ── Reference ─────────────────────────────────────────
|
|
935
|
-
{
|
|
936
|
-
Name: 'Countries', DisplayName: 'Countries',
|
|
937
|
-
Description: 'Country reference list with default country designation', SupportsWrite: false,
|
|
938
|
-
Fields: [
|
|
939
|
-
{ Name: 'countryId', DisplayName: 'Country ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Country ID' },
|
|
940
|
-
{ Name: 'countryName', DisplayName: 'Country Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Country Name' },
|
|
941
|
-
{ Name: 'countryCode', DisplayName: 'Country Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Country Code' },
|
|
942
|
-
],
|
|
943
|
-
},
|
|
944
|
-
{
|
|
945
|
-
Name: 'Locations', DisplayName: 'Locations',
|
|
946
|
-
Description: 'States, provinces, and regions within countries with tax GL codes', SupportsWrite: false,
|
|
947
|
-
Fields: [
|
|
948
|
-
{ Name: 'locationCode', DisplayName: 'Location Code', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Location Code (filled with locationName when absent in the API response)' },
|
|
949
|
-
{ Name: 'countryId', DisplayName: 'Country ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Country ID' },
|
|
950
|
-
{ Name: 'locationName', DisplayName: 'Location Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Location Name' },
|
|
951
|
-
{ Name: 'taxGLCode', DisplayName: 'Tax GL Code', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Tax GL Code' },
|
|
952
|
-
{ Name: 'taxQBClass', DisplayName: 'Tax QB Class', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Tax QB Class' },
|
|
953
|
-
],
|
|
954
|
-
},
|
|
955
|
-
{
|
|
956
|
-
Name: 'ShippingMethods', DisplayName: 'Shipping Methods',
|
|
957
|
-
Description: 'Shipping method definitions with base pricing and weight-based rates', SupportsWrite: false,
|
|
958
|
-
Fields: [
|
|
959
|
-
{ Name: 'id', DisplayName: 'Shipping Method ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Shipping Method ID' },
|
|
960
|
-
{ Name: 'method', DisplayName: 'Method Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Method Name' },
|
|
961
|
-
{ Name: 'basePrice', DisplayName: 'Base Price', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Base Price' },
|
|
962
|
-
{ Name: 'pricePerWeightUnit', DisplayName: 'Price Per Weight Unit', Type: 'number', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Price Per Weight Unit' },
|
|
963
|
-
{ Name: 'isDefault', DisplayName: 'Is Default', Type: 'boolean', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'Is Default' },
|
|
964
|
-
],
|
|
965
|
-
},
|
|
966
|
-
{
|
|
967
|
-
Name: 'PaymentProcessors', DisplayName: 'Payment Processors',
|
|
968
|
-
Description: 'Configured payment processors with active/primary status and card order types', SupportsWrite: false,
|
|
969
|
-
Fields: [
|
|
970
|
-
{ Name: 'Id', DisplayName: 'Processor ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Processor ID' },
|
|
971
|
-
{ Name: 'Name', DisplayName: 'Processor Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Processor Name' },
|
|
972
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Active' },
|
|
973
|
-
{ Name: 'Primary', DisplayName: 'Primary', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Primary' },
|
|
974
|
-
{ Name: 'CardOrderType', DisplayName: 'Card Order Type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Card Order Type' },
|
|
975
|
-
],
|
|
976
|
-
},
|
|
977
|
-
{
|
|
978
|
-
Name: 'CustomTaxLocations', DisplayName: 'Custom Tax Locations',
|
|
979
|
-
Description: 'Locations with custom tax rate overrides for commerce transactions', SupportsWrite: false,
|
|
980
|
-
Fields: [
|
|
981
|
-
{ Name: 'Id', DisplayName: 'Tax Location ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Tax Location ID' },
|
|
982
|
-
{ Name: 'CountryLabel', DisplayName: 'Country', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Country' },
|
|
983
|
-
{ Name: 'Location', DisplayName: 'Location', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Location' },
|
|
984
|
-
{ Name: 'TaxRate', DisplayName: 'Tax Rate', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Tax Rate' },
|
|
985
|
-
],
|
|
986
|
-
},
|
|
987
|
-
{
|
|
988
|
-
Name: 'QBClasses', DisplayName: 'QB Classes',
|
|
989
|
-
Description: 'QuickBooks class definitions for accounting integration and financial categorization', SupportsWrite: false,
|
|
990
|
-
Fields: [
|
|
991
|
-
{ Name: 'Id', DisplayName: 'QB Class ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'QB Class ID' },
|
|
992
|
-
{ Name: 'Name', DisplayName: 'QB Class Name', Type: 'string', IsRequired: false, IsReadOnly: false, IsPrimaryKey: false, Description: 'QB Class Name' },
|
|
993
|
-
],
|
|
994
|
-
},
|
|
995
|
-
{
|
|
996
|
-
Name: 'TimeZones', DisplayName: 'Time Zones',
|
|
997
|
-
Description: 'Time zone reference data with GMT offsets and display names', SupportsWrite: false,
|
|
998
|
-
Fields: [
|
|
999
|
-
{ Name: 'fullName', DisplayName: 'Full Name', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Full Name' },
|
|
1000
|
-
{ Name: 'gmtOffset', DisplayName: 'GMT Offset', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GMT Offset' },
|
|
1001
|
-
],
|
|
1002
|
-
},
|
|
1003
|
-
// ── Careers ───────────────────────────────────────────
|
|
1004
|
-
{
|
|
1005
|
-
Name: 'CareerOpenings', DisplayName: 'Career Openings',
|
|
1006
|
-
Description: 'Job board postings with position, organization, salary, and contact details', SupportsWrite: false,
|
|
1007
|
-
Fields: [
|
|
1008
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Id' },
|
|
1009
|
-
{ Name: 'Position', DisplayName: 'Position', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Position' },
|
|
1010
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
1011
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
1012
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'State' },
|
|
1013
|
-
{ Name: 'Salary', DisplayName: 'Salary', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Salary' },
|
|
1014
|
-
{ Name: 'DatePosted', DisplayName: 'Date Posted', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date Posted' },
|
|
1015
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
1016
|
-
{ Name: 'ContactEmail', DisplayName: 'Contact Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Contact Email' },
|
|
1017
|
-
],
|
|
1018
|
-
},
|
|
1019
|
-
// ── Other ─────────────────────────────────────────────
|
|
1020
|
-
{
|
|
1021
|
-
Name: 'Ambassadors', DisplayName: 'Ambassadors',
|
|
1022
|
-
Description: 'YourMembership Ambassadors data', SupportsWrite: true,
|
|
1023
|
-
Fields: [
|
|
1024
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Id' },
|
|
1025
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1026
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1027
|
-
{ Name: 'HeadShotImage', DisplayName: 'HeadShotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadShotImage' },
|
|
1028
|
-
{ Name: 'DisplayName', DisplayName: 'DisplayName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DisplayName' },
|
|
1029
|
-
{ Name: 'MemberType', DisplayName: 'MemberType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberType' },
|
|
1030
|
-
{ Name: 'WorkTitle', DisplayName: 'WorkTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkTitle' },
|
|
1031
|
-
{ Name: 'Rank', DisplayName: 'Rank', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Rank' },
|
|
1032
|
-
{ Name: 'LatestActivity', DisplayName: 'LatestActivity', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LatestActivity' },
|
|
1033
|
-
],
|
|
1034
|
-
},
|
|
1035
|
-
{
|
|
1036
|
-
Name: 'CampaignEmailListDuplicates', DisplayName: 'CampaignEmailListDuplicates',
|
|
1037
|
-
Description: 'YourMembership CampaignEmailListDuplicates data', SupportsWrite: false,
|
|
1038
|
-
Fields: [
|
|
1039
|
-
{ Name: 'ItemId', DisplayName: 'ItemId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ItemId' },
|
|
1040
|
-
{ Name: 'MemberId', DisplayName: 'MemberId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberId' },
|
|
1041
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1042
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1043
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1044
|
-
],
|
|
1045
|
-
},
|
|
1046
|
-
{
|
|
1047
|
-
Name: 'CampaignReports', DisplayName: 'CampaignReports',
|
|
1048
|
-
Description: 'YourMembership CampaignReports data', SupportsWrite: false,
|
|
1049
|
-
Fields: [
|
|
1050
|
-
{ Name: 'Date', DisplayName: 'Date', Type: 'datetime', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Date' },
|
|
1051
|
-
{ Name: 'ListSize', DisplayName: 'ListSize', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ListSize' },
|
|
1052
|
-
{ Name: 'Process', DisplayName: 'Process', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Process' },
|
|
1053
|
-
{ Name: 'Send', DisplayName: 'Send', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Send' },
|
|
1054
|
-
{ Name: 'Delivery', DisplayName: 'Delivery', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Delivery' },
|
|
1055
|
-
{ Name: 'Open', DisplayName: 'Open', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Open' },
|
|
1056
|
-
{ Name: 'OpenUnique', DisplayName: 'OpenUnique', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'OpenUnique' },
|
|
1057
|
-
{ Name: 'Click', DisplayName: 'Click', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Click' },
|
|
1058
|
-
{ Name: 'ClickUnique', DisplayName: 'ClickUnique', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ClickUnique' },
|
|
1059
|
-
{ Name: 'HardBounce', DisplayName: 'HardBounce', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HardBounce' },
|
|
1060
|
-
{ Name: 'SoftBounce', DisplayName: 'SoftBounce', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SoftBounce' },
|
|
1061
|
-
{ Name: 'Complaint', DisplayName: 'Complaint', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Complaint' },
|
|
1062
|
-
{ Name: 'CategoryOptOut', DisplayName: 'CategoryOptOut', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CategoryOptOut' },
|
|
1063
|
-
{ Name: 'EmailOptOut', DisplayName: 'EmailOptOut', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EmailOptOut' },
|
|
1064
|
-
{ Name: 'SuppressHardBounce', DisplayName: 'SuppressHardBounce', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuppressHardBounce' },
|
|
1065
|
-
{ Name: 'SuppressCategoryOptOut', DisplayName: 'SuppressCategoryOptOut', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuppressCategoryOptOut' },
|
|
1066
|
-
{ Name: 'SuppressEmailOptOut', DisplayName: 'SuppressEmailOptOut', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuppressEmailOptOut' },
|
|
1067
|
-
{ Name: 'SuppressComplaint', DisplayName: 'SuppressComplaint', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuppressComplaint' },
|
|
1068
|
-
{ Name: 'Fail', DisplayName: 'Fail', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Fail' },
|
|
1069
|
-
{ Name: 'Reject', DisplayName: 'Reject', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Reject' },
|
|
1070
|
-
{ Name: 'NotOpen', DisplayName: 'NotOpen', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NotOpen' },
|
|
1071
|
-
{ Name: 'NotSend', DisplayName: 'NotSend', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NotSend' },
|
|
1072
|
-
{ Name: 'Accountability', DisplayName: 'Accountability', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Accountability' },
|
|
1073
|
-
{ Name: 'EngagementScore', DisplayName: 'EngagementScore', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EngagementScore' },
|
|
1074
|
-
{ Name: 'SuccessRate', DisplayName: 'SuccessRate', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuccessRate' },
|
|
1075
|
-
],
|
|
1076
|
-
},
|
|
1077
|
-
{
|
|
1078
|
-
Name: 'CampaignReports_DailyRate', DisplayName: 'CampaignReports_DailyRate',
|
|
1079
|
-
Description: 'YourMembership CampaignReports_DailyRate data', SupportsWrite: false,
|
|
1080
|
-
Fields: [
|
|
1081
|
-
{ Name: 'Date', DisplayName: 'Date', Type: 'datetime', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Date' },
|
|
1082
|
-
{ Name: 'ListSize', DisplayName: 'ListSize', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ListSize' },
|
|
1083
|
-
{ Name: 'Process', DisplayName: 'Process', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Process' },
|
|
1084
|
-
{ Name: 'Send', DisplayName: 'Send', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Send' },
|
|
1085
|
-
{ Name: 'Delivery', DisplayName: 'Delivery', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Delivery' },
|
|
1086
|
-
{ Name: 'Open', DisplayName: 'Open', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Open' },
|
|
1087
|
-
{ Name: 'OpenUnique', DisplayName: 'OpenUnique', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'OpenUnique' },
|
|
1088
|
-
{ Name: 'Click', DisplayName: 'Click', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Click' },
|
|
1089
|
-
{ Name: 'ClickUnique', DisplayName: 'ClickUnique', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ClickUnique' },
|
|
1090
|
-
{ Name: 'HardBounce', DisplayName: 'HardBounce', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HardBounce' },
|
|
1091
|
-
{ Name: 'SoftBounce', DisplayName: 'SoftBounce', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SoftBounce' },
|
|
1092
|
-
{ Name: 'Complaint', DisplayName: 'Complaint', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Complaint' },
|
|
1093
|
-
{ Name: 'CategoryOptOut', DisplayName: 'CategoryOptOut', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CategoryOptOut' },
|
|
1094
|
-
{ Name: 'EmailOptOut', DisplayName: 'EmailOptOut', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EmailOptOut' },
|
|
1095
|
-
{ Name: 'SuppressHardBounce', DisplayName: 'SuppressHardBounce', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuppressHardBounce' },
|
|
1096
|
-
{ Name: 'SuppressCategoryOptOut', DisplayName: 'SuppressCategoryOptOut', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuppressCategoryOptOut' },
|
|
1097
|
-
{ Name: 'SuppressEmailOptOut', DisplayName: 'SuppressEmailOptOut', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuppressEmailOptOut' },
|
|
1098
|
-
{ Name: 'SuppressComplaint', DisplayName: 'SuppressComplaint', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuppressComplaint' },
|
|
1099
|
-
{ Name: 'Fail', DisplayName: 'Fail', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Fail' },
|
|
1100
|
-
{ Name: 'Reject', DisplayName: 'Reject', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Reject' },
|
|
1101
|
-
{ Name: 'NotOpen', DisplayName: 'NotOpen', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NotOpen' },
|
|
1102
|
-
{ Name: 'NotSend', DisplayName: 'NotSend', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NotSend' },
|
|
1103
|
-
{ Name: 'Accountability', DisplayName: 'Accountability', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Accountability' },
|
|
1104
|
-
{ Name: 'EngagementScore', DisplayName: 'EngagementScore', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EngagementScore' },
|
|
1105
|
-
{ Name: 'SuccessRate', DisplayName: 'SuccessRate', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SuccessRate' },
|
|
1106
|
-
],
|
|
1107
|
-
},
|
|
1108
|
-
{
|
|
1109
|
-
Name: 'CampaignReports_MessageActivity', DisplayName: 'CampaignReports_MessageActivity',
|
|
1110
|
-
Description: 'YourMembership CampaignReports_MessageActivity data', SupportsWrite: false,
|
|
1111
|
-
Fields: [
|
|
1112
|
-
{ Name: 'TypeId', DisplayName: 'TypeId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'TypeId' },
|
|
1113
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1114
|
-
{ Name: 'Date', DisplayName: 'Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date' },
|
|
1115
|
-
],
|
|
1116
|
-
},
|
|
1117
|
-
{
|
|
1118
|
-
Name: 'CampaignReports_Messages', DisplayName: 'CampaignReports_Messages',
|
|
1119
|
-
Description: 'YourMembership CampaignReports_Messages data', SupportsWrite: false,
|
|
1120
|
-
Fields: [
|
|
1121
|
-
{ Name: 'MemberId', DisplayName: 'MemberId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MemberId' },
|
|
1122
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1123
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1124
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1125
|
-
{ Name: 'MessageGuid', DisplayName: 'MessageGuid', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MessageGuid' },
|
|
1126
|
-
{ Name: 'Activity', DisplayName: 'Activity', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Activity' },
|
|
1127
|
-
],
|
|
1128
|
-
},
|
|
1129
|
-
{
|
|
1130
|
-
Name: 'CommunityPhotos', DisplayName: 'CommunityPhotos',
|
|
1131
|
-
Description: 'YourMembership CommunityPhotos data', SupportsWrite: true,
|
|
1132
|
-
Fields: [
|
|
1133
|
-
{ Name: 'CommentID', DisplayName: 'CommentID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'CommentID' },
|
|
1134
|
-
{ Name: 'CdbID', DisplayName: 'CdbID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CdbID' },
|
|
1135
|
-
{ Name: 'Posted', DisplayName: 'Posted', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Posted' },
|
|
1136
|
-
{ Name: 'PostedUTC', DisplayName: 'PostedUTC', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostedUTC' },
|
|
1137
|
-
{ Name: 'GalleryItemID', DisplayName: 'GalleryItemID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GalleryItemID' },
|
|
1138
|
-
{ Name: 'SchoolID', DisplayName: 'SchoolID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SchoolID' },
|
|
1139
|
-
{ Name: 'Comment', DisplayName: 'Comment', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Comment' },
|
|
1140
|
-
{ Name: 'PostedBy', DisplayName: 'PostedBy', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostedBy' },
|
|
1141
|
-
{ Name: 'PostedByMugshot', DisplayName: 'PostedByMugshot', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostedByMugshot' },
|
|
1142
|
-
{ Name: 'PostedDate', DisplayName: 'PostedDate', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostedDate' },
|
|
1143
|
-
{ Name: 'GroupID', DisplayName: 'GroupID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GroupID' },
|
|
1144
|
-
{ Name: 'IsOwner', DisplayName: 'IsOwner', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsOwner' },
|
|
1145
|
-
{ Name: 'LikeID', DisplayName: 'LikeID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeID' },
|
|
1146
|
-
{ Name: 'LikedComment', DisplayName: 'LikedComment', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikedComment' },
|
|
1147
|
-
{ Name: 'LikeCount', DisplayName: 'LikeCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeCount' },
|
|
1148
|
-
{ Name: 'SkipCrossPost', DisplayName: 'SkipCrossPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SkipCrossPost' },
|
|
1149
|
-
],
|
|
1150
|
-
},
|
|
1151
|
-
{
|
|
1152
|
-
Name: 'ConnectionCategoryList', DisplayName: 'ConnectionCategoryList',
|
|
1153
|
-
Description: 'YourMembership ConnectionCategoryList data', SupportsWrite: false,
|
|
1154
|
-
Fields: [
|
|
1155
|
-
{ Name: 'CategoryID', DisplayName: 'CategoryID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'CategoryID' },
|
|
1156
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1157
|
-
{ Name: 'IndexType', DisplayName: 'IndexType', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IndexType' },
|
|
1158
|
-
],
|
|
1159
|
-
},
|
|
1160
|
-
{
|
|
1161
|
-
Name: 'ConnectionSuggestions', DisplayName: 'ConnectionSuggestions',
|
|
1162
|
-
Description: 'YourMembership ConnectionSuggestions data', SupportsWrite: false,
|
|
1163
|
-
Fields: [
|
|
1164
|
-
{ Name: 'ConnectionStatus', DisplayName: 'ConnectionStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionStatus' },
|
|
1165
|
-
{ Name: 'ConnectionId', DisplayName: 'ConnectionId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ConnectionId' },
|
|
1166
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1167
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1168
|
-
{ Name: 'ConnectionName', DisplayName: 'ConnectionName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionName' },
|
|
1169
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
1170
|
-
{ Name: 'HeadShotImage', DisplayName: 'HeadShotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadShotImage' },
|
|
1171
|
-
{ Name: 'WorkTitle', DisplayName: 'WorkTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkTitle' },
|
|
1172
|
-
{ Name: 'MemberType', DisplayName: 'MemberType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberType' },
|
|
1173
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
1174
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'State' },
|
|
1175
|
-
{ Name: 'Location', DisplayName: 'Location', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Location' },
|
|
1176
|
-
{ Name: 'Country', DisplayName: 'Country', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Country' },
|
|
1177
|
-
{ Name: 'Shared', DisplayName: 'Shared', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shared' },
|
|
1178
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1179
|
-
{ Name: 'PhoneLabel', DisplayName: 'PhoneLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneLabel' },
|
|
1180
|
-
{ Name: 'PhoneAreaCode', DisplayName: 'PhoneAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneAreaCode' },
|
|
1181
|
-
{ Name: 'PhoneNumber', DisplayName: 'PhoneNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneNumber' },
|
|
1182
|
-
{ Name: 'FaxLabel', DisplayName: 'FaxLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxLabel' },
|
|
1183
|
-
{ Name: 'FaxAreaCode', DisplayName: 'FaxAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxAreaCode' },
|
|
1184
|
-
{ Name: 'FaxNumber', DisplayName: 'FaxNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxNumber' },
|
|
1185
|
-
{ Name: 'CanShow', DisplayName: 'CanShow', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShow' },
|
|
1186
|
-
{ Name: 'intCategoryID', DisplayName: 'intCategoryID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intCategoryID' },
|
|
1187
|
-
{ Name: 'IsAmbassador', DisplayName: 'IsAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassador' },
|
|
1188
|
-
],
|
|
1189
|
-
},
|
|
1190
|
-
{
|
|
1191
|
-
Name: 'ContentAreaCustomMacros', DisplayName: 'ContentAreaCustomMacros',
|
|
1192
|
-
Description: 'YourMembership ContentAreaCustomMacros data', SupportsWrite: false,
|
|
1193
|
-
Fields: [
|
|
1194
|
-
{ Name: 'Label', DisplayName: 'Label', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Label' },
|
|
1195
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
1196
|
-
{ Name: 'Code', DisplayName: 'Code', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Code' },
|
|
1197
|
-
],
|
|
1198
|
-
},
|
|
1199
|
-
{
|
|
1200
|
-
Name: 'ContentAreaVersions', DisplayName: 'ContentAreaVersions',
|
|
1201
|
-
Description: 'YourMembership ContentAreaVersions data', SupportsWrite: false,
|
|
1202
|
-
Fields: [
|
|
1203
|
-
{ Name: 'VersionID', DisplayName: 'VersionID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'VersionID' },
|
|
1204
|
-
{ Name: 'EditorName', DisplayName: 'EditorName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EditorName' },
|
|
1205
|
-
{ Name: 'Title', DisplayName: 'Title', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Title' },
|
|
1206
|
-
{ Name: 'Body', DisplayName: 'Body', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Body' },
|
|
1207
|
-
{ Name: 'Label', DisplayName: 'Label', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Label' },
|
|
1208
|
-
{ Name: 'Notes', DisplayName: 'Notes', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Notes' },
|
|
1209
|
-
{ Name: 'LastModifiedDate', DisplayName: 'LastModifiedDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastModifiedDate' },
|
|
1210
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
1211
|
-
],
|
|
1212
|
-
},
|
|
1213
|
-
{
|
|
1214
|
-
Name: 'CustomFormFields', DisplayName: 'CustomFormFields',
|
|
1215
|
-
Description: 'YourMembership CustomFormFields data', SupportsWrite: false,
|
|
1216
|
-
Fields: [
|
|
1217
|
-
{ Name: 'Label', DisplayName: 'Label', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Label' },
|
|
1218
|
-
{ Name: 'ID', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' },
|
|
1219
|
-
{ Name: 'ListItems', DisplayName: 'ListItems', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ListItems' },
|
|
1220
|
-
{ Name: 'FieldType', DisplayName: 'FieldType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FieldType' },
|
|
1221
|
-
{ Name: 'DataType', DisplayName: 'DataType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DataType' },
|
|
1222
|
-
{ Name: 'InputRows', DisplayName: 'InputRows', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'InputRows' },
|
|
1223
|
-
{ Name: 'MaxLen', DisplayName: 'MaxLen', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MaxLen' },
|
|
1224
|
-
{ Name: 'Required', DisplayName: 'Required', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Required' },
|
|
1225
|
-
{ Name: 'FullRow', DisplayName: 'FullRow', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FullRow' },
|
|
1226
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
1227
|
-
{ Name: 'IsVisibleToPublic', DisplayName: 'IsVisibleToPublic', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsVisibleToPublic' },
|
|
1228
|
-
],
|
|
1229
|
-
},
|
|
1230
|
-
{
|
|
1231
|
-
Name: 'CustomPageCrossLinks', DisplayName: 'CustomPageCrossLinks',
|
|
1232
|
-
Description: 'YourMembership CustomPageCrossLinks data', SupportsWrite: false,
|
|
1233
|
-
Fields: [
|
|
1234
|
-
{ Name: 'PageID', DisplayName: 'PageID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'PageID' },
|
|
1235
|
-
{ Name: 'PageName', DisplayName: 'PageName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PageName' },
|
|
1236
|
-
{ Name: 'Selected', DisplayName: 'Selected', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Selected' },
|
|
1237
|
-
],
|
|
1238
|
-
},
|
|
1239
|
-
{
|
|
1240
|
-
Name: 'CustomPageFeatures', DisplayName: 'CustomPageFeatures',
|
|
1241
|
-
Description: 'YourMembership CustomPageFeatures data', SupportsWrite: false,
|
|
1242
|
-
Fields: [
|
|
1243
|
-
{ Name: 'ID', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' },
|
|
1244
|
-
{ Name: 'Visible', DisplayName: 'Visible', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Visible' },
|
|
1245
|
-
{ Name: 'DefaultValue', DisplayName: 'DefaultValue', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DefaultValue' },
|
|
1246
|
-
],
|
|
1247
|
-
},
|
|
1248
|
-
{
|
|
1249
|
-
Name: 'CustomPageForms', DisplayName: 'CustomPageForms',
|
|
1250
|
-
Description: 'YourMembership CustomPageForms data', SupportsWrite: false,
|
|
1251
|
-
Fields: [
|
|
1252
|
-
{ Name: 'FormID', DisplayName: 'FormID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'FormID' },
|
|
1253
|
-
{ Name: 'FormName', DisplayName: 'FormName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FormName' },
|
|
1254
|
-
{ Name: 'AutoApproveNewSubmissions', DisplayName: 'AutoApproveNewSubmissions', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AutoApproveNewSubmissions' },
|
|
1255
|
-
],
|
|
1256
|
-
},
|
|
1257
|
-
{
|
|
1258
|
-
Name: 'CustomPageMemberTypes', DisplayName: 'CustomPageMemberTypes',
|
|
1259
|
-
Description: 'YourMembership CustomPageMemberTypes data', SupportsWrite: false,
|
|
1260
|
-
Fields: [
|
|
1261
|
-
{ Name: 'TypeID', DisplayName: 'TypeID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'TypeID' },
|
|
1262
|
-
{ Name: 'TypeName', DisplayName: 'TypeName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TypeName' },
|
|
1263
|
-
{ Name: 'Selected', DisplayName: 'Selected', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Selected' },
|
|
1264
|
-
],
|
|
1265
|
-
},
|
|
1266
|
-
{
|
|
1267
|
-
Name: 'CustomPageVersions', DisplayName: 'CustomPageVersions',
|
|
1268
|
-
Description: 'YourMembership CustomPageVersions data', SupportsWrite: true,
|
|
1269
|
-
Fields: [
|
|
1270
|
-
{ Name: 'VersionID', DisplayName: 'VersionID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'VersionID' },
|
|
1271
|
-
{ Name: 'PageID', DisplayName: 'PageID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PageID' },
|
|
1272
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
1273
|
-
{ Name: 'Title', DisplayName: 'Title', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Title' },
|
|
1274
|
-
{ Name: 'Body', DisplayName: 'Body', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Body' },
|
|
1275
|
-
{ Name: 'Label', DisplayName: 'Label', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Label' },
|
|
1276
|
-
{ Name: 'Notes', DisplayName: 'Notes', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Notes' },
|
|
1277
|
-
{ Name: 'DateModified', DisplayName: 'DateModified', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateModified' },
|
|
1278
|
-
{ Name: 'EditorName', DisplayName: 'EditorName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EditorName' },
|
|
1279
|
-
],
|
|
1280
|
-
},
|
|
1281
|
-
{
|
|
1282
|
-
Name: 'DashboardData', DisplayName: 'DashboardData',
|
|
1283
|
-
Description: 'YourMembership DashboardData data', SupportsWrite: false,
|
|
1284
|
-
Fields: [
|
|
1285
|
-
{ Name: 'Date', DisplayName: 'Date', Type: 'datetime', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Date' },
|
|
1286
|
-
{ Name: 'PostCount', DisplayName: 'PostCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostCount' },
|
|
1287
|
-
{ Name: 'CommentCount', DisplayName: 'CommentCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentCount' },
|
|
1288
|
-
{ Name: 'LikeCount', DisplayName: 'LikeCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeCount' },
|
|
1289
|
-
{ Name: 'ShareCount', DisplayName: 'ShareCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ShareCount' },
|
|
1290
|
-
{ Name: 'ConnectionCount', DisplayName: 'ConnectionCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionCount' },
|
|
1291
|
-
{ Name: 'LoginCount', DisplayName: 'LoginCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LoginCount' },
|
|
1292
|
-
],
|
|
1293
|
-
},
|
|
1294
|
-
{
|
|
1295
|
-
Name: 'DirectorySearch', DisplayName: 'DirectorySearch',
|
|
1296
|
-
Description: 'YourMembership DirectorySearch data', SupportsWrite: false,
|
|
1297
|
-
Fields: [
|
|
1298
|
-
{ Name: 'CanHaveConnections', DisplayName: 'CanHaveConnections', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanHaveConnections' },
|
|
1299
|
-
{ Name: 'CanUseMessaging', DisplayName: 'CanUseMessaging', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanUseMessaging' },
|
|
1300
|
-
{ Name: 'MemberID', DisplayName: 'MemberID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MemberID' },
|
|
1301
|
-
{ Name: 'PrimaryGroupName', DisplayName: 'PrimaryGroupName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PrimaryGroupName' },
|
|
1302
|
-
{ Name: 'IsMember', DisplayName: 'IsMember', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsMember' },
|
|
1303
|
-
{ Name: 'IsNonMember', DisplayName: 'IsNonMember', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsNonMember' },
|
|
1304
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1305
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
1306
|
-
{ Name: 'Location', DisplayName: 'Location', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Location' },
|
|
1307
|
-
{ Name: 'AddressLine1', DisplayName: 'AddressLine1', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AddressLine1' },
|
|
1308
|
-
{ Name: 'AddressLine2', DisplayName: 'AddressLine2', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AddressLine2' },
|
|
1309
|
-
{ Name: 'Phone', DisplayName: 'Phone', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Phone' },
|
|
1310
|
-
{ Name: 'HeadshotImagePath', DisplayName: 'HeadshotImagePath', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadshotImagePath' },
|
|
1311
|
-
{ Name: 'NonMemberLost', DisplayName: 'NonMemberLost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NonMemberLost' },
|
|
1312
|
-
{ Name: 'NonMemberDeceased', DisplayName: 'NonMemberDeceased', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NonMemberDeceased' },
|
|
1313
|
-
{ Name: 'NonMemberComments', DisplayName: 'NonMemberComments', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NonMemberComments' },
|
|
1314
|
-
{ Name: 'JobTitle', DisplayName: 'JobTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'JobTitle' },
|
|
1315
|
-
],
|
|
1316
|
-
},
|
|
1317
|
-
{
|
|
1318
|
-
Name: 'DomainAuthentication', DisplayName: 'DomainAuthentication',
|
|
1319
|
-
Description: 'YourMembership DomainAuthentication data', SupportsWrite: true,
|
|
1320
|
-
Fields: [
|
|
1321
|
-
{ Name: 'DomainId', DisplayName: 'DomainId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'DomainId' },
|
|
1322
|
-
{ Name: 'DomainName', DisplayName: 'DomainName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DomainName' },
|
|
1323
|
-
{ Name: 'IsYmMangedDomain', DisplayName: 'IsYmMangedDomain', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsYmMangedDomain' },
|
|
1324
|
-
{ Name: 'EmailsCount', DisplayName: 'EmailsCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EmailsCount' },
|
|
1325
|
-
{ Name: 'DomainStatus', DisplayName: 'DomainStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DomainStatus' },
|
|
1326
|
-
{ Name: 'IdentityZoneRecord', DisplayName: 'IdentityZoneRecord', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IdentityZoneRecord' },
|
|
1327
|
-
{ Name: 'DkimZoneRecords', DisplayName: 'DkimZoneRecords', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DkimZoneRecords' },
|
|
1328
|
-
],
|
|
1329
|
-
},
|
|
1330
|
-
{
|
|
1331
|
-
Name: 'EmailSendersInfo', DisplayName: 'EmailSendersInfo',
|
|
1332
|
-
Description: 'YourMembership EmailSendersInfo data', SupportsWrite: false,
|
|
1333
|
-
Fields: [
|
|
1334
|
-
{ Name: 'Address', DisplayName: 'Address', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Address' },
|
|
1335
|
-
{ Name: 'Display', DisplayName: 'Display', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Display' },
|
|
1336
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
1337
|
-
{ Name: 'IsDefault', DisplayName: 'IsDefault', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsDefault' },
|
|
1338
|
-
],
|
|
1339
|
-
},
|
|
1340
|
-
{
|
|
1341
|
-
Name: 'EmailVerification', DisplayName: 'EmailVerification',
|
|
1342
|
-
Description: 'YourMembership EmailVerification data', SupportsWrite: true,
|
|
1343
|
-
Fields: [
|
|
1344
|
-
{ Name: 'EmailId', DisplayName: 'EmailId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'EmailId' },
|
|
1345
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1346
|
-
{ Name: 'EmailStatus', DisplayName: 'EmailStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EmailStatus' },
|
|
1347
|
-
{ Name: 'DomainId', DisplayName: 'DomainId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DomainId' },
|
|
1348
|
-
],
|
|
1349
|
-
},
|
|
1350
|
-
{
|
|
1351
|
-
Name: 'EventAttendeeTypeSessions', DisplayName: 'EventAttendeeTypeSessions',
|
|
1352
|
-
Description: 'YourMembership EventAttendeeTypeSessions data', SupportsWrite: true,
|
|
1353
|
-
Fields: [
|
|
1354
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1355
|
-
{ Name: 'EventId', DisplayName: 'EventId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'EventId' },
|
|
1356
|
-
{ Name: 'TypeId', DisplayName: 'TypeId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TypeId' },
|
|
1357
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Id' },
|
|
1358
|
-
],
|
|
1359
|
-
},
|
|
1360
|
-
{
|
|
1361
|
-
Name: 'EventAttendeeTypeTickets', DisplayName: 'EventAttendeeTypeTickets',
|
|
1362
|
-
Description: 'YourMembership EventAttendeeTypeTickets data', SupportsWrite: true,
|
|
1363
|
-
Fields: [
|
|
1364
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1365
|
-
{ Name: 'EventId', DisplayName: 'EventId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'EventId' },
|
|
1366
|
-
{ Name: 'TypeId', DisplayName: 'TypeId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TypeId' },
|
|
1367
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Id' },
|
|
1368
|
-
],
|
|
1369
|
-
},
|
|
1370
|
-
{
|
|
1371
|
-
Name: 'EventAttendees', DisplayName: 'EventAttendees',
|
|
1372
|
-
Description: 'YourMembership EventAttendees data', SupportsWrite: false,
|
|
1373
|
-
Fields: [
|
|
1374
|
-
{ Name: 'RegisterID', DisplayName: 'RegisterID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'RegisterID' },
|
|
1375
|
-
{ Name: 'RsvpID', DisplayName: 'RsvpID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RsvpID' },
|
|
1376
|
-
{ Name: 'DateRegister', DisplayName: 'DateRegister', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateRegister' },
|
|
1377
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1378
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1379
|
-
{ Name: 'ProfileID', DisplayName: 'ProfileID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ProfileID' },
|
|
1380
|
-
{ Name: 'ID', DisplayName: 'ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ID' },
|
|
1381
|
-
{ Name: 'RsvpResponse', DisplayName: 'RsvpResponse', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RsvpResponse' },
|
|
1382
|
-
{ Name: 'DataSet', DisplayName: 'DataSet', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DataSet' },
|
|
1383
|
-
],
|
|
1384
|
-
},
|
|
1385
|
-
{
|
|
1386
|
-
Name: 'EventCustomLabels', DisplayName: 'EventCustomLabels',
|
|
1387
|
-
Description: 'YourMembership EventCustomLabels data', SupportsWrite: true,
|
|
1388
|
-
Fields: [
|
|
1389
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Id' },
|
|
1390
|
-
{ Name: 'MetaId', DisplayName: 'MetaId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MetaId' },
|
|
1391
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1392
|
-
{ Name: 'Title', DisplayName: 'Title', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Title' },
|
|
1393
|
-
{ Name: 'DefaultValue', DisplayName: 'DefaultValue', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DefaultValue' },
|
|
1394
|
-
{ Name: 'CustomValue', DisplayName: 'CustomValue', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CustomValue' },
|
|
1395
|
-
],
|
|
1396
|
-
},
|
|
1397
|
-
{
|
|
1398
|
-
Name: 'EventRegistrants', DisplayName: 'EventRegistrants',
|
|
1399
|
-
Description: 'YourMembership EventRegistrants data', SupportsWrite: false,
|
|
1400
|
-
Fields: [
|
|
1401
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Id' },
|
|
1402
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1403
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1404
|
-
{ Name: 'HeadShotImage', DisplayName: 'HeadShotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadShotImage' },
|
|
1405
|
-
{ Name: 'DisplayName', DisplayName: 'DisplayName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DisplayName' },
|
|
1406
|
-
{ Name: 'DateRegistered', DisplayName: 'DateRegistered', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateRegistered' },
|
|
1407
|
-
{ Name: 'RegistrationID', DisplayName: 'RegistrationID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RegistrationID' },
|
|
1408
|
-
{ Name: 'IsPrimary', DisplayName: 'IsPrimary', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsPrimary' },
|
|
1409
|
-
{ Name: 'BadgeNumber', DisplayName: 'BadgeNumber', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'BadgeNumber' },
|
|
1410
|
-
],
|
|
1411
|
-
},
|
|
1412
|
-
{
|
|
1413
|
-
Name: 'EventSearch', DisplayName: 'EventSearch',
|
|
1414
|
-
Description: 'YourMembership EventSearch data', SupportsWrite: false,
|
|
1415
|
-
Fields: [
|
|
1416
|
-
{ Name: 'EventName', DisplayName: 'EventName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EventName' },
|
|
1417
|
-
{ Name: 'EventID', DisplayName: 'EventID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'EventID' },
|
|
1418
|
-
{ Name: 'EventDate', DisplayName: 'EventDate', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EventDate' },
|
|
1419
|
-
],
|
|
1420
|
-
},
|
|
1421
|
-
{
|
|
1422
|
-
Name: 'EventSessionCEUAwards', DisplayName: 'EventSessionCEUAwards',
|
|
1423
|
-
Description: 'YourMembership EventSessionCEUAwards data', SupportsWrite: false,
|
|
1424
|
-
Fields: [
|
|
1425
|
-
{ Name: 'AwardID', DisplayName: 'AwardID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'AwardID' },
|
|
1426
|
-
{ Name: 'CertificationID', DisplayName: 'CertificationID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CertificationID' },
|
|
1427
|
-
{ Name: 'CreditTypeID', DisplayName: 'CreditTypeID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CreditTypeID' },
|
|
1428
|
-
{ Name: 'Credits', DisplayName: 'Credits', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Credits' },
|
|
1429
|
-
{ Name: 'Expiry', DisplayName: 'Expiry', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Expiry' },
|
|
1430
|
-
{ Name: 'DateExpires', DisplayName: 'DateExpires', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateExpires' },
|
|
1431
|
-
{ Name: 'DateCreated', DisplayName: 'DateCreated', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateCreated' },
|
|
1432
|
-
{ Name: 'DateUpdated', DisplayName: 'DateUpdated', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateUpdated' },
|
|
1433
|
-
{ Name: 'ActivityCode', DisplayName: 'ActivityCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ActivityCode' },
|
|
1434
|
-
{ Name: 'MemberTypeID', DisplayName: 'MemberTypeID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberTypeID' },
|
|
1435
|
-
{ Name: 'LinkedEntityID', DisplayName: 'LinkedEntityID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LinkedEntityID' },
|
|
1436
|
-
],
|
|
1437
|
-
},
|
|
1438
|
-
{
|
|
1439
|
-
Name: 'Feeds', DisplayName: 'Feeds',
|
|
1440
|
-
Description: 'YourMembership Feeds data', SupportsWrite: false,
|
|
1441
|
-
Fields: [
|
|
1442
|
-
{ Name: 'Sponsored', DisplayName: 'Sponsored', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Sponsored' },
|
|
1443
|
-
{ Name: 'MemberID', DisplayName: 'MemberID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MemberID' },
|
|
1444
|
-
{ Name: 'PostText', DisplayName: 'PostText', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostText' },
|
|
1445
|
-
{ Name: 'PostHtml', DisplayName: 'PostHtml', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHtml' },
|
|
1446
|
-
{ Name: 'AuthorId', DisplayName: 'AuthorId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorId' },
|
|
1447
|
-
{ Name: 'WallOwnerId', DisplayName: 'WallOwnerId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerId' },
|
|
1448
|
-
{ Name: 'AuthorName', DisplayName: 'AuthorName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorName' },
|
|
1449
|
-
{ Name: 'WallOwnerName', DisplayName: 'WallOwnerName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerName' },
|
|
1450
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostId' },
|
|
1451
|
-
{ Name: 'PostDate', DisplayName: 'PostDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostDate' },
|
|
1452
|
-
{ Name: 'PostType', DisplayName: 'PostType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostType' },
|
|
1453
|
-
{ Name: 'ShareCount', DisplayName: 'ShareCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ShareCount' },
|
|
1454
|
-
{ Name: 'LikesCount', DisplayName: 'LikesCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikesCount' },
|
|
1455
|
-
{ Name: 'LikedPost', DisplayName: 'LikedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikedPost' },
|
|
1456
|
-
{ Name: 'LikeId', DisplayName: 'LikeId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeId' },
|
|
1457
|
-
{ Name: 'CommentCount', DisplayName: 'CommentCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentCount' },
|
|
1458
|
-
{ Name: 'CommenterCount', DisplayName: 'CommenterCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommenterCount' },
|
|
1459
|
-
{ Name: 'PostHeadShotUrl', DisplayName: 'PostHeadShotUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadShotUrl' },
|
|
1460
|
-
{ Name: 'CanReply', DisplayName: 'CanReply', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanReply' },
|
|
1461
|
-
{ Name: 'CanShare', DisplayName: 'CanShare', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShare' },
|
|
1462
|
-
{ Name: 'CanComment', DisplayName: 'CanComment', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanComment' },
|
|
1463
|
-
{ Name: 'CanDelete', DisplayName: 'CanDelete', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanDelete' },
|
|
1464
|
-
{ Name: 'RecentComments', DisplayName: 'RecentComments', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RecentComments' },
|
|
1465
|
-
{ Name: 'CommentList', DisplayName: 'CommentList', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentList' },
|
|
1466
|
-
{ Name: 'PostHeadline', DisplayName: 'PostHeadline', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadline' },
|
|
1467
|
-
{ Name: 'TopLine', DisplayName: 'TopLine', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TopLine' },
|
|
1468
|
-
{ Name: 'PostContentData', DisplayName: 'PostContentData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostContentData' },
|
|
1469
|
-
{ Name: 'PhotoGallery', DisplayName: 'PhotoGallery', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoGallery' },
|
|
1470
|
-
{ Name: 'IsAmbassadorPost', DisplayName: 'IsAmbassadorPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassadorPost' },
|
|
1471
|
-
{ Name: 'IsActorAmbassador', DisplayName: 'IsActorAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsActorAmbassador' },
|
|
1472
|
-
{ Name: 'IsSharedPost', DisplayName: 'IsSharedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsSharedPost' },
|
|
1473
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Active' },
|
|
1474
|
-
],
|
|
1475
|
-
},
|
|
1476
|
-
{
|
|
1477
|
-
Name: 'JobAlerts', DisplayName: 'JobAlerts',
|
|
1478
|
-
Description: 'YourMembership JobAlerts data', SupportsWrite: true,
|
|
1479
|
-
Fields: [
|
|
1480
|
-
{ Name: 'id', DisplayName: 'id', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'id' },
|
|
1481
|
-
{ Name: 'name', DisplayName: 'name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'name' },
|
|
1482
|
-
{ Name: 'expires_in', DisplayName: 'expires_in', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'expires_in' },
|
|
1483
|
-
{ Name: 'send_frequency', DisplayName: 'send_frequency', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'send_frequency' },
|
|
1484
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Active' },
|
|
1485
|
-
{ Name: 'filters', DisplayName: 'filters', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'filters' },
|
|
1486
|
-
{ Name: 'jobs', DisplayName: 'jobs', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'jobs' },
|
|
1487
|
-
],
|
|
1488
|
-
},
|
|
1489
|
-
{
|
|
1490
|
-
Name: 'LatestPosts', DisplayName: 'LatestPosts',
|
|
1491
|
-
Description: 'YourMembership LatestPosts data', SupportsWrite: false,
|
|
1492
|
-
Fields: [
|
|
1493
|
-
{ Name: 'Sponsored', DisplayName: 'Sponsored', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Sponsored' },
|
|
1494
|
-
{ Name: 'MemberID', DisplayName: 'MemberID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberID' },
|
|
1495
|
-
{ Name: 'PostText', DisplayName: 'PostText', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostText' },
|
|
1496
|
-
{ Name: 'PostHtml', DisplayName: 'PostHtml', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHtml' },
|
|
1497
|
-
{ Name: 'AuthorId', DisplayName: 'AuthorId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorId' },
|
|
1498
|
-
{ Name: 'WallOwnerId', DisplayName: 'WallOwnerId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerId' },
|
|
1499
|
-
{ Name: 'AuthorName', DisplayName: 'AuthorName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorName' },
|
|
1500
|
-
{ Name: 'WallOwnerName', DisplayName: 'WallOwnerName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerName' },
|
|
1501
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'PostId' },
|
|
1502
|
-
{ Name: 'PostDate', DisplayName: 'PostDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostDate' },
|
|
1503
|
-
{ Name: 'PostType', DisplayName: 'PostType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostType' },
|
|
1504
|
-
{ Name: 'ShareCount', DisplayName: 'ShareCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ShareCount' },
|
|
1505
|
-
{ Name: 'LikesCount', DisplayName: 'LikesCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikesCount' },
|
|
1506
|
-
{ Name: 'LikedPost', DisplayName: 'LikedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikedPost' },
|
|
1507
|
-
{ Name: 'LikeId', DisplayName: 'LikeId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeId' },
|
|
1508
|
-
{ Name: 'CommentCount', DisplayName: 'CommentCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentCount' },
|
|
1509
|
-
{ Name: 'CommenterCount', DisplayName: 'CommenterCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommenterCount' },
|
|
1510
|
-
{ Name: 'PostHeadShotUrl', DisplayName: 'PostHeadShotUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadShotUrl' },
|
|
1511
|
-
{ Name: 'CanReply', DisplayName: 'CanReply', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanReply' },
|
|
1512
|
-
{ Name: 'CanShare', DisplayName: 'CanShare', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShare' },
|
|
1513
|
-
{ Name: 'CanComment', DisplayName: 'CanComment', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanComment' },
|
|
1514
|
-
{ Name: 'CanDelete', DisplayName: 'CanDelete', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanDelete' },
|
|
1515
|
-
{ Name: 'RecentComments', DisplayName: 'RecentComments', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RecentComments' },
|
|
1516
|
-
{ Name: 'CommentList', DisplayName: 'CommentList', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentList' },
|
|
1517
|
-
{ Name: 'PostHeadline', DisplayName: 'PostHeadline', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadline' },
|
|
1518
|
-
{ Name: 'TopLine', DisplayName: 'TopLine', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TopLine' },
|
|
1519
|
-
{ Name: 'PostContentData', DisplayName: 'PostContentData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostContentData' },
|
|
1520
|
-
{ Name: 'PhotoGallery', DisplayName: 'PhotoGallery', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoGallery' },
|
|
1521
|
-
{ Name: 'IsAmbassadorPost', DisplayName: 'IsAmbassadorPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassadorPost' },
|
|
1522
|
-
{ Name: 'IsActorAmbassador', DisplayName: 'IsActorAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsActorAmbassador' },
|
|
1523
|
-
{ Name: 'IsSharedPost', DisplayName: 'IsSharedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsSharedPost' },
|
|
1524
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Active' },
|
|
1525
|
-
],
|
|
1526
|
-
},
|
|
1527
|
-
{
|
|
1528
|
-
Name: 'Likes', DisplayName: 'Likes',
|
|
1529
|
-
Description: 'YourMembership Likes data', SupportsWrite: true,
|
|
1530
|
-
Fields: [
|
|
1531
|
-
{ Name: 'LikeId', DisplayName: 'LikeId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'LikeId' },
|
|
1532
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostId' },
|
|
1533
|
-
{ Name: 'CommentId', DisplayName: 'CommentId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentId' },
|
|
1534
|
-
{ Name: 'PhotoId', DisplayName: 'PhotoId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoId' },
|
|
1535
|
-
{ Name: 'PhotoCommentId', DisplayName: 'PhotoCommentId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoCommentId' },
|
|
1536
|
-
{ Name: 'DateLiked', DisplayName: 'DateLiked', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateLiked' },
|
|
1537
|
-
{ Name: 'ConnectionStatus', DisplayName: 'ConnectionStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionStatus' },
|
|
1538
|
-
{ Name: 'ConnectionId', DisplayName: 'ConnectionId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionId' },
|
|
1539
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1540
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1541
|
-
{ Name: 'ConnectionName', DisplayName: 'ConnectionName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionName' },
|
|
1542
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
1543
|
-
{ Name: 'HeadShotImage', DisplayName: 'HeadShotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadShotImage' },
|
|
1544
|
-
{ Name: 'WorkTitle', DisplayName: 'WorkTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkTitle' },
|
|
1545
|
-
{ Name: 'MemberType', DisplayName: 'MemberType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberType' },
|
|
1546
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
1547
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'State' },
|
|
1548
|
-
{ Name: 'Location', DisplayName: 'Location', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Location' },
|
|
1549
|
-
{ Name: 'Country', DisplayName: 'Country', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Country' },
|
|
1550
|
-
{ Name: 'Shared', DisplayName: 'Shared', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shared' },
|
|
1551
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1552
|
-
{ Name: 'PhoneLabel', DisplayName: 'PhoneLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneLabel' },
|
|
1553
|
-
{ Name: 'PhoneAreaCode', DisplayName: 'PhoneAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneAreaCode' },
|
|
1554
|
-
{ Name: 'PhoneNumber', DisplayName: 'PhoneNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneNumber' },
|
|
1555
|
-
{ Name: 'FaxLabel', DisplayName: 'FaxLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxLabel' },
|
|
1556
|
-
{ Name: 'FaxAreaCode', DisplayName: 'FaxAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxAreaCode' },
|
|
1557
|
-
{ Name: 'FaxNumber', DisplayName: 'FaxNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxNumber' },
|
|
1558
|
-
{ Name: 'CanShow', DisplayName: 'CanShow', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShow' },
|
|
1559
|
-
{ Name: 'intCategoryID', DisplayName: 'intCategoryID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intCategoryID' },
|
|
1560
|
-
{ Name: 'IsAmbassador', DisplayName: 'IsAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassador' },
|
|
1561
|
-
],
|
|
1562
|
-
},
|
|
1563
|
-
{
|
|
1564
|
-
Name: 'Likes_PostList', DisplayName: 'Likes_PostList',
|
|
1565
|
-
Description: 'YourMembership Likes_PostList data', SupportsWrite: true,
|
|
1566
|
-
Fields: [
|
|
1567
|
-
{ Name: 'LikeId', DisplayName: 'LikeId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'LikeId' },
|
|
1568
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostId' },
|
|
1569
|
-
{ Name: 'CommentId', DisplayName: 'CommentId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentId' },
|
|
1570
|
-
{ Name: 'PhotoId', DisplayName: 'PhotoId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoId' },
|
|
1571
|
-
{ Name: 'PhotoCommentId', DisplayName: 'PhotoCommentId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoCommentId' },
|
|
1572
|
-
{ Name: 'DateLiked', DisplayName: 'DateLiked', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateLiked' },
|
|
1573
|
-
{ Name: 'ConnectionStatus', DisplayName: 'ConnectionStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionStatus' },
|
|
1574
|
-
{ Name: 'ConnectionId', DisplayName: 'ConnectionId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionId' },
|
|
1575
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1576
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1577
|
-
{ Name: 'ConnectionName', DisplayName: 'ConnectionName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionName' },
|
|
1578
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
1579
|
-
{ Name: 'HeadShotImage', DisplayName: 'HeadShotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadShotImage' },
|
|
1580
|
-
{ Name: 'WorkTitle', DisplayName: 'WorkTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkTitle' },
|
|
1581
|
-
{ Name: 'MemberType', DisplayName: 'MemberType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberType' },
|
|
1582
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
1583
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'State' },
|
|
1584
|
-
{ Name: 'Location', DisplayName: 'Location', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Location' },
|
|
1585
|
-
{ Name: 'Country', DisplayName: 'Country', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Country' },
|
|
1586
|
-
{ Name: 'Shared', DisplayName: 'Shared', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shared' },
|
|
1587
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1588
|
-
{ Name: 'PhoneLabel', DisplayName: 'PhoneLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneLabel' },
|
|
1589
|
-
{ Name: 'PhoneAreaCode', DisplayName: 'PhoneAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneAreaCode' },
|
|
1590
|
-
{ Name: 'PhoneNumber', DisplayName: 'PhoneNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneNumber' },
|
|
1591
|
-
{ Name: 'FaxLabel', DisplayName: 'FaxLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxLabel' },
|
|
1592
|
-
{ Name: 'FaxAreaCode', DisplayName: 'FaxAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxAreaCode' },
|
|
1593
|
-
{ Name: 'FaxNumber', DisplayName: 'FaxNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxNumber' },
|
|
1594
|
-
{ Name: 'CanShow', DisplayName: 'CanShow', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShow' },
|
|
1595
|
-
{ Name: 'intCategoryID', DisplayName: 'intCategoryID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intCategoryID' },
|
|
1596
|
-
{ Name: 'IsAmbassador', DisplayName: 'IsAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassador' },
|
|
1597
|
-
],
|
|
1598
|
-
},
|
|
1599
|
-
{
|
|
1600
|
-
Name: 'LocationCoordinates', DisplayName: 'LocationCoordinates',
|
|
1601
|
-
Description: 'YourMembership LocationCoordinates data', SupportsWrite: false,
|
|
1602
|
-
Fields: [
|
|
1603
|
-
{ Name: 'city', DisplayName: 'city', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'city' },
|
|
1604
|
-
{ Name: 'state', DisplayName: 'state', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'state' },
|
|
1605
|
-
{ Name: 'country', DisplayName: 'country', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'country' },
|
|
1606
|
-
{ Name: 'latitude', DisplayName: 'latitude', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'latitude' },
|
|
1607
|
-
{ Name: 'longitude', DisplayName: 'longitude', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'longitude' },
|
|
1608
|
-
{ Name: 'place_id', DisplayName: 'place_id', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'place_id' },
|
|
1609
|
-
],
|
|
1610
|
-
},
|
|
1611
|
-
{
|
|
1612
|
-
Name: 'Markup', DisplayName: 'Markup',
|
|
1613
|
-
Description: 'YourMembership Markup data', SupportsWrite: true,
|
|
1614
|
-
Fields: [
|
|
1615
|
-
{ Name: 'MarkupId', DisplayName: 'MarkupId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MarkupId' },
|
|
1616
|
-
{ Name: 'MarkupData', DisplayName: 'MarkupData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MarkupData' },
|
|
1617
|
-
{ Name: 'MarkupName', DisplayName: 'MarkupName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MarkupName' },
|
|
1618
|
-
{ Name: 'MarkupType', DisplayName: 'MarkupType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MarkupType' },
|
|
1619
|
-
{ Name: 'MarkupTypeName', DisplayName: 'MarkupTypeName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MarkupTypeName' },
|
|
1620
|
-
{ Name: 'TargetClientId', DisplayName: 'TargetClientId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TargetClientId' },
|
|
1621
|
-
{ Name: 'Template', DisplayName: 'Template', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Template' },
|
|
1622
|
-
{ Name: 'MarkupClass', DisplayName: 'MarkupClass', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MarkupClass' },
|
|
1623
|
-
{ Name: 'PageSize', DisplayName: 'PageSize', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PageSize' },
|
|
1624
|
-
{ Name: 'PageNumber', DisplayName: 'PageNumber', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PageNumber' },
|
|
1625
|
-
{ Name: 'CampaignId', DisplayName: 'CampaignId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CampaignId' },
|
|
1626
|
-
{ Name: 'DateCreated', DisplayName: 'DateCreated', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateCreated' },
|
|
1627
|
-
{ Name: 'DateLastModified', DisplayName: 'DateLastModified', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateLastModified' },
|
|
1628
|
-
{ Name: 'AdminLastModified', DisplayName: 'AdminLastModified', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AdminLastModified' },
|
|
1629
|
-
{ Name: 'MaxComponents', DisplayName: 'MaxComponents', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MaxComponents' },
|
|
1630
|
-
{ Name: 'ClientID', DisplayName: 'ClientID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ClientID' },
|
|
1631
|
-
{ Name: 'ResponseStatus', DisplayName: 'ResponseStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ResponseStatus' },
|
|
1632
|
-
{ Name: 'BypassCache', DisplayName: 'BypassCache', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'BypassCache' },
|
|
1633
|
-
{ Name: 'DateCached', DisplayName: 'DateCached', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateCached' },
|
|
1634
|
-
{ Name: 'Device', DisplayName: 'Device', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Device' },
|
|
1635
|
-
],
|
|
1636
|
-
},
|
|
1637
|
-
{
|
|
1638
|
-
Name: 'MarkupComponentTypes', DisplayName: 'MarkupComponentTypes',
|
|
1639
|
-
Description: 'YourMembership MarkupComponentTypes data', SupportsWrite: false,
|
|
1640
|
-
Fields: [
|
|
1641
|
-
{ Name: 'ComponentType', DisplayName: 'ComponentType', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Component type identifier (unique per record)' },
|
|
1642
|
-
{ Name: 'ComponentName', DisplayName: 'ComponentName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ComponentName' },
|
|
1643
|
-
{ Name: 'IsAtRootColumn', DisplayName: 'IsAtRootColumn', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAtRootColumn' },
|
|
1644
|
-
{ Name: 'CanHaveChildren', DisplayName: 'CanHaveChildren', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanHaveChildren' },
|
|
1645
|
-
{ Name: 'OrderId', DisplayName: 'OrderId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Sort order (API returns 0 for all records — not usable as PK)' },
|
|
1646
|
-
{ Name: 'ButtonData', DisplayName: 'ButtonData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ButtonData' },
|
|
1647
|
-
{ Name: 'ImageData', DisplayName: 'ImageData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ImageData' },
|
|
1648
|
-
{ Name: 'DividerData', DisplayName: 'DividerData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DividerData' },
|
|
1649
|
-
{ Name: 'TextData', DisplayName: 'TextData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TextData' },
|
|
1650
|
-
{ Name: 'ContainerData', DisplayName: 'ContainerData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ContainerData' },
|
|
1651
|
-
{ Name: 'PlainText', DisplayName: 'PlainText', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PlainText' },
|
|
1652
|
-
],
|
|
1653
|
-
},
|
|
1654
|
-
{
|
|
1655
|
-
Name: 'MarkupMacroComponents', DisplayName: 'MarkupMacroComponents',
|
|
1656
|
-
Description: 'YourMembership MarkupMacroComponents data', SupportsWrite: true,
|
|
1657
|
-
Fields: [
|
|
1658
|
-
{ Name: 'MacroComponentId', DisplayName: 'MacroComponentId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MacroComponentId' },
|
|
1659
|
-
{ Name: 'IsShared', DisplayName: 'IsShared', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsShared' },
|
|
1660
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1661
|
-
{ Name: 'ComponentData', DisplayName: 'ComponentData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ComponentData' },
|
|
1662
|
-
],
|
|
1663
|
-
},
|
|
1664
|
-
{
|
|
1665
|
-
Name: 'MediaGalleryAlbum', DisplayName: 'MediaGalleryAlbum',
|
|
1666
|
-
Description: 'YourMembership MediaGalleryAlbum data', SupportsWrite: false,
|
|
1667
|
-
Fields: [
|
|
1668
|
-
{ Name: 'AlbumID', DisplayName: 'AlbumID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'AlbumID' },
|
|
1669
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1670
|
-
{ Name: 'ImageURI', DisplayName: 'ImageURI', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ImageURI' },
|
|
1671
|
-
],
|
|
1672
|
-
},
|
|
1673
|
-
{
|
|
1674
|
-
Name: 'MemberList', DisplayName: 'MemberList',
|
|
1675
|
-
Description: 'YourMembership MemberList data', SupportsWrite: false,
|
|
1676
|
-
Fields: [
|
|
1677
|
-
{ Name: 'ProfileID', DisplayName: 'ProfileID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ProfileID' },
|
|
1678
|
-
{ Name: 'IsMember', DisplayName: 'IsMember', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsMember' },
|
|
1679
|
-
{ Name: 'ImportID', DisplayName: 'ImportID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ImportID' },
|
|
1680
|
-
{ Name: 'Approved', DisplayName: 'Approved', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Approved' },
|
|
1681
|
-
{ Name: 'Suspended', DisplayName: 'Suspended', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Suspended' },
|
|
1682
|
-
{ Name: 'MasterID', DisplayName: 'MasterID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MasterID' },
|
|
1683
|
-
{ Name: 'ApprovalDate', DisplayName: 'ApprovalDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ApprovalDate' },
|
|
1684
|
-
{ Name: 'QueuedForDelete', DisplayName: 'QueuedForDelete', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'QueuedForDelete' },
|
|
1685
|
-
{ Name: 'QueuedForDeleteDate', DisplayName: 'QueuedForDeleteDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'QueuedForDeleteDate' },
|
|
1686
|
-
{ Name: 'MembershipEffectiveExpiresDate', DisplayName: 'MembershipEffectiveExpiresDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MembershipEffectiveExpiresDate' },
|
|
1687
|
-
{ Name: 'EmailBounced', DisplayName: 'EmailBounced', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EmailBounced' },
|
|
1688
|
-
{ Name: 'HasConsented', DisplayName: 'HasConsented', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HasConsented' },
|
|
1689
|
-
{ Name: 'DateConsented', DisplayName: 'DateConsented', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateConsented' },
|
|
1690
|
-
{ Name: 'ConsentIPAddress', DisplayName: 'ConsentIPAddress', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConsentIPAddress' },
|
|
1691
|
-
{ Name: 'HasRevokedConsent', DisplayName: 'HasRevokedConsent', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HasRevokedConsent' },
|
|
1692
|
-
{ Name: 'DateConsentRevoked', DisplayName: 'DateConsentRevoked', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateConsentRevoked' },
|
|
1693
|
-
{ Name: 'MasterProfileID', DisplayName: 'MasterProfileID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MasterProfileID' },
|
|
1694
|
-
{ Name: 'UserName', DisplayName: 'UserName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'UserName' },
|
|
1695
|
-
{ Name: 'MembershipExpires', DisplayName: 'MembershipExpires', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MembershipExpires' },
|
|
1696
|
-
{ Name: 'MembershipExpiresDate', DisplayName: 'MembershipExpiresDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MembershipExpiresDate' },
|
|
1697
|
-
{ Name: 'SubordinateSeats', DisplayName: 'SubordinateSeats', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SubordinateSeats' },
|
|
1698
|
-
{ Name: 'ConstituentID', DisplayName: 'ConstituentID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConstituentID' },
|
|
1699
|
-
{ Name: 'MemberTypeCode', DisplayName: 'MemberTypeCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberTypeCode' },
|
|
1700
|
-
{ Name: 'Registered', DisplayName: 'Registered', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Registered' },
|
|
1701
|
-
{ Name: 'Membership', DisplayName: 'Membership', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Membership' },
|
|
1702
|
-
{ Name: 'LastRenewalDate', DisplayName: 'LastRenewalDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastRenewalDate' },
|
|
1703
|
-
{ Name: 'LastRenewalReminderSent', DisplayName: 'LastRenewalReminderSent', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastRenewalReminderSent' },
|
|
1704
|
-
{ Name: 'PrimaryGroupCode', DisplayName: 'PrimaryGroupCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PrimaryGroupCode' },
|
|
1705
|
-
{ Name: 'LastUpdated', DisplayName: 'LastUpdated', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastUpdated' },
|
|
1706
|
-
{ Name: 'Gender', DisplayName: 'Gender', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Gender' },
|
|
1707
|
-
{ Name: 'Prefix', DisplayName: 'Prefix', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Prefix' },
|
|
1708
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1709
|
-
{ Name: 'MiddleName', DisplayName: 'MiddleName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MiddleName' },
|
|
1710
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1711
|
-
{ Name: 'Suffix', DisplayName: 'Suffix', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Suffix' },
|
|
1712
|
-
{ Name: 'NickName', DisplayName: 'NickName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NickName' },
|
|
1713
|
-
{ Name: 'MaidenName', DisplayName: 'MaidenName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MaidenName' },
|
|
1714
|
-
{ Name: 'SpouseName', DisplayName: 'SpouseName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SpouseName' },
|
|
1715
|
-
{ Name: 'MaritalStatus', DisplayName: 'MaritalStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MaritalStatus' },
|
|
1716
|
-
{ Name: 'AnniversaryDate', DisplayName: 'AnniversaryDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AnniversaryDate' },
|
|
1717
|
-
{ Name: 'BirthdayDate', DisplayName: 'BirthdayDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'BirthdayDate' },
|
|
1718
|
-
{ Name: 'HomeUrl', DisplayName: 'HomeUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeUrl' },
|
|
1719
|
-
{ Name: 'HomeAddressLine1', DisplayName: 'HomeAddressLine1', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeAddressLine1' },
|
|
1720
|
-
{ Name: 'HomeAddressLine2', DisplayName: 'HomeAddressLine2', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeAddressLine2' },
|
|
1721
|
-
{ Name: 'HomeAddressCity', DisplayName: 'HomeAddressCity', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeAddressCity' },
|
|
1722
|
-
{ Name: 'HomeAddressLocation', DisplayName: 'HomeAddressLocation', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeAddressLocation' },
|
|
1723
|
-
{ Name: 'HomeAddressPostalCode', DisplayName: 'HomeAddressPostalCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeAddressPostalCode' },
|
|
1724
|
-
{ Name: 'HomeAddressCountry', DisplayName: 'HomeAddressCountry', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeAddressCountry' },
|
|
1725
|
-
{ Name: 'HomePhoneCountryCode', DisplayName: 'HomePhoneCountryCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomePhoneCountryCode' },
|
|
1726
|
-
{ Name: 'HomePhoneAreaCode', DisplayName: 'HomePhoneAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomePhoneAreaCode' },
|
|
1727
|
-
{ Name: 'HomePhoneNumber', DisplayName: 'HomePhoneNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomePhoneNumber' },
|
|
1728
|
-
{ Name: 'HomeFaxNumber', DisplayName: 'HomeFaxNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeFaxNumber' },
|
|
1729
|
-
{ Name: 'HomeFaxCountryCode', DisplayName: 'HomeFaxCountryCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeFaxCountryCode' },
|
|
1730
|
-
{ Name: 'HomeFaxAreaCode', DisplayName: 'HomeFaxAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HomeFaxAreaCode' },
|
|
1731
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1732
|
-
{ Name: 'EmailAlt', DisplayName: 'EmailAlt', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EmailAlt' },
|
|
1733
|
-
{ Name: 'HeadshotImageURI', DisplayName: 'HeadshotImageURI', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadshotImageURI' },
|
|
1734
|
-
{ Name: 'EmployerName', DisplayName: 'EmployerName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'EmployerName' },
|
|
1735
|
-
{ Name: 'SelfEmployed', DisplayName: 'SelfEmployed', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SelfEmployed' },
|
|
1736
|
-
{ Name: 'WorkTitle', DisplayName: 'WorkTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkTitle' },
|
|
1737
|
-
{ Name: 'WorkType', DisplayName: 'WorkType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkType' },
|
|
1738
|
-
{ Name: 'WorkUrl', DisplayName: 'WorkUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkUrl' },
|
|
1739
|
-
{ Name: 'WorkAddressLine1', DisplayName: 'WorkAddressLine1', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkAddressLine1' },
|
|
1740
|
-
{ Name: 'WorkAddressLine2', DisplayName: 'WorkAddressLine2', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkAddressLine2' },
|
|
1741
|
-
{ Name: 'WorkAddressCity', DisplayName: 'WorkAddressCity', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkAddressCity' },
|
|
1742
|
-
{ Name: 'WorkAddressLocation', DisplayName: 'WorkAddressLocation', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkAddressLocation' },
|
|
1743
|
-
{ Name: 'WorkAddressPostalCode', DisplayName: 'WorkAddressPostalCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkAddressPostalCode' },
|
|
1744
|
-
{ Name: 'WorkAddressCountry', DisplayName: 'WorkAddressCountry', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkAddressCountry' },
|
|
1745
|
-
{ Name: 'WorkPhoneCountryCode', DisplayName: 'WorkPhoneCountryCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkPhoneCountryCode' },
|
|
1746
|
-
{ Name: 'WorkPhoneNumber', DisplayName: 'WorkPhoneNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkPhoneNumber' },
|
|
1747
|
-
{ Name: 'WorkPhoneAreaCode', DisplayName: 'WorkPhoneAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkPhoneAreaCode' },
|
|
1748
|
-
{ Name: 'WorkFaxNumber', DisplayName: 'WorkFaxNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkFaxNumber' },
|
|
1749
|
-
{ Name: 'WorkFaxAreaCode', DisplayName: 'WorkFaxAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkFaxAreaCode' },
|
|
1750
|
-
{ Name: 'PersonalComments', DisplayName: 'PersonalComments', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PersonalComments' },
|
|
1751
|
-
{ Name: 'AdditionalEdu', DisplayName: 'AdditionalEdu', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AdditionalEdu' },
|
|
1752
|
-
{ Name: 'SocialOrgs', DisplayName: 'SocialOrgs', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SocialOrgs' },
|
|
1753
|
-
{ Name: 'PreferredAddressLatitude', DisplayName: 'PreferredAddressLatitude', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PreferredAddressLatitude' },
|
|
1754
|
-
{ Name: 'PreferredAddressLongitude', DisplayName: 'PreferredAddressLongitude', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PreferredAddressLongitude' },
|
|
1755
|
-
{ Name: 'MemberCustomFieldResponses', DisplayName: 'MemberCustomFieldResponses', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberCustomFieldResponses' },
|
|
1756
|
-
],
|
|
1757
|
-
},
|
|
1758
|
-
{
|
|
1759
|
-
Name: 'MembersGroups', DisplayName: 'MembersGroups',
|
|
1760
|
-
Description: 'YourMembership MembersGroups data', SupportsWrite: false,
|
|
1761
|
-
Fields: [
|
|
1762
|
-
{ Name: 'WebSiteMemberID', DisplayName: 'WebSiteMemberID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'WebSiteMemberID' },
|
|
1763
|
-
{ Name: 'GroupCode', DisplayName: 'GroupCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GroupCode' },
|
|
1764
|
-
{ Name: 'GroupName', DisplayName: 'GroupName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GroupName' },
|
|
1765
|
-
{ Name: 'PrimaryGroup', DisplayName: 'PrimaryGroup', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PrimaryGroup' },
|
|
1766
|
-
{ Name: 'GroupID', DisplayName: 'GroupID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'GroupID' },
|
|
1767
|
-
],
|
|
1768
|
-
},
|
|
1769
|
-
{
|
|
1770
|
-
Name: 'NetworkTypes', DisplayName: 'NetworkTypes',
|
|
1771
|
-
Description: 'YourMembership NetworkTypes data', SupportsWrite: false,
|
|
1772
|
-
Fields: [
|
|
1773
|
-
{ Name: 'ServiceId', DisplayName: 'ServiceId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ServiceId' },
|
|
1774
|
-
{ Name: 'NetworkName', DisplayName: 'NetworkName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NetworkName' },
|
|
1775
|
-
{ Name: 'HelpText', DisplayName: 'HelpText', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HelpText' },
|
|
1776
|
-
],
|
|
1777
|
-
},
|
|
1778
|
-
{
|
|
1779
|
-
Name: 'Networks', DisplayName: 'Networks',
|
|
1780
|
-
Description: 'YourMembership Networks data', SupportsWrite: true,
|
|
1781
|
-
Fields: [
|
|
1782
|
-
{ Name: 'LinkId', DisplayName: 'LinkId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'LinkId' },
|
|
1783
|
-
{ Name: 'Url', DisplayName: 'Url', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Url' },
|
|
1784
|
-
{ Name: 'NetworkName', DisplayName: 'NetworkName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NetworkName' },
|
|
1785
|
-
{ Name: 'NetworkId', DisplayName: 'NetworkId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NetworkId' },
|
|
1786
|
-
],
|
|
1787
|
-
},
|
|
1788
|
-
{
|
|
1789
|
-
Name: 'NetworksCloud', DisplayName: 'NetworksCloud',
|
|
1790
|
-
Description: 'YourMembership NetworksCloud data', SupportsWrite: false,
|
|
1791
|
-
Fields: [
|
|
1792
|
-
{ Name: 'NetworkId', DisplayName: 'NetworkId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'NetworkId' },
|
|
1793
|
-
{ Name: 'NetworkName', DisplayName: 'NetworkName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NetworkName' },
|
|
1794
|
-
{ Name: 'Url', DisplayName: 'Url', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Url' },
|
|
1795
|
-
{ Name: 'MemberCount', DisplayName: 'MemberCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberCount' },
|
|
1796
|
-
{ Name: 'Density', DisplayName: 'Density', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Density' },
|
|
1797
|
-
],
|
|
1798
|
-
},
|
|
1799
|
-
{
|
|
1800
|
-
Name: 'NotificationMacros', DisplayName: 'NotificationMacros',
|
|
1801
|
-
Description: 'YourMembership NotificationMacros data', SupportsWrite: false,
|
|
1802
|
-
Fields: [
|
|
1803
|
-
{ Name: 'MacroId', DisplayName: 'MacroId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MacroId' },
|
|
1804
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1805
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
1806
|
-
{ Name: 'Macro', DisplayName: 'Macro', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Macro' },
|
|
1807
|
-
{ Name: 'IsRequired', DisplayName: 'IsRequired', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsRequired' },
|
|
1808
|
-
],
|
|
1809
|
-
},
|
|
1810
|
-
{
|
|
1811
|
-
Name: 'Notifications', DisplayName: 'Notifications',
|
|
1812
|
-
Description: 'YourMembership Notifications data', SupportsWrite: true,
|
|
1813
|
-
Fields: [
|
|
1814
|
-
{ Name: 'Id', DisplayName: 'Id', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Id' },
|
|
1815
|
-
{ Name: 'Message', DisplayName: 'Message', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Message' },
|
|
1816
|
-
{ Name: 'Headline', DisplayName: 'Headline', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Headline' },
|
|
1817
|
-
{ Name: 'MemberId', DisplayName: 'MemberId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberId' },
|
|
1818
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostId' },
|
|
1819
|
-
{ Name: 'HeadshotImage', DisplayName: 'HeadshotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadshotImage' },
|
|
1820
|
-
{ Name: 'IsRead', DisplayName: 'IsRead', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsRead' },
|
|
1821
|
-
{ Name: 'DateCreated', DisplayName: 'DateCreated', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateCreated' },
|
|
1822
|
-
{ Name: 'Category', DisplayName: 'Category', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Category' },
|
|
1823
|
-
{ Name: 'ActionType', DisplayName: 'ActionType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ActionType' },
|
|
1824
|
-
{ Name: 'NavigateUrl', DisplayName: 'NavigateUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NavigateUrl' },
|
|
1825
|
-
{ Name: 'PrimaryId', DisplayName: 'PrimaryId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PrimaryId' },
|
|
1826
|
-
{ Name: 'PhotoUrl', DisplayName: 'PhotoUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoUrl' },
|
|
1827
|
-
{ Name: 'PhotoUrlLarge', DisplayName: 'PhotoUrlLarge', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoUrlLarge' },
|
|
1828
|
-
],
|
|
1829
|
-
},
|
|
1830
|
-
{
|
|
1831
|
-
Name: 'OAuthClientAppName', DisplayName: 'OAuthClientAppName',
|
|
1832
|
-
Description: 'YourMembership OAuthClientAppName data', SupportsWrite: true,
|
|
1833
|
-
Fields: [
|
|
1834
|
-
{ Name: 'AppID', DisplayName: 'AppID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'AppID' },
|
|
1835
|
-
{ Name: 'ClientAppID', DisplayName: 'ClientAppID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ClientAppID' },
|
|
1836
|
-
{ Name: 'ClientAppSecret', DisplayName: 'ClientAppSecret', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ClientAppSecret' },
|
|
1837
|
-
{ Name: 'AppName', DisplayName: 'AppName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AppName' },
|
|
1838
|
-
{ Name: 'CompanyName', DisplayName: 'CompanyName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CompanyName' },
|
|
1839
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1840
|
-
{ Name: 'WebSiteUrl', DisplayName: 'WebSiteUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WebSiteUrl' },
|
|
1841
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
1842
|
-
{ Name: 'ContactName', DisplayName: 'ContactName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ContactName' },
|
|
1843
|
-
{ Name: 'ContactNumber', DisplayName: 'ContactNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ContactNumber' },
|
|
1844
|
-
{ Name: 'IsActive', DisplayName: 'IsActive', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsActive' },
|
|
1845
|
-
{ Name: 'ScopeApproved', DisplayName: 'ScopeApproved', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ScopeApproved' },
|
|
1846
|
-
{ Name: 'LogoImage', DisplayName: 'LogoImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LogoImage' },
|
|
1847
|
-
{ Name: 'Created', DisplayName: 'Created', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Created' },
|
|
1848
|
-
{ Name: 'Modified', DisplayName: 'Modified', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Modified' },
|
|
1849
|
-
{ Name: 'Redirects', DisplayName: 'Redirects', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Redirects' },
|
|
1850
|
-
{ Name: 'IsExternal', DisplayName: 'IsExternal', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsExternal' },
|
|
1851
|
-
],
|
|
1852
|
-
},
|
|
1853
|
-
{
|
|
1854
|
-
Name: 'OAuthClientApps', DisplayName: 'OAuthClientApps',
|
|
1855
|
-
Description: 'YourMembership OAuthClientApps data', SupportsWrite: true,
|
|
1856
|
-
Fields: [
|
|
1857
|
-
{ Name: 'AppID', DisplayName: 'AppID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'AppID' },
|
|
1858
|
-
{ Name: 'ClientAppID', DisplayName: 'ClientAppID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ClientAppID' },
|
|
1859
|
-
{ Name: 'ClientAppSecret', DisplayName: 'ClientAppSecret', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ClientAppSecret' },
|
|
1860
|
-
{ Name: 'AppName', DisplayName: 'AppName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AppName' },
|
|
1861
|
-
{ Name: 'CompanyName', DisplayName: 'CompanyName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CompanyName' },
|
|
1862
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1863
|
-
{ Name: 'WebSiteUrl', DisplayName: 'WebSiteUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WebSiteUrl' },
|
|
1864
|
-
{ Name: 'Description', DisplayName: 'Description', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Description' },
|
|
1865
|
-
{ Name: 'ContactName', DisplayName: 'ContactName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ContactName' },
|
|
1866
|
-
{ Name: 'ContactNumber', DisplayName: 'ContactNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ContactNumber' },
|
|
1867
|
-
{ Name: 'IsActive', DisplayName: 'IsActive', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsActive' },
|
|
1868
|
-
{ Name: 'ScopeApproved', DisplayName: 'ScopeApproved', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ScopeApproved' },
|
|
1869
|
-
{ Name: 'LogoImage', DisplayName: 'LogoImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LogoImage' },
|
|
1870
|
-
{ Name: 'Created', DisplayName: 'Created', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Created' },
|
|
1871
|
-
{ Name: 'Modified', DisplayName: 'Modified', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Modified' },
|
|
1872
|
-
{ Name: 'Redirects', DisplayName: 'Redirects', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Redirects' },
|
|
1873
|
-
{ Name: 'IsExternal', DisplayName: 'IsExternal', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsExternal' },
|
|
1874
|
-
],
|
|
1875
|
-
},
|
|
1876
|
-
{
|
|
1877
|
-
Name: 'OAuthScopes', DisplayName: 'OAuthScopes',
|
|
1878
|
-
Description: 'YourMembership OAuthScopes data', SupportsWrite: false,
|
|
1879
|
-
Fields: [
|
|
1880
|
-
{ Name: 'ScopeID', DisplayName: 'ScopeID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ScopeID' },
|
|
1881
|
-
{ Name: 'ScopeName', DisplayName: 'ScopeName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ScopeName' },
|
|
1882
|
-
{ Name: 'DisplayName', DisplayName: 'DisplayName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DisplayName' },
|
|
1883
|
-
{ Name: 'IsDefault', DisplayName: 'IsDefault', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsDefault' },
|
|
1884
|
-
{ Name: 'GranularScope', DisplayName: 'GranularScope', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GranularScope' },
|
|
1885
|
-
],
|
|
1886
|
-
},
|
|
1887
|
-
{
|
|
1888
|
-
Name: 'People', DisplayName: 'People',
|
|
1889
|
-
Description: 'YourMembership People data', SupportsWrite: true,
|
|
1890
|
-
Fields: [
|
|
1891
|
-
{ Name: 'FieldCode', DisplayName: 'FieldCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FieldCode' },
|
|
1892
|
-
{ Name: 'Fields', DisplayName: 'Fields', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Fields' },
|
|
1893
|
-
{ Name: 'Visibility', DisplayName: 'Visibility', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Visibility' },
|
|
1894
|
-
{ Name: 'VisibilityInt', DisplayName: 'VisibilityInt', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'VisibilityInt' },
|
|
1895
|
-
{ Name: 'Values', DisplayName: 'Values', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Values' },
|
|
1896
|
-
{ Name: 'ValuesProxy', DisplayName: 'ValuesProxy', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ValuesProxy' },
|
|
1897
|
-
{ Name: 'MetaValue', DisplayName: 'MetaValue', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MetaValue' },
|
|
1898
|
-
{ Name: 'ClientID', DisplayName: 'ClientID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ClientID' },
|
|
1899
|
-
],
|
|
1900
|
-
},
|
|
1901
|
-
{
|
|
1902
|
-
Name: 'Photos', DisplayName: 'Photos',
|
|
1903
|
-
Description: 'YourMembership Photos data', SupportsWrite: true,
|
|
1904
|
-
Fields: [
|
|
1905
|
-
{ Name: 'CommentID', DisplayName: 'CommentID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'CommentID' },
|
|
1906
|
-
{ Name: 'CdbID', DisplayName: 'CdbID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CdbID' },
|
|
1907
|
-
{ Name: 'Posted', DisplayName: 'Posted', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Posted' },
|
|
1908
|
-
{ Name: 'PostedUTC', DisplayName: 'PostedUTC', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostedUTC' },
|
|
1909
|
-
{ Name: 'GalleryItemID', DisplayName: 'GalleryItemID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GalleryItemID' },
|
|
1910
|
-
{ Name: 'SchoolID', DisplayName: 'SchoolID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SchoolID' },
|
|
1911
|
-
{ Name: 'Comment', DisplayName: 'Comment', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Comment' },
|
|
1912
|
-
{ Name: 'PostedBy', DisplayName: 'PostedBy', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostedBy' },
|
|
1913
|
-
{ Name: 'PostedByMugshot', DisplayName: 'PostedByMugshot', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostedByMugshot' },
|
|
1914
|
-
{ Name: 'PostedDate', DisplayName: 'PostedDate', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostedDate' },
|
|
1915
|
-
{ Name: 'GroupID', DisplayName: 'GroupID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'GroupID' },
|
|
1916
|
-
{ Name: 'IsOwner', DisplayName: 'IsOwner', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsOwner' },
|
|
1917
|
-
{ Name: 'LikeID', DisplayName: 'LikeID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeID' },
|
|
1918
|
-
{ Name: 'LikedComment', DisplayName: 'LikedComment', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikedComment' },
|
|
1919
|
-
{ Name: 'LikeCount', DisplayName: 'LikeCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeCount' },
|
|
1920
|
-
{ Name: 'SkipCrossPost', DisplayName: 'SkipCrossPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SkipCrossPost' },
|
|
1921
|
-
],
|
|
1922
|
-
},
|
|
1923
|
-
{
|
|
1924
|
-
Name: 'PushNotificationsConfig', DisplayName: 'PushNotificationsConfig',
|
|
1925
|
-
Description: 'YourMembership PushNotificationsConfig data', SupportsWrite: true,
|
|
1926
|
-
Fields: [
|
|
1927
|
-
{ Name: 'NotificationID', DisplayName: 'NotificationID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'NotificationID' },
|
|
1928
|
-
{ Name: 'DisplayName', DisplayName: 'DisplayName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DisplayName' },
|
|
1929
|
-
{ Name: 'Status', DisplayName: 'Status', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Status' },
|
|
1930
|
-
],
|
|
1931
|
-
},
|
|
1932
|
-
{
|
|
1933
|
-
Name: 'SMSCampaignReports', DisplayName: 'SMSCampaignReports',
|
|
1934
|
-
Description: 'YourMembership SMSCampaignReports data', SupportsWrite: false,
|
|
1935
|
-
Fields: [
|
|
1936
|
-
{ Name: 'TypeId', DisplayName: 'TypeId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'TypeId' },
|
|
1937
|
-
{ Name: 'ActivityType', DisplayName: 'ActivityType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ActivityType' },
|
|
1938
|
-
{ Name: 'Date', DisplayName: 'Date', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Date' },
|
|
1939
|
-
],
|
|
1940
|
-
},
|
|
1941
|
-
{
|
|
1942
|
-
Name: 'SMSCampaignReports_Messages', DisplayName: 'SMSCampaignReports_Messages',
|
|
1943
|
-
Description: 'YourMembership SMSCampaignReports_Messages data', SupportsWrite: false,
|
|
1944
|
-
Fields: [
|
|
1945
|
-
{ Name: 'MemberId', DisplayName: 'MemberId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MemberId' },
|
|
1946
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1947
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1948
|
-
{ Name: 'Mobile', DisplayName: 'Mobile', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Mobile' },
|
|
1949
|
-
{ Name: 'MessageId', DisplayName: 'MessageId', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MessageId' },
|
|
1950
|
-
{ Name: 'Activity', DisplayName: 'Activity', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Activity' },
|
|
1951
|
-
],
|
|
1952
|
-
},
|
|
1953
|
-
{
|
|
1954
|
-
Name: 'SavedSearches', DisplayName: 'SavedSearches',
|
|
1955
|
-
Description: 'YourMembership SavedSearches data', SupportsWrite: false,
|
|
1956
|
-
Fields: [
|
|
1957
|
-
{ Name: 'SavedSearchId', DisplayName: 'SavedSearchId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'SavedSearchId' },
|
|
1958
|
-
{ Name: 'SearchName', DisplayName: 'SearchName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SearchName' },
|
|
1959
|
-
{ Name: 'SearchText', DisplayName: 'SearchText', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SearchText' },
|
|
1960
|
-
{ Name: 'SearchTextPrintSet', DisplayName: 'SearchTextPrintSet', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SearchTextPrintSet' },
|
|
1961
|
-
{ Name: 'Shared', DisplayName: 'Shared', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shared' },
|
|
1962
|
-
{ Name: 'SearchType', DisplayName: 'SearchType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SearchType' },
|
|
1963
|
-
{ Name: 'Version', DisplayName: 'Version', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Version' },
|
|
1964
|
-
{ Name: 'Name', DisplayName: 'Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Name' },
|
|
1965
|
-
{ Name: 'FilePath', DisplayName: 'FilePath', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FilePath' },
|
|
1966
|
-
{ Name: 'CurrentVersion', DisplayName: 'CurrentVersion', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CurrentVersion' },
|
|
1967
|
-
{ Name: 'AdminUserId', DisplayName: 'AdminUserId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AdminUserId' },
|
|
1968
|
-
{ Name: 'ErrorCount', DisplayName: 'ErrorCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ErrorCount' },
|
|
1969
|
-
{ Name: 'FullName', DisplayName: 'FullName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FullName' },
|
|
1970
|
-
{ Name: 'SearchTermsHuman', DisplayName: 'SearchTermsHuman', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SearchTermsHuman' },
|
|
1971
|
-
{ Name: 'SearchCategoryId', DisplayName: 'SearchCategoryId', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SearchCategoryId' },
|
|
1972
|
-
{ Name: 'SearchNameFilter', DisplayName: 'SearchNameFilter', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SearchNameFilter' },
|
|
1973
|
-
{ Name: 'SearchStatusProduct', DisplayName: 'SearchStatusProduct', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'SearchStatusProduct' },
|
|
1974
|
-
],
|
|
1975
|
-
},
|
|
1976
|
-
{
|
|
1977
|
-
Name: 'Shares', DisplayName: 'Shares',
|
|
1978
|
-
Description: 'YourMembership Shares data', SupportsWrite: true,
|
|
1979
|
-
Fields: [
|
|
1980
|
-
{ Name: 'ShareId', DisplayName: 'ShareId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ShareId' },
|
|
1981
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostId' },
|
|
1982
|
-
{ Name: 'PhotoId', DisplayName: 'PhotoId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoId' },
|
|
1983
|
-
{ Name: 'DateShared', DisplayName: 'DateShared', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DateShared' },
|
|
1984
|
-
{ Name: 'ConnectionStatus', DisplayName: 'ConnectionStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionStatus' },
|
|
1985
|
-
{ Name: 'ConnectionId', DisplayName: 'ConnectionId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionId' },
|
|
1986
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
1987
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
1988
|
-
{ Name: 'ConnectionName', DisplayName: 'ConnectionName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionName' },
|
|
1989
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
1990
|
-
{ Name: 'HeadShotImage', DisplayName: 'HeadShotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadShotImage' },
|
|
1991
|
-
{ Name: 'WorkTitle', DisplayName: 'WorkTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkTitle' },
|
|
1992
|
-
{ Name: 'MemberType', DisplayName: 'MemberType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberType' },
|
|
1993
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
1994
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'State' },
|
|
1995
|
-
{ Name: 'Location', DisplayName: 'Location', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Location' },
|
|
1996
|
-
{ Name: 'Country', DisplayName: 'Country', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Country' },
|
|
1997
|
-
{ Name: 'Shared', DisplayName: 'Shared', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shared' },
|
|
1998
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
1999
|
-
{ Name: 'PhoneLabel', DisplayName: 'PhoneLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneLabel' },
|
|
2000
|
-
{ Name: 'PhoneAreaCode', DisplayName: 'PhoneAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneAreaCode' },
|
|
2001
|
-
{ Name: 'PhoneNumber', DisplayName: 'PhoneNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneNumber' },
|
|
2002
|
-
{ Name: 'FaxLabel', DisplayName: 'FaxLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxLabel' },
|
|
2003
|
-
{ Name: 'FaxAreaCode', DisplayName: 'FaxAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxAreaCode' },
|
|
2004
|
-
{ Name: 'FaxNumber', DisplayName: 'FaxNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxNumber' },
|
|
2005
|
-
{ Name: 'CanShow', DisplayName: 'CanShow', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShow' },
|
|
2006
|
-
{ Name: 'intCategoryID', DisplayName: 'intCategoryID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intCategoryID' },
|
|
2007
|
-
{ Name: 'IsAmbassador', DisplayName: 'IsAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassador' },
|
|
2008
|
-
],
|
|
2009
|
-
},
|
|
2010
|
-
{
|
|
2011
|
-
Name: 'SponsorPosts', DisplayName: 'SponsorPosts',
|
|
2012
|
-
Description: 'YourMembership SponsorPosts data', SupportsWrite: false,
|
|
2013
|
-
Fields: [
|
|
2014
|
-
{ Name: 'Sponsored', DisplayName: 'Sponsored', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Sponsored' },
|
|
2015
|
-
{ Name: 'MemberID', DisplayName: 'MemberID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MemberID' },
|
|
2016
|
-
{ Name: 'PostText', DisplayName: 'PostText', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostText' },
|
|
2017
|
-
{ Name: 'PostHtml', DisplayName: 'PostHtml', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHtml' },
|
|
2018
|
-
{ Name: 'AuthorId', DisplayName: 'AuthorId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorId' },
|
|
2019
|
-
{ Name: 'WallOwnerId', DisplayName: 'WallOwnerId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerId' },
|
|
2020
|
-
{ Name: 'AuthorName', DisplayName: 'AuthorName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorName' },
|
|
2021
|
-
{ Name: 'WallOwnerName', DisplayName: 'WallOwnerName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerName' },
|
|
2022
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostId' },
|
|
2023
|
-
{ Name: 'PostDate', DisplayName: 'PostDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostDate' },
|
|
2024
|
-
{ Name: 'PostType', DisplayName: 'PostType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostType' },
|
|
2025
|
-
{ Name: 'ShareCount', DisplayName: 'ShareCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ShareCount' },
|
|
2026
|
-
{ Name: 'LikesCount', DisplayName: 'LikesCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikesCount' },
|
|
2027
|
-
{ Name: 'LikedPost', DisplayName: 'LikedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikedPost' },
|
|
2028
|
-
{ Name: 'LikeId', DisplayName: 'LikeId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeId' },
|
|
2029
|
-
{ Name: 'CommentCount', DisplayName: 'CommentCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentCount' },
|
|
2030
|
-
{ Name: 'CommenterCount', DisplayName: 'CommenterCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommenterCount' },
|
|
2031
|
-
{ Name: 'PostHeadShotUrl', DisplayName: 'PostHeadShotUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadShotUrl' },
|
|
2032
|
-
{ Name: 'CanReply', DisplayName: 'CanReply', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanReply' },
|
|
2033
|
-
{ Name: 'CanShare', DisplayName: 'CanShare', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShare' },
|
|
2034
|
-
{ Name: 'CanComment', DisplayName: 'CanComment', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanComment' },
|
|
2035
|
-
{ Name: 'CanDelete', DisplayName: 'CanDelete', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanDelete' },
|
|
2036
|
-
{ Name: 'RecentComments', DisplayName: 'RecentComments', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RecentComments' },
|
|
2037
|
-
{ Name: 'CommentList', DisplayName: 'CommentList', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentList' },
|
|
2038
|
-
{ Name: 'PostHeadline', DisplayName: 'PostHeadline', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadline' },
|
|
2039
|
-
{ Name: 'TopLine', DisplayName: 'TopLine', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TopLine' },
|
|
2040
|
-
{ Name: 'PostContentData', DisplayName: 'PostContentData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostContentData' },
|
|
2041
|
-
{ Name: 'PhotoGallery', DisplayName: 'PhotoGallery', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoGallery' },
|
|
2042
|
-
{ Name: 'IsAmbassadorPost', DisplayName: 'IsAmbassadorPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassadorPost' },
|
|
2043
|
-
{ Name: 'IsActorAmbassador', DisplayName: 'IsActorAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsActorAmbassador' },
|
|
2044
|
-
{ Name: 'IsSharedPost', DisplayName: 'IsSharedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsSharedPost' },
|
|
2045
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Active' },
|
|
2046
|
-
],
|
|
2047
|
-
},
|
|
2048
|
-
{
|
|
2049
|
-
Name: 'StoreProductExtractSelection', DisplayName: 'StoreProductExtractSelection',
|
|
2050
|
-
Description: 'YourMembership StoreProductExtractSelection data', SupportsWrite: false,
|
|
2051
|
-
Fields: [
|
|
2052
|
-
{ Name: 'Product_ID', DisplayName: 'Product_ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Product_ID' },
|
|
2053
|
-
{ Name: 'Product_Code', DisplayName: 'Product_Code', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Product_Code' },
|
|
2054
|
-
{ Name: 'Product_Name', DisplayName: 'Product_Name', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Product_Name' },
|
|
2055
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Active' },
|
|
2056
|
-
{ Name: 'Featured_Product', DisplayName: 'Featured_Product', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Featured_Product' },
|
|
2057
|
-
{ Name: 'Primary_Category_ID', DisplayName: 'Primary_Category_ID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Primary_Category_ID' },
|
|
2058
|
-
{ Name: 'Primary_Category', DisplayName: 'Primary_Category', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Primary_Category' },
|
|
2059
|
-
{ Name: 'Use_Inventory', DisplayName: 'Use_Inventory', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Use_Inventory' },
|
|
2060
|
-
{ Name: 'Stock_Level', DisplayName: 'Stock_Level', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Stock_Level' },
|
|
2061
|
-
{ Name: 'Low_Stock_Threshold', DisplayName: 'Low_Stock_Threshold', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Low_Stock_Threshold' },
|
|
2062
|
-
{ Name: 'Allow_Back_Order', DisplayName: 'Allow_Back_Order', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Allow_Back_Order' },
|
|
2063
|
-
{ Name: 'Number_Sold', DisplayName: 'Number_Sold', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Number_Sold' },
|
|
2064
|
-
{ Name: 'NonMember_Price', DisplayName: 'NonMember_Price', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'NonMember_Price' },
|
|
2065
|
-
{ Name: 'Permalink', DisplayName: 'Permalink', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Permalink' },
|
|
2066
|
-
{ Name: 'Is_Dowloadable', DisplayName: 'Is_Dowloadable', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Is_Dowloadable' },
|
|
2067
|
-
{ Name: 'Download_Path', DisplayName: 'Download_Path', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Download_Path' },
|
|
2068
|
-
{ Name: 'List_In_Store', DisplayName: 'List_In_Store', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'List_In_Store' },
|
|
2069
|
-
{ Name: 'Buy_From_Store', DisplayName: 'Buy_From_Store', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Buy_From_Store' },
|
|
2070
|
-
{ Name: 'Is_Ticket', DisplayName: 'Is_Ticket', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Is_Ticket' },
|
|
2071
|
-
{ Name: 'Is_Career_Post', DisplayName: 'Is_Career_Post', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Is_Career_Post' },
|
|
2072
|
-
{ Name: 'Is_LMS_Course', DisplayName: 'Is_LMS_Course', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Is_LMS_Course' },
|
|
2073
|
-
],
|
|
2074
|
-
},
|
|
2075
|
-
{
|
|
2076
|
-
Name: 'StoreProductSelection', DisplayName: 'StoreProductSelection',
|
|
2077
|
-
Description: 'YourMembership StoreProductSelection data', SupportsWrite: false,
|
|
2078
|
-
Fields: [
|
|
2079
|
-
{ Name: 'aut_ProductId', DisplayName: 'aut_ProductId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'aut_ProductId' },
|
|
2080
|
-
{ Name: 'txt_productName', DisplayName: 'txt_productName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'txt_productName' },
|
|
2081
|
-
{ Name: 'intSequence', DisplayName: 'intSequence', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intSequence' },
|
|
2082
|
-
{ Name: 'int_productActive', DisplayName: 'int_productActive', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'int_productActive' },
|
|
2083
|
-
{ Name: 'bln_Featured', DisplayName: 'bln_Featured', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'bln_Featured' },
|
|
2084
|
-
{ Name: 'blnDownloadable', DisplayName: 'blnDownloadable', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'blnDownloadable' },
|
|
2085
|
-
{ Name: 'strDownloadPath', DisplayName: 'strDownloadPath', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'strDownloadPath' },
|
|
2086
|
-
{ Name: 'blnAllowBackOrder', DisplayName: 'blnAllowBackOrder', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'blnAllowBackOrder' },
|
|
2087
|
-
{ Name: 'intStockLevel', DisplayName: 'intStockLevel', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intStockLevel' },
|
|
2088
|
-
{ Name: 'intLowStockThreshold', DisplayName: 'intLowStockThreshold', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intLowStockThreshold' },
|
|
2089
|
-
{ Name: 'blnUseInventory', DisplayName: 'blnUseInventory', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'blnUseInventory' },
|
|
2090
|
-
{ Name: 'intPrimaryCategoryID', DisplayName: 'intPrimaryCategoryID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intPrimaryCategoryID' },
|
|
2091
|
-
{ Name: 'intCurrentCategoryID', DisplayName: 'intCurrentCategoryID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intCurrentCategoryID' },
|
|
2092
|
-
{ Name: 'blnPrimaryCategory', DisplayName: 'blnPrimaryCategory', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'blnPrimaryCategory' },
|
|
2093
|
-
{ Name: 'strPrimaryCategory', DisplayName: 'strPrimaryCategory', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'strPrimaryCategory' },
|
|
2094
|
-
{ Name: 'blnFeaturedHere', DisplayName: 'blnFeaturedHere', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'blnFeaturedHere' },
|
|
2095
|
-
{ Name: 'intPurchased', DisplayName: 'intPurchased', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intPurchased' },
|
|
2096
|
-
{ Name: 'intReserved', DisplayName: 'intReserved', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intReserved' },
|
|
2097
|
-
{ Name: 'intTotalRows', DisplayName: 'intTotalRows', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intTotalRows' },
|
|
2098
|
-
],
|
|
2099
|
-
},
|
|
2100
|
-
{
|
|
2101
|
-
Name: 'Templates', DisplayName: 'Templates',
|
|
2102
|
-
Description: 'YourMembership Templates data', SupportsWrite: false,
|
|
2103
|
-
Fields: [
|
|
2104
|
-
{ Name: 'type', DisplayName: 'type', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'type' },
|
|
2105
|
-
{ Name: 'id', DisplayName: 'id', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'id' },
|
|
2106
|
-
{ Name: 'generated_template_id', DisplayName: 'generated_template_id', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'generated_template_id' },
|
|
2107
|
-
{ Name: 'site_id', DisplayName: 'site_id', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'site_id' },
|
|
2108
|
-
{ Name: 'partner_id', DisplayName: 'partner_id', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'partner_id' },
|
|
2109
|
-
{ Name: 'questions', DisplayName: 'questions', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'questions' },
|
|
2110
|
-
],
|
|
2111
|
-
},
|
|
2112
|
-
{
|
|
2113
|
-
Name: 'TopContributors', DisplayName: 'TopContributors',
|
|
2114
|
-
Description: 'YourMembership TopContributors data', SupportsWrite: false,
|
|
2115
|
-
Fields: [
|
|
2116
|
-
{ Name: 'RankNumber', DisplayName: 'RankNumber', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RankNumber' },
|
|
2117
|
-
{ Name: 'RankPercentage', DisplayName: 'RankPercentage', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RankPercentage' },
|
|
2118
|
-
{ Name: 'RankBaseline', DisplayName: 'RankBaseline', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RankBaseline' },
|
|
2119
|
-
{ Name: 'Score', DisplayName: 'Score', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Score' },
|
|
2120
|
-
{ Name: 'PostCount', DisplayName: 'PostCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostCount' },
|
|
2121
|
-
{ Name: 'CommentCount', DisplayName: 'CommentCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentCount' },
|
|
2122
|
-
{ Name: 'LikeCount', DisplayName: 'LikeCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeCount' },
|
|
2123
|
-
{ Name: 'LevelId', DisplayName: 'LevelId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'LevelId' },
|
|
2124
|
-
{ Name: 'LevelName', DisplayName: 'LevelName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LevelName' },
|
|
2125
|
-
{ Name: 'DisplayOptions', DisplayName: 'DisplayOptions', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'DisplayOptions' },
|
|
2126
|
-
{ Name: 'ConnectionStatus', DisplayName: 'ConnectionStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionStatus' },
|
|
2127
|
-
{ Name: 'ConnectionId', DisplayName: 'ConnectionId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionId' },
|
|
2128
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
2129
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
2130
|
-
{ Name: 'ConnectionName', DisplayName: 'ConnectionName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionName' },
|
|
2131
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
2132
|
-
{ Name: 'HeadShotImage', DisplayName: 'HeadShotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadShotImage' },
|
|
2133
|
-
{ Name: 'WorkTitle', DisplayName: 'WorkTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkTitle' },
|
|
2134
|
-
{ Name: 'MemberType', DisplayName: 'MemberType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberType' },
|
|
2135
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
2136
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'State' },
|
|
2137
|
-
{ Name: 'Location', DisplayName: 'Location', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Location' },
|
|
2138
|
-
{ Name: 'Country', DisplayName: 'Country', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Country' },
|
|
2139
|
-
{ Name: 'Shared', DisplayName: 'Shared', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shared' },
|
|
2140
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
2141
|
-
{ Name: 'PhoneLabel', DisplayName: 'PhoneLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneLabel' },
|
|
2142
|
-
{ Name: 'PhoneAreaCode', DisplayName: 'PhoneAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneAreaCode' },
|
|
2143
|
-
{ Name: 'PhoneNumber', DisplayName: 'PhoneNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneNumber' },
|
|
2144
|
-
{ Name: 'FaxLabel', DisplayName: 'FaxLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxLabel' },
|
|
2145
|
-
{ Name: 'FaxAreaCode', DisplayName: 'FaxAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxAreaCode' },
|
|
2146
|
-
{ Name: 'FaxNumber', DisplayName: 'FaxNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxNumber' },
|
|
2147
|
-
{ Name: 'CanShow', DisplayName: 'CanShow', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShow' },
|
|
2148
|
-
{ Name: 'intCategoryID', DisplayName: 'intCategoryID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intCategoryID' },
|
|
2149
|
-
{ Name: 'IsAmbassador', DisplayName: 'IsAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassador' },
|
|
2150
|
-
],
|
|
2151
|
-
},
|
|
2152
|
-
{
|
|
2153
|
-
Name: 'TrendingPosts', DisplayName: 'TrendingPosts',
|
|
2154
|
-
Description: 'YourMembership TrendingPosts data', SupportsWrite: false,
|
|
2155
|
-
Fields: [
|
|
2156
|
-
{ Name: 'Sponsored', DisplayName: 'Sponsored', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Sponsored' },
|
|
2157
|
-
{ Name: 'MemberID', DisplayName: 'MemberID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'MemberID' },
|
|
2158
|
-
{ Name: 'PostText', DisplayName: 'PostText', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostText' },
|
|
2159
|
-
{ Name: 'PostHtml', DisplayName: 'PostHtml', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHtml' },
|
|
2160
|
-
{ Name: 'AuthorId', DisplayName: 'AuthorId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorId' },
|
|
2161
|
-
{ Name: 'WallOwnerId', DisplayName: 'WallOwnerId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerId' },
|
|
2162
|
-
{ Name: 'AuthorName', DisplayName: 'AuthorName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorName' },
|
|
2163
|
-
{ Name: 'WallOwnerName', DisplayName: 'WallOwnerName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerName' },
|
|
2164
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostId' },
|
|
2165
|
-
{ Name: 'PostDate', DisplayName: 'PostDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostDate' },
|
|
2166
|
-
{ Name: 'PostType', DisplayName: 'PostType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostType' },
|
|
2167
|
-
{ Name: 'ShareCount', DisplayName: 'ShareCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ShareCount' },
|
|
2168
|
-
{ Name: 'LikesCount', DisplayName: 'LikesCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikesCount' },
|
|
2169
|
-
{ Name: 'LikedPost', DisplayName: 'LikedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikedPost' },
|
|
2170
|
-
{ Name: 'LikeId', DisplayName: 'LikeId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeId' },
|
|
2171
|
-
{ Name: 'CommentCount', DisplayName: 'CommentCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentCount' },
|
|
2172
|
-
{ Name: 'CommenterCount', DisplayName: 'CommenterCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommenterCount' },
|
|
2173
|
-
{ Name: 'PostHeadShotUrl', DisplayName: 'PostHeadShotUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadShotUrl' },
|
|
2174
|
-
{ Name: 'CanReply', DisplayName: 'CanReply', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanReply' },
|
|
2175
|
-
{ Name: 'CanShare', DisplayName: 'CanShare', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShare' },
|
|
2176
|
-
{ Name: 'CanComment', DisplayName: 'CanComment', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanComment' },
|
|
2177
|
-
{ Name: 'CanDelete', DisplayName: 'CanDelete', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanDelete' },
|
|
2178
|
-
{ Name: 'RecentComments', DisplayName: 'RecentComments', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RecentComments' },
|
|
2179
|
-
{ Name: 'CommentList', DisplayName: 'CommentList', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentList' },
|
|
2180
|
-
{ Name: 'PostHeadline', DisplayName: 'PostHeadline', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadline' },
|
|
2181
|
-
{ Name: 'TopLine', DisplayName: 'TopLine', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TopLine' },
|
|
2182
|
-
{ Name: 'PostContentData', DisplayName: 'PostContentData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostContentData' },
|
|
2183
|
-
{ Name: 'PhotoGallery', DisplayName: 'PhotoGallery', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoGallery' },
|
|
2184
|
-
{ Name: 'IsAmbassadorPost', DisplayName: 'IsAmbassadorPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassadorPost' },
|
|
2185
|
-
{ Name: 'IsActorAmbassador', DisplayName: 'IsActorAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsActorAmbassador' },
|
|
2186
|
-
{ Name: 'IsSharedPost', DisplayName: 'IsSharedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsSharedPost' },
|
|
2187
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Active' },
|
|
2188
|
-
],
|
|
2189
|
-
},
|
|
2190
|
-
{
|
|
2191
|
-
Name: 'WallComments', DisplayName: 'WallComments',
|
|
2192
|
-
Description: 'YourMembership WallComments data', SupportsWrite: true,
|
|
2193
|
-
Fields: [
|
|
2194
|
-
{ Name: 'WallId', DisplayName: 'WallId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'WallId' },
|
|
2195
|
-
{ Name: 'Sponsored', DisplayName: 'Sponsored', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Sponsored' },
|
|
2196
|
-
{ Name: 'MemberID', DisplayName: 'MemberID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberID' },
|
|
2197
|
-
{ Name: 'PostText', DisplayName: 'PostText', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostText' },
|
|
2198
|
-
{ Name: 'PostHtml', DisplayName: 'PostHtml', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHtml' },
|
|
2199
|
-
{ Name: 'AuthorId', DisplayName: 'AuthorId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorId' },
|
|
2200
|
-
{ Name: 'WallOwnerId', DisplayName: 'WallOwnerId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerId' },
|
|
2201
|
-
{ Name: 'AuthorName', DisplayName: 'AuthorName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AuthorName' },
|
|
2202
|
-
{ Name: 'WallOwnerName', DisplayName: 'WallOwnerName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WallOwnerName' },
|
|
2203
|
-
{ Name: 'PostId', DisplayName: 'PostId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostId' },
|
|
2204
|
-
{ Name: 'PostDate', DisplayName: 'PostDate', Type: 'datetime', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostDate' },
|
|
2205
|
-
{ Name: 'PostType', DisplayName: 'PostType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostType' },
|
|
2206
|
-
{ Name: 'ShareCount', DisplayName: 'ShareCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ShareCount' },
|
|
2207
|
-
{ Name: 'LikesCount', DisplayName: 'LikesCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikesCount' },
|
|
2208
|
-
{ Name: 'LikedPost', DisplayName: 'LikedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikedPost' },
|
|
2209
|
-
{ Name: 'LikeId', DisplayName: 'LikeId', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LikeId' },
|
|
2210
|
-
{ Name: 'CommentCount', DisplayName: 'CommentCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentCount' },
|
|
2211
|
-
{ Name: 'CommenterCount', DisplayName: 'CommenterCount', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommenterCount' },
|
|
2212
|
-
{ Name: 'PostHeadShotUrl', DisplayName: 'PostHeadShotUrl', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadShotUrl' },
|
|
2213
|
-
{ Name: 'CanReply', DisplayName: 'CanReply', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanReply' },
|
|
2214
|
-
{ Name: 'CanShare', DisplayName: 'CanShare', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShare' },
|
|
2215
|
-
{ Name: 'CanComment', DisplayName: 'CanComment', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanComment' },
|
|
2216
|
-
{ Name: 'CanDelete', DisplayName: 'CanDelete', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanDelete' },
|
|
2217
|
-
{ Name: 'RecentComments', DisplayName: 'RecentComments', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'RecentComments' },
|
|
2218
|
-
{ Name: 'CommentList', DisplayName: 'CommentList', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CommentList' },
|
|
2219
|
-
{ Name: 'PostHeadline', DisplayName: 'PostHeadline', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostHeadline' },
|
|
2220
|
-
{ Name: 'TopLine', DisplayName: 'TopLine', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'TopLine' },
|
|
2221
|
-
{ Name: 'PostContentData', DisplayName: 'PostContentData', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PostContentData' },
|
|
2222
|
-
{ Name: 'PhotoGallery', DisplayName: 'PhotoGallery', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhotoGallery' },
|
|
2223
|
-
{ Name: 'IsAmbassadorPost', DisplayName: 'IsAmbassadorPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassadorPost' },
|
|
2224
|
-
{ Name: 'IsActorAmbassador', DisplayName: 'IsActorAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsActorAmbassador' },
|
|
2225
|
-
{ Name: 'IsSharedPost', DisplayName: 'IsSharedPost', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsSharedPost' },
|
|
2226
|
-
{ Name: 'Active', DisplayName: 'Active', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Active' },
|
|
2227
|
-
],
|
|
2228
|
-
},
|
|
2229
|
-
{
|
|
2230
|
-
Name: 'WallComments_MemberList', DisplayName: 'WallComments_MemberList',
|
|
2231
|
-
Description: 'YourMembership WallComments_MemberList data', SupportsWrite: true,
|
|
2232
|
-
Fields: [
|
|
2233
|
-
{ Name: 'ConnectionStatus', DisplayName: 'ConnectionStatus', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionStatus' },
|
|
2234
|
-
{ Name: 'ConnectionId', DisplayName: 'ConnectionId', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ConnectionId' },
|
|
2235
|
-
{ Name: 'FirstName', DisplayName: 'FirstName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FirstName' },
|
|
2236
|
-
{ Name: 'LastName', DisplayName: 'LastName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'LastName' },
|
|
2237
|
-
{ Name: 'ConnectionName', DisplayName: 'ConnectionName', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ConnectionName' },
|
|
2238
|
-
{ Name: 'Organization', DisplayName: 'Organization', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Organization' },
|
|
2239
|
-
{ Name: 'HeadShotImage', DisplayName: 'HeadShotImage', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'HeadShotImage' },
|
|
2240
|
-
{ Name: 'WorkTitle', DisplayName: 'WorkTitle', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'WorkTitle' },
|
|
2241
|
-
{ Name: 'MemberType', DisplayName: 'MemberType', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'MemberType' },
|
|
2242
|
-
{ Name: 'City', DisplayName: 'City', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'City' },
|
|
2243
|
-
{ Name: 'State', DisplayName: 'State', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'State' },
|
|
2244
|
-
{ Name: 'Location', DisplayName: 'Location', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Location' },
|
|
2245
|
-
{ Name: 'Country', DisplayName: 'Country', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Country' },
|
|
2246
|
-
{ Name: 'Shared', DisplayName: 'Shared', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Shared' },
|
|
2247
|
-
{ Name: 'Email', DisplayName: 'Email', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Email' },
|
|
2248
|
-
{ Name: 'PhoneLabel', DisplayName: 'PhoneLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneLabel' },
|
|
2249
|
-
{ Name: 'PhoneAreaCode', DisplayName: 'PhoneAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneAreaCode' },
|
|
2250
|
-
{ Name: 'PhoneNumber', DisplayName: 'PhoneNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'PhoneNumber' },
|
|
2251
|
-
{ Name: 'FaxLabel', DisplayName: 'FaxLabel', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxLabel' },
|
|
2252
|
-
{ Name: 'FaxAreaCode', DisplayName: 'FaxAreaCode', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxAreaCode' },
|
|
2253
|
-
{ Name: 'FaxNumber', DisplayName: 'FaxNumber', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'FaxNumber' },
|
|
2254
|
-
{ Name: 'CanShow', DisplayName: 'CanShow', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'CanShow' },
|
|
2255
|
-
{ Name: 'intCategoryID', DisplayName: 'intCategoryID', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'intCategoryID' },
|
|
2256
|
-
{ Name: 'IsAmbassador', DisplayName: 'IsAmbassador', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'IsAmbassador' },
|
|
2257
|
-
],
|
|
2258
|
-
},
|
|
2259
|
-
{
|
|
2260
|
-
Name: 'WebScraper', DisplayName: 'WebScraper',
|
|
2261
|
-
Description: 'YourMembership WebScraper data', SupportsWrite: true,
|
|
2262
|
-
Fields: [
|
|
2263
|
-
{ Name: 'Src', DisplayName: 'Src', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Src' },
|
|
2264
|
-
{ Name: 'Width', DisplayName: 'Width', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Width' },
|
|
2265
|
-
{ Name: 'Height', DisplayName: 'Height', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Height' },
|
|
2266
|
-
{ Name: 'AutoFit', DisplayName: 'AutoFit', Type: 'boolean', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'AutoFit' },
|
|
2267
|
-
{ Name: 'Index', DisplayName: 'Index', Type: 'number', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Index' },
|
|
2268
|
-
{ Name: 'Token', DisplayName: 'Token', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'Token' },
|
|
2269
|
-
{ Name: 'OriginalSrc', DisplayName: 'OriginalSrc', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'OriginalSrc' },
|
|
2270
|
-
],
|
|
2271
|
-
},
|
|
2272
|
-
// ── Objects present in metadata but not previously listed in YM_ACTION_OBJECTS ──
|
|
2273
|
-
// Added so DiscoverObjects()/IntrospectSchema() returns them and buildTargetConfigs
|
|
2274
|
-
// does not emit "not found in source schema" warnings for these entity maps.
|
|
2275
|
-
{ Name: 'BasicMemberProfile', DisplayName: 'Basic Member Profile', Description: 'Basic member profile data (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Profile ID' }] },
|
|
2276
|
-
{ Name: 'BrandingConfig', DisplayName: 'Branding Config', Description: 'Site branding configuration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2277
|
-
{ Name: 'ContentAreas', DisplayName: 'Content Areas', Description: 'CMS content areas', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2278
|
-
{ Name: 'ContentProxy', DisplayName: 'Content Proxy', Description: 'Member content proxy data (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2279
|
-
{ Name: 'CustomCSS', DisplayName: 'Custom CSS', Description: 'Custom site CSS configuration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2280
|
-
{ Name: 'CustomPageCategories', DisplayName: 'Custom Page Categories', Description: 'Categories for custom pages', SupportsWrite: false, Fields: [{ Name: 'CategoryID', DisplayName: 'Category ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Category ID' }] },
|
|
2281
|
-
{ Name: 'CustomPageDocTypes', DisplayName: 'Custom Page Doc Types', Description: 'Document types for custom pages', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2282
|
-
{ Name: 'CustomPageFileCollections', DisplayName: 'Custom Page File Collections', Description: 'File collections on custom pages', SupportsWrite: false, Fields: [{ Name: 'FileCollectionID', DisplayName: 'File Collection ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'File Collection ID' }, { Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: false, IsReadOnly: true, IsPrimaryKey: false, Description: 'ID' }] },
|
|
2283
|
-
{ Name: 'CustomPageTemplates', DisplayName: 'Custom Page Templates', Description: 'Templates for custom pages', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2284
|
-
{ Name: 'CustomPages', DisplayName: 'Custom Pages', Description: 'Custom CMS pages', SupportsWrite: false, Fields: [{ Name: 'PageID', DisplayName: 'Page ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Page ID' }] },
|
|
2285
|
-
{ Name: 'Donations', DisplayName: 'Donations', Description: 'Member donation records', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2286
|
-
{ Name: 'Dues', DisplayName: 'Dues', Description: 'Membership dues information', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2287
|
-
{ Name: 'EventAlias', DisplayName: 'Event Alias', Description: 'Event URL aliases (event-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2288
|
-
{ Name: 'EventRegistrationIDs', DisplayName: 'Event Registration IDs', Description: 'Registration ID list for events (event-scoped)', SupportsWrite: false, Fields: [{ Name: 'RegistrationID', DisplayName: 'Registration ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Registration ID' }] },
|
|
2289
|
-
{ Name: 'EventVirtualMeetings', DisplayName: 'Event Virtual Meetings', Description: 'Virtual meeting settings for events (event-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2290
|
-
{ Name: 'EventVirtualUsers', DisplayName: 'Event Virtual Users', Description: 'Virtual meeting users for events (event-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2291
|
-
{ Name: 'EventVirtualWebinars', DisplayName: 'Event Virtual Webinars', Description: 'Virtual webinar settings for events (event-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2292
|
-
{ Name: 'Favorites', DisplayName: 'Favorites', Description: 'Member favorite items (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'FavoriteId', DisplayName: 'Favorite ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Favorite ID' }] },
|
|
2293
|
-
{ Name: 'FreestoneTypes', DisplayName: 'Freestone Types', Description: 'Freestone integration types', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2294
|
-
{ Name: 'HelpTopic', DisplayName: 'Help Topic', Description: 'Help topics', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2295
|
-
{ Name: 'InvoicePayments', DisplayName: 'Invoice Payments', Description: 'Payments applied to invoices', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2296
|
-
{ Name: 'JobAlertsCriteria', DisplayName: 'Job Alerts Criteria', Description: 'Criteria for job alerts (member-scoped, /Ymc/)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2297
|
-
{ Name: 'JobSearch', DisplayName: 'Job Search', Description: 'Job board search (member-scoped, /Ymc/)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2298
|
-
{ Name: 'MemberConfig', DisplayName: 'Member Config', Description: 'Member configuration settings (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2299
|
-
{ Name: 'MemberProfile', DisplayName: 'Member Profile', Description: 'Full member profile (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'ProfileID', DisplayName: 'Profile ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Profile ID' }] },
|
|
2300
|
-
{ Name: 'MemberPulse', DisplayName: 'Member Pulse', Description: 'Member engagement pulse data (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2301
|
-
{ Name: 'MessageFolders', DisplayName: 'Message Folders', Description: 'Member message folders (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2302
|
-
{ Name: 'Messages', DisplayName: 'Messages', Description: 'Member messages (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'MessageId', DisplayName: 'Message ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Message ID' }] },
|
|
2303
|
-
{ Name: 'NotificationDetails', DisplayName: 'Notification Details', Description: 'Notification detail records', SupportsWrite: false, Fields: [{ Name: 'NotificationID', DisplayName: 'Notification ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Notification ID' }] },
|
|
2304
|
-
{ Name: 'NotificationSubscription', DisplayName: 'Notification Subscription', Description: 'Member notification subscriptions (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2305
|
-
{ Name: 'Orders', DisplayName: 'Orders', Description: 'Store orders', SupportsWrite: false, Fields: [{ Name: 'OrderID', DisplayName: 'Order ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Order ID' }] },
|
|
2306
|
-
{ Name: 'PeopleGroups', DisplayName: 'People Groups', Description: 'Groups of people/members', SupportsWrite: false, Fields: [{ Name: 'GroupID', DisplayName: 'Group ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Group ID' }] },
|
|
2307
|
-
{ Name: 'Pinpoint', DisplayName: 'Pinpoint', Description: 'Member pinpoint/location data (member-scoped, /Ymc/)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2308
|
-
{ Name: 'ProductMemberPrice', DisplayName: 'Product Member Price', Description: 'Member-specific product pricing', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2309
|
-
{ Name: 'RegistrationSessionRequest', DisplayName: 'Registration Session Request', Description: 'Event registration session requests (event-scoped)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2310
|
-
{ Name: 'SMSCampaigns', DisplayName: 'SMS Campaigns', Description: 'SMS marketing campaigns', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2311
|
-
{ Name: 'SavedJobs', DisplayName: 'Saved Jobs', Description: 'Member saved job listings (member-scoped, /Ymc/)', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2312
|
-
{ Name: 'SingleMembership', DisplayName: 'Single Membership', Description: 'Single membership record lookup', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2313
|
-
{ Name: 'WallPostFirst', DisplayName: 'Wall Post First', Description: 'First wall post for a member (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'WallId', DisplayName: 'Wall ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Wall ID' }] },
|
|
2314
|
-
{ Name: 'WallPosts', DisplayName: 'Wall Posts', Description: 'Member wall posts (member-scoped)', SupportsWrite: false, Fields: [{ Name: 'WallId', DisplayName: 'Wall ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Wall ID' }] },
|
|
2315
|
-
// ── Additional stubs from DB entity maps (write/action endpoints not used for pull sync) ──
|
|
2316
|
-
{ Name: 'Auth', DisplayName: 'Auth', Description: 'Authentication endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2317
|
-
{ Name: 'Authenticate', DisplayName: 'Authenticate', Description: 'Authenticate endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2318
|
-
{ Name: 'BrandingConfigCss', DisplayName: 'Branding Config CSS', Description: 'Branding configuration CSS', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2319
|
-
{ Name: 'CBXClientConfig', DisplayName: 'CBX Client Config', Description: 'CBX client configuration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2320
|
-
{ Name: 'ClientConfig', DisplayName: 'Client Config', Description: 'Client configuration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2321
|
-
{ Name: 'ConvertToMemberRequest', DisplayName: 'Convert To Member Request', Description: 'Convert non-member to member request', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2322
|
-
{ Name: 'CopyCampaign', DisplayName: 'Copy Campaign', Description: 'Copy campaign action', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2323
|
-
{ Name: 'DonationHistoryCancelAutoBill', DisplayName: 'Donation History Cancel Auto Bill', Description: 'Cancel auto-bill on donation history', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2324
|
-
{ Name: 'EventRegistrationAttendance', DisplayName: 'Event Registration Attendance', Description: 'Event registration attendance tracking', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2325
|
-
{ Name: 'EventSessionAttendanceRequest', DisplayName: 'Event Session Attendance Request', Description: 'Event session attendance request', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2326
|
-
{ Name: 'ExternalLink', DisplayName: 'External Link', Description: 'External link records', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2327
|
-
{ Name: 'FacebookProfile', DisplayName: 'Facebook Profile', Description: 'Facebook profile integration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2328
|
-
{ Name: 'FilesUpload', DisplayName: 'Files Upload', Description: 'File upload endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2329
|
-
{ Name: 'FinalizeLogin', DisplayName: 'Finalize Login', Description: 'Finalize login action', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2330
|
-
{ Name: 'FindEventRegistrationForms', DisplayName: 'Find Event Registration Forms', Description: 'Search event registration forms', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2331
|
-
{ Name: 'FindEventTickets', DisplayName: 'Find Event Tickets', Description: 'Search event tickets', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2332
|
-
{ Name: 'FindMembers', DisplayName: 'Find Members', Description: 'Member search endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2333
|
-
{ Name: 'FindProducts', DisplayName: 'Find Products', Description: 'Product search endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2334
|
-
{ Name: 'GetAccessToken', DisplayName: 'Get Access Token', Description: 'OAuth access token endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2335
|
-
{ Name: 'GetToken', DisplayName: 'Get Token', Description: 'Token retrieval endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2336
|
-
{ Name: 'GroupJoin', DisplayName: 'Group Join', Description: 'Join group action', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2337
|
-
{ Name: 'HasInformz', DisplayName: 'Has Informz', Description: 'Informz integration check', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2338
|
-
{ Name: 'HassAcessTestFolder', DisplayName: 'Has Access Test Folder', Description: 'Access test folder check', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2339
|
-
{ Name: 'HtmlSanitization', DisplayName: 'HTML Sanitization', Description: 'HTML sanitization utility', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2340
|
-
{ Name: 'InformzBulkUploadBySearchGuidRequest', DisplayName: 'Informz Bulk Upload By Search GUID', Description: 'Informz bulk upload by search GUID', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2341
|
-
{ Name: 'InformzBulkUploadEventRegistrantsRequest', DisplayName: 'Informz Bulk Upload Event Registrants', Description: 'Informz bulk upload event registrants', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2342
|
-
{ Name: 'InformzBulkUploadForDuesBySearchIdRequest', DisplayName: 'Informz Bulk Upload For Dues By Search ID', Description: 'Informz bulk upload dues by search ID', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2343
|
-
{ Name: 'InformzBulkUploadForDuesRequest', DisplayName: 'Informz Bulk Upload For Dues', Description: 'Informz bulk upload for dues', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2344
|
-
{ Name: 'InformzBulkUploadForOrdersBySearchIdRequest', DisplayName: 'Informz Bulk Upload For Orders By Search ID', Description: 'Informz bulk upload orders by search ID', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2345
|
-
{ Name: 'InformzBulkUploadForOrdersRequest', DisplayName: 'Informz Bulk Upload For Orders', Description: 'Informz bulk upload for orders', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2346
|
-
{ Name: 'InformzBulkUploadForReportsRequest', DisplayName: 'Informz Bulk Upload For Reports', Description: 'Informz bulk upload for reports', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2347
|
-
{ Name: 'InformzFindGroupRequest', DisplayName: 'Informz Find Group', Description: 'Informz find group request', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2348
|
-
{ Name: 'MarkupRender', DisplayName: 'Markup Render', Description: 'Render markup content (custom-scoped)', SupportsWrite: false, Fields: [{ Name: 'MarkupId', DisplayName: 'Markup ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Markup ID' }] },
|
|
2349
|
-
{ Name: 'MemberPasswordReset', DisplayName: 'Member Password Reset', Description: 'Member password reset action', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2350
|
-
{ Name: 'MembershipRenewalReminderGetRequest', DisplayName: 'Membership Renewal Reminder Get', Description: 'Get membership renewal reminder settings', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2351
|
-
{ Name: 'MembershipRenewalReminderPutRequest', DisplayName: 'Membership Renewal Reminder Put', Description: 'Update membership renewal reminder settings', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2352
|
-
{ Name: 'NotificationUpdate', DisplayName: 'Notification Update', Description: 'Update notification records', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2353
|
-
{ Name: 'OAuthClientAppAPISetting', DisplayName: 'OAuth Client App API Setting', Description: 'OAuth client app API settings', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2354
|
-
{ Name: 'OIDCGetAccessToken', DisplayName: 'OIDC Get Access Token', Description: 'OIDC access token endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2355
|
-
{ Name: 'OrganizationPosts', DisplayName: 'Organization Posts', Description: 'Organization post records', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2356
|
-
{ Name: 'PageMetaInfo', DisplayName: 'Page Meta Info', Description: 'Page metadata information', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2357
|
-
{ Name: 'PasswordValidityRequest', DisplayName: 'Password Validity Request', Description: 'Password validity check', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2358
|
-
{ Name: 'PeopleBulkDetachRequest', DisplayName: 'People Bulk Detach Request', Description: 'Bulk detach people records', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2359
|
-
{ Name: 'PeopleProfileFindID', DisplayName: 'People Profile Find ID', Description: 'Find member profile ID', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2360
|
-
{ Name: 'PhotoComments', DisplayName: 'Photo Comments', Description: 'Comments on member photos', SupportsWrite: false, Fields: [{ Name: 'PhotoCommentId', DisplayName: 'Photo Comment ID', Type: 'number', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'Photo Comment ID' }] },
|
|
2361
|
-
{ Name: 'Ping', DisplayName: 'Ping', Description: 'API health check endpoint', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2362
|
-
{ Name: 'ProductsDto', DisplayName: 'Products DTO', Description: 'Products data transfer object', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2363
|
-
{ Name: 'QuickBooksOnlineOAuth', DisplayName: 'QuickBooks Online OAuth', Description: 'QuickBooks Online OAuth integration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2364
|
-
{ Name: 'ResendCampaign', DisplayName: 'Resend Campaign', Description: 'Resend campaign action', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2365
|
-
{ Name: 'ResourceManagerFilesUpload', DisplayName: 'Resource Manager Files Upload', Description: 'Resource manager file upload', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2366
|
-
{ Name: 'RssBuilder', DisplayName: 'RSS Builder', Description: 'RSS feed builder', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2367
|
-
{ Name: 'SMSCampaignListDetails', DisplayName: 'SMS Campaign List Details', Description: 'SMS campaign list details', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2368
|
-
{ Name: 'SendTestNotification', DisplayName: 'Send Test Notification', Description: 'Send test notification action', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2369
|
-
{ Name: 'SocialOAuth', DisplayName: 'Social OAuth', Description: 'Social OAuth integration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2370
|
-
{ Name: 'StoreProductBulkStatus', DisplayName: 'Store Product Bulk Status', Description: 'Bulk update store product status', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2371
|
-
{ Name: 'StoreProductBulkStatusAll', DisplayName: 'Store Product Bulk Status All', Description: 'Bulk update all store product statuses', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2372
|
-
{ Name: 'StoreProductPromoCodes', DisplayName: 'Store Product Promo Codes', Description: 'Promo codes for store products', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2373
|
-
{ Name: 'StoreProductSequence', DisplayName: 'Store Product Sequence', Description: 'Store product sequence ordering', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2374
|
-
{ Name: 'StoreProductUpdate', DisplayName: 'Store Product Update', Description: 'Update store product action', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2375
|
-
{ Name: 'TaxRateRequest', DisplayName: 'Tax Rate Request', Description: 'Tax rate lookup request', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2376
|
-
{ Name: 'UnblockCardRequest', DisplayName: 'Unblock Card Request', Description: 'Unblock payment card request', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2377
|
-
{ Name: 'UsernameAvailabilityRequest', DisplayName: 'Username Availability Request', Description: 'Check username availability', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2378
|
-
{ Name: 'ZoomEventListener', DisplayName: 'Zoom Event Listener', Description: 'Zoom event listener integration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2379
|
-
{ Name: 'ZoomEventListenerOAuth', DisplayName: 'Zoom Event Listener OAuth', Description: 'Zoom event listener OAuth', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2380
|
-
{ Name: 'ZoomOAuth', DisplayName: 'Zoom OAuth', Description: 'Zoom OAuth integration', SupportsWrite: false, Fields: [{ Name: 'Id', DisplayName: 'ID', Type: 'string', IsRequired: true, IsReadOnly: true, IsPrimaryKey: true, Description: 'ID' }] },
|
|
2381
|
-
];
|
|
2382
|
-
let YourMembershipConnector = class YourMembershipConnector extends BaseRESTIntegrationConnector {
|
|
2383
|
-
constructor() {
|
|
2384
|
-
super(...arguments);
|
|
2385
|
-
/** Session cache keyed by ClientID */
|
|
2386
|
-
this.sessionCache = new Map();
|
|
2387
|
-
/** Timestamp of the last API request, used for throttling */
|
|
2388
|
-
this.lastRequestTime = 0;
|
|
2389
|
-
/** Resolved config (populated after first Authenticate call) */
|
|
2390
|
-
this._config = null;
|
|
2391
|
-
/** Current adaptive request interval — increases on 429, recovers toward resolved MIN */
|
|
2392
|
-
this.currentRequestIntervalMs = MIN_REQUEST_INTERVAL_MS;
|
|
2393
|
-
/** Successful requests since the last 429 — used to gate interval recovery */
|
|
2394
|
-
this._successesSince429 = 0;
|
|
2395
|
-
/** Cached parent IDs for parent-scoped fetches (keyed by objectName) */
|
|
2396
|
-
this.parentIdCache = new Map();
|
|
2397
|
-
/**
|
|
2398
|
-
* Holds the current watermark value for the duration of a FetchChanges call.
|
|
2399
|
-
* Set at the top of FetchChanges so that AppendDefaultQueryParams can inject
|
|
2400
|
-
* the server-side date filter param for endpoints listed in YM_SERVER_FILTER_PARAMS.
|
|
2401
|
-
*/
|
|
2402
|
-
this._currentWatermark = null;
|
|
2403
|
-
}
|
|
2404
|
-
static { YourMembershipConnector_1 = this; }
|
|
2405
|
-
get IntegrationName() { return 'YourMembership'; }
|
|
2406
|
-
get SupportsCreate() { return true; }
|
|
2407
|
-
get SupportsUpdate() { return true; }
|
|
2408
|
-
get SupportsDelete() { return true; }
|
|
2409
|
-
GetIntegrationObjects() {
|
|
2410
|
-
return YM_ACTION_OBJECTS;
|
|
2411
|
-
}
|
|
2412
|
-
GetActionGeneratorConfig() {
|
|
2413
|
-
const config = super.GetActionGeneratorConfig();
|
|
2414
|
-
if (!config)
|
|
2415
|
-
return null;
|
|
2416
|
-
config.IconClass = 'fa-solid fa-id-card';
|
|
2417
|
-
config.CategoryDescription = 'YourMembership AMS integration for managing members, events, dues, and association data';
|
|
2418
|
-
config.ParentCategoryName = 'Business Apps';
|
|
2419
|
-
// YM is read-only but we still want Search/List for querying
|
|
2420
|
-
config.IncludeSearch = true;
|
|
2421
|
-
config.IncludeList = true;
|
|
2422
|
-
return config;
|
|
2423
|
-
}
|
|
2424
|
-
// ─── Schema Discovery (from static TS definitions) ───────────────────
|
|
2425
|
-
async DiscoverObjects(_companyIntegration, _contextUser) {
|
|
2426
|
-
return YM_ACTION_OBJECTS.map(obj => ({
|
|
2427
|
-
Name: obj.Name,
|
|
2428
|
-
Label: obj.DisplayName,
|
|
2429
|
-
Description: obj.Description,
|
|
2430
|
-
SupportsIncrementalSync: true,
|
|
2431
|
-
SupportsWrite: obj.SupportsWrite ?? false,
|
|
2432
|
-
}));
|
|
2433
|
-
}
|
|
2434
|
-
/**
|
|
2435
|
-
* Discovers fields by fetching one record from the live YM API endpoint and
|
|
2436
|
-
* inferring field names/types from the response. Static metadata from
|
|
2437
|
-
* YM_ACTION_OBJECTS is merged in to preserve PK, FK, description, and
|
|
2438
|
-
* IsRequired/IsReadOnly annotations.
|
|
2439
|
-
*
|
|
2440
|
-
* Falls back to the static array if the live API call fails.
|
|
2441
|
-
*/
|
|
2442
|
-
async DiscoverFields(companyIntegration, objectName, contextUser) {
|
|
2443
|
-
const staticObj = YM_ACTION_OBJECTS.find(o => o.Name.toLowerCase() === objectName.toLowerCase());
|
|
2444
|
-
try {
|
|
2445
|
-
const liveFields = await this.DiscoverFieldsFromLiveAPI(companyIntegration, objectName, contextUser);
|
|
2446
|
-
if (liveFields.length > 0) {
|
|
2447
|
-
return this.MergeFieldsWithStaticMetadata(liveFields, staticObj);
|
|
2448
|
-
}
|
|
2449
|
-
}
|
|
2450
|
-
catch (err) {
|
|
2451
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
2452
|
-
console.warn(`[YM] Live field discovery failed for "${objectName}", falling back to static: ${msg}`);
|
|
2453
|
-
}
|
|
2454
|
-
// Fallback: return static fields
|
|
2455
|
-
if (!staticObj)
|
|
2456
|
-
return [];
|
|
2457
|
-
return staticObj.Fields.map(f => ({
|
|
2458
|
-
Name: f.Name,
|
|
2459
|
-
Label: f.DisplayName,
|
|
2460
|
-
Description: f.Description,
|
|
2461
|
-
DataType: f.Type,
|
|
2462
|
-
IsRequired: f.IsRequired,
|
|
2463
|
-
IsUniqueKey: f.IsPrimaryKey,
|
|
2464
|
-
IsReadOnly: f.IsReadOnly,
|
|
2465
|
-
}));
|
|
2466
|
-
}
|
|
2467
|
-
/**
|
|
2468
|
-
* Fetches one record from the YM API for the given object and infers field schemas.
|
|
2469
|
-
*/
|
|
2470
|
-
async DiscoverFieldsFromLiveAPI(companyIntegration, objectName, contextUser) {
|
|
2471
|
-
const auth = await this.Authenticate(companyIntegration, contextUser);
|
|
2472
|
-
const headers = this.BuildHeaders(auth);
|
|
2473
|
-
// Map object names to their YM API endpoints
|
|
2474
|
-
const endpointMap = {
|
|
2475
|
-
members: { path: 'MemberList', dataKey: 'Members' },
|
|
2476
|
-
membertypes: { path: 'MemberTypes', dataKey: 'MemberTypes' },
|
|
2477
|
-
memberships: { path: 'Memberships', dataKey: 'Memberships' },
|
|
2478
|
-
events: { path: 'Events', dataKey: 'Events' },
|
|
2479
|
-
products: { path: 'Products', dataKey: null },
|
|
2480
|
-
invoices: { path: 'Invoices', dataKey: 'Invoices' },
|
|
2481
|
-
donations: { path: 'Donations', dataKey: 'Donations' },
|
|
2482
|
-
orders: { path: 'Orders', dataKey: 'Orders' },
|
|
2483
|
-
groups: { path: 'Groups', dataKey: 'GroupTypeList' },
|
|
2484
|
-
grouptypes: { path: 'Groups', dataKey: 'GroupTypeList' },
|
|
2485
|
-
engagementscores: { path: 'EngagementScores', dataKey: null },
|
|
2486
|
-
};
|
|
2487
|
-
const mapping = endpointMap[objectName.toLowerCase()];
|
|
2488
|
-
if (!mapping) {
|
|
2489
|
-
console.warn(`[YM] No API endpoint mapping for "${objectName}", skipping live discovery`);
|
|
2490
|
-
return [];
|
|
2491
|
-
}
|
|
2492
|
-
const url = `${YM_API_BASE}/Ams/${auth.Config.ClientID}/${mapping.path}?PageSize=1`;
|
|
2493
|
-
const response = await this.MakeHTTPRequest(auth, url, 'GET', headers);
|
|
2494
|
-
if (response.Status < 200 || response.Status >= 300)
|
|
2495
|
-
return [];
|
|
2496
|
-
const body = response.Body;
|
|
2497
|
-
const sampleRecord = this.ExtractSampleRecord(body, mapping.dataKey);
|
|
2498
|
-
if (!sampleRecord)
|
|
2499
|
-
return [];
|
|
2500
|
-
return this.InferFieldsFromRecord(sampleRecord);
|
|
2501
|
-
}
|
|
2502
|
-
/**
|
|
2503
|
-
* Extracts a single sample record from the YM API response body.
|
|
2504
|
-
*/
|
|
2505
|
-
ExtractSampleRecord(body, dataKey) {
|
|
2506
|
-
if (dataKey != null) {
|
|
2507
|
-
const data = body[dataKey];
|
|
2508
|
-
if (Array.isArray(data) && data.length > 0) {
|
|
2509
|
-
return data[0];
|
|
2510
|
-
}
|
|
2511
|
-
return null;
|
|
2512
|
-
}
|
|
2513
|
-
// Null dataKey: raw array or single object
|
|
2514
|
-
if (Array.isArray(body) && body.length > 0) {
|
|
2515
|
-
return body[0];
|
|
2516
|
-
}
|
|
2517
|
-
// Single object response — filter metadata keys and use as sample
|
|
2518
|
-
const filtered = {};
|
|
2519
|
-
for (const [key, value] of Object.entries(body)) {
|
|
2520
|
-
if (!METADATA_KEYS.has(key)) {
|
|
2521
|
-
filtered[key] = value;
|
|
2522
|
-
}
|
|
2523
|
-
}
|
|
2524
|
-
return Object.keys(filtered).length > 0 ? filtered : null;
|
|
2525
|
-
}
|
|
2526
|
-
/**
|
|
2527
|
-
* Infers ExternalFieldSchema[] from a sample record's keys and values.
|
|
2528
|
-
*/
|
|
2529
|
-
InferFieldsFromRecord(record) {
|
|
2530
|
-
const fields = [];
|
|
2531
|
-
for (const [key, value] of Object.entries(record)) {
|
|
2532
|
-
// Skip nested objects/arrays — only flat scalar fields
|
|
2533
|
-
if (value !== null && typeof value === 'object' && !Array.isArray(value))
|
|
2534
|
-
continue;
|
|
2535
|
-
if (Array.isArray(value))
|
|
2536
|
-
continue;
|
|
2537
|
-
fields.push({
|
|
2538
|
-
Name: key,
|
|
2539
|
-
Label: key.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/_/g, ' '),
|
|
2540
|
-
Description: undefined,
|
|
2541
|
-
DataType: this.InferFieldType(value),
|
|
2542
|
-
IsRequired: false,
|
|
2543
|
-
IsUniqueKey: false,
|
|
2544
|
-
IsReadOnly: false,
|
|
2545
|
-
});
|
|
2546
|
-
}
|
|
2547
|
-
return fields;
|
|
2548
|
-
}
|
|
2549
|
-
/**
|
|
2550
|
-
* Infer a MJ-compatible type string from a JavaScript value.
|
|
2551
|
-
*/
|
|
2552
|
-
InferFieldType(value) {
|
|
2553
|
-
if (value === null || value === undefined)
|
|
2554
|
-
return 'string';
|
|
2555
|
-
if (typeof value === 'boolean')
|
|
2556
|
-
return 'boolean';
|
|
2557
|
-
if (typeof value === 'number')
|
|
2558
|
-
return Number.isInteger(value) ? 'number' : 'decimal';
|
|
2559
|
-
if (typeof value === 'string') {
|
|
2560
|
-
if (/^\d{4}-\d{2}-\d{2}/.test(value))
|
|
2561
|
-
return 'datetime';
|
|
2562
|
-
return 'string';
|
|
2563
|
-
}
|
|
2564
|
-
return 'string';
|
|
2565
|
-
}
|
|
2566
|
-
/**
|
|
2567
|
-
* Merges live-discovered fields with static metadata from YM_ACTION_OBJECTS.
|
|
2568
|
-
* Live fields are the base; static metadata overlays PK, FK, Description,
|
|
2569
|
-
* IsRequired, and IsReadOnly where a matching field name exists.
|
|
2570
|
-
*/
|
|
2571
|
-
MergeFieldsWithStaticMetadata(liveFields, staticObj) {
|
|
2572
|
-
if (!staticObj)
|
|
2573
|
-
return liveFields;
|
|
2574
|
-
const staticMap = new Map(staticObj.Fields.map(f => [f.Name.toLowerCase(), f]));
|
|
2575
|
-
const merged = liveFields.map(lf => {
|
|
2576
|
-
const sf = staticMap.get(lf.Name.toLowerCase());
|
|
2577
|
-
if (sf) {
|
|
2578
|
-
return {
|
|
2579
|
-
...lf,
|
|
2580
|
-
Label: sf.DisplayName || lf.Label,
|
|
2581
|
-
Description: sf.Description || lf.Description,
|
|
2582
|
-
IsRequired: sf.IsRequired,
|
|
2583
|
-
IsUniqueKey: sf.IsPrimaryKey,
|
|
2584
|
-
IsReadOnly: sf.IsReadOnly,
|
|
2585
|
-
};
|
|
2586
|
-
}
|
|
2587
|
-
return lf;
|
|
2588
|
-
});
|
|
2589
|
-
// Add any static fields not found in the live response (e.g., computed fields)
|
|
2590
|
-
for (const sf of staticObj.Fields) {
|
|
2591
|
-
if (!merged.some(f => f.Name.toLowerCase() === sf.Name.toLowerCase())) {
|
|
2592
|
-
merged.push({
|
|
2593
|
-
Name: sf.Name,
|
|
2594
|
-
Label: sf.DisplayName,
|
|
2595
|
-
Description: sf.Description,
|
|
2596
|
-
DataType: sf.Type,
|
|
2597
|
-
IsRequired: sf.IsRequired,
|
|
2598
|
-
IsUniqueKey: sf.IsPrimaryKey,
|
|
2599
|
-
IsReadOnly: sf.IsReadOnly,
|
|
2600
|
-
});
|
|
2601
|
-
}
|
|
2602
|
-
}
|
|
2603
|
-
return merged;
|
|
2604
|
-
}
|
|
2605
|
-
/**
|
|
2606
|
-
* Priority-ordered list of YourMembership "last changed" timestamp field names, used
|
|
2607
|
-
* to populate SourceObjectInfo.IncrementalWatermarkField. Every name here is a field
|
|
2608
|
-
* the connector ALREADY declares on one or more objects in YM_ACTION_OBJECTS — e.g.
|
|
2609
|
-
* MembersProfiles/EventIDs/ContentAreaVersions expose `LastModifiedDate`,
|
|
2610
|
-
* MemberList/EngagementScores expose `LastUpdated`, Markup exposes `DateLastModified`,
|
|
2611
|
-
* CampaignEmailLists exposes `DateLastUpdated`/`DateModified`, etc.
|
|
2612
|
-
*
|
|
2613
|
-
* Provable-only: the watermark is set on an object solely from that object's own
|
|
2614
|
-
* declared field list, never invented. Ordering only matters when a single object
|
|
2615
|
-
* declares more than one candidate (e.g. Markup has both `DateLastModified` and
|
|
2616
|
-
* `AdminLastModified` — the record-level modify timestamp wins; CampaignEmailLists has
|
|
2617
|
-
* both `DateLastUpdated` and `DateModified` — the explicit "last updated" wins).
|
|
2618
|
-
* Creation-only dates (e.g. AllCampaigns' `DateCreated`) are intentionally excluded —
|
|
2619
|
-
* they are not "last changed" timestamps and would miss updates to existing records.
|
|
2620
|
-
*/
|
|
2621
|
-
static { this.WATERMARK_FIELD_CANDIDATES = [
|
|
2622
|
-
'LastModifiedDate',
|
|
2623
|
-
'DateLastModified',
|
|
2624
|
-
'DateLastUpdated',
|
|
2625
|
-
'LastUpdated',
|
|
2626
|
-
'DateModified',
|
|
2627
|
-
'DateUpdated',
|
|
2628
|
-
'AdminLastModified',
|
|
2629
|
-
'Modified',
|
|
2630
|
-
]; }
|
|
2631
|
-
/**
|
|
2632
|
-
* Promotes an object's own declared "last changed" timestamp field into the
|
|
2633
|
-
* IncrementalWatermarkField slot. Returns the first candidate present in the supplied
|
|
2634
|
-
* field-name set, or undefined when the object declares none — an honest gap rather
|
|
2635
|
-
* than a fabricated watermark. Matching is case-insensitive so a live-discovered or
|
|
2636
|
-
* DB-cached field list (which may differ in casing) still resolves, while the actual
|
|
2637
|
-
* declared name (real casing) is returned.
|
|
2638
|
-
*/
|
|
2639
|
-
PickIncrementalWatermarkField(fieldNames) {
|
|
2640
|
-
const present = new Set(fieldNames.map(n => n.toLowerCase()));
|
|
2641
|
-
for (const candidate of YourMembershipConnector_1.WATERMARK_FIELD_CANDIDATES) {
|
|
2642
|
-
if (present.has(candidate.toLowerCase())) {
|
|
2643
|
-
return fieldNames.find(n => n.toLowerCase() === candidate.toLowerCase());
|
|
2644
|
-
}
|
|
2645
|
-
}
|
|
2646
|
-
return undefined;
|
|
2647
|
-
}
|
|
2648
|
-
/**
|
|
2649
|
-
* Override IntrospectSchema to use live field discovery (with static fallback).
|
|
2650
|
-
* Ensures DDL generation always reflects the actual API response shape.
|
|
2651
|
-
*/
|
|
2652
|
-
async IntrospectSchema(companyIntegration, contextUser) {
|
|
2653
|
-
const objects = await this.DiscoverObjects(companyIntegration, contextUser);
|
|
2654
|
-
const result = { Objects: [] };
|
|
2655
|
-
for (const obj of objects) {
|
|
2656
|
-
const fields = await this.DiscoverFields(companyIntegration, obj.Name, contextUser);
|
|
2657
|
-
const sourceFields = fields.map(f => ({
|
|
2658
|
-
Name: f.Name,
|
|
2659
|
-
Label: f.Label ?? f.Name,
|
|
2660
|
-
Description: f.Description,
|
|
2661
|
-
SourceType: f.DataType,
|
|
2662
|
-
IsRequired: f.IsRequired ?? false,
|
|
2663
|
-
IsPrimaryKey: f.IsUniqueKey ?? false,
|
|
2664
|
-
IsForeignKey: false,
|
|
2665
|
-
ForeignKeyTarget: null,
|
|
2666
|
-
MaxLength: null,
|
|
2667
|
-
Precision: null,
|
|
2668
|
-
Scale: null,
|
|
2669
|
-
DefaultValue: null,
|
|
2670
|
-
}));
|
|
2671
|
-
result.Objects.push({
|
|
2672
|
-
ExternalName: obj.Name,
|
|
2673
|
-
ExternalLabel: obj.Label ?? obj.Name,
|
|
2674
|
-
Description: obj.Description,
|
|
2675
|
-
Fields: sourceFields,
|
|
2676
|
-
PrimaryKeyFields: sourceFields.filter(f => f.IsPrimaryKey).map(f => f.Name),
|
|
2677
|
-
Relationships: [],
|
|
2678
|
-
IncrementalWatermarkField: this.PickIncrementalWatermarkField(sourceFields.map(f => f.Name)),
|
|
2679
|
-
});
|
|
2680
|
-
}
|
|
2681
|
-
return result;
|
|
2682
|
-
}
|
|
2683
|
-
// ── Per-instance config accessors (fall back to module-level defaults) ──
|
|
2684
|
-
get effectiveMaxRetries() { return this._config?.MaxRetries ?? MAX_RETRIES; }
|
|
2685
|
-
get effectiveRequestTimeoutMs() { return this._config?.RequestTimeoutMs ?? REQUEST_TIMEOUT_MS; }
|
|
2686
|
-
get effectiveMinRequestIntervalMs() { return this._config?.MinRequestIntervalMs ?? MIN_REQUEST_INTERVAL_MS; }
|
|
2687
|
-
get effectiveEnrichBatchSize() { return this._config?.EnrichBatchSize ?? ENRICH_BATCH_SIZE; }
|
|
2688
|
-
get effectiveJsonTimeoutMs() { return this._config?.JsonTimeoutMs ?? JSON_TIMEOUT_MS; }
|
|
2689
|
-
get effectiveEnrichTimeoutMs() { return this._config?.EnrichTimeoutMs ?? ENRICH_TIMEOUT_MS; }
|
|
2690
|
-
// ─── Abstract method implementations (BaseRESTIntegrationConnector) ──
|
|
2691
|
-
async Authenticate(companyIntegration, contextUser) {
|
|
2692
|
-
console.log(`[YM] Authenticating...`);
|
|
2693
|
-
const config = await this.ParseConfig(companyIntegration, contextUser);
|
|
2694
|
-
this._config = config;
|
|
2695
|
-
this.currentRequestIntervalMs = this.effectiveMinRequestIntervalMs;
|
|
2696
|
-
const sessionId = await this.GetSession(config);
|
|
2697
|
-
console.log(`[YM] Authenticated, sessionId length: ${sessionId.length}`);
|
|
2698
|
-
const auth = { SessionID: sessionId, Config: config };
|
|
2699
|
-
return auth;
|
|
2700
|
-
}
|
|
2701
|
-
BuildHeaders(auth) {
|
|
2702
|
-
return { 'X-SS-ID': auth.SessionID, 'Accept': 'application/json' };
|
|
2703
|
-
}
|
|
2704
|
-
/**
|
|
2705
|
-
* Extends the base class implementation by injecting an incremental-sync date
|
|
2706
|
-
* filter query parameter for endpoints that support server-side filtering.
|
|
2707
|
-
*
|
|
2708
|
-
* When a watermark is active (`_currentWatermark` is set by `FetchChanges`) and
|
|
2709
|
-
* the current object appears in `YM_SERVER_FILTER_PARAMS`, the appropriate
|
|
2710
|
-
* date param (e.g. `LastModifiedDate`, `DateFrom`, `StartDate`) is appended.
|
|
2711
|
-
* The base class then appends any additional DefaultQueryParams from metadata.
|
|
2712
|
-
*/
|
|
2713
|
-
AppendDefaultQueryParams(url, obj) {
|
|
2714
|
-
let result = super.AppendDefaultQueryParams(url, obj);
|
|
2715
|
-
if (this._currentWatermark) {
|
|
2716
|
-
const paramName = YM_SERVER_FILTER_PARAMS[obj.Name.toLowerCase()];
|
|
2717
|
-
if (paramName) {
|
|
2718
|
-
// Avoid injecting a duplicate if the param is already in the URL
|
|
2719
|
-
const existingKeys = new Set((result.includes('?') ? result.split('?')[1].split('&') : [])
|
|
2720
|
-
.map(p => p.split('=')[0].toLowerCase()));
|
|
2721
|
-
if (!existingKeys.has(paramName.toLowerCase())) {
|
|
2722
|
-
const sep = result.includes('?') ? '&' : '?';
|
|
2723
|
-
result += `${sep}${encodeURIComponent(paramName)}=${encodeURIComponent(this._currentWatermark)}`;
|
|
2724
|
-
}
|
|
2725
|
-
}
|
|
2726
|
-
}
|
|
2727
|
-
return result;
|
|
2728
|
-
}
|
|
2729
|
-
async MakeHTTPRequest(auth, url, method, headers, body) {
|
|
2730
|
-
const ymAuth = auth;
|
|
2731
|
-
const currentHeaders = { ...headers };
|
|
2732
|
-
if (body !== undefined && !currentHeaders['Content-Type']) {
|
|
2733
|
-
currentHeaders['Content-Type'] = 'application/json';
|
|
2734
|
-
}
|
|
2735
|
-
// Throttle: ensure adaptive minimum interval between requests
|
|
2736
|
-
const elapsed = Date.now() - this.lastRequestTime;
|
|
2737
|
-
if (elapsed < this.currentRequestIntervalMs) {
|
|
2738
|
-
await this.Sleep(this.currentRequestIntervalMs - elapsed);
|
|
2739
|
-
}
|
|
2740
|
-
const maxRetries = this.effectiveMaxRetries;
|
|
2741
|
-
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
2742
|
-
let response;
|
|
2743
|
-
try {
|
|
2744
|
-
response = await this.FetchWithTimeout(url, method, currentHeaders, body);
|
|
2745
|
-
}
|
|
2746
|
-
catch (err) {
|
|
2747
|
-
if (this.IsTimeoutError(err)) {
|
|
2748
|
-
console.warn(`YM timeout on ${url}, re-authenticating (attempt ${attempt + 1}/${maxRetries})`);
|
|
2749
|
-
await this.RefreshSession(ymAuth, currentHeaders);
|
|
2750
|
-
continue;
|
|
2751
|
-
}
|
|
2752
|
-
throw err;
|
|
2753
|
-
}
|
|
2754
|
-
if (response.status === 401) {
|
|
2755
|
-
await this.RefreshSession(ymAuth, currentHeaders);
|
|
2756
|
-
continue;
|
|
2757
|
-
}
|
|
2758
|
-
if (response.status === 429) {
|
|
2759
|
-
const delayMs = this.CalculateRetryDelay(response, attempt);
|
|
2760
|
-
// Jump hard on every 429: first 429 goes straight to 3s floor, subsequent
|
|
2761
|
-
// 429s double. Prevents the "ramp up to 10s → shave → hit 429 again" sawtooth.
|
|
2762
|
-
this.currentRequestIntervalMs = Math.min(Math.max(this.currentRequestIntervalMs * 2, 3000), 15000);
|
|
2763
|
-
this._successesSince429 = 0;
|
|
2764
|
-
console.warn(`YM rate limited (429), retrying in ${delayMs}ms (attempt ${attempt + 1}/${maxRetries}). Interval adjusted to ${this.currentRequestIntervalMs}ms`);
|
|
2765
|
-
await this.Sleep(delayMs);
|
|
2766
|
-
continue;
|
|
2767
|
-
}
|
|
2768
|
-
this.lastRequestTime = Date.now();
|
|
2769
|
-
// Multiplicative recovery (2% per success) is gentler than -50ms linear — a
|
|
2770
|
-
// 15s elevated interval stays above 10s for ~20 successes before recovering,
|
|
2771
|
-
// giving YM's rate limit window time to fully reset instead of re-triggering.
|
|
2772
|
-
// Also delay any recovery until we've seen 30 clean successes since the last
|
|
2773
|
-
// 429, so a brief success streak doesn't immediately drop us back into the
|
|
2774
|
-
// rate-limit zone.
|
|
2775
|
-
const minInterval = this.effectiveMinRequestIntervalMs;
|
|
2776
|
-
this._successesSince429++;
|
|
2777
|
-
if (this._successesSince429 > 30 && this.currentRequestIntervalMs > minInterval) {
|
|
2778
|
-
this.currentRequestIntervalMs = Math.max(Math.floor(this.currentRequestIntervalMs * 0.98), minInterval);
|
|
2779
|
-
}
|
|
2780
|
-
const responseBody = await this.JsonWithTimeout(response, this.effectiveJsonTimeoutMs);
|
|
2781
|
-
return this.BuildRESTResponse(response, responseBody);
|
|
2782
|
-
}
|
|
2783
|
-
throw new Error(`YM API request failed after ${maxRetries} retries: ${url}`);
|
|
2784
|
-
}
|
|
2785
|
-
NormalizeResponse(rawBody, responseDataKey) {
|
|
2786
|
-
// Check for YM API-level errors in the response envelope
|
|
2787
|
-
if (typeof rawBody === 'object' && rawBody !== null && !Array.isArray(rawBody)) {
|
|
2788
|
-
this.CheckResponseError(rawBody);
|
|
2789
|
-
}
|
|
2790
|
-
let records;
|
|
2791
|
-
if (responseDataKey != null) {
|
|
2792
|
-
const body = rawBody;
|
|
2793
|
-
const data = body[responseDataKey];
|
|
2794
|
-
if (!data || !Array.isArray(data))
|
|
2795
|
-
return [];
|
|
2796
|
-
records = data;
|
|
2797
|
-
}
|
|
2798
|
-
else if (Array.isArray(rawBody)) {
|
|
2799
|
-
// Null responseDataKey: raw array (Products)
|
|
2800
|
-
records = rawBody;
|
|
2801
|
-
}
|
|
2802
|
-
else {
|
|
2803
|
-
// Single object response — filter metadata and wrap in array
|
|
2804
|
-
records = [this.FilterMetadataKeys(rawBody)];
|
|
2805
|
-
}
|
|
2806
|
-
// Sanitize invalid date values: empty strings and DateTime.MinValue → null
|
|
2807
|
-
return records.map(r => this.SanitizeDateFields(r));
|
|
2808
|
-
}
|
|
2809
|
-
/**
|
|
2810
|
-
* Converts empty strings and DateTime.MinValue (0001-01-01) in date-like fields to null.
|
|
2811
|
-
* YM API returns "" and "0001-01-01T00:00:00" instead of null for empty date fields,
|
|
2812
|
-
* which causes DATETIMEOFFSET columns to reject the value.
|
|
2813
|
-
*/
|
|
2814
|
-
SanitizeDateFields(record) {
|
|
2815
|
-
for (const [key, value] of Object.entries(record)) {
|
|
2816
|
-
if (typeof value !== 'string')
|
|
2817
|
-
continue;
|
|
2818
|
-
// Empty string → null for any field
|
|
2819
|
-
if (value === '') {
|
|
2820
|
-
record[key] = null;
|
|
2821
|
-
continue;
|
|
2822
|
-
}
|
|
2823
|
-
// DateTime.MinValue patterns → null
|
|
2824
|
-
if (value.startsWith('0001-01-01') || value.startsWith('0001/01/01')) {
|
|
2825
|
-
record[key] = null;
|
|
2826
|
-
}
|
|
2827
|
-
}
|
|
2828
|
-
return record;
|
|
2829
|
-
}
|
|
2830
|
-
ExtractPaginationInfo(rawBody, paginationType, currentPage, currentOffset, pageSize) {
|
|
2831
|
-
if (paginationType === 'None') {
|
|
2832
|
-
return { HasMore: false };
|
|
2833
|
-
}
|
|
2834
|
-
// YM API doesn't return total counts; infer from record count
|
|
2835
|
-
const recordCount = this.EstimateRecordCount(rawBody);
|
|
2836
|
-
const hasMore = recordCount >= pageSize;
|
|
2837
|
-
return {
|
|
2838
|
-
HasMore: hasMore,
|
|
2839
|
-
NextPage: paginationType === 'PageNumber' ? currentPage + 1 : undefined,
|
|
2840
|
-
NextOffset: paginationType === 'Offset' ? currentOffset + recordCount : undefined,
|
|
2841
|
-
};
|
|
2842
|
-
}
|
|
2843
|
-
GetBaseURL(companyIntegration, auth) {
|
|
2844
|
-
const ymAuth = auth;
|
|
2845
|
-
if (ymAuth.Config?.ClientID) {
|
|
2846
|
-
return `${YM_API_BASE}/Ams/${ymAuth.Config.ClientID}`;
|
|
2847
|
-
}
|
|
2848
|
-
const configJson = companyIntegration.Configuration;
|
|
2849
|
-
if (configJson) {
|
|
2850
|
-
const parsed = JSON.parse(configJson);
|
|
2851
|
-
const clientId = parsed['ClientID'] || parsed['clientId'] || parsed['ClientId'];
|
|
2852
|
-
if (clientId)
|
|
2853
|
-
return `${YM_API_BASE}/Ams/${clientId}`;
|
|
2854
|
-
}
|
|
2855
|
-
throw new Error('Cannot determine YM base URL: no ClientID in configuration');
|
|
2856
|
-
}
|
|
2857
|
-
// ─── YM-specific pagination parameter names ───────────────────────
|
|
2858
|
-
/**
|
|
2859
|
-
* Overrides base pagination URL building to use YM's expected parameter names:
|
|
2860
|
-
* - PageNumber type: `PageNumber` / `PageSize` (not `page` / `pageSize`)
|
|
2861
|
-
* - Offset type: `OffSet` (not `offset`); no explicit limit param — YM uses
|
|
2862
|
-
* its own default batch size (~200 records)
|
|
2863
|
-
*/
|
|
2864
|
-
BuildPaginatedURL(basePath, obj, page, offset, cursor) {
|
|
2865
|
-
const separator = basePath.includes('?') ? '&' : '?';
|
|
2866
|
-
// MembersGroups: YM enforces max page size of 100
|
|
2867
|
-
const pageSize = obj.Name.toLowerCase() === 'membersgroups'
|
|
2868
|
-
? Math.min(obj.DefaultPageSize, 100)
|
|
2869
|
-
: obj.DefaultPageSize;
|
|
2870
|
-
switch (obj.PaginationType) {
|
|
2871
|
-
case 'PageNumber':
|
|
2872
|
-
return `${basePath}${separator}PageNumber=${page}&PageSize=${pageSize}`;
|
|
2873
|
-
case 'Offset':
|
|
2874
|
-
return `${basePath}${separator}OffSet=${offset}&PageSize=${pageSize}`;
|
|
2875
|
-
case 'Cursor':
|
|
2876
|
-
return cursor
|
|
2877
|
-
? `${basePath}${separator}cursor=${encodeURIComponent(cursor)}&limit=${obj.DefaultPageSize}`
|
|
2878
|
-
: `${basePath}${separator}limit=${obj.DefaultPageSize}`;
|
|
2879
|
-
default:
|
|
2880
|
-
return basePath;
|
|
2881
|
-
}
|
|
2882
|
-
}
|
|
2883
|
-
// ─── FetchChanges override for YM-specific cases ──────────────────
|
|
2884
|
-
/**
|
|
2885
|
-
* Overrides base FetchChanges to handle YM-specific edge cases:
|
|
2886
|
-
* - Groups/GroupTypes: nested GroupTypeList response needs custom flattening
|
|
2887
|
-
* - Members: client-side watermark filtering + batched detail enrichment
|
|
2888
|
-
*
|
|
2889
|
-
* The MemberList API returns all members every time (no server-side date filter),
|
|
2890
|
-
* but each record includes a `LastUpdated` field. We pull the full list once,
|
|
2891
|
-
* filter to only records changed since the watermark, cache that filtered list,
|
|
2892
|
-
* and enrich + return ENRICH_BATCH_SIZE records per FetchChanges call so the
|
|
2893
|
-
* engine writes each batch to the database before moving to the next.
|
|
2894
|
-
*/
|
|
2895
|
-
async FetchChanges(ctx) {
|
|
2896
|
-
console.log(`[YM] FetchChanges called for '${ctx.ObjectName}' (batchSize=${ctx.BatchSize}, watermark=${ctx.WatermarkValue ?? 'none'}, offset=${ctx.CurrentOffset ?? 'none'})`);
|
|
2897
|
-
// Store watermark so AppendDefaultQueryParams can inject server-side date filters.
|
|
2898
|
-
this._currentWatermark = ctx.WatermarkValue;
|
|
2899
|
-
const objLower = ctx.ObjectName.toLowerCase();
|
|
2900
|
-
// Objects that cannot be synced: doubly parameterized, or require unresolvable query params.
|
|
2901
|
-
// ── NOT_DATA: Auth, action, webhook, utility endpoints — never syncable ──
|
|
2902
|
-
const notDataObjects = new Set([
|
|
2903
|
-
'auth', 'authenticate', 'brandingconfigcss', 'converttomemberrequest',
|
|
2904
|
-
'copycampaign', 'customcss', 'donationhistorycancelautobill', 'donations',
|
|
2905
|
-
'dues', 'eventregistrationattendance', 'eventsessionattendancerequest',
|
|
2906
|
-
'externallink', 'filesupload', 'finalizelogin', 'getaccesstoken', 'gettoken',
|
|
2907
|
-
'groupjoin', 'hasinformz', 'hassacesstestfolder', 'htmlsanitization',
|
|
2908
|
-
'informzbulkuploadbysearchguidrequest', 'informzbulkuploadeventregistrantsrequest',
|
|
2909
|
-
'informzbulkuploadforduesbysearchidrequest', 'informzbulkuploadforduesrequest',
|
|
2910
|
-
'informzbulkuploadforordersbysearchidrequest', 'informzbulkuploadforordersrequest',
|
|
2911
|
-
'informzbulkuploadforreportsrequest', 'informzfindgrouprequest',
|
|
2912
|
-
'invoicepayments', 'memberpasswordreset', 'membershiprenewalreminderputrequest',
|
|
2913
|
-
'notificationsubscription', 'notificationupdate', 'oauthclientappname',
|
|
2914
|
-
'oidcgetaccesstoken', 'orders', 'passwordvalidityrequest', 'productsdto',
|
|
2915
|
-
'peoplebulkdetachrequest', 'quickbooksonlineoauth', 'registrationsessionrequest',
|
|
2916
|
-
'resendcampaign', 'resourcemanagerfilesupload', 'rssbuilder',
|
|
2917
|
-
'sendtestnotification', 'socialoauth', 'storeproductbulkstatus',
|
|
2918
|
-
'storeproductbulkstatusall', 'storeproductpromocodes', 'storeproductsequence',
|
|
2919
|
-
'storeproductupdate', 'unblockcardrequest', 'usernameavailabilityrequest',
|
|
2920
|
-
'webscraper', 'zoomeventlistener', 'zoomeventlisteneroauth', 'zoomoauth',
|
|
2921
|
-
'ping', 'wallpostfirst',
|
|
2922
|
-
'facebookprofile', // returns malformed/empty JSON (Unexpected end of JSON input)
|
|
2923
|
-
]);
|
|
2924
|
-
// ── UNSYNCABLE: Requires params that can't be enumerated ──
|
|
2925
|
-
const unsyncableObjects = new Set([
|
|
2926
|
-
'productmemberprice', // doubly parameterized (ProductId + MemberId)
|
|
2927
|
-
'contentareas', // requires AreaType query param
|
|
2928
|
-
'customformfields', // scoped by FormID — no form list
|
|
2929
|
-
'markupcomponenttypes', // OrderId=0 for all records — no unique key
|
|
2930
|
-
'custompagedoctypes', // field name mismatch (DocTypeID vs Id)
|
|
2931
|
-
'dashboarddata', // requires EndDate param, aggregate not entity
|
|
2932
|
-
'eventattendees', // doubly nested (Member + Event)
|
|
2933
|
-
'eventsessionceuawards', // doubly nested (Event + Session)
|
|
2934
|
-
'communityPhotos', // requires PhotoId — no flat list
|
|
2935
|
-
'feeds', // requires PostId — no flat list
|
|
2936
|
-
'helptopic', // requires HelpTopicID — no flat list
|
|
2937
|
-
'notificationdetails', // requires NotificationID — no flat list
|
|
2938
|
-
'wallcomments', // requires PostId — no flat list
|
|
2939
|
-
'wallcomments_memberlist', // sub-object of WallComments
|
|
2940
|
-
'photocomments', // doubly nested (Member + Photo), write-only
|
|
2941
|
-
'taxraterequest', // lookup requiring address params
|
|
2942
|
-
'findeventregistrationforms', // search endpoint requiring params
|
|
2943
|
-
'findeventtickets', // search endpoint requiring params
|
|
2944
|
-
'findmembers', // search endpoint requiring params
|
|
2945
|
-
'findproducts', // search endpoint requiring params
|
|
2946
|
-
'peopleprofilefindid', // search/lookup requiring params
|
|
2947
|
-
'smscampaignlistdetails', // requires ListId — no flat SMS list
|
|
2948
|
-
'smscampaignreports', // requires CampaignId — could be Custom but not configured
|
|
2949
|
-
'smscampaignreports_messages', // sub-object of SMSCampaignReports
|
|
2950
|
-
'campaignreports_dailyrate', // sub-object extracted from CampaignReports response
|
|
2951
|
-
'campaignreports_messageactivity', // sub-object extracted from CampaignReports response
|
|
2952
|
-
'campaignreports_messages', // sub-object extracted from CampaignReports response
|
|
2953
|
-
]);
|
|
2954
|
-
if (notDataObjects.has(objLower)) {
|
|
2955
|
-
return { Records: [], HasMore: false };
|
|
2956
|
-
}
|
|
2957
|
-
if (unsyncableObjects.has(objLower)) {
|
|
2958
|
-
console.warn(`[YM] '${ctx.ObjectName}' requires unenumerable parameters. Skipping.`);
|
|
2959
|
-
return { Records: [], HasMore: false };
|
|
2960
|
-
}
|
|
2961
|
-
if (objLower === 'groups' || objLower === 'grouptypes') {
|
|
2962
|
-
return this.FetchGroups(ctx);
|
|
2963
|
-
}
|
|
2964
|
-
if (objLower === 'members') {
|
|
2965
|
-
return this.FetchMemberBatch(ctx);
|
|
2966
|
-
}
|
|
2967
|
-
// PeopleIDs returns flat ID arrays under "IDList" — wrap each as {ID: value}
|
|
2968
|
-
if (objLower === 'peopleids') {
|
|
2969
|
-
return this.FetchPeopleIDs(ctx);
|
|
2970
|
-
}
|
|
2971
|
-
// All remaining paths wrapped in error catch for graceful 400/404/500 handling
|
|
2972
|
-
let result;
|
|
2973
|
-
try {
|
|
2974
|
-
// Client-side watermark filtering: fetch all records, filter locally by date field.
|
|
2975
|
-
const clientWatermark = YM_CLIENT_WATERMARK_FIELDS[objLower];
|
|
2976
|
-
if (clientWatermark) {
|
|
2977
|
-
result = await this.FetchWithClientWatermark(ctx, clientWatermark.field);
|
|
2978
|
-
}
|
|
2979
|
-
else {
|
|
2980
|
-
// Parent-scoped endpoints: only run on first call (offset 0 / undefined)
|
|
2981
|
-
const parentScope = YM_PARENT_SCOPED[objLower];
|
|
2982
|
-
if (parentScope && (ctx.CurrentOffset ?? 0) === 0 && !ctx.CurrentPage && !ctx.CurrentCursor) {
|
|
2983
|
-
result = await this.FetchParentScopedRecords(ctx, parentScope);
|
|
2984
|
-
}
|
|
2985
|
-
else {
|
|
2986
|
-
result = await super.FetchChanges(ctx);
|
|
2987
|
-
}
|
|
2988
|
-
}
|
|
2989
|
-
}
|
|
2990
|
-
catch (err) {
|
|
2991
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
2992
|
-
if (message.includes('HTTP 404') || message.includes('HTTP 400') || message.includes('HTTP 500')) {
|
|
2993
|
-
const code = message.includes('HTTP 404') ? '404' : message.includes('HTTP 400') ? '400' : '500';
|
|
2994
|
-
console.warn(`[YM] '${ctx.ObjectName}' returned ${code}. Skipping.`);
|
|
2995
|
-
return { Records: [], HasMore: false };
|
|
2996
|
-
}
|
|
2997
|
-
throw err;
|
|
2998
|
-
}
|
|
2999
|
-
// ── GENERAL RULE: Filter out records with unresolvable PK fields ──
|
|
3000
|
-
// Drops records where the declared PK field is null and can't be resolved
|
|
3001
|
-
// via case-insensitive matching. Better to skip than insert a garbage-keyed row.
|
|
3002
|
-
if (result.Records.length > 0) {
|
|
3003
|
-
result.Records = this.EnsurePrimaryKeys(result.Records, ctx);
|
|
3004
|
-
}
|
|
3005
|
-
return result;
|
|
3006
|
-
}
|
|
3007
|
-
/**
|
|
3008
|
-
* Fetches and enriches members in batches of ENRICH_BATCH_SIZE.
|
|
3009
|
-
*
|
|
3010
|
-
* On the first call (CurrentOffset = 0 or undefined), fetches the full member
|
|
3011
|
-
* list via the base class, filters by watermark, and caches the result.
|
|
3012
|
-
* On subsequent calls, uses the cached list and enriches the next slice.
|
|
3013
|
-
* Returns HasMore=true until all records are enriched.
|
|
3014
|
-
* Only sets NewWatermarkValue on the final batch so the watermark is only
|
|
3015
|
-
* updated once all records have been written to the database.
|
|
3016
|
-
*/
|
|
3017
|
-
async FetchMemberBatch(ctx) {
|
|
3018
|
-
// Simple approach: fetch one page of member IDs, enrich them, return.
|
|
3019
|
-
// The engine's outer loop handles pagination — it calls FetchChanges
|
|
3020
|
-
// repeatedly with incrementing offsets until HasMore=false.
|
|
3021
|
-
const pageResult = await super.FetchChanges(ctx);
|
|
3022
|
-
if (pageResult.Records.length === 0) {
|
|
3023
|
-
return pageResult;
|
|
3024
|
-
}
|
|
3025
|
-
console.log(`[YM Members] Fetched ${pageResult.Records.length} member IDs, enriching...`);
|
|
3026
|
-
// Enrich FIRST — the raw member list doesn't have LastUpdated,
|
|
3027
|
-
// only the detail API returns it. We need it for watermark computation.
|
|
3028
|
-
const enriched = await this.EnrichMembersWithDetails(ctx, pageResult.Records, ctx.CurrentOffset ?? 0, pageResult.Records.length);
|
|
3029
|
-
// Now filter by watermark using the enriched records (which have LastUpdated)
|
|
3030
|
-
const { changedRecords, newWatermark } = this.FilterByWatermark(enriched, ctx.WatermarkValue, 'LastUpdated');
|
|
3031
|
-
if (changedRecords.length === 0) {
|
|
3032
|
-
return {
|
|
3033
|
-
Records: [],
|
|
3034
|
-
HasMore: pageResult.HasMore,
|
|
3035
|
-
NextOffset: pageResult.NextOffset,
|
|
3036
|
-
NextPage: pageResult.NextPage,
|
|
3037
|
-
NextCursor: pageResult.NextCursor,
|
|
3038
|
-
NewWatermarkValue: !pageResult.HasMore ? newWatermark : undefined,
|
|
3039
|
-
};
|
|
3040
|
-
}
|
|
3041
|
-
console.log(`[YM Members] ${changedRecords.length}/${enriched.length} changed since watermark`);
|
|
3042
|
-
return {
|
|
3043
|
-
Records: changedRecords,
|
|
3044
|
-
HasMore: pageResult.HasMore,
|
|
3045
|
-
NextOffset: pageResult.NextOffset,
|
|
3046
|
-
NextPage: pageResult.NextPage,
|
|
3047
|
-
NextCursor: pageResult.NextCursor,
|
|
3048
|
-
NewWatermarkValue: !pageResult.HasMore ? newWatermark : undefined,
|
|
3049
|
-
};
|
|
3050
|
-
}
|
|
3051
|
-
/**
|
|
3052
|
-
* Fetches records from a flat (non-enriched) endpoint and applies client-side
|
|
3053
|
-
* watermark filtering against a known date field.
|
|
3054
|
-
*
|
|
3055
|
-
* Used for endpoints that include a usable date field (e.g. `DateCreated`,
|
|
3056
|
-
* `LastUpdated`) but have no server-side date filter query parameter.
|
|
3057
|
-
* The base class pagination loop is used to collect all records, then
|
|
3058
|
-
* `FilterByWatermark` narrows to only changed ones.
|
|
3059
|
-
*
|
|
3060
|
-
* Because these endpoints are typically small-to-medium in size, fetching
|
|
3061
|
-
* all and filtering locally is acceptable.
|
|
3062
|
-
*/
|
|
3063
|
-
/**
|
|
3064
|
-
* PeopleIDs endpoint returns a flat array of ID numbers under "IDList",
|
|
3065
|
-
* not objects with named fields. This wraps each ID as {ID: value} so
|
|
3066
|
-
* the engine can map it to the PeopleIDs table's ID column.
|
|
3067
|
-
*/
|
|
3068
|
-
async FetchPeopleIDs(ctx) {
|
|
3069
|
-
const auth = await this.Authenticate(ctx.CompanyIntegration, ctx.ContextUser);
|
|
3070
|
-
const page = (ctx.CurrentPage ?? 0) + 1;
|
|
3071
|
-
const pageSize = 200;
|
|
3072
|
-
const url = `${YM_API_BASE}/Ams/${auth.Config.ClientID}/PeopleIDs?PageNumber=${page}&PageSize=${pageSize}`;
|
|
3073
|
-
const headers = this.BuildHeaders(auth);
|
|
3074
|
-
const resp = await this.MakeHTTPRequest(auth, url, 'GET', headers);
|
|
3075
|
-
if (resp.Status >= 400 || !resp.Body) {
|
|
3076
|
-
return { Records: [], HasMore: false };
|
|
3077
|
-
}
|
|
3078
|
-
const body = resp.Body;
|
|
3079
|
-
const list = (body['IDList'] ?? body['PeopleIDs'] ?? body['Ids'] ?? []);
|
|
3080
|
-
if (!Array.isArray(list) || list.length === 0) {
|
|
3081
|
-
return { Records: [], HasMore: false };
|
|
3082
|
-
}
|
|
3083
|
-
const records = list.map(item => {
|
|
3084
|
-
const id = typeof item === 'object' && item !== null
|
|
3085
|
-
? String(item['ProfileId'] ?? item['Id'] ?? item['ID'] ?? item)
|
|
3086
|
-
: String(item);
|
|
3087
|
-
const fields = typeof item === 'object' && item !== null
|
|
3088
|
-
? { ID: id, ...item }
|
|
3089
|
-
: { ID: id };
|
|
3090
|
-
return { ExternalID: id, ObjectType: ctx.ObjectName, Fields: fields };
|
|
3091
|
-
});
|
|
3092
|
-
return {
|
|
3093
|
-
Records: records,
|
|
3094
|
-
HasMore: list.length >= pageSize,
|
|
3095
|
-
NextPage: page,
|
|
3096
|
-
};
|
|
3097
|
-
}
|
|
3098
|
-
async FetchWithClientWatermark(ctx, dateFieldName) {
|
|
3099
|
-
const pageResult = await super.FetchChanges(ctx);
|
|
3100
|
-
if (pageResult.Records.length === 0) {
|
|
3101
|
-
return pageResult;
|
|
3102
|
-
}
|
|
3103
|
-
const { changedRecords, newWatermark } = this.FilterByWatermark(pageResult.Records, ctx.WatermarkValue, dateFieldName);
|
|
3104
|
-
console.log(`[YM] ${ctx.ObjectName}: ${changedRecords.length}/${pageResult.Records.length} records changed since watermark (field: ${dateFieldName})`);
|
|
3105
|
-
return {
|
|
3106
|
-
Records: changedRecords,
|
|
3107
|
-
HasMore: pageResult.HasMore,
|
|
3108
|
-
NextOffset: pageResult.NextOffset,
|
|
3109
|
-
NextPage: pageResult.NextPage,
|
|
3110
|
-
NextCursor: pageResult.NextCursor,
|
|
3111
|
-
NewWatermarkValue: !pageResult.HasMore ? newWatermark : undefined,
|
|
3112
|
-
};
|
|
3113
|
-
}
|
|
3114
|
-
/**
|
|
3115
|
-
* Filters records by comparing a date field against a watermark timestamp.
|
|
3116
|
-
* Returns only records where the date field is newer than the watermark,
|
|
3117
|
-
* plus the latest date value seen (to use as the next watermark).
|
|
3118
|
-
*/
|
|
3119
|
-
FilterByWatermark(records, watermarkValue, dateFieldName) {
|
|
3120
|
-
let latestDate = null;
|
|
3121
|
-
const watermarkDate = watermarkValue ? new Date(watermarkValue) : null;
|
|
3122
|
-
const changed = [];
|
|
3123
|
-
for (const record of records) {
|
|
3124
|
-
const dateValue = record.Fields[dateFieldName];
|
|
3125
|
-
if (dateValue == null) {
|
|
3126
|
-
// No date field — include record (can't determine if changed)
|
|
3127
|
-
changed.push(record);
|
|
3128
|
-
continue;
|
|
3129
|
-
}
|
|
3130
|
-
const recordDate = new Date(String(dateValue));
|
|
3131
|
-
if (isNaN(recordDate.getTime())) {
|
|
3132
|
-
changed.push(record);
|
|
3133
|
-
continue;
|
|
3134
|
-
}
|
|
3135
|
-
// Track the latest date for the new watermark
|
|
3136
|
-
if (!latestDate || recordDate > latestDate) {
|
|
3137
|
-
latestDate = recordDate;
|
|
3138
|
-
}
|
|
3139
|
-
// Include if no watermark or record is newer than watermark
|
|
3140
|
-
if (!watermarkDate || recordDate > watermarkDate) {
|
|
3141
|
-
changed.push(record);
|
|
3142
|
-
}
|
|
3143
|
-
}
|
|
3144
|
-
const newWatermark = latestDate ? latestDate.toISOString() : null;
|
|
3145
|
-
return { changedRecords: changed, newWatermark };
|
|
3146
|
-
}
|
|
3147
|
-
// ─── CRUD Operations ────────────────────────────────────────────
|
|
3148
|
-
/**
|
|
3149
|
-
* Creates a new record in YourMembership via POST /Ams/{ClientID}/{ObjectName}.
|
|
3150
|
-
*/
|
|
3151
|
-
async CreateRecord(ctx) {
|
|
3152
|
-
const companyIntegration = ctx.CompanyIntegration;
|
|
3153
|
-
const contextUser = ctx.ContextUser;
|
|
3154
|
-
const config = await this.ParseConfig(companyIntegration, contextUser);
|
|
3155
|
-
const sessionId = await this.GetSession(config);
|
|
3156
|
-
const auth = { SessionID: sessionId, Config: config };
|
|
3157
|
-
const headers = this.BuildHeaders(auth);
|
|
3158
|
-
const url = `${YM_API_BASE}/Ams/${config.ClientID}/${ctx.ObjectName}`;
|
|
3159
|
-
const response = await this.MakeHTTPRequest(auth, url, 'POST', headers, ctx.Attributes);
|
|
3160
|
-
if (response.Status >= 200 && response.Status < 300) {
|
|
3161
|
-
const created = response.Body;
|
|
3162
|
-
const externalID = String(created['Id'] ?? created['ID'] ?? created['ProfileID'] ?? '');
|
|
3163
|
-
return this.BuildCreatedResult(externalID, response.Status, ctx.ObjectName);
|
|
3164
|
-
}
|
|
3165
|
-
return this.BuildYMCRUDErrorResult(response, 'CreateRecord', ctx.ObjectName);
|
|
3166
|
-
}
|
|
3167
|
-
/**
|
|
3168
|
-
* Updates an existing record in YourMembership via PUT /Ams/{ClientID}/{ObjectName}/{Id}.
|
|
3169
|
-
*/
|
|
3170
|
-
async UpdateRecord(ctx) {
|
|
3171
|
-
const companyIntegration = ctx.CompanyIntegration;
|
|
3172
|
-
const contextUser = ctx.ContextUser;
|
|
3173
|
-
const config = await this.ParseConfig(companyIntegration, contextUser);
|
|
3174
|
-
const sessionId = await this.GetSession(config);
|
|
3175
|
-
const auth = { SessionID: sessionId, Config: config };
|
|
3176
|
-
const headers = this.BuildHeaders(auth);
|
|
3177
|
-
const url = `${YM_API_BASE}/Ams/${config.ClientID}/${ctx.ObjectName}/${ctx.ExternalID}`;
|
|
3178
|
-
const response = await this.MakeHTTPRequest(auth, url, 'PUT', headers, ctx.Attributes);
|
|
3179
|
-
if (response.Status >= 200 && response.Status < 300) {
|
|
3180
|
-
const updated = response.Body;
|
|
3181
|
-
return {
|
|
3182
|
-
Success: true,
|
|
3183
|
-
ExternalID: String(updated['Id'] ?? updated['ID'] ?? ctx.ExternalID),
|
|
3184
|
-
StatusCode: response.Status,
|
|
3185
|
-
};
|
|
3186
|
-
}
|
|
3187
|
-
return this.BuildYMCRUDErrorResult(response, 'UpdateRecord', ctx.ObjectName);
|
|
3188
|
-
}
|
|
3189
|
-
/**
|
|
3190
|
-
* Deletes a record in YourMembership via DELETE /Ams/{ClientID}/{ObjectName}/{Id}.
|
|
3191
|
-
*/
|
|
3192
|
-
async DeleteRecord(ctx) {
|
|
3193
|
-
const companyIntegration = ctx.CompanyIntegration;
|
|
3194
|
-
const contextUser = ctx.ContextUser;
|
|
3195
|
-
const config = await this.ParseConfig(companyIntegration, contextUser);
|
|
3196
|
-
const sessionId = await this.GetSession(config);
|
|
3197
|
-
const auth = { SessionID: sessionId, Config: config };
|
|
3198
|
-
const headers = this.BuildHeaders(auth);
|
|
3199
|
-
const url = `${YM_API_BASE}/Ams/${config.ClientID}/${ctx.ObjectName}/${ctx.ExternalID}`;
|
|
3200
|
-
const response = await this.MakeHTTPRequest(auth, url, 'DELETE', headers);
|
|
3201
|
-
if (response.Status === 204 || (response.Status >= 200 && response.Status < 300)) {
|
|
3202
|
-
return {
|
|
3203
|
-
Success: true,
|
|
3204
|
-
ExternalID: ctx.ExternalID,
|
|
3205
|
-
StatusCode: response.Status,
|
|
3206
|
-
};
|
|
3207
|
-
}
|
|
3208
|
-
return this.BuildYMCRUDErrorResult(response, 'DeleteRecord', ctx.ObjectName);
|
|
3209
|
-
}
|
|
3210
|
-
/** Builds a standardized error CRUDResult from a failed YM response. */
|
|
3211
|
-
BuildYMCRUDErrorResult(response, operation, objectName) {
|
|
3212
|
-
const bodyObj = response.Body;
|
|
3213
|
-
const rs = bodyObj?.['ResponseStatus'];
|
|
3214
|
-
const message = rs?.['Message']
|
|
3215
|
-
? String(rs['Message'])
|
|
3216
|
-
: `[YM] ${operation} on ${objectName} failed (HTTP ${response.Status})`;
|
|
3217
|
-
return {
|
|
3218
|
-
Success: false,
|
|
3219
|
-
ErrorMessage: message,
|
|
3220
|
-
StatusCode: response.Status,
|
|
3221
|
-
};
|
|
3222
|
-
}
|
|
3223
|
-
// ─── TestConnection ─────────────────────────────────────────────
|
|
3224
|
-
/** Tests connectivity by authenticating and fetching ClientConfig. */
|
|
3225
|
-
async TestConnection(companyIntegration, contextUser) {
|
|
3226
|
-
try {
|
|
3227
|
-
const config = await this.ParseConfig(companyIntegration, contextUser);
|
|
3228
|
-
const sessionId = await this.GetSession(config);
|
|
3229
|
-
const auth = { SessionID: sessionId, Config: config };
|
|
3230
|
-
const json = await this.MakeYMRequest(auth, 'ClientConfig');
|
|
3231
|
-
const siteUrl = json['SiteUrl'] ?? 'Unknown';
|
|
3232
|
-
return {
|
|
3233
|
-
Success: true,
|
|
3234
|
-
Message: `Connected to YourMembership site: ${siteUrl}`,
|
|
3235
|
-
ServerVersion: `ClientID ${config.ClientID}`,
|
|
3236
|
-
};
|
|
3237
|
-
}
|
|
3238
|
-
catch (err) {
|
|
3239
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
3240
|
-
return { Success: false, Message: `Connection failed: ${message}` };
|
|
3241
|
-
}
|
|
3242
|
-
}
|
|
3243
|
-
// ─── Default configurations ──────────────────────────────────────
|
|
3244
|
-
/** Returns suggested default configuration for YM integration setup. */
|
|
3245
|
-
GetDefaultConfiguration() {
|
|
3246
|
-
return {
|
|
3247
|
-
DefaultSchemaName: 'YourMembership',
|
|
3248
|
-
DefaultObjects: [], // Objects are auto-discovered from metadata via DiscoverObjects
|
|
3249
|
-
};
|
|
3250
|
-
}
|
|
3251
|
-
/** Returns suggested default field mappings for common YM objects to MJ entities. */
|
|
3252
|
-
GetDefaultFieldMappings(objectName, _entityName) {
|
|
3253
|
-
switch (objectName) {
|
|
3254
|
-
case 'Members':
|
|
3255
|
-
return [
|
|
3256
|
-
{ SourceFieldName: 'EmailAddr', DestinationFieldName: 'Email', IsKeyField: true },
|
|
3257
|
-
{ SourceFieldName: 'FirstName', DestinationFieldName: 'FirstName' },
|
|
3258
|
-
{ SourceFieldName: 'LastName', DestinationFieldName: 'LastName' },
|
|
3259
|
-
{ SourceFieldName: 'Phone', DestinationFieldName: 'Phone' },
|
|
3260
|
-
{ SourceFieldName: 'Organization', DestinationFieldName: 'CompanyName' },
|
|
3261
|
-
{ SourceFieldName: 'MemberTypeCode', DestinationFieldName: 'Status' },
|
|
3262
|
-
];
|
|
3263
|
-
case 'Events':
|
|
3264
|
-
return [
|
|
3265
|
-
{ SourceFieldName: 'EventId', DestinationFieldName: 'ID', IsKeyField: true },
|
|
3266
|
-
{ SourceFieldName: 'Name', DestinationFieldName: 'Name' },
|
|
3267
|
-
{ SourceFieldName: 'StartDate', DestinationFieldName: 'StartDate' },
|
|
3268
|
-
{ SourceFieldName: 'EndDate', DestinationFieldName: 'EndDate' },
|
|
3269
|
-
];
|
|
3270
|
-
case 'InvoiceItems':
|
|
3271
|
-
return [
|
|
3272
|
-
{ SourceFieldName: 'LineItemID', DestinationFieldName: 'LineItemID', IsKeyField: true },
|
|
3273
|
-
{ SourceFieldName: 'InvoiceNo', DestinationFieldName: 'InvoiceNo' },
|
|
3274
|
-
{ SourceFieldName: 'InvoiceType', DestinationFieldName: 'InvoiceType' },
|
|
3275
|
-
{ SourceFieldName: 'WebSiteMemberID', DestinationFieldName: 'WebSiteMemberID' },
|
|
3276
|
-
{ SourceFieldName: 'LineItemDescription', DestinationFieldName: 'Description' },
|
|
3277
|
-
{ SourceFieldName: 'LineItemAmount', DestinationFieldName: 'Amount' },
|
|
3278
|
-
{ SourceFieldName: 'LineItemDate', DestinationFieldName: 'Date' },
|
|
3279
|
-
];
|
|
3280
|
-
case 'DuesTransactions':
|
|
3281
|
-
return [
|
|
3282
|
-
{ SourceFieldName: 'TransactionID', DestinationFieldName: 'TransactionID', IsKeyField: true },
|
|
3283
|
-
{ SourceFieldName: 'WebsiteMemberID', DestinationFieldName: 'WebsiteMemberID' },
|
|
3284
|
-
{ SourceFieldName: 'Status', DestinationFieldName: 'Status' },
|
|
3285
|
-
{ SourceFieldName: 'Amount', DestinationFieldName: 'Amount' },
|
|
3286
|
-
{ SourceFieldName: 'MembershipRequested', DestinationFieldName: 'MembershipRequested' },
|
|
3287
|
-
{ SourceFieldName: 'DateSubmitted', DestinationFieldName: 'DateSubmitted' },
|
|
3288
|
-
];
|
|
3289
|
-
case 'EventRegistrations':
|
|
3290
|
-
return [
|
|
3291
|
-
{ SourceFieldName: 'Id', DestinationFieldName: 'Id', IsKeyField: true },
|
|
3292
|
-
{ SourceFieldName: 'EventId', DestinationFieldName: 'EventId' },
|
|
3293
|
-
{ SourceFieldName: 'RegistrationID', DestinationFieldName: 'RegistrationID' },
|
|
3294
|
-
{ SourceFieldName: 'FirstName', DestinationFieldName: 'FirstName' },
|
|
3295
|
-
{ SourceFieldName: 'LastName', DestinationFieldName: 'LastName' },
|
|
3296
|
-
{ SourceFieldName: 'DisplayName', DestinationFieldName: 'DisplayName' },
|
|
3297
|
-
{ SourceFieldName: 'HeadShotImage', DestinationFieldName: 'HeadShotImage' },
|
|
3298
|
-
{ SourceFieldName: 'DateRegistered', DestinationFieldName: 'DateRegistered' },
|
|
3299
|
-
{ SourceFieldName: 'IsPrimary', DestinationFieldName: 'IsPrimary' },
|
|
3300
|
-
{ SourceFieldName: 'BadgeNumber', DestinationFieldName: 'BadgeNumber' },
|
|
3301
|
-
];
|
|
3302
|
-
case 'EventSessions':
|
|
3303
|
-
return [
|
|
3304
|
-
{ SourceFieldName: 'SessionId', DestinationFieldName: 'SessionId', IsKeyField: true },
|
|
3305
|
-
{ SourceFieldName: 'EventId', DestinationFieldName: 'EventId' },
|
|
3306
|
-
{ SourceFieldName: 'Name', DestinationFieldName: 'Name' },
|
|
3307
|
-
{ SourceFieldName: 'Presenter', DestinationFieldName: 'Presenter' },
|
|
3308
|
-
{ SourceFieldName: 'StartDate', DestinationFieldName: 'StartDate' },
|
|
3309
|
-
{ SourceFieldName: 'EndDate', DestinationFieldName: 'EndDate' },
|
|
3310
|
-
];
|
|
3311
|
-
case 'StoreOrderDetails':
|
|
3312
|
-
return [
|
|
3313
|
-
{ SourceFieldName: 'OrderID', DestinationFieldName: 'OrderID', IsKeyField: true },
|
|
3314
|
-
{ SourceFieldName: 'ProductCode', DestinationFieldName: 'ProductCode', IsKeyField: true },
|
|
3315
|
-
{ SourceFieldName: 'WebsiteMemberID', DestinationFieldName: 'WebsiteMemberID' },
|
|
3316
|
-
{ SourceFieldName: 'ProductName', DestinationFieldName: 'ProductName' },
|
|
3317
|
-
{ SourceFieldName: 'Quantity', DestinationFieldName: 'Quantity' },
|
|
3318
|
-
{ SourceFieldName: 'TotalPrice', DestinationFieldName: 'TotalPrice' },
|
|
3319
|
-
];
|
|
3320
|
-
case 'DonationHistory':
|
|
3321
|
-
return [
|
|
3322
|
-
{ SourceFieldName: 'intDonationId', DestinationFieldName: 'DonationId', IsKeyField: true },
|
|
3323
|
-
{ SourceFieldName: 'ProfileID', DestinationFieldName: 'ProfileID' },
|
|
3324
|
-
{ SourceFieldName: 'dblDonation', DestinationFieldName: 'Amount' },
|
|
3325
|
-
{ SourceFieldName: 'strFundName', DestinationFieldName: 'FundName' },
|
|
3326
|
-
{ SourceFieldName: 'DatDonation', DestinationFieldName: 'DonationDate' },
|
|
3327
|
-
{ SourceFieldName: 'strStatus', DestinationFieldName: 'Status' },
|
|
3328
|
-
];
|
|
3329
|
-
case 'CareerOpenings':
|
|
3330
|
-
return [
|
|
3331
|
-
{ SourceFieldName: 'CareerOpeningID', DestinationFieldName: 'CareerOpeningID', IsKeyField: true },
|
|
3332
|
-
{ SourceFieldName: 'Position', DestinationFieldName: 'Position' },
|
|
3333
|
-
{ SourceFieldName: 'Organization', DestinationFieldName: 'Organization' },
|
|
3334
|
-
{ SourceFieldName: 'DatePosted', DestinationFieldName: 'DatePosted' },
|
|
3335
|
-
];
|
|
3336
|
-
default:
|
|
3337
|
-
return [];
|
|
3338
|
-
}
|
|
3339
|
-
}
|
|
3340
|
-
// ─── Groups special handling ─────────────────────────────────────
|
|
3341
|
-
/**
|
|
3342
|
-
* Fetches Groups or GroupTypes, which have a nested structure:
|
|
3343
|
-
* GroupTypeList → Groups. When objectName is 'GroupTypes', returns just
|
|
3344
|
-
* the type entries. When 'Groups', flattens into individual group records.
|
|
3345
|
-
*/
|
|
3346
|
-
async FetchGroups(ctx) {
|
|
3347
|
-
const auth = await this.Authenticate(ctx.CompanyIntegration, ctx.ContextUser);
|
|
3348
|
-
const json = await this.MakeYMRequest(auth, 'Groups');
|
|
3349
|
-
const typeList = json['GroupTypeList'];
|
|
3350
|
-
if (!typeList || !Array.isArray(typeList)) {
|
|
3351
|
-
return { Records: [], HasMore: false };
|
|
3352
|
-
}
|
|
3353
|
-
if (ctx.ObjectName.toLowerCase() === 'grouptypes') {
|
|
3354
|
-
return this.BuildGroupTypeRecords(typeList, ctx.ObjectName);
|
|
3355
|
-
}
|
|
3356
|
-
return this.FlattenGroupRecords(typeList, ctx.ObjectName);
|
|
3357
|
-
}
|
|
3358
|
-
/** Builds ExternalRecords for GroupType entries only. */
|
|
3359
|
-
BuildGroupTypeRecords(typeList, objectType) {
|
|
3360
|
-
const records = typeList.map(gt => {
|
|
3361
|
-
// Full-record pass-through (§0 forward-compat contract): spread the WHOLE GroupType so any
|
|
3362
|
-
// custom fields YM returns reach ExternalRecord.Fields for the custom-column capture — NOT a
|
|
3363
|
-
// hand-picked subset (the prior {Id,TypeName,SortIndex} dropped customs). Exclude only the
|
|
3364
|
-
// nested Groups child collection, which is emitted as separate group records (FlattenGroupRecords).
|
|
3365
|
-
const fields = { ...gt };
|
|
3366
|
-
delete fields.Groups;
|
|
3367
|
-
return {
|
|
3368
|
-
ExternalID: String(gt.Id ?? ''),
|
|
3369
|
-
ObjectType: objectType,
|
|
3370
|
-
Fields: fields,
|
|
3371
|
-
};
|
|
3372
|
-
});
|
|
3373
|
-
return { Records: records, HasMore: false };
|
|
3374
|
-
}
|
|
3375
|
-
/** Flattens nested GroupTypeList → Groups into flat group records. */
|
|
3376
|
-
FlattenGroupRecords(typeList, objectType) {
|
|
3377
|
-
const records = [];
|
|
3378
|
-
for (const groupType of typeList) {
|
|
3379
|
-
const typeName = groupType.TypeName ?? '';
|
|
3380
|
-
for (const group of groupType.Groups ?? []) {
|
|
3381
|
-
records.push({
|
|
3382
|
-
ExternalID: String(group.Id),
|
|
3383
|
-
ObjectType: objectType,
|
|
3384
|
-
Fields: { ...group, GroupTypeName: typeName, GroupTypeId: groupType.Id },
|
|
3385
|
-
});
|
|
3386
|
-
}
|
|
3387
|
-
}
|
|
3388
|
-
return { Records: records, HasMore: false };
|
|
3389
|
-
}
|
|
3390
|
-
// ─── Detail enrichment (Members) ─────────────────────────────────
|
|
3391
|
-
/**
|
|
3392
|
-
* Enriches a slice of member records with full profile data from the detail endpoint.
|
|
3393
|
-
* The list endpoint returns sparse data (name, email); the detail endpoint
|
|
3394
|
-
* returns full address, phone, custom fields, etc.
|
|
3395
|
-
*
|
|
3396
|
-
* @param ctx - Fetch context for auth
|
|
3397
|
-
* @param records - The slice of records to enrich
|
|
3398
|
-
* @param batchOffset - Starting index of this slice within the overall set (for progress logging)
|
|
3399
|
-
* @param overallTotal - Total number of records being enriched across all batches (for progress logging)
|
|
3400
|
-
*/
|
|
3401
|
-
async EnrichMembersWithDetails(ctx, records, batchOffset, overallTotal) {
|
|
3402
|
-
const auth = await this.Authenticate(ctx.CompanyIntegration, ctx.ContextUser);
|
|
3403
|
-
const concurrency = 3;
|
|
3404
|
-
const enriched = [];
|
|
3405
|
-
let lastLoggedPct = Math.floor((batchOffset / overallTotal) * 100);
|
|
3406
|
-
for (let i = 0; i < records.length; i += concurrency) {
|
|
3407
|
-
const chunk = records.slice(i, i + concurrency);
|
|
3408
|
-
const results = await Promise.all(chunk.map(record => this.EnrichSingleMember(auth, record)));
|
|
3409
|
-
enriched.push(...results);
|
|
3410
|
-
const doneOverall = batchOffset + enriched.length;
|
|
3411
|
-
const pct = Math.floor((doneOverall / overallTotal) * 100);
|
|
3412
|
-
if (pct >= lastLoggedPct + 1) {
|
|
3413
|
-
lastLoggedPct = pct;
|
|
3414
|
-
console.log(`[YM Members] Enriched ${doneOverall}/${overallTotal} (${pct}%)`);
|
|
3415
|
-
}
|
|
3416
|
-
}
|
|
3417
|
-
return enriched;
|
|
3418
|
-
}
|
|
3419
|
-
/**
|
|
3420
|
-
* Fetches full detail data for a single member and merges it.
|
|
3421
|
-
* Detail endpoint returns camelCase + nested objects; we normalize to flat PascalCase.
|
|
3422
|
-
*/
|
|
3423
|
-
async EnrichSingleMember(auth, record) {
|
|
3424
|
-
if (!record.ExternalID) {
|
|
3425
|
-
console.warn(`[YM Members] Skipping enrichment for record with empty ExternalID`);
|
|
3426
|
-
return record;
|
|
3427
|
-
}
|
|
3428
|
-
try {
|
|
3429
|
-
const detailPath = `Members/${record.ExternalID}`;
|
|
3430
|
-
const fetchPromise = this.MakeYMRequest(auth, detailPath);
|
|
3431
|
-
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Detail fetch timed out for ${record.ExternalID}`)), this.effectiveEnrichTimeoutMs));
|
|
3432
|
-
const json = await Promise.race([fetchPromise, timeoutPromise]);
|
|
3433
|
-
const normalized = this.NormalizeMemberDetail(json);
|
|
3434
|
-
record.Fields = { ...record.Fields, ...normalized };
|
|
3435
|
-
}
|
|
3436
|
-
catch (err) {
|
|
3437
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
3438
|
-
console.warn(`[YM Members] Failed to enrich member ${record.ExternalID}: ${message}`);
|
|
3439
|
-
}
|
|
3440
|
-
return record;
|
|
3441
|
-
}
|
|
3442
|
-
/**
|
|
3443
|
-
* Maps the Members detail endpoint response to our flat PascalCase schema.
|
|
3444
|
-
* Detail endpoint returns: { firstName, lastName, emailAddress, primaryAddress: { ... } }
|
|
3445
|
-
* We need: { FirstName, LastName, EmailAddr, Phone, Address1, ... }
|
|
3446
|
-
*/
|
|
3447
|
-
NormalizeMemberDetail(detail) {
|
|
3448
|
-
const result = {};
|
|
3449
|
-
const addr = detail['primaryAddress'];
|
|
3450
|
-
const fieldMap = {
|
|
3451
|
-
'id': 'ProfileID',
|
|
3452
|
-
'firstName': 'FirstName',
|
|
3453
|
-
'lastName': 'LastName',
|
|
3454
|
-
'emailAddress': 'EmailAddr',
|
|
3455
|
-
'organization': 'Organization',
|
|
3456
|
-
'typeCode': 'MemberTypeCode',
|
|
3457
|
-
'expirationDate': 'ExpirationDate',
|
|
3458
|
-
'isMember': 'Status',
|
|
3459
|
-
};
|
|
3460
|
-
for (const [detailKey, ourKey] of Object.entries(fieldMap)) {
|
|
3461
|
-
const value = detail[detailKey];
|
|
3462
|
-
if (value !== undefined && value !== null && value !== '') {
|
|
3463
|
-
result[ourKey] = detailKey === 'isMember' ? (value ? 'Active' : 'Inactive') : value;
|
|
3464
|
-
}
|
|
3465
|
-
}
|
|
3466
|
-
if (addr) {
|
|
3467
|
-
const addrMap = {
|
|
3468
|
-
'address1': 'Address1',
|
|
3469
|
-
'address2': 'Address2',
|
|
3470
|
-
'city': 'City',
|
|
3471
|
-
'location': 'State',
|
|
3472
|
-
'postalCode': 'PostalCode',
|
|
3473
|
-
'countryName': 'Country',
|
|
3474
|
-
'phone': 'Phone',
|
|
3475
|
-
};
|
|
3476
|
-
for (const [addrKey, ourKey] of Object.entries(addrMap)) {
|
|
3477
|
-
const value = addr[addrKey];
|
|
3478
|
-
if (value !== undefined && value !== null && value !== '') {
|
|
3479
|
-
result[ourKey] = value;
|
|
3480
|
-
}
|
|
3481
|
-
}
|
|
3482
|
-
}
|
|
3483
|
-
return result;
|
|
3484
|
-
}
|
|
3485
|
-
// ─── Configuration parsing ───────────────────────────────────────
|
|
3486
|
-
/**
|
|
3487
|
-
* Parses credentials from CompanyIntegration.CredentialID (preferred) or
|
|
3488
|
-
* falls back to CompanyIntegration.Configuration JSON for backwards compat.
|
|
3489
|
-
*/
|
|
3490
|
-
async ParseConfig(companyIntegration, contextUser) {
|
|
3491
|
-
const credentialID = companyIntegration.CredentialID;
|
|
3492
|
-
if (credentialID && contextUser) {
|
|
3493
|
-
const config = await this.LoadFromCredential(credentialID, contextUser);
|
|
3494
|
-
if (config)
|
|
3495
|
-
return config;
|
|
3496
|
-
}
|
|
3497
|
-
const configJson = companyIntegration.Configuration;
|
|
3498
|
-
if (configJson) {
|
|
3499
|
-
return this.ParseConfigJson(configJson);
|
|
3500
|
-
}
|
|
3501
|
-
throw new Error('No YM credentials found. Attach a credential with ClientID, APIKey, and APIPassword, or set Configuration JSON on the CompanyIntegration.');
|
|
3502
|
-
}
|
|
3503
|
-
async LoadFromCredential(credentialID, contextUser, provider) {
|
|
3504
|
-
const md = provider ?? new Metadata();
|
|
3505
|
-
const credential = await md.GetEntityObject('MJ: Credentials', contextUser);
|
|
3506
|
-
const loaded = await credential.Load(credentialID);
|
|
3507
|
-
if (!loaded || !credential.Values)
|
|
3508
|
-
return null;
|
|
3509
|
-
try {
|
|
3510
|
-
return this.ParseConfigJson(credential.Values);
|
|
3511
|
-
}
|
|
3512
|
-
catch {
|
|
3513
|
-
return null;
|
|
3514
|
-
}
|
|
3515
|
-
}
|
|
3516
|
-
ParseConfigJson(json) {
|
|
3517
|
-
const parsed = JSON.parse(json);
|
|
3518
|
-
const clientId = parsed['ClientID'] || parsed['clientId'] || parsed['ClientId'];
|
|
3519
|
-
const apiKey = parsed['APIKey'] || parsed['apiKey'] || parsed['ApiKey'];
|
|
3520
|
-
const apiPassword = parsed['APIPassword'] || parsed['apiPassword'] || parsed['ApiPassword'];
|
|
3521
|
-
if (!clientId || !apiKey || !apiPassword) {
|
|
3522
|
-
throw new Error('Configuration JSON must contain ClientID, APIKey, and APIPassword (any casing)');
|
|
3523
|
-
}
|
|
3524
|
-
const parseOptionalInt = (key) => {
|
|
3525
|
-
const v = parsed[key];
|
|
3526
|
-
if (v == null)
|
|
3527
|
-
return undefined;
|
|
3528
|
-
const n = Number(v);
|
|
3529
|
-
return isNaN(n) ? undefined : Math.floor(n);
|
|
3530
|
-
};
|
|
3531
|
-
return {
|
|
3532
|
-
ClientID: String(clientId),
|
|
3533
|
-
APIKey: String(apiKey),
|
|
3534
|
-
APIPassword: String(apiPassword),
|
|
3535
|
-
MaxRetries: parseOptionalInt('MaxRetries'),
|
|
3536
|
-
RequestTimeoutMs: parseOptionalInt('RequestTimeoutMs'),
|
|
3537
|
-
MinRequestIntervalMs: parseOptionalInt('MinRequestIntervalMs'),
|
|
3538
|
-
EnrichBatchSize: parseOptionalInt('EnrichBatchSize'),
|
|
3539
|
-
JsonTimeoutMs: parseOptionalInt('JsonTimeoutMs'),
|
|
3540
|
-
EnrichTimeoutMs: parseOptionalInt('EnrichTimeoutMs'),
|
|
3541
|
-
};
|
|
3542
|
-
}
|
|
3543
|
-
// ─── Session management ──────────────────────────────────────────
|
|
3544
|
-
/** Obtains or reuses a YM session for the given credentials. */
|
|
3545
|
-
async GetSession(config) {
|
|
3546
|
-
const cached = this.sessionCache.get(config.ClientID);
|
|
3547
|
-
if (cached && (Date.now() - cached.CreatedAt) < SESSION_TTL_MS) {
|
|
3548
|
-
return cached.SessionId;
|
|
3549
|
-
}
|
|
3550
|
-
return this.CreateSession(config);
|
|
3551
|
-
}
|
|
3552
|
-
/** Creates a new YM session via the Authenticate endpoint. */
|
|
3553
|
-
async CreateSession(config) {
|
|
3554
|
-
const response = await fetch(`${YM_API_BASE}/Ams/Authenticate`, {
|
|
3555
|
-
method: 'POST',
|
|
3556
|
-
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
|
|
3557
|
-
body: JSON.stringify({
|
|
3558
|
-
provider: 'credentials',
|
|
3559
|
-
UserName: config.APIKey,
|
|
3560
|
-
Password: config.APIPassword,
|
|
3561
|
-
UserType: 'Admin',
|
|
3562
|
-
ClientID: Number(config.ClientID),
|
|
3563
|
-
}),
|
|
3564
|
-
});
|
|
3565
|
-
if (!response.ok) {
|
|
3566
|
-
throw new Error(`YM authentication failed: ${response.status} ${response.statusText}`);
|
|
3567
|
-
}
|
|
3568
|
-
const json = await response.json();
|
|
3569
|
-
if (json.ResponseStatus?.ErrorCode && json.ResponseStatus.ErrorCode !== 'None') {
|
|
3570
|
-
throw new Error(`YM auth error: ${json.ResponseStatus.Message ?? json.ResponseStatus.ErrorCode}`);
|
|
3571
|
-
}
|
|
3572
|
-
if (!json.SessionId) {
|
|
3573
|
-
throw new Error('YM auth: No SessionId returned');
|
|
3574
|
-
}
|
|
3575
|
-
this.sessionCache.set(config.ClientID, {
|
|
3576
|
-
SessionId: json.SessionId,
|
|
3577
|
-
CreatedAt: Date.now(),
|
|
3578
|
-
});
|
|
3579
|
-
return json.SessionId;
|
|
3580
|
-
}
|
|
3581
|
-
/** Invalidates a cached session so the next request re-authenticates. */
|
|
3582
|
-
InvalidateSession(clientId) {
|
|
3583
|
-
this.sessionCache.delete(clientId);
|
|
3584
|
-
}
|
|
3585
|
-
// ─── HTTP helpers ────────────────────────────────────────────────
|
|
3586
|
-
/**
|
|
3587
|
-
* Makes a direct YM API request using the connector's auth and URL conventions.
|
|
3588
|
-
* Used for YM-specific calls (Groups, detail enrichment, TestConnection)
|
|
3589
|
-
* that bypass the base class's metadata-driven flow.
|
|
3590
|
-
*/
|
|
3591
|
-
async MakeYMRequest(auth, endpoint, queryParams) {
|
|
3592
|
-
let url = `${YM_API_BASE}/Ams/${auth.Config.ClientID}/${endpoint}`;
|
|
3593
|
-
if (queryParams && Object.keys(queryParams).length > 0) {
|
|
3594
|
-
url += '?' + new URLSearchParams(queryParams).toString();
|
|
3595
|
-
}
|
|
3596
|
-
const headers = this.BuildHeaders(auth);
|
|
3597
|
-
const response = await this.MakeHTTPRequest(auth, url, 'GET', headers);
|
|
3598
|
-
if (response.Status < 200 || response.Status >= 300) {
|
|
3599
|
-
const bodyPreview = typeof response.Body === 'string'
|
|
3600
|
-
? response.Body.slice(0, 500)
|
|
3601
|
-
: JSON.stringify(response.Body).slice(0, 500);
|
|
3602
|
-
throw new Error(`YM API error for ${endpoint}: ${response.Status} - ${bodyPreview}`);
|
|
3603
|
-
}
|
|
3604
|
-
return response.Body;
|
|
3605
|
-
}
|
|
3606
|
-
/** Executes an HTTP request with a timeout. */
|
|
3607
|
-
async FetchWithTimeout(url, method, headers, body) {
|
|
3608
|
-
const controller = new AbortController();
|
|
3609
|
-
const timeoutMs = this.effectiveRequestTimeoutMs;
|
|
3610
|
-
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
3611
|
-
try {
|
|
3612
|
-
const init = { method, headers, signal: controller.signal };
|
|
3613
|
-
if (body !== undefined) {
|
|
3614
|
-
init.body = JSON.stringify(body);
|
|
3615
|
-
}
|
|
3616
|
-
return await fetch(url, init);
|
|
3617
|
-
}
|
|
3618
|
-
catch (err) {
|
|
3619
|
-
if (err instanceof Error && err.name === 'AbortError') {
|
|
3620
|
-
throw new Error(`YM API request timed out after ${timeoutMs / 1000}s: ${url}`);
|
|
3621
|
-
}
|
|
3622
|
-
throw err;
|
|
3623
|
-
}
|
|
3624
|
-
finally {
|
|
3625
|
-
clearTimeout(timeoutId);
|
|
3626
|
-
}
|
|
3627
|
-
}
|
|
3628
|
-
/** Wraps response.json() with a timeout to prevent indefinite hangs. */
|
|
3629
|
-
async JsonWithTimeout(response, timeoutMs) {
|
|
3630
|
-
return Promise.race([
|
|
3631
|
-
response.json(),
|
|
3632
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error(`response.json() timed out after ${timeoutMs}ms`)), timeoutMs)),
|
|
3633
|
-
]);
|
|
3634
|
-
}
|
|
3635
|
-
/** Refreshes session after 401 or timeout, updating headers in-place. */
|
|
3636
|
-
async RefreshSession(auth, headers) {
|
|
3637
|
-
this.InvalidateSession(auth.Config.ClientID);
|
|
3638
|
-
const newSessionId = await this.GetSession(auth.Config);
|
|
3639
|
-
auth.SessionID = newSessionId;
|
|
3640
|
-
headers['X-SS-ID'] = newSessionId;
|
|
3641
|
-
}
|
|
3642
|
-
/** Checks if an error is a timeout/abort error. */
|
|
3643
|
-
IsTimeoutError(err) {
|
|
3644
|
-
return err instanceof Error && (err.message.includes('timed out') || err.name === 'AbortError');
|
|
3645
|
-
}
|
|
3646
|
-
/** Calculates retry delay from Retry-After header or exponential backoff. */
|
|
3647
|
-
CalculateRetryDelay(response, attempt) {
|
|
3648
|
-
const retryAfter = parseInt(response.headers.get('Retry-After') ?? '0', 10);
|
|
3649
|
-
return retryAfter > 0 ? retryAfter * 1000 : Math.min(1000 * Math.pow(2, attempt), 30000);
|
|
3650
|
-
}
|
|
3651
|
-
/** Converts a fetch Response + parsed body into a RESTResponse. */
|
|
3652
|
-
BuildRESTResponse(response, body) {
|
|
3653
|
-
const headers = {};
|
|
3654
|
-
response.headers.forEach((v, k) => { headers[k.toLowerCase()] = v; });
|
|
3655
|
-
return { Status: response.status, Body: body, Headers: headers };
|
|
3656
|
-
}
|
|
3657
|
-
Sleep(ms) {
|
|
3658
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
3659
|
-
}
|
|
3660
|
-
// ─── Response helpers ────────────────────────────────────────────
|
|
3661
|
-
/** Checks for YM API-level errors in the response envelope. */
|
|
3662
|
-
CheckResponseError(json) {
|
|
3663
|
-
const rs = json['ResponseStatus'];
|
|
3664
|
-
if (rs?.ErrorCode && rs.ErrorCode !== 'None' && rs.ErrorCode !== '') {
|
|
3665
|
-
throw new Error(`YM API error: ${rs.Message ?? rs.ErrorCode}`);
|
|
3666
|
-
}
|
|
3667
|
-
}
|
|
3668
|
-
// ─── Parent-scoped endpoint traversal ────────────────────────────
|
|
3669
|
-
/**
|
|
3670
|
-
* Returns the /Ymc/ base URL for Career Center endpoints.
|
|
3671
|
-
*/
|
|
3672
|
-
GetYmcBaseURL(clientId) {
|
|
3673
|
-
return `${YM_API_BASE}/Ymc/${clientId}`;
|
|
3674
|
-
}
|
|
3675
|
-
/**
|
|
3676
|
-
* Fetches all event IDs by paginating the EventIDs endpoint.
|
|
3677
|
-
* Returns an array of event ID strings for use in parent-scoped fetches.
|
|
3678
|
-
*/
|
|
3679
|
-
async FetchAllEventIDs(auth, config) {
|
|
3680
|
-
const baseUrl = `${YM_API_BASE}/Ams/${config.ClientID}/EventIDs`;
|
|
3681
|
-
const headers = this.BuildHeaders(auth);
|
|
3682
|
-
const ids = [];
|
|
3683
|
-
let page = 1;
|
|
3684
|
-
try {
|
|
3685
|
-
while (true) {
|
|
3686
|
-
const url = `${baseUrl}?PageNumber=${page}&PageSize=500`;
|
|
3687
|
-
const resp = await this.MakeHTTPRequest(auth, url, 'GET', headers);
|
|
3688
|
-
if (resp.Status >= 400 || !resp.Body)
|
|
3689
|
-
break;
|
|
3690
|
-
const body = resp.Body;
|
|
3691
|
-
const list = (body['EventIDs'] ?? body['Ids'] ?? body['IDs'] ?? []);
|
|
3692
|
-
if (!Array.isArray(list) || list.length === 0)
|
|
3693
|
-
break;
|
|
3694
|
-
for (const item of list) {
|
|
3695
|
-
const id = typeof item === 'object' && item !== null
|
|
3696
|
-
? String(item['EventId'] ?? item['Id'] ?? item)
|
|
3697
|
-
: String(item);
|
|
3698
|
-
ids.push(id);
|
|
3699
|
-
}
|
|
3700
|
-
if (list.length < 500)
|
|
3701
|
-
break;
|
|
3702
|
-
page++;
|
|
3703
|
-
}
|
|
3704
|
-
}
|
|
3705
|
-
catch (err) {
|
|
3706
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
3707
|
-
console.warn(`[YM] FetchAllEventIDs failed: ${message} — skipping event-scoped objects`);
|
|
3708
|
-
return [];
|
|
3709
|
-
}
|
|
3710
|
-
console.log(`[YM] FetchAllEventIDs: found ${ids.length} event IDs`);
|
|
3711
|
-
return ids;
|
|
3712
|
-
}
|
|
3713
|
-
/**
|
|
3714
|
-
* Fetches all member/people IDs from the PeopleIDs endpoint.
|
|
3715
|
-
*/
|
|
3716
|
-
async FetchAllMemberIDs(auth, config) {
|
|
3717
|
-
const baseUrl = `${YM_API_BASE}/Ams/${config.ClientID}/PeopleIDs`;
|
|
3718
|
-
const headers = this.BuildHeaders(auth);
|
|
3719
|
-
const ids = [];
|
|
3720
|
-
let page = 1;
|
|
3721
|
-
try {
|
|
3722
|
-
while (true) {
|
|
3723
|
-
const url = `${baseUrl}?PageNumber=${page}&PageSize=500`;
|
|
3724
|
-
const resp = await this.MakeHTTPRequest(auth, url, 'GET', headers);
|
|
3725
|
-
if (resp.Status >= 400 || !resp.Body)
|
|
3726
|
-
break;
|
|
3727
|
-
const body = resp.Body;
|
|
3728
|
-
const list = (body['PeopleIDs'] ?? body['Ids'] ?? body['IDs'] ?? []);
|
|
3729
|
-
if (!Array.isArray(list) || list.length === 0)
|
|
3730
|
-
break;
|
|
3731
|
-
for (const item of list) {
|
|
3732
|
-
const id = typeof item === 'object' && item !== null
|
|
3733
|
-
? String(item['ProfileId'] ?? item['Id'] ?? item)
|
|
3734
|
-
: String(item);
|
|
3735
|
-
ids.push(id);
|
|
3736
|
-
}
|
|
3737
|
-
if (list.length < 500)
|
|
3738
|
-
break;
|
|
3739
|
-
page++;
|
|
3740
|
-
}
|
|
3741
|
-
}
|
|
3742
|
-
catch (err) {
|
|
3743
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
3744
|
-
console.warn(`[YM] FetchAllMemberIDs failed: ${message} — skipping member-scoped objects`);
|
|
3745
|
-
return [];
|
|
3746
|
-
}
|
|
3747
|
-
console.log(`[YM] FetchAllMemberIDs: found ${ids.length} member IDs`);
|
|
3748
|
-
return ids;
|
|
3749
|
-
}
|
|
3750
|
-
/**
|
|
3751
|
-
* Fetches all group IDs by calling the Groups endpoint and flattening
|
|
3752
|
-
* the nested GroupTypeList → Groups[].Id structure.
|
|
3753
|
-
*/
|
|
3754
|
-
async FetchAllGroupIDs(auth, _config) {
|
|
3755
|
-
try {
|
|
3756
|
-
const json = await this.MakeYMRequest(auth, 'Groups');
|
|
3757
|
-
const typeList = json['GroupTypeList'];
|
|
3758
|
-
if (!typeList || !Array.isArray(typeList)) {
|
|
3759
|
-
console.warn(`[YM] FetchAllGroupIDs: no GroupTypeList in Groups response`);
|
|
3760
|
-
return [];
|
|
3761
|
-
}
|
|
3762
|
-
const ids = [];
|
|
3763
|
-
for (const groupType of typeList) {
|
|
3764
|
-
for (const group of groupType.Groups ?? []) {
|
|
3765
|
-
if (group.Id !== undefined)
|
|
3766
|
-
ids.push(String(group.Id));
|
|
3767
|
-
}
|
|
3768
|
-
}
|
|
3769
|
-
console.log(`[YM] FetchAllGroupIDs: found ${ids.length} group IDs`);
|
|
3770
|
-
return ids;
|
|
3771
|
-
}
|
|
3772
|
-
catch (err) {
|
|
3773
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
3774
|
-
console.warn(`[YM] FetchAllGroupIDs failed: ${message} — skipping group-scoped objects`);
|
|
3775
|
-
return [];
|
|
3776
|
-
}
|
|
3777
|
-
}
|
|
3778
|
-
/**
|
|
3779
|
-
* Fetches parent IDs from a secondary list endpoint for 'Custom' parent-scoped objects.
|
|
3780
|
-
* Calls GET /Ams/{ClientID}/{sourcePath}, extracts the array at responseKey,
|
|
3781
|
-
* and returns the idField value from each item as a string.
|
|
3782
|
-
*
|
|
3783
|
-
* Results are NOT cached here — callers manage the cache via parentIdCache.
|
|
3784
|
-
*/
|
|
3785
|
-
async FetchCustomParentIDs(auth, config, sourcePath, responseKey, idField) {
|
|
3786
|
-
const url = `${YM_API_BASE}/Ams/${config.ClientID}/${sourcePath}`;
|
|
3787
|
-
const headers = this.BuildHeaders(auth);
|
|
3788
|
-
const resp = await this.MakeHTTPRequest(auth, url, 'GET', headers);
|
|
3789
|
-
if (resp.Status >= 400 || !resp.Body) {
|
|
3790
|
-
console.warn(`[YM] FetchCustomParentIDs: failed to fetch '${sourcePath}' (HTTP ${resp.Status})`);
|
|
3791
|
-
return [];
|
|
3792
|
-
}
|
|
3793
|
-
const body = resp.Body;
|
|
3794
|
-
const raw = body[responseKey];
|
|
3795
|
-
if (!Array.isArray(raw)) {
|
|
3796
|
-
console.warn(`[YM] FetchCustomParentIDs: '${sourcePath}' response has no array at key '${responseKey}'`);
|
|
3797
|
-
return [];
|
|
3798
|
-
}
|
|
3799
|
-
const ids = [];
|
|
3800
|
-
for (const item of raw) {
|
|
3801
|
-
const val = item[idField];
|
|
3802
|
-
if (val !== undefined && val !== null)
|
|
3803
|
-
ids.push(String(val));
|
|
3804
|
-
}
|
|
3805
|
-
console.log(`[YM] FetchCustomParentIDs: '${sourcePath}' → ${ids.length} IDs (field '${idField}')`);
|
|
3806
|
-
return ids;
|
|
3807
|
-
}
|
|
3808
|
-
/**
|
|
3809
|
-
* Fetches all records for a parent-scoped endpoint by:
|
|
3810
|
-
* 1. Enumerating all parent IDs (cached per sync run)
|
|
3811
|
-
* 2. Fetching child records for each parent ID
|
|
3812
|
-
* 3. Returning all records as a single batch with HasMore=false
|
|
3813
|
-
*
|
|
3814
|
-
* Parent IDs are cached in parentIdCache so subsequent calls for the same
|
|
3815
|
-
* parent type within a sync run don't re-fetch the ID list.
|
|
3816
|
-
*/
|
|
3817
|
-
async FetchParentScopedRecords(ctx, scope) {
|
|
3818
|
-
const companyIntegration = ctx.CompanyIntegration;
|
|
3819
|
-
const config = await this.ParseConfig(companyIntegration, ctx.ContextUser);
|
|
3820
|
-
const auth = await this.Authenticate(companyIntegration, ctx.ContextUser);
|
|
3821
|
-
const headers = this.BuildHeaders(auth);
|
|
3822
|
-
const isCustom = (s) => s.parentType === 'Custom';
|
|
3823
|
-
const cacheKey = isCustom(scope) ? `custom:${scope.idSourcePath}` : scope.parentType;
|
|
3824
|
-
let parentIds = this.parentIdCache.get(cacheKey);
|
|
3825
|
-
if (!parentIds) {
|
|
3826
|
-
if (scope.parentType === 'Event') {
|
|
3827
|
-
parentIds = await this.FetchAllEventIDs(auth, config);
|
|
3828
|
-
}
|
|
3829
|
-
else if (scope.parentType === 'Member') {
|
|
3830
|
-
parentIds = await this.FetchAllMemberIDs(auth, config);
|
|
3831
|
-
}
|
|
3832
|
-
else if (scope.parentType === 'Group') {
|
|
3833
|
-
parentIds = await this.FetchAllGroupIDs(auth, config);
|
|
3834
|
-
}
|
|
3835
|
-
else {
|
|
3836
|
-
const cs = scope;
|
|
3837
|
-
parentIds = await this.FetchCustomParentIDs(auth, config, cs.idSourcePath, cs.idResponseKey, cs.idField);
|
|
3838
|
-
}
|
|
3839
|
-
this.parentIdCache.set(cacheKey, parentIds);
|
|
3840
|
-
}
|
|
3841
|
-
if (parentIds.length === 0) {
|
|
3842
|
-
const sourceDesc = isCustom(scope) ? scope.idSourcePath
|
|
3843
|
-
: scope.parentType === 'Event' ? 'EventIDs'
|
|
3844
|
-
: scope.parentType === 'Group' ? 'Groups'
|
|
3845
|
-
: 'PeopleIDs';
|
|
3846
|
-
console.warn(`[YM] FetchParentScopedRecords: 0 ${scope.parentType} IDs found for '${ctx.ObjectName}' — check ${sourceDesc} endpoint`);
|
|
3847
|
-
return { Records: [], HasMore: false };
|
|
3848
|
-
}
|
|
3849
|
-
console.log(`[YM] FetchParentScopedRecords: fetching '${ctx.ObjectName}' for ${parentIds.length} ${scope.parentType} IDs`);
|
|
3850
|
-
const isYmc = YM_YMC_ENDPOINTS.has(ctx.ObjectName.toLowerCase());
|
|
3851
|
-
const baseUrl = isYmc
|
|
3852
|
-
? this.GetYmcBaseURL(config.ClientID)
|
|
3853
|
-
: `${YM_API_BASE}/Ams/${config.ClientID}`;
|
|
3854
|
-
const allRecords = [];
|
|
3855
|
-
let fetched = 0;
|
|
3856
|
-
for (const parentId of parentIds) {
|
|
3857
|
-
const childPath = scope.pathTemplate.replace('{parentId}', parentId);
|
|
3858
|
-
const url = `${baseUrl}/${childPath}`;
|
|
3859
|
-
try {
|
|
3860
|
-
const resp = await this.MakeHTTPRequest(auth, url, 'GET', headers);
|
|
3861
|
-
if (resp.Status >= 400 || !resp.Body)
|
|
3862
|
-
continue;
|
|
3863
|
-
const raw = resp.Body;
|
|
3864
|
-
// Resolve records from the response shape. YM parent-scoped endpoints
|
|
3865
|
-
// can return three shapes:
|
|
3866
|
-
// A) A top-level array (rare) — `[{...}, {...}]`
|
|
3867
|
-
// B) A wrapper with a nested array (most common for list-per-parent) —
|
|
3868
|
-
// `{ EventId, Sessions: [...], ...other wrapper fields }`
|
|
3869
|
-
// C) A single detail object (for per-parent detail endpoints) —
|
|
3870
|
-
// `{ SessionId, EventId, ... }` directly.
|
|
3871
|
-
// For (B), we emit inner array items — NOT the wrapper — so the PK
|
|
3872
|
-
// (SessionId, TicketId, etc.) is actually present on each record. If the
|
|
3873
|
-
// wrapper's nested array is empty, we emit 0 records for that parent
|
|
3874
|
-
// rather than falling back to the wrapper (which has no PK and would be
|
|
3875
|
-
// dropped by EnsurePrimaryKeys).
|
|
3876
|
-
let records = [];
|
|
3877
|
-
let hasArrayProperty = false;
|
|
3878
|
-
if (Array.isArray(resp.Body)) {
|
|
3879
|
-
records = resp.Body;
|
|
3880
|
-
hasArrayProperty = true;
|
|
3881
|
-
}
|
|
3882
|
-
else {
|
|
3883
|
-
for (const val of Object.values(raw)) {
|
|
3884
|
-
if (Array.isArray(val)) {
|
|
3885
|
-
hasArrayProperty = true;
|
|
3886
|
-
if (val.length > 0) {
|
|
3887
|
-
records = val;
|
|
3888
|
-
break;
|
|
3889
|
-
}
|
|
3890
|
-
}
|
|
3891
|
-
}
|
|
3892
|
-
// Only treat whole response as a single record when there's NO
|
|
3893
|
-
// array property anywhere — i.e., genuinely shape (C).
|
|
3894
|
-
if (!hasArrayProperty && Object.keys(raw).length > 0) {
|
|
3895
|
-
records = [this.FilterMetadataKeys(raw)];
|
|
3896
|
-
}
|
|
3897
|
-
}
|
|
3898
|
-
for (const rec of records) {
|
|
3899
|
-
const sanitized = this.SanitizeDateFields({ ...rec, _parentId: parentId });
|
|
3900
|
-
const flattened = this.FlattenYMRecord(sanitized);
|
|
3901
|
-
// For Locations: locationCode is the PK (NOT NULL in DB) but is absent on many YM
|
|
3902
|
-
// records (254/330 in production). Fill it with locationName as fallback so inserts
|
|
3903
|
-
// always succeed. Build a stable countryId|locationCode ExternalID for deduplication.
|
|
3904
|
-
let locationExternalId;
|
|
3905
|
-
if (ctx.ObjectName.toLowerCase() === 'locations') {
|
|
3906
|
-
const locName = flattened['locationName'];
|
|
3907
|
-
if (!flattened['locationCode']) {
|
|
3908
|
-
// PK is NOT NULL — fill with locationName, or countryId_index as last resort
|
|
3909
|
-
flattened['locationCode'] = locName ?? `${parentId}_${allRecords.length}`;
|
|
3910
|
-
}
|
|
3911
|
-
const countryId = flattened['countryId'] ?? parentId;
|
|
3912
|
-
locationExternalId = `${countryId}|${String(flattened['locationCode'])}`;
|
|
3913
|
-
}
|
|
3914
|
-
const externalId = String(locationExternalId ??
|
|
3915
|
-
flattened['Id'] ?? flattened['ID'] ?? flattened['ProfileID'] ??
|
|
3916
|
-
flattened['EventId'] ?? flattened['SessionId'] ?? `${parentId}_${fetched}_${allRecords.length}`);
|
|
3917
|
-
allRecords.push({ Fields: flattened, ExternalID: externalId, ObjectType: ctx.ObjectName });
|
|
3918
|
-
}
|
|
3919
|
-
fetched++;
|
|
3920
|
-
}
|
|
3921
|
-
catch (err) {
|
|
3922
|
-
console.warn(`[YM] FetchParentScopedRecords: error fetching '${ctx.ObjectName}' for ${scope.parentType} ${parentId}: ${err}`);
|
|
3923
|
-
}
|
|
3924
|
-
}
|
|
3925
|
-
console.log(`[YM] FetchParentScopedRecords: '${ctx.ObjectName}' — ${allRecords.length} records from ${fetched}/${parentIds.length} parents`);
|
|
3926
|
-
return { Records: allRecords, HasMore: false };
|
|
3927
|
-
}
|
|
3928
|
-
/**
|
|
3929
|
-
* Flattens YM custom field DTOs into top-level fields.
|
|
3930
|
-
* Handles two shapes from the research:
|
|
3931
|
-
* Simple: [{ Code: 'field_code', Response: 'value' }]
|
|
3932
|
-
* Complex: [{ ExportLabel: 'label', CustomFieldValue: { FieldCode: 'code', Values: [{ Value: 'v' }] } }]
|
|
3933
|
-
*/
|
|
3934
|
-
FlattenYMRecord(record) {
|
|
3935
|
-
const result = { ...record };
|
|
3936
|
-
for (const [key, value] of Object.entries(record)) {
|
|
3937
|
-
if (!Array.isArray(value))
|
|
3938
|
-
continue;
|
|
3939
|
-
const arr = value;
|
|
3940
|
-
if (arr.length === 0)
|
|
3941
|
-
continue;
|
|
3942
|
-
const first = arr[0];
|
|
3943
|
-
if (typeof first !== 'object' || first === null)
|
|
3944
|
-
continue;
|
|
3945
|
-
// Simple shape: { Code, Response }
|
|
3946
|
-
if ('Code' in first && 'Response' in first) {
|
|
3947
|
-
delete result[key];
|
|
3948
|
-
for (const item of arr) {
|
|
3949
|
-
const code = String(item['Code'] ?? '');
|
|
3950
|
-
if (code)
|
|
3951
|
-
result[`cf_${code}`] = item['Response'] ?? null;
|
|
3952
|
-
}
|
|
3953
|
-
continue;
|
|
3954
|
-
}
|
|
3955
|
-
// Complex shape: { ExportLabel, CustomFieldValue: { FieldCode, Values: [{ Value }] } }
|
|
3956
|
-
if ('ExportLabel' in first || 'CustomFieldValue' in first) {
|
|
3957
|
-
delete result[key];
|
|
3958
|
-
for (const item of arr) {
|
|
3959
|
-
const cfv = item['CustomFieldValue'];
|
|
3960
|
-
const code = cfv ? String(cfv['FieldCode'] ?? item['ExportLabel'] ?? '') : String(item['ExportLabel'] ?? '');
|
|
3961
|
-
if (!code)
|
|
3962
|
-
continue;
|
|
3963
|
-
const values = cfv?.['Values'];
|
|
3964
|
-
if (Array.isArray(values) && values.length > 0) {
|
|
3965
|
-
const firstVal = values[0];
|
|
3966
|
-
result[`cf_${code}`] = firstVal['Value'] ?? null;
|
|
3967
|
-
}
|
|
3968
|
-
else {
|
|
3969
|
-
result[`cf_${code}`] = null;
|
|
3970
|
-
}
|
|
3971
|
-
}
|
|
3972
|
-
}
|
|
3973
|
-
}
|
|
3974
|
-
return result;
|
|
3975
|
-
}
|
|
3976
|
-
/** Filters out YM API metadata keys that shouldn't be stored as field data. */
|
|
3977
|
-
FilterMetadataKeys(data) {
|
|
3978
|
-
const result = {};
|
|
3979
|
-
for (const [key, value] of Object.entries(data)) {
|
|
3980
|
-
if (!METADATA_KEYS.has(key)) {
|
|
3981
|
-
result[key] = value;
|
|
3982
|
-
}
|
|
3983
|
-
}
|
|
3984
|
-
return result;
|
|
3985
|
-
}
|
|
3986
|
-
/**
|
|
3987
|
-
* Estimates record count from a raw response body.
|
|
3988
|
-
* Used by ExtractPaginationInfo to determine if more pages exist.
|
|
3989
|
-
*/
|
|
3990
|
-
EstimateRecordCount(rawBody) {
|
|
3991
|
-
if (Array.isArray(rawBody))
|
|
3992
|
-
return rawBody.length;
|
|
3993
|
-
if (typeof rawBody === 'object' && rawBody !== null) {
|
|
3994
|
-
for (const value of Object.values(rawBody)) {
|
|
3995
|
-
if (Array.isArray(value))
|
|
3996
|
-
return value.length;
|
|
3997
|
-
}
|
|
3998
|
-
}
|
|
3999
|
-
return 0;
|
|
4000
|
-
}
|
|
4001
|
-
/**
|
|
4002
|
-
* General-purpose PK safety net: filters out records where a declared PK field is null/missing
|
|
4003
|
-
* and cannot be resolved via case-insensitive field name matching.
|
|
4004
|
-
*
|
|
4005
|
-
* Strategy per PK field:
|
|
4006
|
-
* 1. Field is already present and non-null → keep record as-is.
|
|
4007
|
-
* 2. Case-insensitive match finds the field under a different casing → copy the value.
|
|
4008
|
-
* 3. No match at all → DROP the record and log a warning.
|
|
4009
|
-
*
|
|
4010
|
-
* Dropping is intentional: inserting with a garbage or positional PK creates phantom rows
|
|
4011
|
-
* that can never be correctly updated on subsequent incremental syncs.
|
|
4012
|
-
*
|
|
4013
|
-
* Returns a new array with only the records that have valid PKs.
|
|
4014
|
-
*/
|
|
4015
|
-
EnsurePrimaryKeys(records, ctx) {
|
|
4016
|
-
// Look up the declared PK field names from cached metadata.
|
|
4017
|
-
let pkFieldNames = [];
|
|
4018
|
-
try {
|
|
4019
|
-
const integrationID = ctx.CompanyIntegration.IntegrationID;
|
|
4020
|
-
const obj = this.GetCachedObject(integrationID, ctx.ObjectName);
|
|
4021
|
-
const fields = this.GetCachedFields(obj.ID);
|
|
4022
|
-
pkFieldNames = fields
|
|
4023
|
-
.filter(f => f.IsPrimaryKey)
|
|
4024
|
-
.sort((a, b) => a.Sequence - b.Sequence)
|
|
4025
|
-
.map(f => f.Name);
|
|
4026
|
-
}
|
|
4027
|
-
catch {
|
|
4028
|
-
// Object or fields not in cache yet — pass through unchanged.
|
|
4029
|
-
return records;
|
|
4030
|
-
}
|
|
4031
|
-
if (pkFieldNames.length === 0)
|
|
4032
|
-
return records;
|
|
4033
|
-
const valid = [];
|
|
4034
|
-
for (const record of records) {
|
|
4035
|
-
const raw = record.Fields;
|
|
4036
|
-
let drop = false;
|
|
4037
|
-
for (const pkField of pkFieldNames) {
|
|
4038
|
-
if (raw[pkField] != null)
|
|
4039
|
-
continue; // already present
|
|
4040
|
-
// Case-insensitive search among the record's own keys.
|
|
4041
|
-
const recordKeys = Object.keys(raw);
|
|
4042
|
-
const matchKey = recordKeys.find(k => k.toLowerCase() === pkField.toLowerCase());
|
|
4043
|
-
if (matchKey && raw[matchKey] != null) {
|
|
4044
|
-
raw[pkField] = raw[matchKey];
|
|
4045
|
-
continue;
|
|
4046
|
-
}
|
|
4047
|
-
// No recoverable value — drop this record.
|
|
4048
|
-
console.warn(`[YM] '${ctx.ObjectName}': dropping record with null PK field '${pkField}'. Record keys: ${recordKeys.join(', ')}`);
|
|
4049
|
-
drop = true;
|
|
4050
|
-
break;
|
|
4051
|
-
}
|
|
4052
|
-
if (!drop)
|
|
4053
|
-
valid.push(record);
|
|
4054
|
-
}
|
|
4055
|
-
return valid;
|
|
4056
|
-
}
|
|
4057
|
-
};
|
|
4058
|
-
YourMembershipConnector = YourMembershipConnector_1 = __decorate([
|
|
4059
|
-
RegisterClass(BaseIntegrationConnector, 'YourMembershipConnector')
|
|
4060
|
-
], YourMembershipConnector);
|
|
4061
|
-
export { YourMembershipConnector };
|
|
4062
|
-
//# sourceMappingURL=YourMembershipConnector.js.map
|