@api-client/core 0.18.24 → 0.18.26
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/build/src/modeling/DomainEntity.d.ts +6 -1
- package/build/src/modeling/DomainEntity.d.ts.map +1 -1
- package/build/src/modeling/DomainEntity.js +24 -5
- package/build/src/modeling/DomainEntity.js.map +1 -1
- package/build/src/modeling/Semantics.d.ts +254 -0
- package/build/src/modeling/Semantics.d.ts.map +1 -1
- package/build/src/modeling/Semantics.js +328 -0
- package/build/src/modeling/Semantics.js.map +1 -1
- package/build/src/modeling/definitions/Email.js +1 -1
- package/build/src/modeling/definitions/Email.js.map +1 -1
- package/build/src/modeling/definitions/Password.d.ts.map +1 -1
- package/build/src/modeling/definitions/Password.js +1 -3
- package/build/src/modeling/definitions/Password.js.map +1 -1
- package/build/src/modeling/helpers/Intelisense.d.ts +7 -7
- package/build/src/modeling/helpers/Intelisense.d.ts.map +1 -1
- package/build/src/modeling/helpers/Intelisense.js +24 -58
- package/build/src/modeling/helpers/Intelisense.js.map +1 -1
- package/build/src/modeling/templates/meta/blog-publishing-platform.json +1 -1
- package/build/src/modeling/templates/meta/financial-services-platform.json +1 -1
- package/build/src/modeling/templates/meta/index.d.ts +1 -1
- package/build/src/modeling/templates/meta/index.js +1 -1
- package/build/src/modeling/templates/meta/index.js.map +1 -1
- package/build/src/modeling/templates/meta/iot-smart-home-platform.json +1 -1
- package/build/src/modeling/templates/verticals/business-services/financial-services-domain.d.ts.map +1 -1
- package/build/src/modeling/templates/verticals/business-services/financial-services-domain.js +248 -63
- package/build/src/modeling/templates/verticals/business-services/financial-services-domain.js.map +1 -1
- package/build/src/modeling/templates/verticals/technology-media/blog-domain.js +5 -5
- package/build/src/modeling/templates/verticals/technology-media/blog-domain.js.map +1 -1
- package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.d.ts.map +1 -1
- package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.js +2 -0
- package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.js.map +1 -1
- package/build/src/modeling/validation/postgresql.d.ts.map +1 -1
- package/build/src/modeling/validation/postgresql.js +0 -1
- package/build/src/modeling/validation/postgresql.js.map +1 -1
- package/build/src/runtime/modeling/Semantics.d.ts +84 -0
- package/build/src/runtime/modeling/Semantics.d.ts.map +1 -0
- package/build/src/runtime/modeling/Semantics.js +124 -0
- package/build/src/runtime/modeling/Semantics.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/data/models/example-generator-api.json +8 -8
- package/package.json +1 -1
- package/src/modeling/DomainEntity.ts +27 -5
- package/src/modeling/Semantics.ts +493 -0
- package/src/modeling/definitions/Email.ts +1 -1
- package/src/modeling/definitions/Password.ts +1 -3
- package/src/modeling/helpers/Intelisense.ts +33 -65
- package/src/modeling/templates/meta/blog-publishing-platform.json +1 -1
- package/src/modeling/templates/meta/financial-services-platform.json +1 -1
- package/src/modeling/templates/meta/iot-smart-home-platform.json +1 -1
- package/src/modeling/templates/verticals/business-services/financial-services-domain.ts +285 -65
- package/src/modeling/templates/verticals/technology-media/blog-domain.ts +5 -5
- package/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.ts +2 -0
- package/src/modeling/validation/postgresql.ts +0 -1
- package/src/runtime/modeling/Semantics.ts +196 -0
- package/tests/unit/modeling/client_ip_address_semantic.spec.ts +71 -0
- package/tests/unit/modeling/definitions/password.spec.ts +0 -2
- package/tests/unit/modeling/domain_entity_parents.spec.ts +243 -0
- package/tests/unit/modeling/semantic_runtime.spec.ts +113 -0
- package/tests/unit/modeling/semantics.spec.ts +68 -0
|
@@ -147,9 +147,7 @@ export const DEFAULT_PASSWORD_CONFIG: PasswordConfig = {
|
|
|
147
147
|
requireNumbers: true,
|
|
148
148
|
requireUppercase: true,
|
|
149
149
|
requireLowercase: true,
|
|
150
|
-
|
|
151
|
-
saltRounds: 12,
|
|
152
|
-
maxAge: undefined,
|
|
150
|
+
minLength: 8,
|
|
153
151
|
preventReuse: false,
|
|
154
152
|
preventReuseCount: 5,
|
|
155
153
|
allowCommonPasswords: false,
|
|
@@ -4,12 +4,12 @@ import type { DomainProperty } from '../DomainProperty.js'
|
|
|
4
4
|
import type { DomainAssociation } from '../DomainAssociation.js'
|
|
5
5
|
import type { IThing } from '../../models/Thing.js'
|
|
6
6
|
import { SemanticType } from '../Semantics.js'
|
|
7
|
-
import { createEmailSemantic } from '../definitions/Email.js'
|
|
8
|
-
import { createPasswordSemantic } from '../definitions/Password.js'
|
|
7
|
+
import { createEmailSemantic, DEFAULT_EMAIL_CONFIG } from '../definitions/Email.js'
|
|
8
|
+
import { createPasswordSemantic, DEFAULT_PASSWORD_CONFIG } from '../definitions/Password.js'
|
|
9
9
|
import { createPhoneSemantic } from '../definitions/Phone.js'
|
|
10
10
|
import { createPublicUniqueNameSemantic, DEFAULT_PUBLIC_UNIQUE_NAME_CONFIG } from '../definitions/PublicUniqueName.js'
|
|
11
11
|
import { createDescriptionSemantic } from '../definitions/Description.js'
|
|
12
|
-
import {
|
|
12
|
+
import { CURRENCY_PRESETS } from '../definitions/Currency.js'
|
|
13
13
|
import { createStatusSemantic } from '../definitions/Status.js'
|
|
14
14
|
import { SKU_PRESETS } from '../definitions/SKU.js'
|
|
15
15
|
|
|
@@ -95,7 +95,7 @@ export function addAutoField(entity: DomainEntity, autoField: string): DomainEle
|
|
|
95
95
|
* @param entity The entity to which the ID field will be added.
|
|
96
96
|
* @returns The added primary field property.
|
|
97
97
|
*/
|
|
98
|
-
export function addIdField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
98
|
+
export function addIdField(entity: DomainEntity, info: Partial<IThing> = {}): DomainProperty {
|
|
99
99
|
const existing = findIdField(entity, true)
|
|
100
100
|
if (existing) {
|
|
101
101
|
// If the ID field already exists, return it.
|
|
@@ -121,7 +121,7 @@ export function addIdField(entity: DomainEntity, info: Partial<IThing> = {}): Do
|
|
|
121
121
|
* @param entity The entity to which the email field will be added.
|
|
122
122
|
* @returns The added email field property.
|
|
123
123
|
*/
|
|
124
|
-
export function addEmailField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
124
|
+
export function addEmailField(entity: DomainEntity, info: Partial<IThing> = {}): DomainProperty {
|
|
125
125
|
const existing = findEmailField(entity, true)
|
|
126
126
|
if (existing) {
|
|
127
127
|
return existing
|
|
@@ -131,13 +131,8 @@ export function addEmailField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
|
131
131
|
type: 'string',
|
|
132
132
|
required: true,
|
|
133
133
|
index: true,
|
|
134
|
-
semantics: [
|
|
135
|
-
createEmailSemantic({
|
|
136
|
-
requireVerification: true,
|
|
137
|
-
verificationMethod: 'email',
|
|
138
|
-
}),
|
|
139
|
-
],
|
|
140
134
|
})
|
|
135
|
+
prop.addSemantic(createEmailSemantic(DEFAULT_EMAIL_CONFIG))
|
|
141
136
|
return prop
|
|
142
137
|
}
|
|
143
138
|
|
|
@@ -149,7 +144,7 @@ export function addEmailField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
|
149
144
|
* @param info Additional information for the password field.
|
|
150
145
|
* @returns The added password field property.
|
|
151
146
|
*/
|
|
152
|
-
export function addPasswordField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
147
|
+
export function addPasswordField(entity: DomainEntity, info: Partial<IThing> = {}): DomainProperty {
|
|
153
148
|
const existing = findPasswordField(entity, true)
|
|
154
149
|
if (existing) {
|
|
155
150
|
return existing
|
|
@@ -158,16 +153,8 @@ export function addPasswordField(entity: DomainEntity, info: Partial<IThing> = {
|
|
|
158
153
|
info: { name: 'password', displayName: 'Password', ...info },
|
|
159
154
|
type: 'string',
|
|
160
155
|
required: true,
|
|
161
|
-
semantics: [
|
|
162
|
-
createPasswordSemantic({
|
|
163
|
-
requireSpecialChars: true,
|
|
164
|
-
requireNumbers: true,
|
|
165
|
-
requireUppercase: true,
|
|
166
|
-
requireLowercase: true,
|
|
167
|
-
minLength: 8,
|
|
168
|
-
}),
|
|
169
|
-
],
|
|
170
156
|
})
|
|
157
|
+
prop.addSemantic(createPasswordSemantic(DEFAULT_PASSWORD_CONFIG))
|
|
171
158
|
return prop
|
|
172
159
|
}
|
|
173
160
|
|
|
@@ -177,7 +164,7 @@ export function addPasswordField(entity: DomainEntity, info: Partial<IThing> = {
|
|
|
177
164
|
* The version field is used to track the version of the entity.
|
|
178
165
|
* @returns The added version field property.
|
|
179
166
|
*/
|
|
180
|
-
export function addVersionField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
167
|
+
export function addVersionField(entity: DomainEntity, info: Partial<IThing> = {}): DomainProperty {
|
|
181
168
|
const existing = findVersionField(entity, true)
|
|
182
169
|
if (existing) {
|
|
183
170
|
// If the version field already exists, return it.
|
|
@@ -196,7 +183,7 @@ export function addVersionField(entity: DomainEntity, info: Partial<IThing> = {}
|
|
|
196
183
|
return prop
|
|
197
184
|
}
|
|
198
185
|
|
|
199
|
-
export function addNameField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
186
|
+
export function addNameField(entity: DomainEntity, info: Partial<IThing> = {}): DomainProperty {
|
|
200
187
|
const existing = findNameField(entity, true)
|
|
201
188
|
if (existing) {
|
|
202
189
|
return existing
|
|
@@ -227,7 +214,7 @@ export function addNameField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
|
227
214
|
* @param entity The entity to which the description field will be added.
|
|
228
215
|
* @returns The added description field property.
|
|
229
216
|
*/
|
|
230
|
-
export function addDescriptionField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
217
|
+
export function addDescriptionField(entity: DomainEntity, info: Partial<IThing> = {}): DomainProperty {
|
|
231
218
|
const existing = findDescriptionField(entity, true)
|
|
232
219
|
if (existing) {
|
|
233
220
|
return existing
|
|
@@ -235,8 +222,8 @@ export function addDescriptionField(entity: DomainEntity, info: Partial<IThing>
|
|
|
235
222
|
const prop = entity.addProperty({
|
|
236
223
|
info: { name: 'description', displayName: 'Description', ...info },
|
|
237
224
|
type: 'string',
|
|
238
|
-
semantics: [createDescriptionSemantic()],
|
|
239
225
|
})
|
|
226
|
+
prop.addSemantic(createDescriptionSemantic())
|
|
240
227
|
return prop
|
|
241
228
|
}
|
|
242
229
|
|
|
@@ -259,7 +246,7 @@ export function addDescriptionField(entity: DomainEntity, info: Partial<IThing>
|
|
|
259
246
|
* @param info Additional information about the field.
|
|
260
247
|
* @returns The added status field property.
|
|
261
248
|
*/
|
|
262
|
-
export function addStatusField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
249
|
+
export function addStatusField(entity: DomainEntity, info: Partial<IThing> = {}): DomainProperty {
|
|
263
250
|
const existing = findStatusField(entity, true)
|
|
264
251
|
if (existing) {
|
|
265
252
|
return existing
|
|
@@ -603,15 +590,15 @@ export function addPhoneField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
|
603
590
|
info: { name: 'phone', displayName: 'Phone Number', ...info },
|
|
604
591
|
type: 'string',
|
|
605
592
|
index: true,
|
|
606
|
-
semantics: [
|
|
607
|
-
createPhoneSemantic({
|
|
608
|
-
format: 'international',
|
|
609
|
-
requireCountryCode: true,
|
|
610
|
-
requireVerification: true,
|
|
611
|
-
verificationMethod: 'sms',
|
|
612
|
-
}),
|
|
613
|
-
],
|
|
614
593
|
})
|
|
594
|
+
prop.addSemantic(
|
|
595
|
+
createPhoneSemantic({
|
|
596
|
+
format: 'international',
|
|
597
|
+
requireCountryCode: true,
|
|
598
|
+
requireVerification: true,
|
|
599
|
+
verificationMethod: 'sms',
|
|
600
|
+
})
|
|
601
|
+
)
|
|
615
602
|
return prop
|
|
616
603
|
}
|
|
617
604
|
|
|
@@ -640,8 +627,8 @@ export function addAvatarUrlField(entity: DomainEntity, info: Partial<IThing> =
|
|
|
640
627
|
const prop = entity.addProperty({
|
|
641
628
|
info: { name: 'avatar_url', displayName: 'Avatar URL', ...info },
|
|
642
629
|
type: 'string',
|
|
643
|
-
semantics: [{ id: SemanticType.ImageURL }],
|
|
644
630
|
})
|
|
631
|
+
prop.addSemantic({ id: SemanticType.ImageURL })
|
|
645
632
|
return prop
|
|
646
633
|
}
|
|
647
634
|
|
|
@@ -676,8 +663,8 @@ export function addPublicUniqueNameField(entity: DomainEntity, info: Partial<ITh
|
|
|
676
663
|
index: true,
|
|
677
664
|
required: true,
|
|
678
665
|
unique: true,
|
|
679
|
-
semantics: [createPublicUniqueNameSemantic(DEFAULT_PUBLIC_UNIQUE_NAME_CONFIG)],
|
|
680
666
|
})
|
|
667
|
+
prop.addSemantic(createPublicUniqueNameSemantic(DEFAULT_PUBLIC_UNIQUE_NAME_CONFIG))
|
|
681
668
|
return prop
|
|
682
669
|
}
|
|
683
670
|
|
|
@@ -707,8 +694,8 @@ export function addSkuField(entity: DomainEntity, info: Partial<IThing> = {}): D
|
|
|
707
694
|
type: 'string',
|
|
708
695
|
required: true,
|
|
709
696
|
unique: true,
|
|
710
|
-
semantics: [{ ...SKU_PRESETS.PRODUCT_STANDARD }],
|
|
711
697
|
})
|
|
698
|
+
prop.addSemantic({ ...SKU_PRESETS.PRODUCT_STANDARD })
|
|
712
699
|
return prop
|
|
713
700
|
}
|
|
714
701
|
|
|
@@ -748,16 +735,8 @@ export function addPriceField(entity: DomainEntity, info: Partial<IThing> = {}):
|
|
|
748
735
|
},
|
|
749
736
|
},
|
|
750
737
|
],
|
|
751
|
-
semantics: [
|
|
752
|
-
createCurrencySemantic({
|
|
753
|
-
storageFormat: 'integer_cents',
|
|
754
|
-
defaultCurrency: 'USD',
|
|
755
|
-
decimalPlaces: 2,
|
|
756
|
-
allowNegative: false,
|
|
757
|
-
validateCurrencyCode: true,
|
|
758
|
-
}),
|
|
759
|
-
],
|
|
760
738
|
})
|
|
739
|
+
prop.addSemantic({ ...CURRENCY_PRESETS.USD_CENTS })
|
|
761
740
|
return prop
|
|
762
741
|
}
|
|
763
742
|
|
|
@@ -843,7 +822,9 @@ export function addImagesField(entity: DomainEntity, info: Partial<IThing> = {})
|
|
|
843
822
|
info: { name: 'images', displayName: 'Images', ...info },
|
|
844
823
|
type: 'string',
|
|
845
824
|
multiple: true,
|
|
846
|
-
|
|
825
|
+
})
|
|
826
|
+
prop.addSemantic({
|
|
827
|
+
id: SemanticType.ImageURL,
|
|
847
828
|
})
|
|
848
829
|
return prop
|
|
849
830
|
}
|
|
@@ -880,7 +861,6 @@ export function addCustomStatusField(
|
|
|
880
861
|
info: { name: 'status', displayName: 'Status', ...info },
|
|
881
862
|
type: 'string',
|
|
882
863
|
required: true,
|
|
883
|
-
semantics: [createStatusSemantic()],
|
|
884
864
|
schema: {
|
|
885
865
|
enum: enumValues,
|
|
886
866
|
defaultValue: {
|
|
@@ -889,6 +869,7 @@ export function addCustomStatusField(
|
|
|
889
869
|
},
|
|
890
870
|
},
|
|
891
871
|
})
|
|
872
|
+
prop.addSemantic(createStatusSemantic())
|
|
892
873
|
return prop
|
|
893
874
|
}
|
|
894
875
|
|
|
@@ -1008,15 +989,8 @@ export function addUnitPriceField(entity: DomainEntity, info: Partial<IThing> =
|
|
|
1008
989
|
info: { name: 'unitPrice', displayName: 'Unit Price', ...info },
|
|
1009
990
|
type: 'number',
|
|
1010
991
|
required: true,
|
|
1011
|
-
semantics: [
|
|
1012
|
-
createCurrencySemantic({
|
|
1013
|
-
storageFormat: 'integer_cents',
|
|
1014
|
-
defaultCurrency: 'USD',
|
|
1015
|
-
decimalPlaces: 2,
|
|
1016
|
-
allowNegative: false,
|
|
1017
|
-
}),
|
|
1018
|
-
],
|
|
1019
992
|
})
|
|
993
|
+
prop.addSemantic({ ...CURRENCY_PRESETS.USD_CENTS })
|
|
1020
994
|
return prop
|
|
1021
995
|
}
|
|
1022
996
|
|
|
@@ -1029,7 +1003,7 @@ export function addCurrencyAmountField(
|
|
|
1029
1003
|
displayName: string,
|
|
1030
1004
|
info: Partial<IThing> = {}
|
|
1031
1005
|
): DomainProperty {
|
|
1032
|
-
|
|
1006
|
+
const prop = entity.addProperty({
|
|
1033
1007
|
info: {
|
|
1034
1008
|
name: fieldName,
|
|
1035
1009
|
displayName,
|
|
@@ -1037,15 +1011,9 @@ export function addCurrencyAmountField(
|
|
|
1037
1011
|
},
|
|
1038
1012
|
type: 'number',
|
|
1039
1013
|
required: true,
|
|
1040
|
-
semantics: [
|
|
1041
|
-
createCurrencySemantic({
|
|
1042
|
-
storageFormat: 'integer_cents',
|
|
1043
|
-
defaultCurrency: 'USD',
|
|
1044
|
-
decimalPlaces: 2,
|
|
1045
|
-
allowNegative: false,
|
|
1046
|
-
}),
|
|
1047
|
-
],
|
|
1048
1014
|
})
|
|
1015
|
+
prop.addSemantic({ ...CURRENCY_PRESETS.USD_CENTS })
|
|
1016
|
+
return prop
|
|
1049
1017
|
}
|
|
1050
1018
|
|
|
1051
1019
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"blog-publishing-platform","name":"Blog Publishing Platform","description":"A comprehensive content management and publishing platform for blogs, magazines, and digital publications. Includes content management, user roles, publishing workflow, and social features.","createdAt":"2025-07-27T21:14:57.328Z","updatedAt":"2025-07-27T21:14:57.328Z","version":"1.0.0","author":"API Now! Core Team","tags":["blog","cms","publishing","content","media","editorial"],"structure":{"domain":{"name":"Blog Publishing Platform","description":"A comprehensive content management and publishing platform for blogs, magazines, and digital publications","totalEntities":8,"totalProperties":68,"totalAssociations":14},"namespaces":[{"name":"ContentManagement","displayName":"Content Management","description":"Core content creation, editing, and organization features","modelCount":2,"entityCount":4,"models":[{"name":"Publications","displayName":"Publications Management","description":"Individual blogs, magazines, or publications within the platform","entityCount":1,"entities":[{"name":"publication","displayName":"Publication","description":"Individual blog or publication site","propertyCount":8,"associationCount":0,"properties":[{"name":"id","displayName":"Publication ID","description":"Unique identifier for the publication","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"name","displayName":"Publication Name","description":"Display name of the publication","type":"string","semantics":["Semantic#Title"]},{"name":"slug","displayName":"URL Slug","description":"URL-friendly identifier for the publication","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]},{"name":"description","displayName":"Description","description":"Publication description and tagline","type":"string","semantics":["Semantic#Description"]},{"name":"domain","displayName":"Custom Domain","description":"Custom domain name for the publication","type":"string","semantics":[]},{"name":"logo_url","displayName":"Logo URL","description":"URL to publication logo image","type":"string","semantics":["Semantic#ImageURL"]},{"name":"status","displayName":"Publication Status","description":"Current status of the publication","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","suspended","archived"],"defaultValue":"active"},{"name":"created_at","displayName":"Created At","description":"When the publication was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]}]},{"name":"Content","displayName":"Content Management","description":"Posts, pages, and other content types","entityCount":3,"entities":[{"name":"category","displayName":"Content Category","description":"Content categorization for organization and navigation","propertyCount":5,"associationCount":2,"properties":[{"name":"id","displayName":"Category ID","description":"Unique identifier for the category","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"name","displayName":"Category Name","description":"Display name of the category","type":"string","semantics":["Semantic#Title"]},{"name":"slug","displayName":"URL Slug","description":"URL-friendly identifier for the category","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]},{"name":"description","displayName":"Description","description":"Category description","type":"string","semantics":["Semantic#Description"]},{"name":"color","displayName":"Color","description":"Theme color for the category","type":"string","semantics":[]}],"associations":[{"name":"publication","displayName":"Publication","description":"Publication this category belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"},{"name":"parentCategory","displayName":"Parent Category","description":"Parent category for hierarchical organization","required":false,"multiple":false,"targetEntities":["category"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"Tag","displayName":"Content Tag","description":"Tags for flexible content labeling and discovery","propertyCount":3,"associationCount":1,"properties":[{"name":"id","displayName":"Tag ID","description":"Unique identifier for the tag","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"name","displayName":"Tag Name","description":"Display name of the tag","type":"string","semantics":["Semantic#Title"]},{"name":"slug","displayName":"URL Slug","description":"URL-friendly identifier for the tag","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]}],"associations":[{"name":"publication","displayName":"Publication","description":"Publication this tag belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"Post","displayName":"Blog Post","description":"Individual blog posts and articles","propertyCount":16,"associationCount":4,"properties":[{"name":"id","displayName":"Post ID","description":"Unique identifier for the post","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"title","displayName":"Post Title","description":"Title of the blog post","type":"string","required":true,"semantics":["Semantic#Title"]},{"name":"slug","displayName":"URL Slug","description":"URL-friendly identifier for the post","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]},{"name":"excerpt","displayName":"Excerpt","description":"Brief summary or excerpt of the post","type":"string","semantics":["Semantic#Summary"]},{"name":"content","displayName":"Content","description":"Full content of the post in HTML or Markdown","type":"string","required":true,"semantics":["Semantic#HTML"]},{"name":"content_format","displayName":"Content Format","description":"Format of the content (HTML, Markdown, etc.)","type":"string","required":true,"semantics":[],"enumValues":["html","markdown","richtext"],"defaultValue":"markdown"},{"name":"featured_image_url","displayName":"Featured Image URL","description":"URL to featured image","type":"string","semantics":["Semantic#ImageURL"]},{"name":"status","displayName":"Post Status","description":"Current publishing status of the post","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["draft","pending_review","scheduled","published","archived"],"defaultValue":"draft"},{"name":"published_at","displayName":"Published At","description":"When the post was published","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"scheduled_at","displayName":"Scheduled At","description":"When the post is scheduled to be published","type":"datetime","semantics":[]},{"name":"view_count","displayName":"View Count","description":"Number of times the post has been viewed","type":"number","required":true,"semantics":[]},{"name":"reading_time","displayName":"Reading Time","description":"Estimated reading time in minutes","type":"number","readOnly":true,"semantics":["Semantic#Calculated"]},{"name":"word_count","displayName":"Word Count","description":"Number of words in the post content","type":"number","readOnly":true,"semantics":["Semantic#Calculated"]},{"name":"meta_title","displayName":"Meta Title","description":"SEO meta title","type":"string","semantics":[]},{"name":"meta_description","displayName":"Meta Description","description":"SEO meta description","type":"string","semantics":[]},{"name":"updated_at","displayName":"Updated At","description":"When the post was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[{"name":"publication","displayName":"Publication","description":"Publication this post belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"},{"name":"categories","displayName":"Post Categories","description":"Categories this post belongs to","required":false,"multiple":true,"targetEntities":["category"],"semantics":["Semantic#Categories"],"cardinality":"One-to-Many"},{"name":"tags","displayName":"Post Tags","description":"Tags associated with this post","required":false,"multiple":true,"targetEntities":["Tag"],"semantics":["Semantic#Tags"],"cardinality":"One-to-Many"},{"name":"author","displayName":"Post Author","description":"Author who wrote this post","required":true,"multiple":false,"targetEntities":["user"],"semantics":["Semantic#ResourceOwnerIdentifier"],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"UserManagement","displayName":"User Management","description":"Authors, editors, subscribers, and user roles management","modelCount":1,"entityCount":1,"models":[{"name":"Users","displayName":"User Management","description":"User accounts and authentication","entityCount":1,"entities":[{"name":"user","displayName":"User Account","description":"User account for authors, editors, and subscribers","propertyCount":13,"associationCount":0,"properties":[{"name":"id","displayName":"User ID","description":"Unique identifier for the user","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"email","displayName":"Email Address","description":"User email address for login and communication","type":"string","required":true,"semantics":["Semantic#Email"]},{"name":"password","displayName":"Password","description":"Encrypted password for authentication","type":"string","required":true,"semantics":["Semantic#Password"]},{"name":"username","displayName":"Username","description":"Unique username for the user","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]},{"name":"display_name","displayName":"Display Name","description":"Public display name for the user","type":"string","required":true,"semantics":[]},{"name":"first_name","displayName":"First Name","description":"User first name","type":"string","semantics":[]},{"name":"last_name","displayName":"Last Name","description":"User last name","type":"string","semantics":[]},{"name":"bio","displayName":"Biography","description":"User biography and description","type":"string","semantics":["Semantic#Description"]},{"name":"avatar_url","displayName":"Avatar URL","description":"URL to user profile picture","type":"string","semantics":["Semantic#ImageURL"]},{"name":"website","displayName":"Website","description":"User personal website URL","type":"string","semantics":["Semantic#URL"]},{"name":"role","displayName":"User Role","description":"User role for permission management","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["subscriber","author","editor","admin","super_admin"],"defaultValue":"subscriber"},{"name":"emailVerified","displayName":"Email Verified","description":"Whether the user has verified their email","type":"boolean","required":true,"semantics":[],"defaultValue":"false"},{"name":"created_at","displayName":"Created At","description":"When the user account was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":["Semantic#User"]}]}]},{"name":"SocialFeatures","displayName":"Social Features","description":"Comments, likes, shares, and social interactions","modelCount":1,"entityCount":1,"models":[{"name":"Comments","displayName":"Comment System","description":"Post comments and replies","entityCount":1,"entities":[{"name":"comment","displayName":"Comment","description":"User comments on posts","propertyCount":7,"associationCount":3,"properties":[{"name":"id","displayName":"Comment ID","description":"Unique identifier for the comment","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"content","displayName":"Comment Content","description":"Content of the comment","type":"string","required":true,"semantics":[]},{"name":"author_name","displayName":"Author Name","description":"Name of the comment author (for guest comments)","type":"string","semantics":[]},{"name":"author_email","displayName":"Author Email","description":"Email of the comment author (for guest comments)","type":"string","required":true,"semantics":["Semantic#Email"]},{"name":"status","displayName":"Comment Status","description":"Moderation status of the comment","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","approved","rejected","spam"],"defaultValue":"pending"},{"name":"user_agent","displayName":"User Agent","description":"Browser user agent string","type":"string","semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the comment was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"post","displayName":"Post","description":"Post this comment belongs to","required":true,"multiple":false,"targetEntities":["Post"],"semantics":[],"cardinality":"One-to-One"},{"name":"author","displayName":"Comment Author","description":"Registered user who wrote this comment","required":false,"multiple":false,"targetEntities":["user"],"semantics":["Semantic#ResourceOwnerIdentifier"],"cardinality":"One-to-One"},{"name":"parent_comment","displayName":"Parent Comment","description":"Parent comment for replies","required":false,"multiple":false,"targetEntities":["comment"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"Analytics","displayName":"Analytics & Tracking","description":"Analytics, metrics, and performance tracking","modelCount":1,"entityCount":1,"models":[{"name":"Analytics","displayName":"Content Analytics","description":"Content performance and user engagement metrics","entityCount":1,"entities":[{"name":"page_view","displayName":"Page View","description":"Individual page view tracking record","propertyCount":6,"associationCount":2,"properties":[{"name":"id","displayName":"Page View ID","description":"Unique identifier for the page view","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"path","displayName":"Page Path","description":"URL path of the viewed page","type":"string","required":true,"semantics":[]},{"name":"referrer","displayName":"Referrer","description":"Referring URL","type":"string","semantics":["Semantic#URL"]},{"name":"user_agent","displayName":"User Agent","description":"Browser user agent string","type":"string","semantics":[]},{"name":"session_id","displayName":"Session ID","description":"Visitor session identifier","type":"string","semantics":[]},{"name":"viewed_at","displayName":"Viewed At","description":"When the page was viewed","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"post","displayName":"Viewed Post","description":"Post that was viewed (if applicable)","required":false,"multiple":false,"targetEntities":["Post"],"semantics":[],"cardinality":"One-to-One"},{"name":"publication","displayName":"Publication","description":"Publication this page view belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"MediaManagement","displayName":"Media Management","description":"Image, video, and file upload management","modelCount":1,"entityCount":1,"models":[{"name":"Media","displayName":"Media Library","description":"Uploaded files, images, and media assets","entityCount":1,"entities":[{"name":"media_file","displayName":"Media File","description":"Uploaded media files (images, videos, documents)","propertyCount":10,"associationCount":2,"properties":[{"name":"id","displayName":"Media File ID","description":"Unique identifier for the media file","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"filename","displayName":"File Name","description":"Original filename of the uploaded file","type":"string","required":true,"semantics":[]},{"name":"storage_key","displayName":"Storage Key","description":"Unique storage key for the file","type":"string","required":true,"unique":true,"semantics":[]},{"name":"url","displayName":"File URL","description":"Public URL to access the file","type":"string","required":true,"semantics":["Semantic#URL"]},{"name":"mime_type","displayName":"MIME Type","description":"MIME type of the file","type":"string","required":true,"semantics":[]},{"name":"file_size","displayName":"File Size","description":"File size in bytes","type":"number","required":true,"semantics":[]},{"name":"width","displayName":"Image Width","description":"Width in pixels (for images)","type":"number","required":true,"semantics":[]},{"name":"height","displayName":"Image Height","description":"Height in pixels (for images)","type":"number","required":true,"semantics":[]},{"name":"alt_text","displayName":"Alt Text","description":"Alternative text for accessibility","type":"string","semantics":[]},{"name":"uploaded_at","displayName":"Uploaded At","description":"When the file was uploaded","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"uploader","displayName":"File Uploader","description":"User who uploaded this file","required":true,"multiple":false,"targetEntities":["user"],"semantics":["Semantic#ResourceOwnerIdentifier"],"cardinality":"One-to-One"},{"name":"publication","displayName":"Publication","description":"Publication this media file belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]}]}}
|
|
1
|
+
{"id":"blog-publishing-platform","name":"Blog Publishing Platform","description":"A comprehensive content management and publishing platform for blogs, magazines, and digital publications. Includes content management, user roles, publishing workflow, and social features.","createdAt":"2025-07-27T21:14:57.328Z","updatedAt":"2025-07-27T21:14:57.328Z","version":"1.0.0","author":"API Now! Core Team","tags":["blog","cms","publishing","content","media","editorial"],"structure":{"domain":{"name":"Blog Publishing Platform","description":"A comprehensive content management and publishing platform for blogs, magazines, and digital publications","totalEntities":8,"totalProperties":69,"totalAssociations":14},"namespaces":[{"name":"ContentManagement","displayName":"Content Management","description":"Core content creation, editing, and organization features","modelCount":2,"entityCount":4,"models":[{"name":"Publications","displayName":"Publications Management","description":"Individual blogs, magazines, or publications within the platform","entityCount":1,"entities":[{"name":"publication","displayName":"Publication","description":"Individual blog or publication site","propertyCount":8,"associationCount":0,"properties":[{"name":"id","displayName":"Publication ID","description":"Unique identifier for the publication","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"name","displayName":"Publication Name","description":"Display name of the publication","type":"string","semantics":["Semantic#Title"]},{"name":"slug","displayName":"URL Slug","description":"URL-friendly identifier for the publication","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]},{"name":"description","displayName":"Description","description":"Publication description and tagline","type":"string","semantics":["Semantic#Description"]},{"name":"domain","displayName":"Custom Domain","description":"Custom domain name for the publication","type":"string","semantics":[]},{"name":"logo_url","displayName":"Logo URL","description":"URL to publication logo image","type":"string","semantics":["Semantic#ImageURL"]},{"name":"status","displayName":"Publication Status","description":"Current status of the publication","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","suspended","archived"],"defaultValue":"active"},{"name":"created_at","displayName":"Created At","description":"When the publication was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]}]},{"name":"Content","displayName":"Content Management","description":"Posts, pages, and other content types","entityCount":3,"entities":[{"name":"category","displayName":"Content Category","description":"Content categorization for organization and navigation","propertyCount":5,"associationCount":2,"properties":[{"name":"id","displayName":"Category ID","description":"Unique identifier for the category","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"name","displayName":"Category Name","description":"Display name of the category","type":"string","semantics":["Semantic#Title"]},{"name":"slug","displayName":"URL Slug","description":"URL-friendly identifier for the category","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]},{"name":"description","displayName":"Description","description":"Category description","type":"string","semantics":["Semantic#Description"]},{"name":"color","displayName":"Color","description":"Theme color for the category","type":"string","semantics":[]}],"associations":[{"name":"publication","displayName":"Publication","description":"Publication this category belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"},{"name":"parentCategory","displayName":"Parent Category","description":"Parent category for hierarchical organization","required":false,"multiple":false,"targetEntities":["category"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"Tag","displayName":"Content Tag","description":"Tags for flexible content labeling and discovery","propertyCount":3,"associationCount":1,"properties":[{"name":"id","displayName":"Tag ID","description":"Unique identifier for the tag","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"name","displayName":"Tag Name","description":"Display name of the tag","type":"string","semantics":["Semantic#Title"]},{"name":"slug","displayName":"URL Slug","description":"URL-friendly identifier for the tag","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]}],"associations":[{"name":"publication","displayName":"Publication","description":"Publication this tag belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"Post","displayName":"Blog Post","description":"Individual blog posts and articles","propertyCount":16,"associationCount":4,"properties":[{"name":"id","displayName":"Post ID","description":"Unique identifier for the post","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"title","displayName":"Post Title","description":"Title of the blog post","type":"string","required":true,"semantics":["Semantic#Title"]},{"name":"slug","displayName":"URL Slug","description":"URL-friendly identifier for the post","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]},{"name":"excerpt","displayName":"Excerpt","description":"Brief summary or excerpt of the post","type":"string","semantics":["Semantic#Summary"]},{"name":"content","displayName":"Content","description":"Full content of the post in HTML or Markdown","type":"string","required":true,"semantics":["Semantic#HTML"]},{"name":"content_format","displayName":"Content Format","description":"Format of the content (HTML, Markdown, etc.)","type":"string","required":true,"semantics":[],"enumValues":["html","markdown","richtext"],"defaultValue":"markdown"},{"name":"featured_image_url","displayName":"Featured Image URL","description":"URL to featured image","type":"string","semantics":["Semantic#ImageURL"]},{"name":"status","displayName":"Post Status","description":"Current publishing status of the post","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["draft","pending_review","scheduled","published","archived"],"defaultValue":"draft"},{"name":"published_at","displayName":"Published At","description":"When the post was published","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"scheduled_at","displayName":"Scheduled At","description":"When the post is scheduled to be published","type":"datetime","semantics":[]},{"name":"view_count","displayName":"View Count","description":"Number of times the post has been viewed","type":"number","required":true,"semantics":[]},{"name":"reading_time","displayName":"Reading Time","description":"Estimated reading time in minutes","type":"number","readOnly":true,"semantics":["Semantic#Calculated"]},{"name":"word_count","displayName":"Word Count","description":"Number of words in the post content","type":"number","readOnly":true,"semantics":["Semantic#Calculated"]},{"name":"meta_title","displayName":"Meta Title","description":"SEO meta title","type":"string","semantics":[]},{"name":"meta_description","displayName":"Meta Description","description":"SEO meta description","type":"string","semantics":[]},{"name":"updated_at","displayName":"Updated At","description":"When the post was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[{"name":"publication","displayName":"Publication","description":"Publication this post belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"},{"name":"categories","displayName":"Post Categories","description":"Categories this post belongs to","required":false,"multiple":true,"targetEntities":["category"],"semantics":["Semantic#Categories"],"cardinality":"One-to-Many"},{"name":"tags","displayName":"Post Tags","description":"Tags associated with this post","required":false,"multiple":true,"targetEntities":["Tag"],"semantics":["Semantic#Tags"],"cardinality":"One-to-Many"},{"name":"author","displayName":"Post Author","description":"Author who wrote this post","required":true,"multiple":false,"targetEntities":["user"],"semantics":["Semantic#ResourceOwnerIdentifier"],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"UserManagement","displayName":"User Management","description":"Authors, editors, subscribers, and user roles management","modelCount":1,"entityCount":1,"models":[{"name":"Users","displayName":"User Management","description":"User accounts and authentication","entityCount":1,"entities":[{"name":"user","displayName":"User Account","description":"User account for authors, editors, and subscribers","propertyCount":13,"associationCount":0,"properties":[{"name":"id","displayName":"User ID","description":"Unique identifier for the user","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"email","displayName":"Email Address","description":"User email address for login and communication","type":"string","required":true,"semantics":["Semantic#Email"]},{"name":"password","displayName":"Password","description":"Encrypted password for authentication","type":"string","required":true,"semantics":["Semantic#Password"]},{"name":"username","displayName":"Username","description":"Unique username for the user","type":"string","required":true,"unique":true,"semantics":["Semantic#PublicUniqueName"]},{"name":"display_name","displayName":"Display Name","description":"Public display name for the user","type":"string","required":true,"semantics":[]},{"name":"first_name","displayName":"First Name","description":"User first name","type":"string","semantics":[]},{"name":"last_name","displayName":"Last Name","description":"User last name","type":"string","semantics":[]},{"name":"bio","displayName":"Biography","description":"User biography and description","type":"string","semantics":["Semantic#Description"]},{"name":"avatar_url","displayName":"Avatar URL","description":"URL to user profile picture","type":"string","semantics":["Semantic#ImageURL"]},{"name":"website","displayName":"Website","description":"User personal website URL","type":"string","semantics":["Semantic#URL"]},{"name":"role","displayName":"User Role","description":"User role for permission management","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["subscriber","author","editor","admin","super_admin"],"defaultValue":"subscriber"},{"name":"emailVerified","displayName":"Email Verified","description":"Whether the user has verified their email","type":"boolean","required":true,"semantics":[],"defaultValue":"false"},{"name":"created_at","displayName":"Created At","description":"When the user account was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":["Semantic#User"]}]}]},{"name":"SocialFeatures","displayName":"Social Features","description":"Comments, likes, shares, and social interactions","modelCount":1,"entityCount":1,"models":[{"name":"Comments","displayName":"Comment System","description":"Post comments and replies","entityCount":1,"entities":[{"name":"comment","displayName":"Comment","description":"User comments on posts","propertyCount":7,"associationCount":3,"properties":[{"name":"id","displayName":"Comment ID","description":"Unique identifier for the comment","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"content","displayName":"Comment Content","description":"Content of the comment","type":"string","required":true,"semantics":[]},{"name":"author_name","displayName":"Author Name","description":"Name of the comment author (for guest comments)","type":"string","semantics":[]},{"name":"author_email","displayName":"Author Email","description":"Email of the comment author (for guest comments)","type":"string","required":true,"semantics":["Semantic#Email"]},{"name":"status","displayName":"Comment Status","description":"Moderation status of the comment","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","approved","rejected","spam"],"defaultValue":"pending"},{"name":"user_agent","displayName":"User Agent","description":"Browser user agent string","type":"string","semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the comment was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"post","displayName":"Post","description":"Post this comment belongs to","required":true,"multiple":false,"targetEntities":["Post"],"semantics":[],"cardinality":"One-to-One"},{"name":"author","displayName":"Comment Author","description":"Registered user who wrote this comment","required":false,"multiple":false,"targetEntities":["user"],"semantics":["Semantic#ResourceOwnerIdentifier"],"cardinality":"One-to-One"},{"name":"parent_comment","displayName":"Parent Comment","description":"Parent comment for replies","required":false,"multiple":false,"targetEntities":["comment"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"Analytics","displayName":"Analytics & Tracking","description":"Analytics, metrics, and performance tracking","modelCount":1,"entityCount":1,"models":[{"name":"Analytics","displayName":"Content Analytics","description":"Content performance and user engagement metrics","entityCount":1,"entities":[{"name":"page_view","displayName":"Page View","description":"Individual page view tracking record","propertyCount":7,"associationCount":2,"properties":[{"name":"id","displayName":"Page View ID","description":"Unique identifier for the page view","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"path","displayName":"Page Path","description":"URL path of the viewed page","type":"string","required":true,"semantics":[]},{"name":"referrer","displayName":"Referrer","description":"Referring URL","type":"string","semantics":["Semantic#URL"]},{"name":"ip_address","displayName":"IP Address","description":"Visitor IP address","type":"string","semantics":["Semantic#ClientIPAddress"]},{"name":"user_agent","displayName":"User Agent","description":"Browser user agent string","type":"string","semantics":[]},{"name":"session_id","displayName":"Session ID","description":"Visitor session identifier","type":"string","semantics":[]},{"name":"viewed_at","displayName":"Viewed At","description":"When the page was viewed","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"post","displayName":"Viewed Post","description":"Post that was viewed (if applicable)","required":false,"multiple":false,"targetEntities":["Post"],"semantics":[],"cardinality":"One-to-One"},{"name":"publication","displayName":"Publication","description":"Publication this page view belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"MediaManagement","displayName":"Media Management","description":"Image, video, and file upload management","modelCount":1,"entityCount":1,"models":[{"name":"Media","displayName":"Media Library","description":"Uploaded files, images, and media assets","entityCount":1,"entities":[{"name":"media_file","displayName":"Media File","description":"Uploaded media files (images, videos, documents)","propertyCount":10,"associationCount":2,"properties":[{"name":"id","displayName":"Media File ID","description":"Unique identifier for the media file","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"filename","displayName":"File Name","description":"Original filename of the uploaded file","type":"string","required":true,"semantics":[]},{"name":"storage_key","displayName":"Storage Key","description":"Unique storage key for the file","type":"string","required":true,"unique":true,"semantics":[]},{"name":"url","displayName":"File URL","description":"Public URL to access the file","type":"string","required":true,"semantics":["Semantic#URL"]},{"name":"mime_type","displayName":"MIME Type","description":"MIME type of the file","type":"string","required":true,"semantics":[]},{"name":"file_size","displayName":"File Size","description":"File size in bytes","type":"number","required":true,"semantics":[]},{"name":"width","displayName":"Image Width","description":"Width in pixels (for images)","type":"number","required":true,"semantics":[]},{"name":"height","displayName":"Image Height","description":"Height in pixels (for images)","type":"number","required":true,"semantics":[]},{"name":"alt_text","displayName":"Alt Text","description":"Alternative text for accessibility","type":"string","semantics":[]},{"name":"uploaded_at","displayName":"Uploaded At","description":"When the file was uploaded","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"uploader","displayName":"File Uploader","description":"User who uploaded this file","required":true,"multiple":false,"targetEntities":["user"],"semantics":["Semantic#ResourceOwnerIdentifier"],"cardinality":"One-to-One"},{"name":"publication","displayName":"Publication","description":"Publication this media file belongs to","required":true,"multiple":false,"targetEntities":["publication"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]}]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"financial-services-platform","name":"Financial Services Platform","description":"A comprehensive financial services platform with account management, transaction processing, customer management, investment portfolios, and compliance features. Perfect for banks, credit unions, and fintech companies.","createdAt":"2025-01-27T00:00:00.000Z","updatedAt":"2025-01-27T00:00:00.000Z","version":"1.0.0","author":"API Now! Core Team","tags":["finance","banking","investment","compliance","fraud-detection","kyc"],"structure":{"domain":{"name":"Financial Services Platform","description":"A comprehensive financial services platform with account management, transaction processing, customer management, investment portfolios, and compliance features","totalEntities":14,"totalProperties":104,"totalAssociations":14},"namespaces":[{"name":"CustomerManagement","displayName":"Customer Management","description":"Customer profiles, KYC, risk assessment, and segmentation","modelCount":1,"entityCount":3,"models":[{"name":"Customers","displayName":"Customer Management","description":"Customer profiles and information","entityCount":3,"entities":[{"name":"customer","displayName":"Customer","description":"Financial services customer with KYC and risk profile","propertyCount":15,"associationCount":0,"properties":[{"name":"id","displayName":"Customer ID","description":"Unique identifier for the customer","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"first_name","displayName":"First Name","description":"Customer first name","type":"string","semantics":[]},{"name":"last_name","displayName":"Last Name","description":"Customer last name","type":"string","semantics":[]},{"name":"date_of_birth","displayName":"Date of Birth","description":"Customer date of birth","type":"date","required":true,"semantics":[]},{"name":"ssn","displayName":"Social Security Number","description":"Customer SSN for identification","type":"string","required":true,"writeOnly":true,"semantics":[]},{"name":"email","displayName":"Email Address","description":"Customer email address","type":"string","required":true,"semantics":["Semantic#Email"]},{"name":"phone","displayName":"Phone Number","description":"Customer phone number","type":"string","semantics":["Semantic#Phone"]},{"name":"address","displayName":"Address","description":"Customer residential address","type":"string","required":true,"semantics":[]},{"name":"city","displayName":"City","description":"Customer city","type":"string","required":true,"semantics":[]},{"name":"state","displayName":"State","description":"Customer state","type":"string","required":true,"semantics":[]},{"name":"zip_code","displayName":"ZIP Code","description":"Customer ZIP code","type":"string","required":true,"semantics":[]},{"name":"status","displayName":"Customer Status","description":"Current status of the customer account","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","inactive","suspended","pending_verification"],"defaultValue":"active"},{"name":"customer_type","displayName":"Customer Type","description":"Type of customer account","type":"string","required":true,"semantics":[],"enumValues":["individual","business","trust","partnership"]},{"name":"created_at","displayName":"Created At","description":"When the customer account was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"updated_at","displayName":"Updated At","description":"When the customer account was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[],"semantics":[]},{"name":"kyc","displayName":"KYC Record","description":"Know Your Customer verification and documentation","propertyCount":6,"associationCount":1,"properties":[{"name":"id","displayName":"KYC ID","description":"Unique identifier for the KYC record","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"status","displayName":"KYC Status","description":"Current status of KYC verification","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","verified","rejected","expired"],"defaultValue":"pending"},{"name":"verification_date","displayName":"Verification Date","description":"Date when KYC was verified","type":"date","semantics":[]},{"name":"document_type","displayName":"Document Type","description":"Type of identification document","type":"string","required":true,"semantics":[],"enumValues":["passport","drivers_license","national_id","utility_bill","bank_statement"]},{"name":"document_number","displayName":"Document Number","description":"Document identification number","type":"string","required":true,"semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the KYC record was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"customer","displayName":"Customer","description":"Customer for this KYC record","required":true,"multiple":false,"targetEntities":["customer"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"risk_profile","displayName":"Risk Profile","description":"Customer risk assessment and scoring","propertyCount":6,"associationCount":1,"properties":[{"name":"id","displayName":"Risk Profile ID","description":"Unique identifier for the risk profile","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"risk_score","displayName":"Risk Score","description":"Numerical risk score (1-100)","type":"number","required":true,"semantics":[]},{"name":"status","displayName":"Risk Level","description":"Risk level classification","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["low","medium","high","very_high"],"defaultValue":"low"},{"name":"assessment_date","displayName":"Assessment Date","description":"Date when risk was assessed","type":"date","required":true,"semantics":[]},{"name":"description","displayName":"Description","description":"Risk assessment notes and factors","type":"string","semantics":["Semantic#Description"]},{"name":"created_at","displayName":"Created At","description":"When the risk profile was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"customer","displayName":"Customer","description":"Customer for this risk profile","required":true,"multiple":false,"targetEntities":["customer"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"AccountManagement","displayName":"Account Management","description":"Bank accounts, investment accounts, and credit cards","modelCount":1,"entityCount":3,"models":[{"name":"Accounts","displayName":"Account Management","description":"Financial accounts and products","entityCount":3,"entities":[{"name":"bank_account","displayName":"Bank Account","description":"Checking and savings accounts","propertyCount":9,"associationCount":1,"properties":[{"name":"id","displayName":"Account ID","description":"Unique identifier for the account","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"account_number","displayName":"Account Number","description":"Bank account number","type":"string","required":true,"unique":true,"semantics":[]},{"name":"routing_number","displayName":"Routing Number","description":"Bank routing number","type":"string","required":true,"semantics":[]},{"name":"account_type","displayName":"Account Type","description":"Type of bank account","type":"string","required":true,"semantics":[],"enumValues":["checking","savings","money_market","cd"]},{"name":"balance","displayName":"Account Balance","description":"Current account balance","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"available_balance","displayName":"Available Balance","description":"Available balance for transactions","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"status","displayName":"Account Status","description":"Current status of the account","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","inactive","frozen","closed"],"defaultValue":"active"},{"name":"created_at","displayName":"Created At","description":"When the account was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"updated_at","displayName":"Updated At","description":"When the account was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[{"name":"customer","displayName":"Account Holder","description":"Customer who owns this account","required":true,"multiple":false,"targetEntities":["customer"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"investment_account","displayName":"Investment Account","description":"Investment and brokerage accounts","propertyCount":7,"associationCount":1,"properties":[{"name":"id","displayName":"Investment Account ID","description":"Unique identifier for the investment account","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"account_number","displayName":"Account Number","description":"Investment account number","type":"string","required":true,"unique":true,"semantics":[]},{"name":"account_type","displayName":"Account Type","description":"Type of investment account","type":"string","required":true,"semantics":[],"enumValues":["individual","joint","ira","401k","roth_ira"]},{"name":"total_value","displayName":"Total Portfolio Value","description":"Total value of all investments","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"cash_balance","displayName":"Cash Balance","description":"Available cash balance","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"status","displayName":"Account Status","description":"Current status of the investment account","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","inactive","suspended","closed"],"defaultValue":"active"},{"name":"created_at","displayName":"Created At","description":"When the investment account was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"customer","displayName":"Account Holder","description":"Customer who owns this investment account","required":true,"multiple":false,"targetEntities":["customer"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"credit_card","displayName":"Credit Card","description":"Credit card accounts and lines of credit","propertyCount":8,"associationCount":1,"properties":[{"name":"id","displayName":"Credit Card ID","description":"Unique identifier for the credit card","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"card_number","displayName":"Card Number","description":"Credit card number (masked)","type":"string","required":true,"writeOnly":true,"semantics":[]},{"name":"credit_limit","displayName":"Credit Limit","description":"Total credit limit","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"available_credit","displayName":"Available Credit","description":"Available credit remaining","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"current_balance","displayName":"Current Balance","description":"Current outstanding balance","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"apr","displayName":"APR","description":"Annual Percentage Rate","type":"number","required":true,"semantics":[]},{"name":"status","displayName":"Card Status","description":"Current status of the credit card","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","inactive","suspended","closed"],"defaultValue":"active"},{"name":"created_at","displayName":"Created At","description":"When the credit card was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"customer","displayName":"Cardholder","description":"Customer who owns this credit card","required":true,"multiple":false,"targetEntities":["customer"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"TransactionProcessing","displayName":"Transaction Processing","description":"Payments, transfers, deposits, and withdrawals","modelCount":1,"entityCount":2,"models":[{"name":"Transactions","displayName":"Transaction Management","description":"Financial transactions and transfers","entityCount":2,"entities":[{"name":"transaction","displayName":"Transaction","description":"Financial transaction record","propertyCount":9,"associationCount":2,"properties":[{"name":"id","displayName":"Transaction ID","description":"Unique identifier for the transaction","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"transaction_number","displayName":"Transaction Number","description":"Human-readable transaction number","type":"string","required":true,"unique":true,"semantics":[]},{"name":"status","displayName":"Transaction Status","description":"Current status of the transaction","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","processing","completed","failed","cancelled"],"defaultValue":"pending"},{"name":"transaction_type","displayName":"Transaction Type","description":"Type of financial transaction","type":"string","required":true,"semantics":[],"enumValues":["deposit","withdrawal","transfer","payment","fee"]},{"name":"amount","displayName":"Transaction Amount","description":"Amount of the transaction","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"description","displayName":"Description","description":"Transaction description","type":"string","semantics":[]},{"name":"transaction_date","displayName":"Transaction Date","description":"Date when transaction occurred","type":"date","required":true,"semantics":[]},{"name":"reference_number","displayName":"Reference Number","description":"External reference number","type":"string","semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the transaction was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"customer","displayName":"Customer","description":"Customer who initiated the transaction","required":true,"multiple":false,"targetEntities":["customer"],"semantics":[],"cardinality":"One-to-One"},{"name":"account","displayName":"Account","description":"Account involved in the transaction","required":true,"multiple":false,"targetEntities":["bank_account"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"transfer","displayName":"Transfer","description":"Money transfers between accounts","propertyCount":5,"associationCount":2,"properties":[{"name":"id","displayName":"Transfer ID","description":"Unique identifier for the transfer","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"status","displayName":"Transfer Status","description":"Current status of the transfer","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","processing","completed","failed","cancelled"],"defaultValue":"pending"},{"name":"amount","displayName":"Transfer Amount","description":"Amount being transferred","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"transfer_date","displayName":"Transfer Date","description":"Date when transfer was initiated","type":"date","required":true,"semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the transfer was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"from_account","displayName":"From Account","description":"Source account for the transfer","required":true,"multiple":false,"targetEntities":["bank_account"],"semantics":[],"cardinality":"One-to-One"},{"name":"to_account","displayName":"To Account","description":"Destination account for the transfer","required":true,"multiple":false,"targetEntities":["bank_account"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"InvestmentPortfolio","displayName":"Investment Portfolio","description":"Assets, positions, and performance tracking","modelCount":1,"entityCount":3,"models":[{"name":"Portfolios","displayName":"Portfolio Management","description":"Investment portfolios and assets","entityCount":3,"entities":[{"name":"asset","displayName":"Asset","description":"Investment asset (stocks, bonds, etc.)","propertyCount":7,"associationCount":0,"properties":[{"name":"id","displayName":"Asset ID","description":"Unique identifier for the asset","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"symbol","displayName":"Symbol","description":"Asset symbol/ticker","type":"string","required":true,"unique":true,"semantics":[]},{"name":"name","displayName":"Asset Name","description":"Name of the asset","type":"string","semantics":["Semantic#Title"]},{"name":"asset_type","displayName":"Asset Type","description":"Type of investment asset","type":"string","required":true,"semantics":[],"enumValues":["stock","bond","etf","mutual_fund","commodity","crypto"]},{"name":"current_price","displayName":"Current Price","description":"Current market price of the asset","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"market_cap","displayName":"Market Cap","description":"Market capitalization","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"created_at","displayName":"Created At","description":"When the asset was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]},{"name":"position","displayName":"Position","description":"Investment position in a portfolio","propertyCount":6,"associationCount":2,"properties":[{"name":"id","displayName":"Position ID","description":"Unique identifier for the position","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"quantity","displayName":"Quantity","description":"Number of shares/units held","type":"number","required":true,"semantics":[]},{"name":"average_cost","displayName":"Average Cost","description":"Average cost per share/unit","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"current_value","displayName":"Current Value","description":"Current market value of the position","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"unrealized_gain_loss","displayName":"Unrealized Gain/Loss","description":"Unrealized profit or loss","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"created_at","displayName":"Created At","description":"When the position was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"account","displayName":"Investment Account","description":"Account holding this position","required":true,"multiple":false,"targetEntities":["investment_account"],"semantics":[],"cardinality":"One-to-One"},{"name":"asset","displayName":"Asset","description":"Asset for this position","required":true,"multiple":false,"targetEntities":["asset"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"performance","displayName":"Performance","description":"Portfolio performance tracking","propertyCount":5,"associationCount":1,"properties":[{"name":"id","displayName":"Performance ID","description":"Unique identifier for the performance record","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"date","displayName":"Date","description":"Date of performance measurement","type":"date","required":true,"semantics":[]},{"name":"total_value","displayName":"Total Value","description":"Total portfolio value on this date","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"return_percentage","displayName":"Return Percentage","description":"Percentage return","type":"number","required":true,"semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the performance record was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"account","displayName":"Investment Account","description":"Account for this performance record","required":true,"multiple":false,"targetEntities":["investment_account"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"ComplianceReporting","displayName":"Compliance & Reporting","description":"Regulatory reporting and audit trails","modelCount":1,"entityCount":2,"models":[{"name":"Compliance","displayName":"Compliance Management","description":"Regulatory compliance and reporting","entityCount":2,"entities":[{"name":"audit_trail","displayName":"Audit Trail","description":"System audit trail for compliance","propertyCount":8,"associationCount":0,"properties":[{"name":"id","displayName":"Audit ID","description":"Unique identifier for the audit record","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"action","displayName":"Action","description":"Action performed","type":"string","required":true,"semantics":[]},{"name":"entity_type","displayName":"Entity Type","description":"Type of entity affected","type":"string","required":true,"semantics":[]},{"name":"entity_id","displayName":"Entity ID","description":"ID of the affected entity","type":"string","required":true,"semantics":[]},{"name":"user_id","displayName":"User ID","description":"User who performed the action","type":"string","required":true,"semantics":[]},{"name":"ip_address","displayName":"IP Address","description":"IP address of the user","type":"string","semantics":[]},{"name":"description","displayName":"Description","description":"Additional details about the action","type":"string","semantics":["Semantic#Description"]},{"name":"timestamp","displayName":"Timestamp","description":"When the action occurred","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]},{"name":"regulatory_report","displayName":"Regulatory Report","description":"Regulatory reporting requirements","propertyCount":7,"associationCount":0,"properties":[{"name":"id","displayName":"Report ID","description":"Unique identifier for the report","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"name","displayName":"Report Name","description":"Name of the regulatory report","type":"string","semantics":["Semantic#Title"]},{"name":"status","displayName":"Report Status","description":"Current status of the report","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["draft","submitted","approved","rejected"],"defaultValue":"draft"},{"name":"report_type","displayName":"Report Type","description":"Type of regulatory report","type":"string","required":true,"semantics":[],"enumValues":["suspicious_activity","large_transaction","annual_report","quarterly_report"]},{"name":"reporting_period","displayName":"Reporting Period","description":"Period covered by the report","type":"string","required":true,"semantics":[]},{"name":"description","displayName":"Description","description":"Report content and details","type":"string","semantics":["Semantic#Description"]},{"name":"created_at","displayName":"Created At","description":"When the report was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]}]}]},{"name":"FraudDetection","displayName":"Fraud Detection","description":"Transaction monitoring and risk scoring","modelCount":1,"entityCount":1,"models":[{"name":"FraudDetection","displayName":"Fraud Detection Management","description":"Fraud detection and monitoring","entityCount":1,"entities":[{"name":"fraud_alert","displayName":"Fraud Alert","description":"Fraud detection alerts and flags","propertyCount":6,"associationCount":2,"properties":[{"name":"id","displayName":"Alert ID","description":"Unique identifier for the fraud alert","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"status","displayName":"Alert Status","description":"Current status of the fraud alert","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","investigating","resolved","false_positive"],"defaultValue":"pending"},{"name":"alert_type","displayName":"Alert Type","description":"Type of fraud alert","type":"string","required":true,"semantics":[],"enumValues":["suspicious_transaction","unusual_pattern","identity_theft","account_takeover"]},{"name":"risk_score","displayName":"Risk Score","description":"Risk score (1-100)","type":"number","required":true,"semantics":[]},{"name":"description","displayName":"Description","description":"Details about the fraud alert","type":"string","semantics":["Semantic#Description"]},{"name":"created_at","displayName":"Created At","description":"When the fraud alert was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"transaction","displayName":"Transaction","description":"Transaction that triggered the alert","required":false,"multiple":false,"targetEntities":["transaction"],"semantics":[],"cardinality":"One-to-One"},{"name":"customer","displayName":"Customer","description":"Customer associated with the alert","required":true,"multiple":false,"targetEntities":["customer"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]}]}}
|
|
1
|
+
{"id":"financial-services-platform","name":"Financial Services Platform","description":"A comprehensive financial services platform with account management, transaction processing, customer management, investment portfolios, and compliance features. Perfect for banks, credit unions, and fintech companies.","createdAt":"2025-01-27T00:00:00.000Z","updatedAt":"2025-01-27T00:00:00.000Z","version":"1.0.0","author":"API Now! Core Team","tags":["finance","banking","investment","compliance","fraud-detection","kyc"],"structure":{"domain":{"name":"Financial Services Platform","description":"A comprehensive financial services platform with account management, transaction processing, customer management, investment portfolios, and compliance features","totalEntities":17,"totalProperties":127,"totalAssociations":17},"namespaces":[{"name":"User Management","displayName":"User & Authentication Management","description":"Unified user authentication, roles, and profile management for customers and employees","modelCount":2,"entityCount":6,"models":[{"name":"Authentication","displayName":"Authentication & Access Control","description":"User authentication, sessions, and access control","entityCount":2,"entities":[{"name":"user","displayName":"User","description":"Unified user entity for both customers and employees with role-based access","propertyCount":14,"associationCount":3,"properties":[{"name":"id","displayName":"User ID","description":"Unique identifier for the user","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"username","displayName":"Username","description":"Unique username for login","type":"string","required":true,"unique":true,"semantics":[]},{"name":"password","displayName":"Password","description":"User password (hashed)","type":"string","required":true,"writeOnly":true,"semantics":["Semantic#Password"]},{"name":"email","displayName":"Email Address","description":"User email address","type":"string","required":true,"unique":true,"semantics":["Semantic#Email"]},{"name":"first_name","displayName":"First Name","description":"User first name","type":"string","semantics":[]},{"name":"last_name","displayName":"Last Name","description":"User last name","type":"string","semantics":[]},{"name":"phone","displayName":"Phone Number","description":"User phone number","type":"string","semantics":["Semantic#Phone"]},{"name":"user_type","displayName":"User Type","description":"Type of user account","type":"string","required":true,"semantics":[],"enumValues":["customer","employee","admin","system"]},{"name":"role","displayName":"User Role","description":"User role defining permissions and access level","type":"string","required":true,"semantics":[],"enumValues":["individual_customer","business_customer","premium_customer","private_banking_customer","teller","loan_officer","relationship_manager","compliance_officer","branch_manager","investment_advisor","risk_analyst","system_admin","security_admin","audit_admin"]},{"name":"status","displayName":"User Status","description":"Current status of the user account","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","inactive","suspended","pending_verification","locked"],"defaultValue":"active"},{"name":"email_verified","displayName":"Email Verified","description":"Whether user email is verified","type":"boolean","required":true,"semantics":[]},{"name":"last_login","displayName":"Last Login","description":"When user last logged in","type":"datetime","semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the user account was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"updated_at","displayName":"Updated At","description":"When the user account was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[{"name":"sessions","displayName":"User Sessions","description":"Active sessions for this user","required":false,"multiple":true,"targetEntities":["user_session"],"semantics":[],"cardinality":"One-to-Many"},{"name":"customer_profile","displayName":"Customer Profile","description":"Extended customer profile information","required":false,"multiple":false,"targetEntities":["customer_profile"],"semantics":[],"cardinality":"One-to-One"},{"name":"employee_profile","displayName":"Employee Profile","description":"Extended employee profile information","required":false,"multiple":false,"targetEntities":["employee_profile"],"semantics":[],"cardinality":"One-to-One"}],"semantics":["Semantic#User"]},{"name":"user_session","displayName":"User Session","description":"Active user authentication sessions","propertyCount":5,"associationCount":0,"properties":[{"name":"id","displayName":"Session ID","description":"Unique session identifier","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"token","displayName":"Session Token","description":"Authentication token for the session","type":"string","required":true,"writeOnly":true,"semantics":[]},{"name":"expires_at","displayName":"Expires At","description":"When the session expires","type":"datetime","required":true,"semantics":[]},{"name":"ip_address","displayName":"IP Address","description":"IP address of the session","type":"string","semantics":["Semantic#ClientIPAddress"]},{"name":"created_at","displayName":"Created At","description":"When the session was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]}]},{"name":"User Profiles","displayName":"User Profile Management","description":"Extended user profile information and preferences","entityCount":4,"entities":[{"name":"customer_profile","displayName":"Customer Profile","description":"Additional profile information specific to customers","propertyCount":10,"associationCount":0,"properties":[{"name":"id","displayName":"Profile ID","description":"Unique profile identifier","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"date_of_birth","displayName":"Date of Birth","description":"Customer date of birth","type":"date","required":true,"semantics":[]},{"name":"ssn","displayName":"Social Security Number","description":"Customer SSN for identification","type":"string","required":true,"writeOnly":true,"semantics":[]},{"name":"address","displayName":"Address","description":"Customer residential address","type":"string","required":true,"semantics":[]},{"name":"city","displayName":"City","description":"Customer city","type":"string","required":true,"semantics":[]},{"name":"state","displayName":"State","description":"Customer state","type":"string","required":true,"semantics":[]},{"name":"zip_code","displayName":"ZIP Code","description":"Customer ZIP code","type":"string","required":true,"semantics":[]},{"name":"customer_type","displayName":"Customer Type","description":"Type of customer account","type":"string","required":true,"semantics":[],"enumValues":["individual","business","trust","partnership"]},{"name":"created_at","displayName":"Created At","description":"When the customer profile was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"updated_at","displayName":"Updated At","description":"When the customer profile was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[],"semantics":[]},{"name":"employee_profile","displayName":"Employee Profile","description":"Additional profile information specific to employees","propertyCount":7,"associationCount":0,"properties":[{"name":"id","displayName":"Employee Profile ID","description":"Unique employee profile identifier","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"employee_id","displayName":"Employee ID","description":"Company employee identifier","type":"string","required":true,"unique":true,"semantics":[]},{"name":"department","displayName":"Department","description":"Employee department","type":"string","required":true,"semantics":[],"enumValues":["retail_banking","commercial_banking","investment_services","risk_management","compliance","operations","technology","human_resources","legal"]},{"name":"hire_date","displayName":"Hire Date","description":"Employee hire date","type":"date","required":true,"semantics":[]},{"name":"manager_id","displayName":"Manager ID","description":"Employee manager identifier","type":"string","semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the employee profile was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"updated_at","displayName":"Updated At","description":"When the employee profile was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[],"semantics":[]},{"name":"kyc_record","displayName":"KYC Record","description":"Know Your Customer verification and documentation","propertyCount":7,"associationCount":1,"properties":[{"name":"id","displayName":"KYC ID","description":"Unique identifier for the KYC record","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"status","displayName":"KYC Status","description":"Current status of KYC verification","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","verified","rejected","expired"],"defaultValue":"pending"},{"name":"verification_date","displayName":"Verification Date","description":"Date when KYC was verified","type":"date","semantics":[]},{"name":"document_type","displayName":"Document Type","description":"Type of identification document","type":"string","required":true,"semantics":[],"enumValues":["passport","drivers_license","national_id","utility_bill","bank_statement"]},{"name":"document_number","displayName":"Document Number","description":"Document identification number","type":"string","required":true,"semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the KYC record was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"updated_at","displayName":"Updated At","description":"When the KYC record was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[{"name":"user","displayName":"User","description":"User for this KYC record","required":true,"multiple":false,"targetEntities":["user"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"risk_profile","displayName":"Risk Profile","description":"Customer risk assessment and scoring","propertyCount":7,"associationCount":1,"properties":[{"name":"id","displayName":"Risk Profile ID","description":"Unique identifier for the risk profile","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"risk_score","displayName":"Risk Score","description":"Numerical risk score (1-100)","type":"number","required":true,"semantics":[]},{"name":"status","displayName":"Risk Level","description":"Risk level classification","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["low","medium","high","very_high"],"defaultValue":"low"},{"name":"assessment_date","displayName":"Assessment Date","description":"Date when risk was assessed","type":"date","required":true,"semantics":[]},{"name":"description","displayName":"Description","description":"Risk assessment notes and factors","type":"string","semantics":["Semantic#Description"]},{"name":"created_at","displayName":"Created At","description":"When the risk profile was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"updated_at","displayName":"Updated At","description":"When the risk profile was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[{"name":"user","displayName":"User","description":"User for this risk profile","required":true,"multiple":false,"targetEntities":["user"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"AccountManagement","displayName":"Account Management","description":"Bank accounts, investment accounts, and credit cards","modelCount":1,"entityCount":3,"models":[{"name":"Accounts","displayName":"Account Management","description":"Financial accounts and products","entityCount":3,"entities":[{"name":"bank_account","displayName":"Bank Account","description":"Checking and savings accounts","propertyCount":9,"associationCount":1,"properties":[{"name":"id","displayName":"Account ID","description":"Unique identifier for the account","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"account_number","displayName":"Account Number","description":"Bank account number","type":"string","required":true,"unique":true,"semantics":[]},{"name":"routing_number","displayName":"Routing Number","description":"Bank routing number","type":"string","required":true,"semantics":[]},{"name":"account_type","displayName":"Account Type","description":"Type of bank account","type":"string","required":true,"semantics":[],"enumValues":["checking","savings","money_market","cd"]},{"name":"balance","displayName":"Account Balance","description":"Current account balance","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"available_balance","displayName":"Available Balance","description":"Available balance for transactions","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"status","displayName":"Account Status","description":"Current status of the account","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","inactive","frozen","closed"],"defaultValue":"active"},{"name":"created_at","displayName":"Created At","description":"When the account was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]},{"name":"updated_at","displayName":"Updated At","description":"When the account was last updated","type":"datetime","readOnly":true,"semantics":["Semantic#UpdatedTimestamp"]}],"associations":[{"name":"user","displayName":"Account Holder","description":"User who owns this account","required":true,"multiple":false,"targetEntities":["user"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"investment_account","displayName":"Investment Account","description":"Investment and brokerage accounts","propertyCount":7,"associationCount":1,"properties":[{"name":"id","displayName":"Investment Account ID","description":"Unique identifier for the investment account","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"account_number","displayName":"Account Number","description":"Investment account number","type":"string","required":true,"unique":true,"semantics":[]},{"name":"account_type","displayName":"Account Type","description":"Type of investment account","type":"string","required":true,"semantics":[],"enumValues":["individual","joint","ira","401k","roth_ira"]},{"name":"total_value","displayName":"Total Portfolio Value","description":"Total value of all investments","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"cash_balance","displayName":"Cash Balance","description":"Available cash balance","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"status","displayName":"Account Status","description":"Current status of the investment account","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","inactive","suspended","closed"],"defaultValue":"active"},{"name":"created_at","displayName":"Created At","description":"When the investment account was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"user","displayName":"Account Holder","description":"User who owns this investment account","required":true,"multiple":false,"targetEntities":["user"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"credit_card","displayName":"Credit Card","description":"Credit card accounts and lines of credit","propertyCount":8,"associationCount":1,"properties":[{"name":"id","displayName":"Credit Card ID","description":"Unique identifier for the credit card","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"card_number","displayName":"Card Number","description":"Credit card number (masked)","type":"string","required":true,"writeOnly":true,"semantics":[]},{"name":"credit_limit","displayName":"Credit Limit","description":"Total credit limit","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"available_credit","displayName":"Available Credit","description":"Available credit remaining","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"current_balance","displayName":"Current Balance","description":"Current outstanding balance","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"apr","displayName":"APR","description":"Annual Percentage Rate","type":"number","required":true,"semantics":[]},{"name":"status","displayName":"Card Status","description":"Current status of the credit card","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["active","inactive","suspended","closed"],"defaultValue":"active"},{"name":"created_at","displayName":"Created At","description":"When the credit card was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"user","displayName":"Cardholder","description":"User who owns this credit card","required":true,"multiple":false,"targetEntities":["user"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"Transaction Processing","displayName":"Transaction Processing","description":"Payments, transfers, deposits, and withdrawals","modelCount":1,"entityCount":2,"models":[{"name":"Transactions","displayName":"Transaction Management","description":"Financial transactions and transfers","entityCount":2,"entities":[{"name":"transaction","displayName":"Transaction","description":"Financial transaction record","propertyCount":9,"associationCount":2,"properties":[{"name":"id","displayName":"Transaction ID","description":"Unique identifier for the transaction","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"transaction_number","displayName":"Transaction Number","description":"Human-readable transaction number","type":"string","required":true,"unique":true,"semantics":[]},{"name":"status","displayName":"Transaction Status","description":"Current status of the transaction","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","processing","completed","failed","cancelled"],"defaultValue":"pending"},{"name":"transaction_type","displayName":"Transaction Type","description":"Type of financial transaction","type":"string","required":true,"semantics":[],"enumValues":["deposit","withdrawal","transfer","payment","fee"]},{"name":"amount","displayName":"Transaction Amount","description":"Amount of the transaction","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"description","displayName":"Description","description":"Transaction description","type":"string","semantics":[]},{"name":"transaction_date","displayName":"Transaction Date","description":"Date when transaction occurred","type":"date","required":true,"semantics":[]},{"name":"reference_number","displayName":"Reference Number","description":"External reference number","type":"string","semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the transaction was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"user","displayName":"User","description":"User who initiated the transaction","required":true,"multiple":false,"targetEntities":["user"],"semantics":[],"cardinality":"One-to-One"},{"name":"account","displayName":"Account","description":"Account involved in the transaction","required":true,"multiple":false,"targetEntities":["bank_account"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"transfer","displayName":"Transfer","description":"Money transfers between accounts","propertyCount":5,"associationCount":2,"properties":[{"name":"id","displayName":"Transfer ID","description":"Unique identifier for the transfer","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"status","displayName":"Transfer Status","description":"Current status of the transfer","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","processing","completed","failed","cancelled"],"defaultValue":"pending"},{"name":"amount","displayName":"Transfer Amount","description":"Amount being transferred","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"transfer_date","displayName":"Transfer Date","description":"Date when transfer was initiated","type":"date","required":true,"semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the transfer was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"from_account","displayName":"From Account","description":"Source account for the transfer","required":true,"multiple":false,"targetEntities":["bank_account"],"semantics":[],"cardinality":"One-to-One"},{"name":"to_account","displayName":"To Account","description":"Destination account for the transfer","required":true,"multiple":false,"targetEntities":["bank_account"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"Investment Portfolio","displayName":"Investment Portfolio","description":"Assets, positions, and performance tracking","modelCount":1,"entityCount":3,"models":[{"name":"Portfolios","displayName":"Portfolio Management","description":"Investment portfolios and assets","entityCount":3,"entities":[{"name":"asset","displayName":"Asset","description":"Investment asset (stocks, bonds, etc.)","propertyCount":7,"associationCount":0,"properties":[{"name":"id","displayName":"Asset ID","description":"Unique identifier for the asset","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"symbol","displayName":"Symbol","description":"Asset symbol/ticker","type":"string","required":true,"unique":true,"semantics":[]},{"name":"name","displayName":"Asset Name","description":"Name of the asset","type":"string","semantics":["Semantic#Title"]},{"name":"asset_type","displayName":"Asset Type","description":"Type of investment asset","type":"string","required":true,"semantics":[],"enumValues":["stock","bond","etf","mutual_fund","commodity","crypto"]},{"name":"current_price","displayName":"Current Price","description":"Current market price of the asset","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"market_cap","displayName":"Market Cap","description":"Market capitalization","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"created_at","displayName":"Created At","description":"When the asset was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]},{"name":"position","displayName":"Position","description":"Investment position in a portfolio","propertyCount":6,"associationCount":2,"properties":[{"name":"id","displayName":"Position ID","description":"Unique identifier for the position","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"quantity","displayName":"Quantity","description":"Number of shares/units held","type":"number","required":true,"semantics":[]},{"name":"average_cost","displayName":"Average Cost","description":"Average cost per share/unit","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"current_value","displayName":"Current Value","description":"Current market value of the position","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"unrealized_gain_loss","displayName":"Unrealized Gain/Loss","description":"Unrealized profit or loss","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"created_at","displayName":"Created At","description":"When the position was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"account","displayName":"Investment Account","description":"Account holding this position","required":true,"multiple":false,"targetEntities":["investment_account"],"semantics":[],"cardinality":"One-to-One"},{"name":"asset","displayName":"Asset","description":"Asset for this position","required":true,"multiple":false,"targetEntities":["asset"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]},{"name":"performance","displayName":"Performance","description":"Portfolio performance tracking","propertyCount":5,"associationCount":1,"properties":[{"name":"id","displayName":"Performance ID","description":"Unique identifier for the performance record","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"date","displayName":"Date","description":"Date of performance measurement","type":"date","required":true,"semantics":[]},{"name":"total_value","displayName":"Total Value","description":"Total portfolio value on this date","type":"number","required":true,"semantics":["Semantic#Currency"]},{"name":"return_percentage","displayName":"Return Percentage","description":"Percentage return","type":"number","required":true,"semantics":[]},{"name":"created_at","displayName":"Created At","description":"When the performance record was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"account","displayName":"Investment Account","description":"Account for this performance record","required":true,"multiple":false,"targetEntities":["investment_account"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]},{"name":"Compliance Reporting","displayName":"Compliance & Reporting","description":"Regulatory reporting and audit trails","modelCount":1,"entityCount":2,"models":[{"name":"Compliance","displayName":"Compliance Management","description":"Regulatory compliance and reporting","entityCount":2,"entities":[{"name":"audit_trail","displayName":"Audit Trail","description":"System audit trail for compliance","propertyCount":8,"associationCount":0,"properties":[{"name":"id","displayName":"Audit ID","description":"Unique identifier for the audit record","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"action","displayName":"Action","description":"Action performed","type":"string","required":true,"semantics":[]},{"name":"entity_type","displayName":"Entity Type","description":"Type of entity affected","type":"string","required":true,"semantics":[]},{"name":"entity_id","displayName":"Entity ID","description":"ID of the affected entity","type":"string","required":true,"semantics":[]},{"name":"user_id","displayName":"User ID","description":"User who performed the action","type":"string","required":true,"semantics":[]},{"name":"ip_address","displayName":"IP Address","description":"IP address of the user","type":"string","semantics":["Semantic#ClientIPAddress"]},{"name":"description","displayName":"Description","description":"Additional details about the action","type":"string","semantics":["Semantic#Description"]},{"name":"timestamp","displayName":"Timestamp","description":"When the action occurred","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]},{"name":"regulatory_report","displayName":"Regulatory Report","description":"Regulatory reporting requirements","propertyCount":7,"associationCount":0,"properties":[{"name":"id","displayName":"Report ID","description":"Unique identifier for the report","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"name","displayName":"Report Name","description":"Name of the regulatory report","type":"string","semantics":["Semantic#Title"]},{"name":"status","displayName":"Report Status","description":"Current status of the report","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["draft","submitted","approved","rejected"],"defaultValue":"draft"},{"name":"report_type","displayName":"Report Type","description":"Type of regulatory report","type":"string","required":true,"semantics":[],"enumValues":["suspicious_activity","large_transaction","annual_report","quarterly_report"]},{"name":"reporting_period","displayName":"Reporting Period","description":"Period covered by the report","type":"string","required":true,"semantics":[]},{"name":"description","displayName":"Description","description":"Report content and details","type":"string","semantics":["Semantic#Description"]},{"name":"created_at","displayName":"Created At","description":"When the report was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[],"semantics":[]}]}]},{"name":"FraudDetection","displayName":"Fraud Detection","description":"Transaction monitoring and risk scoring","modelCount":1,"entityCount":1,"models":[{"name":"FraudDetection","displayName":"Fraud Detection Management","description":"Fraud detection and monitoring","entityCount":1,"entities":[{"name":"fraud_alert","displayName":"Fraud Alert","description":"Fraud detection alerts and flags","propertyCount":6,"associationCount":2,"properties":[{"name":"id","displayName":"Alert ID","description":"Unique identifier for the fraud alert","type":"string","primary":true,"readOnly":true,"semantics":[]},{"name":"status","displayName":"Alert Status","description":"Current status of the fraud alert","type":"string","required":true,"semantics":["Semantic#Status"],"enumValues":["pending","investigating","resolved","false_positive"],"defaultValue":"pending"},{"name":"alert_type","displayName":"Alert Type","description":"Type of fraud alert","type":"string","required":true,"semantics":[],"enumValues":["suspicious_transaction","unusual_pattern","identity_theft","account_takeover"]},{"name":"risk_score","displayName":"Risk Score","description":"Risk score (1-100)","type":"number","required":true,"semantics":[]},{"name":"description","displayName":"Description","description":"Details about the fraud alert","type":"string","semantics":["Semantic#Description"]},{"name":"created_at","displayName":"Created At","description":"When the fraud alert was created","type":"datetime","readOnly":true,"semantics":["Semantic#CreatedTimestamp"]}],"associations":[{"name":"transaction","displayName":"Transaction","description":"Transaction that triggered the alert","required":false,"multiple":false,"targetEntities":["transaction"],"semantics":[],"cardinality":"One-to-One"},{"name":"user","displayName":"User","description":"User associated with the alert","required":true,"multiple":false,"targetEntities":["user"],"semantics":[],"cardinality":"One-to-One"}],"semantics":[]}]}]}]}}
|