@api-client/core 0.18.21 → 0.18.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/build/src/modeling/helpers/Intelisense.d.ts +1 -0
  2. package/build/src/modeling/helpers/Intelisense.d.ts.map +1 -1
  3. package/build/src/modeling/helpers/Intelisense.js +1 -0
  4. package/build/src/modeling/helpers/Intelisense.js.map +1 -1
  5. package/build/src/modeling/templates/index.d.ts +1 -0
  6. package/build/src/modeling/templates/index.d.ts.map +1 -1
  7. package/build/src/modeling/templates/index.js +2 -0
  8. package/build/src/modeling/templates/index.js.map +1 -1
  9. package/build/src/modeling/templates/meta/education-management-platform.json +1 -0
  10. package/build/src/modeling/templates/meta/financial-services-platform.json +1 -0
  11. package/build/src/modeling/templates/meta/gaming-platform.json +1 -0
  12. package/build/src/modeling/templates/meta/healthcare-management-platform.json +1 -0
  13. package/build/src/modeling/templates/meta/hospitality-platform.json +1 -0
  14. package/build/src/modeling/templates/meta/index.d.ts +11 -3
  15. package/build/src/modeling/templates/meta/index.d.ts.map +1 -1
  16. package/build/src/modeling/templates/meta/index.js +61 -1
  17. package/build/src/modeling/templates/meta/index.js.map +1 -1
  18. package/build/src/modeling/templates/meta/iot-smart-home-platform.json +1 -0
  19. package/build/src/modeling/templates/meta/legal-services-platform.json +1 -0
  20. package/build/src/modeling/templates/meta/manufacturing-platform.json +1 -0
  21. package/build/src/modeling/templates/meta/non-profit-platform.json +1 -0
  22. package/build/src/modeling/templates/meta/real-estate-management-platform.json +1 -0
  23. package/build/src/modeling/templates/template-registry.d.ts +14 -0
  24. package/build/src/modeling/templates/template-registry.d.ts.map +1 -1
  25. package/build/src/modeling/templates/template-registry.js +63 -0
  26. package/build/src/modeling/templates/template-registry.js.map +1 -1
  27. package/build/src/modeling/templates/{ecommerce-domain.d.ts → verticals/business-services/ecommerce-domain.d.ts} +2 -2
  28. package/build/src/modeling/templates/verticals/business-services/ecommerce-domain.d.ts.map +1 -0
  29. package/build/src/modeling/templates/{ecommerce-domain.js → verticals/business-services/ecommerce-domain.js} +6 -6
  30. package/build/src/modeling/templates/verticals/business-services/ecommerce-domain.js.map +1 -0
  31. package/build/src/modeling/templates/verticals/business-services/financial-services-domain.d.ts +40 -0
  32. package/build/src/modeling/templates/verticals/business-services/financial-services-domain.d.ts.map +1 -0
  33. package/build/src/modeling/templates/verticals/business-services/financial-services-domain.js +744 -0
  34. package/build/src/modeling/templates/verticals/business-services/financial-services-domain.js.map +1 -0
  35. package/build/src/modeling/templates/verticals/business-services/hospitality-domain.d.ts +45 -0
  36. package/build/src/modeling/templates/verticals/business-services/hospitality-domain.d.ts.map +1 -0
  37. package/build/src/modeling/templates/verticals/business-services/hospitality-domain.js +797 -0
  38. package/build/src/modeling/templates/verticals/business-services/hospitality-domain.js.map +1 -0
  39. package/build/src/modeling/templates/verticals/business-services/index.d.ts +21 -0
  40. package/build/src/modeling/templates/verticals/business-services/index.d.ts.map +1 -0
  41. package/build/src/modeling/templates/verticals/business-services/index.js +50 -0
  42. package/build/src/modeling/templates/verticals/business-services/index.js.map +1 -0
  43. package/build/src/modeling/templates/verticals/business-services/legal-services-domain.d.ts +46 -0
  44. package/build/src/modeling/templates/verticals/business-services/legal-services-domain.d.ts.map +1 -0
  45. package/build/src/modeling/templates/verticals/business-services/legal-services-domain.js +837 -0
  46. package/build/src/modeling/templates/verticals/business-services/legal-services-domain.js.map +1 -0
  47. package/build/src/modeling/templates/verticals/education-training/education-domain.d.ts +40 -0
  48. package/build/src/modeling/templates/verticals/education-training/education-domain.d.ts.map +1 -0
  49. package/build/src/modeling/templates/verticals/education-training/education-domain.js +725 -0
  50. package/build/src/modeling/templates/verticals/education-training/education-domain.js.map +1 -0
  51. package/build/src/modeling/templates/verticals/education-training/index.d.ts +18 -0
  52. package/build/src/modeling/templates/verticals/education-training/index.d.ts.map +1 -0
  53. package/build/src/modeling/templates/verticals/education-training/index.js +21 -0
  54. package/build/src/modeling/templates/verticals/education-training/index.js.map +1 -0
  55. package/build/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.d.ts +40 -0
  56. package/build/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.d.ts.map +1 -0
  57. package/build/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.js +859 -0
  58. package/build/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.js.map +1 -0
  59. package/build/src/modeling/templates/verticals/healthcare-life-sciences/index.d.ts +18 -0
  60. package/build/src/modeling/templates/verticals/healthcare-life-sciences/index.d.ts.map +1 -0
  61. package/build/src/modeling/templates/verticals/healthcare-life-sciences/index.js +21 -0
  62. package/build/src/modeling/templates/verticals/healthcare-life-sciences/index.js.map +1 -0
  63. package/build/src/modeling/templates/verticals/index.d.ts +79 -0
  64. package/build/src/modeling/templates/verticals/index.d.ts.map +1 -0
  65. package/build/src/modeling/templates/verticals/index.js +186 -0
  66. package/build/src/modeling/templates/verticals/index.js.map +1 -0
  67. package/build/src/modeling/templates/verticals/manufacturing-logistics/index.d.ts +18 -0
  68. package/build/src/modeling/templates/verticals/manufacturing-logistics/index.d.ts.map +1 -0
  69. package/build/src/modeling/templates/verticals/manufacturing-logistics/index.js +22 -0
  70. package/build/src/modeling/templates/verticals/manufacturing-logistics/index.js.map +1 -0
  71. package/build/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.d.ts +45 -0
  72. package/build/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.d.ts.map +1 -0
  73. package/build/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.js +710 -0
  74. package/build/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.js.map +1 -0
  75. package/build/src/modeling/templates/verticals/public-sector/index.d.ts +18 -0
  76. package/build/src/modeling/templates/verticals/public-sector/index.d.ts.map +1 -0
  77. package/build/src/modeling/templates/verticals/public-sector/index.js +22 -0
  78. package/build/src/modeling/templates/verticals/public-sector/index.js.map +1 -0
  79. package/build/src/modeling/templates/verticals/public-sector/non-profit-domain.d.ts +47 -0
  80. package/build/src/modeling/templates/verticals/public-sector/non-profit-domain.d.ts.map +1 -0
  81. package/build/src/modeling/templates/verticals/public-sector/non-profit-domain.js +864 -0
  82. package/build/src/modeling/templates/verticals/public-sector/non-profit-domain.js.map +1 -0
  83. package/build/src/modeling/templates/verticals/real-estate-construction/index.d.ts +18 -0
  84. package/build/src/modeling/templates/verticals/real-estate-construction/index.d.ts.map +1 -0
  85. package/build/src/modeling/templates/verticals/real-estate-construction/index.js +21 -0
  86. package/build/src/modeling/templates/verticals/real-estate-construction/index.js.map +1 -0
  87. package/build/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.d.ts +40 -0
  88. package/build/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.d.ts.map +1 -0
  89. package/build/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.js +727 -0
  90. package/build/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.js.map +1 -0
  91. package/build/src/modeling/templates/{blog-domain.d.ts → verticals/technology-media/blog-domain.d.ts} +2 -2
  92. package/build/src/modeling/templates/verticals/technology-media/blog-domain.d.ts.map +1 -0
  93. package/build/src/modeling/templates/{blog-domain.js → verticals/technology-media/blog-domain.js} +5 -5
  94. package/build/src/modeling/templates/verticals/technology-media/blog-domain.js.map +1 -0
  95. package/build/src/modeling/templates/verticals/technology-media/gaming-domain.d.ts +46 -0
  96. package/build/src/modeling/templates/verticals/technology-media/gaming-domain.d.ts.map +1 -0
  97. package/build/src/modeling/templates/verticals/technology-media/gaming-domain.js +1033 -0
  98. package/build/src/modeling/templates/verticals/technology-media/gaming-domain.js.map +1 -0
  99. package/build/src/modeling/templates/verticals/technology-media/index.d.ts +21 -0
  100. package/build/src/modeling/templates/verticals/technology-media/index.d.ts.map +1 -0
  101. package/build/src/modeling/templates/verticals/technology-media/index.js +42 -0
  102. package/build/src/modeling/templates/verticals/technology-media/index.js.map +1 -0
  103. package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.d.ts +47 -0
  104. package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.d.ts.map +1 -0
  105. package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.js +1027 -0
  106. package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.js.map +1 -0
  107. package/build/tsconfig.tsbuildinfo +1 -1
  108. package/data/models/example-generator-api.json +23 -23
  109. package/package.json +1 -1
  110. package/src/modeling/helpers/Intelisense.ts +1 -0
  111. package/src/modeling/templates/meta/education-management-platform.json +1 -0
  112. package/src/modeling/templates/meta/financial-services-platform.json +1 -0
  113. package/src/modeling/templates/meta/gaming-platform.json +1 -0
  114. package/src/modeling/templates/meta/healthcare-management-platform.json +1 -0
  115. package/src/modeling/templates/meta/hospitality-platform.json +1 -0
  116. package/src/modeling/templates/meta/iot-smart-home-platform.json +1 -0
  117. package/src/modeling/templates/meta/legal-services-platform.json +1 -0
  118. package/src/modeling/templates/meta/manufacturing-platform.json +1 -0
  119. package/src/modeling/templates/meta/non-profit-platform.json +1 -0
  120. package/src/modeling/templates/meta/real-estate-management-platform.json +1 -0
  121. package/src/modeling/templates/readme.md +14 -0
  122. package/src/modeling/templates/template-registry.ts +73 -0
  123. package/src/modeling/templates/verticals/README.md +122 -0
  124. package/src/modeling/templates/{ecommerce-domain.ts → verticals/business-services/ecommerce-domain.ts} +7 -7
  125. package/src/modeling/templates/verticals/business-services/financial-services-domain.ts +943 -0
  126. package/src/modeling/templates/verticals/business-services/hospitality-domain.ts +994 -0
  127. package/src/modeling/templates/verticals/business-services/legal-services-domain.ts +1059 -0
  128. package/src/modeling/templates/verticals/education-training/education-domain.ts +922 -0
  129. package/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.ts +1111 -0
  130. package/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.ts +895 -0
  131. package/src/modeling/templates/verticals/public-sector/non-profit-domain.ts +1109 -0
  132. package/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.ts +944 -0
  133. package/src/modeling/templates/{blog-domain.ts → verticals/technology-media/blog-domain.ts} +6 -6
  134. package/src/modeling/templates/verticals/technology-media/gaming-domain.ts +1290 -0
  135. package/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.ts +1287 -0
  136. package/build/src/modeling/templates/blog-domain.d.ts.map +0 -1
  137. package/build/src/modeling/templates/blog-domain.js.map +0 -1
  138. package/build/src/modeling/templates/ecommerce-domain.d.ts.map +0 -1
  139. package/build/src/modeling/templates/ecommerce-domain.js.map +0 -1
@@ -0,0 +1 @@
1
+ { "id": "non-profit-platform", "name": "Non-Profit Platform", "description": "A comprehensive non-profit platform with donor management, programs, volunteers, grants, events, and financial management", "createdAt": "2025-01-27T00:00:00.000Z", "updatedAt": "2025-01-27T00:00:00.000Z", "version": "1.0.0", "author": "API Now! Core Team", "tags": ["non-profit", "charity", "donor-management", "volunteer-management", "grant-management"], "structure": { "domain": { "name": "Non-Profit Platform", "description": "A comprehensive non-profit platform with donor management, programs, volunteers, grants, events, and financial management", "totalEntities": 15, "totalProperties": 146, "totalAssociations": 13 }, "namespaces": [{ "name": "DonorManagement", "displayName": "Donor Management", "description": "Donors, donations, campaigns, and stewardship", "modelCount": 1, "entityCount": 3, "models": [{ "name": "Donors", "displayName": "Donor Management", "description": "Donor profiles and relationships", "entityCount": 3, "entities": [{ "name": "donor", "displayName": "Donor", "description": "Donor with profile and giving history", "propertyCount": 12, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Donor ID", "description": "Unique identifier for the donor", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Donor name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Donor description and notes", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "email", "displayName": "Email Address", "description": "Donor email address", "type": "string", "required": true, "semantics": ["Semantic#Email"] }, { "name": "phone", "displayName": "Phone Number", "description": "Donor phone number", "type": "string", "semantics": ["Semantic#Phone"] }, { "name": "donor_type", "displayName": "Donor Type", "description": "Type of donor", "type": "string", "required": true, "semantics": [], "enumValues": ["individual", "corporation", "foundation", "government", "anonymous"] }, { "name": "address", "displayName": "Address", "description": "Donor address", "type": "string", "required": false, "semantics": [] }, { "name": "date_of_birth", "displayName": "Date of Birth", "description": "Donor date of birth", "type": "date", "required": false, "semantics": [] }, { "name": "employer", "displayName": "Employer", "description": "Donor employer", "type": "string", "required": false, "semantics": [] }, { "name": "status", "displayName": "Donor Status", "description": "Current status of the donor", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["active", "inactive", "prospect", "lapsed"], "defaultValue": "active" }, { "name": "created_at", "displayName": "Created At", "description": "When the donor record was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }, { "name": "updated_at", "displayName": "Updated At", "description": "When the donor record was last updated", "type": "datetime", "readOnly": true, "semantics": ["Semantic#UpdatedTimestamp"] }], "associations": [], "semantics": [] }, { "name": "donation", "displayName": "Donation", "description": "Donor contribution", "propertyCount": 9, "associationCount": 2, "properties": [{ "name": "id", "displayName": "Donation ID", "description": "Unique identifier for the donation", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Donation name and description", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Donation description and purpose", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "donation_date", "displayName": "Donation Date", "description": "Date of the donation", "type": "date", "required": true, "semantics": [] }, { "name": "donation_type", "displayName": "Donation Type", "description": "Type of donation", "type": "string", "required": true, "semantics": [], "enumValues": ["one_time", "recurring", "pledge", "in_kind", "matching"] }, { "name": "payment_method", "displayName": "Payment Method", "description": "Payment method used", "type": "string", "required": true, "semantics": [], "enumValues": ["check", "credit_card", "bank_transfer", "cash", "online", "stock"] }, { "name": "amount", "displayName": "Donation Amount", "description": "Donation amount", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "status", "displayName": "Donation Status", "description": "Current status of the donation", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["pending", "received", "acknowledged", "thanked"], "defaultValue": "pending" }, { "name": "created_at", "displayName": "Created At", "description": "When the donation was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "donor", "displayName": "Donor", "description": "Donor for this donation", "required": true, "multiple": false, "targetEntities": ["donor"], "semantics": [], "cardinality": "One-to-One" }, { "name": "campaign", "displayName": "Campaign", "description": "Campaign for this donation", "required": false, "multiple": false, "targetEntities": ["campaign"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "campaign", "displayName": "Campaign", "description": "Fundraising campaign", "propertyCount": 10, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Campaign ID", "description": "Unique identifier for the campaign", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Campaign name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Campaign description and goals", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "campaign_type", "displayName": "Campaign Type", "description": "Type of campaign", "type": "string", "required": true, "semantics": [], "enumValues": ["annual", "capital", "emergency", "special_event", "online", "mail"] }, { "name": "start_date", "displayName": "Start Date", "description": "Campaign start date", "type": "date", "required": true, "semantics": [] }, { "name": "end_date", "displayName": "End Date", "description": "Campaign end date", "type": "date", "required": true, "semantics": [] }, { "name": "goal_amount", "displayName": "Goal Amount", "description": "Campaign fundraising goal", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "raised_amount", "displayName": "Raised Amount", "description": "Amount raised so far", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "status", "displayName": "Campaign Status", "description": "Current status of the campaign", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["planning", "active", "completed", "cancelled"], "defaultValue": "planning" }, { "name": "created_at", "displayName": "Created At", "description": "When the campaign was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [], "semantics": [] }] }] }, { "name": "ProgramManagement", "displayName": "Program Management", "description": "Programs, services, outcomes, and impact", "modelCount": 1, "entityCount": 3, "models": [{ "name": "Programs", "displayName": "Program Management", "description": "Programs and services", "entityCount": 3, "entities": [{ "name": "program", "displayName": "Program", "description": "Non-profit program or service", "propertyCount": 11, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Program ID", "description": "Unique identifier for the program", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Program name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Program description and objectives", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "program_type", "displayName": "Program Type", "description": "Type of program", "type": "string", "required": true, "semantics": [], "enumValues": ["education", "healthcare", "social_services", "environmental", "arts_culture", "community_development"] }, { "name": "start_date", "displayName": "Start Date", "description": "Program start date", "type": "date", "required": true, "semantics": [] }, { "name": "end_date", "displayName": "End Date", "description": "Program end date", "type": "date", "required": false, "semantics": [] }, { "name": "budget", "displayName": "Program Budget", "description": "Program budget amount", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "target_population", "displayName": "Target Population", "description": "Target population served", "type": "string", "required": false, "semantics": [] }, { "name": "status", "displayName": "Program Status", "description": "Current status of the program", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["planning", "active", "completed", "suspended"], "defaultValue": "planning" }, { "name": "created_at", "displayName": "Created At", "description": "When the program was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }, { "name": "updated_at", "displayName": "Updated At", "description": "When the program was last updated", "type": "datetime", "readOnly": true, "semantics": ["Semantic#UpdatedTimestamp"] }], "associations": [], "semantics": [] }, { "name": "service", "displayName": "Service", "description": "Service provided by the program", "propertyCount": 7, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Service ID", "description": "Unique identifier for the service", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Service name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Service description and details", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "service_type", "displayName": "Service Type", "description": "Type of service", "type": "string", "required": true, "semantics": [], "enumValues": ["direct_service", "referral", "advocacy", "education", "support", "counseling"] }, { "name": "location", "displayName": "Location", "description": "Service location", "type": "string", "required": false, "semantics": [] }, { "name": "status", "displayName": "Service Status", "description": "Current status of the service", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["available", "unavailable", "waitlist"], "defaultValue": "available" }, { "name": "created_at", "displayName": "Created At", "description": "When the service was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "program", "displayName": "Program", "description": "Program for this service", "required": true, "multiple": false, "targetEntities": ["program"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "outcome", "displayName": "Outcome", "description": "Program outcomes and impact measurement", "propertyCount": 9, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Outcome ID", "description": "Unique identifier for the outcome", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Outcome name and description", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Outcome description and measurement", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "outcome_type", "displayName": "Outcome Type", "description": "Type of outcome", "type": "string", "required": true, "semantics": [], "enumValues": ["short_term", "medium_term", "long_term", "impact", "output"] }, { "name": "measurement_unit", "displayName": "Measurement Unit", "description": "Unit of measurement", "type": "string", "required": true, "semantics": [] }, { "name": "target_value", "displayName": "Target Value", "description": "Target outcome value", "type": "number", "required": true, "semantics": [] }, { "name": "actual_value", "displayName": "Actual Value", "description": "Actual outcome value", "type": "number", "required": false, "semantics": [] }, { "name": "status", "displayName": "Outcome Status", "description": "Current status of the outcome", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["planned", "in_progress", "achieved", "not_achieved"], "defaultValue": "planned" }, { "name": "created_at", "displayName": "Created At", "description": "When the outcome was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "program", "displayName": "Program", "description": "Program for this outcome", "required": true, "multiple": false, "targetEntities": ["program"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }, { "name": "VolunteerManagement", "displayName": "Volunteer Management", "description": "Volunteers, opportunities, and scheduling", "modelCount": 1, "entityCount": 3, "models": [{ "name": "Volunteers", "displayName": "Volunteer Management", "description": "Volunteer profiles and opportunities", "entityCount": 3, "entities": [{ "name": "volunteer", "displayName": "Volunteer", "description": "Volunteer with profile and skills", "propertyCount": 11, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Volunteer ID", "description": "Unique identifier for the volunteer", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Volunteer name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Volunteer description and notes", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "email", "displayName": "Email Address", "description": "Volunteer email address", "type": "string", "required": true, "semantics": ["Semantic#Email"] }, { "name": "phone", "displayName": "Phone Number", "description": "Volunteer phone number", "type": "string", "semantics": ["Semantic#Phone"] }, { "name": "volunteer_type", "displayName": "Volunteer Type", "description": "Type of volunteer", "type": "string", "required": true, "semantics": [], "enumValues": ["individual", "corporate", "student", "retired", "professional"] }, { "name": "skills", "displayName": "Skills", "description": "Volunteer skills and expertise", "type": "string", "required": false, "semantics": [] }, { "name": "availability", "displayName": "Availability", "description": "Volunteer availability", "type": "string", "required": false, "semantics": [] }, { "name": "status", "displayName": "Volunteer Status", "description": "Current status of the volunteer", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["active", "inactive", "pending", "suspended"], "defaultValue": "active" }, { "name": "created_at", "displayName": "Created At", "description": "When the volunteer record was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }, { "name": "updated_at", "displayName": "Updated At", "description": "When the volunteer record was last updated", "type": "datetime", "readOnly": true, "semantics": ["Semantic#UpdatedTimestamp"] }], "associations": [], "semantics": [] }, { "name": "opportunity", "displayName": "Opportunity", "description": "Volunteer opportunity", "propertyCount": 9, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Opportunity ID", "description": "Unique identifier for the opportunity", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Opportunity name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Opportunity description and requirements", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "opportunity_type", "displayName": "Opportunity Type", "description": "Type of opportunity", "type": "string", "required": true, "semantics": [], "enumValues": ["event_support", "program_delivery", "administrative", "fundraising", "mentoring", "outreach"] }, { "name": "location", "displayName": "Location", "description": "Opportunity location", "type": "string", "required": false, "semantics": [] }, { "name": "required_skills", "displayName": "Required Skills", "description": "Skills required for opportunity", "type": "string", "required": false, "semantics": [] }, { "name": "duration", "displayName": "Duration", "description": "Opportunity duration", "type": "string", "required": false, "semantics": [] }, { "name": "status", "displayName": "Opportunity Status", "description": "Current status of the opportunity", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["open", "filled", "closed", "cancelled"], "defaultValue": "open" }, { "name": "created_at", "displayName": "Created At", "description": "When the opportunity was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "program", "displayName": "Program", "description": "Program for this opportunity", "required": false, "multiple": false, "targetEntities": ["program"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "volunteer_assignment", "displayName": "Volunteer Assignment", "description": "Volunteer assignments and scheduling", "propertyCount": 8, "associationCount": 2, "properties": [{ "name": "id", "displayName": "Assignment ID", "description": "Unique identifier for the volunteer assignment", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Assignment name and description", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "assignment_date", "displayName": "Assignment Date", "description": "Assignment date", "type": "date", "required": true, "semantics": [] }, { "name": "start_time", "displayName": "Start Time", "description": "Assignment start time", "type": "time", "required": true, "semantics": [] }, { "name": "end_time", "displayName": "End Time", "description": "Assignment end time", "type": "time", "required": true, "semantics": [] }, { "name": "hours_worked", "displayName": "Hours Worked", "description": "Hours worked on assignment", "type": "number", "required": false, "semantics": [] }, { "name": "status", "displayName": "Assignment Status", "description": "Current status of the volunteer assignment", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["scheduled", "in_progress", "completed", "cancelled"], "defaultValue": "scheduled" }, { "name": "created_at", "displayName": "Created At", "description": "When the assignment was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "volunteer", "displayName": "Volunteer", "description": "Volunteer for this assignment", "required": true, "multiple": false, "targetEntities": ["volunteer"], "semantics": [], "cardinality": "One-to-One" }, { "name": "opportunity", "displayName": "Opportunity", "description": "Opportunity for this assignment", "required": true, "multiple": false, "targetEntities": ["opportunity"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }, { "name": "GrantManagement", "displayName": "Grant Management", "description": "Grants, applications, reporting, and compliance", "modelCount": 1, "entityCount": 2, "models": [{ "name": "Grants", "displayName": "Grant Management", "description": "Grant applications and management", "entityCount": 2, "entities": [{ "name": "grant", "displayName": "Grant", "description": "Grant application or award", "propertyCount": 11, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Grant ID", "description": "Unique identifier for the grant", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Grant name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Grant description and objectives", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "grant_type", "displayName": "Grant Type", "description": "Type of grant", "type": "string", "required": true, "semantics": [], "enumValues": ["program", "operating", "capital", "research", "emergency", "matching"] }, { "name": "funder", "displayName": "Funder", "description": "Grant funder or foundation", "type": "string", "required": true, "semantics": [] }, { "name": "application_date", "displayName": "Application Date", "description": "Grant application date", "type": "date", "required": true, "semantics": [] }, { "name": "decision_date", "displayName": "Decision Date", "description": "Grant decision date", "type": "date", "required": false, "semantics": [] }, { "name": "requested_amount", "displayName": "Requested Amount", "description": "Amount requested in grant", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "awarded_amount", "displayName": "Awarded Amount", "description": "Amount awarded in grant", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "status", "displayName": "Grant Status", "description": "Current status of the grant", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["draft", "submitted", "under_review", "approved", "rejected", "active", "completed"], "defaultValue": "draft" }, { "name": "created_at", "displayName": "Created At", "description": "When the grant was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "program", "displayName": "Program", "description": "Program for this grant", "required": true, "multiple": false, "targetEntities": ["program"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "grant_report", "displayName": "Grant Report", "description": "Grant reporting and compliance", "propertyCount": 8, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Report ID", "description": "Unique identifier for the grant report", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Report name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Report description and content", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "report_type", "displayName": "Report Type", "description": "Type of grant report", "type": "string", "required": true, "semantics": [], "enumValues": ["progress", "final", "financial", "narrative", "compliance"] }, { "name": "due_date", "displayName": "Due Date", "description": "Report due date", "type": "date", "required": true, "semantics": [] }, { "name": "submission_date", "displayName": "Submission Date", "description": "Report submission date", "type": "date", "required": false, "semantics": [] }, { "name": "status", "displayName": "Report Status", "description": "Current status of the grant report", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["draft", "submitted", "approved", "revision_requested"], "defaultValue": "draft" }, { "name": "created_at", "displayName": "Created At", "description": "When the report was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "grant", "displayName": "Grant", "description": "Grant for this report", "required": true, "multiple": false, "targetEntities": ["grant"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }, { "name": "EventManagement", "displayName": "Event Management", "description": "Fundraising events, registrations, and logistics", "modelCount": 1, "entityCount": 2, "models": [{ "name": "Events", "displayName": "Event Management", "description": "Fundraising events and activities", "entityCount": 2, "entities": [{ "name": "event", "displayName": "Event", "description": "Fundraising event or activity", "propertyCount": 13, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Event ID", "description": "Unique identifier for the event", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Event name and title", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Event description and details", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "event_type", "displayName": "Event Type", "description": "Type of event", "type": "string", "required": true, "semantics": [], "enumValues": ["gala", "auction", "walk_run", "golf_tournament", "conference", "workshop", "volunteer_day"] }, { "name": "event_date", "displayName": "Event Date", "description": "Event date", "type": "date", "required": true, "semantics": [] }, { "name": "start_time", "displayName": "Start Time", "description": "Event start time", "type": "time", "required": true, "semantics": [] }, { "name": "end_time", "displayName": "End Time", "description": "Event end time", "type": "time", "required": false, "semantics": [] }, { "name": "location", "displayName": "Location", "description": "Event location", "type": "string", "required": true, "semantics": [] }, { "name": "capacity", "displayName": "Capacity", "description": "Event capacity", "type": "number", "required": false, "semantics": [] }, { "name": "goal_amount", "displayName": "Goal Amount", "description": "Event fundraising goal", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "raised_amount", "displayName": "Raised Amount", "description": "Amount raised from event", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "status", "displayName": "Event Status", "description": "Current status of the event", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["planning", "registration_open", "registration_closed", "in_progress", "completed", "cancelled"], "defaultValue": "planning" }, { "name": "created_at", "displayName": "Created At", "description": "When the event was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [], "semantics": [] }, { "name": "registration", "displayName": "Registration", "description": "Event registration", "propertyCount": 8, "associationCount": 2, "properties": [{ "name": "id", "displayName": "Registration ID", "description": "Unique identifier for the registration", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Registration name and description", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "registration_date", "displayName": "Registration Date", "description": "Registration date", "type": "date", "required": true, "semantics": [] }, { "name": "registration_type", "displayName": "Registration Type", "description": "Type of registration", "type": "string", "required": true, "semantics": [], "enumValues": ["individual", "group", "sponsor", "volunteer"] }, { "name": "number_of_attendees", "displayName": "Number of Attendees", "description": "Number of attendees", "type": "number", "required": true, "semantics": [] }, { "name": "registration_fee", "displayName": "Registration Fee", "description": "Registration fee amount", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "status", "displayName": "Registration Status", "description": "Current status of the registration", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["pending", "confirmed", "cancelled", "attended"], "defaultValue": "pending" }, { "name": "created_at", "displayName": "Created At", "description": "When the registration was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "event", "displayName": "Event", "description": "Event for this registration", "required": true, "multiple": false, "targetEntities": ["event"], "semantics": [], "cardinality": "One-to-One" }, { "name": "donor", "displayName": "Donor", "description": "Donor for this registration", "required": true, "multiple": false, "targetEntities": ["donor"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }, { "name": "FinancialManagement", "displayName": "Financial Management", "description": "Budgets, expenses, and reporting", "modelCount": 1, "entityCount": 2, "models": [{ "name": "Financial", "displayName": "Financial Management", "description": "Financial management and reporting", "entityCount": 2, "entities": [{ "name": "budget", "displayName": "Budget", "description": "Organization budget", "propertyCount": 11, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Budget ID", "description": "Unique identifier for the budget", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Budget name and description", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Budget description and notes", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "budget_type", "displayName": "Budget Type", "description": "Type of budget", "type": "string", "required": true, "semantics": [], "enumValues": ["operating", "program", "capital", "project", "department"] }, { "name": "fiscal_year", "displayName": "Fiscal Year", "description": "Budget fiscal year", "type": "string", "required": true, "semantics": [] }, { "name": "start_date", "displayName": "Start Date", "description": "Budget start date", "type": "date", "required": true, "semantics": [] }, { "name": "end_date", "displayName": "End Date", "description": "Budget end date", "type": "date", "required": true, "semantics": [] }, { "name": "total_budget", "displayName": "Total Budget", "description": "Total budget amount", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "spent_amount", "displayName": "Spent Amount", "description": "Amount spent so far", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "status", "displayName": "Budget Status", "description": "Current status of the budget", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["draft", "approved", "active", "closed"], "defaultValue": "draft" }, { "name": "created_at", "displayName": "Created At", "description": "When the budget was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "program", "displayName": "Program", "description": "Program for this budget", "required": false, "multiple": false, "targetEntities": ["program"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "expense", "displayName": "Expense", "description": "Organization expense", "propertyCount": 9, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Expense ID", "description": "Unique identifier for the expense", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Name", "description": "Expense name and description", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Expense description and details", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "expense_type", "displayName": "Expense Type", "description": "Type of expense", "type": "string", "required": true, "semantics": [], "enumValues": ["personnel", "program", "administrative", "fundraising", "facilities", "equipment"] }, { "name": "expense_date", "displayName": "Expense Date", "description": "Expense date", "type": "date", "required": true, "semantics": [] }, { "name": "vendor", "displayName": "Vendor", "description": "Expense vendor", "type": "string", "required": false, "semantics": [] }, { "name": "amount", "displayName": "Expense Amount", "description": "Expense amount", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "status", "displayName": "Expense Status", "description": "Current status of the expense", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["pending", "approved", "paid", "rejected"], "defaultValue": "pending" }, { "name": "created_at", "displayName": "Created At", "description": "When the expense was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "budget", "displayName": "Budget", "description": "Budget for this expense", "required": true, "multiple": false, "targetEntities": ["budget"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }] } }
@@ -0,0 +1 @@
1
+ { "id": "real-estate-management-platform", "name": "Real Estate Management Platform", "description": "A comprehensive real estate management platform with property management, client management, transaction management, market analysis, and marketing features. Perfect for real estate agencies, brokers, and property managers.", "createdAt": "2025-01-27T00:00:00.000Z", "updatedAt": "2025-01-27T00:00:00.000Z", "version": "1.0.0", "author": "API Now! Core Team", "tags": ["real-estate", "property-management", "client-management", "transaction-management", "market-analysis"], "structure": { "domain": { "name": "Real Estate Management Platform", "description": "A comprehensive real estate management platform with property management, client management, transaction management, market analysis, and marketing features", "totalEntities": 15, "totalProperties": 116, "totalAssociations": 16 }, "namespaces": [{ "name": "PropertyManagement", "displayName": "Property Management", "description": "Listings, properties, amenities, and photos", "modelCount": 1, "entityCount": 4, "models": [{ "name": "Properties", "displayName": "Property Management", "description": "Property information and listings", "entityCount": 4, "entities": [{ "name": "property", "displayName": "Property", "description": "Real estate property information", "propertyCount": 16, "associationCount": 2, "properties": [{ "name": "id", "displayName": "Property ID", "description": "Unique identifier for the property", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Property Name", "description": "Name or title of the property", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Property description and features", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "address", "displayName": "Address", "description": "Property street address", "type": "string", "required": true, "semantics": [] }, { "name": "city", "displayName": "City", "description": "Property city", "type": "string", "required": true, "semantics": [] }, { "name": "state", "displayName": "State", "description": "Property state", "type": "string", "required": true, "semantics": [] }, { "name": "zip_code", "displayName": "ZIP Code", "description": "Property ZIP code", "type": "string", "required": true, "semantics": [] }, { "name": "square_feet", "displayName": "Square Feet", "description": "Property square footage", "type": "number", "required": true, "semantics": [] }, { "name": "bedrooms", "displayName": "Bedrooms", "description": "Number of bedrooms", "type": "number", "required": true, "semantics": [] }, { "name": "bathrooms", "displayName": "Bathrooms", "description": "Number of bathrooms", "type": "number", "required": true, "semantics": [] }, { "name": "property_type", "displayName": "Property Type", "description": "Type of real estate property", "type": "string", "required": true, "semantics": [], "enumValues": ["residential", "commercial", "industrial", "land", "mixed_use"] }, { "name": "status", "displayName": "Listing Status", "description": "Current listing status of the property", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["for_sale", "for_rent", "sold", "rented", "off_market"], "defaultValue": "for_sale" }, { "name": "list_price", "displayName": "List Price", "description": "Listing price of the property", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "market_value", "displayName": "Market Value", "description": "Estimated market value of the property", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "created_at", "displayName": "Created At", "description": "When the property was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }, { "name": "updated_at", "displayName": "Updated At", "description": "When the property was last updated", "type": "datetime", "readOnly": true, "semantics": ["Semantic#UpdatedTimestamp"] }], "associations": [{ "name": "amenities", "displayName": "Amenities", "description": "Amenities available at this property", "required": false, "multiple": true, "targetEntities": ["amenity"], "semantics": [], "cardinality": "One-to-Many" }, { "name": "photos", "displayName": "Photos", "description": "Photos of this property", "required": false, "multiple": true, "targetEntities": ["photo"], "semantics": [], "cardinality": "One-to-Many" }], "semantics": [] }, { "name": "listing", "displayName": "Listing", "description": "Property listing information", "propertyCount": 7, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Listing ID", "description": "Unique identifier for the listing", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Listing Title", "description": "Title of the listing", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Listing description and details", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "price", "displayName": "Listing Price", "description": "Price for the listing", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "list_date", "displayName": "List Date", "description": "Date when property was listed", "type": "date", "required": true, "semantics": [] }, { "name": "status", "displayName": "Listing Status", "description": "Current status of the listing", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["active", "pending", "sold", "expired", "withdrawn"], "defaultValue": "active" }, { "name": "created_at", "displayName": "Created At", "description": "When the listing was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "property", "displayName": "Property", "description": "Property for this listing", "required": true, "multiple": false, "targetEntities": ["property"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "amenity", "displayName": "Amenity", "description": "Property amenities and features", "propertyCount": 6, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Amenity ID", "description": "Unique identifier for the amenity", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Amenity Name", "description": "Name of the amenity", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Amenity description and details", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "amenity_type", "displayName": "Amenity Type", "description": "Type of amenity", "type": "string", "required": true, "semantics": [], "enumValues": ["interior", "exterior", "community", "utilities"] }, { "name": "available", "displayName": "Available", "description": "Whether the amenity is available", "type": "boolean", "required": true, "semantics": [], "defaultValue": "true" }, { "name": "created_at", "displayName": "Created At", "description": "When the amenity was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [], "semantics": [] }, { "name": "photo", "displayName": "Photo", "description": "Property photos and images", "propertyCount": 7, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Photo ID", "description": "Unique identifier for the photo", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "url", "displayName": "Photo URL", "description": "URL to the photo", "type": "string", "required": true, "semantics": [] }, { "name": "name", "displayName": "Photo Title", "description": "Title or caption for the photo", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Photo description and details", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "photo_type", "displayName": "Photo Type", "description": "Type of property photo", "type": "string", "required": true, "semantics": [], "enumValues": ["exterior", "interior", "kitchen", "bathroom", "bedroom", "living_room"] }, { "name": "featured", "displayName": "Featured", "description": "Whether this is a featured photo", "type": "boolean", "required": true, "semantics": [], "defaultValue": "false" }, { "name": "created_at", "displayName": "Created At", "description": "When the photo was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [], "semantics": [] }] }] }, { "name": "ClientManagement", "displayName": "Client Management", "description": "Buyers, sellers, agents, and leads", "modelCount": 1, "entityCount": 3, "models": [{ "name": "Clients", "displayName": "Client Management", "description": "Client information and relationships", "entityCount": 3, "entities": [{ "name": "client", "displayName": "Client", "description": "Real estate client (buyer or seller)", "propertyCount": 11, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Client ID", "description": "Unique identifier for the client", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "first_name", "displayName": "First Name", "description": "Client first name", "type": "string", "semantics": [] }, { "name": "last_name", "displayName": "Last Name", "description": "Client last name", "type": "string", "semantics": [] }, { "name": "email", "displayName": "Email Address", "description": "Client email address", "type": "string", "required": true, "semantics": ["Semantic#Email"] }, { "name": "phone", "displayName": "Phone Number", "description": "Client phone number", "type": "string", "semantics": ["Semantic#Phone"] }, { "name": "client_type", "displayName": "Client Type", "description": "Type of client (buyer, seller, or both)", "type": "string", "required": true, "semantics": [], "enumValues": ["buyer", "seller", "both"] }, { "name": "status", "displayName": "Client Status", "description": "Current status of the client", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["active", "inactive", "prospect", "closed"], "defaultValue": "active" }, { "name": "budget_min", "displayName": "Minimum Budget", "description": "Minimum budget for property purchase", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "budget_max", "displayName": "Maximum Budget", "description": "Maximum budget for property purchase", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "created_at", "displayName": "Created At", "description": "When the client was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }, { "name": "updated_at", "displayName": "Updated At", "description": "When the client was last updated", "type": "datetime", "readOnly": true, "semantics": ["Semantic#UpdatedTimestamp"] }], "associations": [{ "name": "agent", "displayName": "Agent", "description": "Agent representing this client", "required": true, "multiple": false, "targetEntities": ["agent"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "agent", "displayName": "Agent", "description": "Real estate agent information", "propertyCount": 8, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Agent ID", "description": "Unique identifier for the agent", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "first_name", "displayName": "First Name", "description": "Agent first name", "type": "string", "semantics": [] }, { "name": "last_name", "displayName": "Last Name", "description": "Agent last name", "type": "string", "semantics": [] }, { "name": "email", "displayName": "Email Address", "description": "Agent email address", "type": "string", "required": true, "semantics": ["Semantic#Email"] }, { "name": "phone", "displayName": "Phone Number", "description": "Agent phone number", "type": "string", "semantics": ["Semantic#Phone"] }, { "name": "license_number", "displayName": "License Number", "description": "Real estate license number", "type": "string", "required": true, "unique": true, "semantics": [] }, { "name": "status", "displayName": "Agent Status", "description": "Current status of the agent", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["active", "inactive", "suspended"], "defaultValue": "active" }, { "name": "created_at", "displayName": "Created At", "description": "When the agent was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [], "semantics": [] }, { "name": "lead", "displayName": "Lead", "description": "Sales leads and prospects", "propertyCount": 9, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Lead ID", "description": "Unique identifier for the lead", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "first_name", "displayName": "First Name", "description": "Lead first name", "type": "string", "semantics": [] }, { "name": "last_name", "displayName": "Last Name", "description": "Lead last name", "type": "string", "semantics": [] }, { "name": "email", "displayName": "Email Address", "description": "Lead email address", "type": "string", "required": true, "semantics": ["Semantic#Email"] }, { "name": "phone", "displayName": "Phone Number", "description": "Lead phone number", "type": "string", "semantics": ["Semantic#Phone"] }, { "name": "status", "displayName": "Lead Status", "description": "Current status of the lead", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["new", "contacted", "qualified", "converted", "lost"], "defaultValue": "new" }, { "name": "lead_source", "displayName": "Lead Source", "description": "Source of the lead", "type": "string", "required": true, "semantics": [], "enumValues": ["website", "referral", "social_media", "cold_call", "event"] }, { "name": "description", "displayName": "Description", "description": "Lead notes and information", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "created_at", "displayName": "Created At", "description": "When the lead was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "agent", "displayName": "Agent", "description": "Agent assigned to this lead", "required": true, "multiple": false, "targetEntities": ["agent"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }, { "name": "TransactionManagement", "displayName": "Transaction Management", "description": "Offers, contracts, closings, and escrow", "modelCount": 1, "entityCount": 3, "models": [{ "name": "Transactions", "displayName": "Transaction Management", "description": "Real estate transactions and deals", "entityCount": 3, "entities": [{ "name": "offer", "displayName": "Offer", "description": "Property purchase offers", "propertyCount": 6, "associationCount": 2, "properties": [{ "name": "id", "displayName": "Offer ID", "description": "Unique identifier for the offer", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "offer_price", "displayName": "Offer Price", "description": "Price offered for the property", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "offer_date", "displayName": "Offer Date", "description": "Date when offer was made", "type": "date", "required": true, "semantics": [] }, { "name": "status", "displayName": "Offer Status", "description": "Current status of the offer", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["pending", "accepted", "rejected", "countered", "withdrawn"], "defaultValue": "pending" }, { "name": "description", "displayName": "Description", "description": "Offer terms and conditions", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "created_at", "displayName": "Created At", "description": "When the offer was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "property", "displayName": "Property", "description": "Property for this offer", "required": true, "multiple": false, "targetEntities": ["property"], "semantics": [], "cardinality": "One-to-One" }, { "name": "buyer", "displayName": "Buyer", "description": "Buyer making this offer", "required": true, "multiple": false, "targetEntities": ["client"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "contract", "displayName": "Contract", "description": "Real estate purchase contracts", "propertyCount": 6, "associationCount": 3, "properties": [{ "name": "id", "displayName": "Contract ID", "description": "Unique identifier for the contract", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "purchase_price", "displayName": "Purchase Price", "description": "Final purchase price", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "contract_date", "displayName": "Contract Date", "description": "Date when contract was signed", "type": "date", "required": true, "semantics": [] }, { "name": "closing_date", "displayName": "Closing Date", "description": "Scheduled closing date", "type": "date", "required": true, "semantics": [] }, { "name": "status", "displayName": "Contract Status", "description": "Current status of the contract", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["draft", "signed", "pending", "closed", "cancelled"], "defaultValue": "draft" }, { "name": "created_at", "displayName": "Created At", "description": "When the contract was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "property", "displayName": "Property", "description": "Property in this contract", "required": true, "multiple": false, "targetEntities": ["property"], "semantics": [], "cardinality": "One-to-One" }, { "name": "buyer", "displayName": "Buyer", "description": "Buyer in this contract", "required": true, "multiple": false, "targetEntities": ["client"], "semantics": [], "cardinality": "One-to-One" }, { "name": "seller", "displayName": "Seller", "description": "Seller in this contract", "required": true, "multiple": false, "targetEntities": ["client"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }, { "name": "escrow", "displayName": "Escrow", "description": "Escrow account and transaction details", "propertyCount": 5, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Escrow ID", "description": "Unique identifier for the escrow", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "escrow_amount", "displayName": "Escrow Amount", "description": "Amount held in escrow", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "escrow_date", "displayName": "Escrow Date", "description": "Date when escrow was opened", "type": "date", "required": true, "semantics": [] }, { "name": "status", "displayName": "Escrow Status", "description": "Current status of the escrow", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["open", "funded", "closed", "cancelled"], "defaultValue": "open" }, { "name": "created_at", "displayName": "Created At", "description": "When the escrow was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "contract", "displayName": "Contract", "description": "Contract for this escrow", "required": true, "multiple": false, "targetEntities": ["contract"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }, { "name": "MarketAnalysis", "displayName": "Market Analysis", "description": "Comps, market data, and pricing models", "modelCount": 1, "entityCount": 2, "models": [{ "name": "Market", "displayName": "Market Analysis", "description": "Market data and analysis", "entityCount": 2, "entities": [{ "name": "market_data", "displayName": "Market Data", "description": "Real estate market data and trends", "propertyCount": 7, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Market Data ID", "description": "Unique identifier for the market data", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "area", "displayName": "Area", "description": "Geographic area for market data", "type": "string", "required": true, "semantics": [] }, { "name": "data_date", "displayName": "Data Date", "description": "Date of market data", "type": "date", "required": true, "semantics": [] }, { "name": "avg_price", "displayName": "Average Price", "description": "Average property price in the area", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "days_on_market", "displayName": "Days on Market", "description": "Average days on market", "type": "number", "required": true, "semantics": [] }, { "name": "inventory_count", "displayName": "Inventory Count", "description": "Number of properties for sale", "type": "number", "required": true, "semantics": [] }, { "name": "created_at", "displayName": "Created At", "description": "When the market data was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [], "semantics": [] }, { "name": "comparable", "displayName": "Comparable", "description": "Comparable property sales data", "propertyCount": 6, "associationCount": 1, "properties": [{ "name": "id", "displayName": "Comparable ID", "description": "Unique identifier for the comparable", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Comparable Name", "description": "Name or address of comparable property", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "sale_price", "displayName": "Sale Price", "description": "Sale price of the comparable property", "type": "number", "required": true, "semantics": ["Semantic#Currency"] }, { "name": "sale_date", "displayName": "Sale Date", "description": "Date when comparable property sold", "type": "date", "required": true, "semantics": [] }, { "name": "square_feet", "displayName": "Square Feet", "description": "Square footage of comparable property", "type": "number", "required": true, "semantics": [] }, { "name": "created_at", "displayName": "Created At", "description": "When the comparable was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "property", "displayName": "Property", "description": "Property for this comparable", "required": true, "multiple": false, "targetEntities": ["property"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }, { "name": "DocumentManagement", "displayName": "Document Management", "description": "Contracts, disclosures, and legal documents", "modelCount": 1, "entityCount": 1, "models": [{ "name": "Documents", "displayName": "Document Management", "description": "Document storage and management", "entityCount": 1, "entities": [{ "name": "document", "displayName": "Document", "description": "Legal documents and contracts", "propertyCount": 7, "associationCount": 2, "properties": [{ "name": "id", "displayName": "Document ID", "description": "Unique identifier for the document", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Document Name", "description": "Name of the document", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Document description and details", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "file_url", "displayName": "File URL", "description": "URL to the document file", "type": "string", "required": true, "semantics": [] }, { "name": "document_type", "displayName": "Document Type", "description": "Type of document", "type": "string", "required": true, "semantics": [], "enumValues": ["contract", "disclosure", "inspection", "appraisal", "title", "other"] }, { "name": "status", "displayName": "Document Status", "description": "Current status of the document", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["draft", "pending", "signed", "archived"], "defaultValue": "draft" }, { "name": "created_at", "displayName": "Created At", "description": "When the document was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "contract", "displayName": "Contract", "description": "Contract for this document", "required": false, "multiple": false, "targetEntities": ["contract"], "semantics": [], "cardinality": "One-to-One" }, { "name": "property", "displayName": "Property", "description": "Property for this document", "required": false, "multiple": false, "targetEntities": ["property"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }, { "name": "Marketing", "displayName": "Marketing", "description": "Lead generation, campaigns, and follow-ups", "modelCount": 1, "entityCount": 2, "models": [{ "name": "Marketing", "displayName": "Marketing Management", "description": "Marketing campaigns and activities", "entityCount": 2, "entities": [{ "name": "campaign", "displayName": "Campaign", "description": "Marketing campaigns and promotions", "propertyCount": 8, "associationCount": 0, "properties": [{ "name": "id", "displayName": "Campaign ID", "description": "Unique identifier for the campaign", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Campaign Name", "description": "Name of the marketing campaign", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Campaign description and objectives", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "start_date", "displayName": "Start Date", "description": "Campaign start date", "type": "date", "required": true, "semantics": [] }, { "name": "end_date", "displayName": "End Date", "description": "Campaign end date", "type": "date", "required": true, "semantics": [] }, { "name": "status", "displayName": "Campaign Status", "description": "Current status of the campaign", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["draft", "active", "paused", "completed", "cancelled"], "defaultValue": "draft" }, { "name": "campaign_type", "displayName": "Campaign Type", "description": "Type of marketing campaign", "type": "string", "required": true, "semantics": [], "enumValues": ["email", "social_media", "print", "digital", "event"] }, { "name": "created_at", "displayName": "Created At", "description": "When the campaign was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [], "semantics": [] }, { "name": "follow_up", "displayName": "Follow-up", "description": "Client follow-up activities", "propertyCount": 7, "associationCount": 2, "properties": [{ "name": "id", "displayName": "Follow-up ID", "description": "Unique identifier for the follow-up", "type": "string", "primary": true, "readOnly": true, "semantics": [] }, { "name": "name", "displayName": "Follow-up Title", "description": "Title of the follow-up activity", "type": "string", "semantics": ["Semantic#Title"] }, { "name": "description", "displayName": "Description", "description": "Follow-up notes and details", "type": "string", "semantics": ["Semantic#Description"] }, { "name": "scheduled_date", "displayName": "Scheduled Date", "description": "Scheduled follow-up date", "type": "date", "required": true, "semantics": [] }, { "name": "status", "displayName": "Follow-up Status", "description": "Current status of the follow-up", "type": "string", "required": true, "semantics": ["Semantic#Status"], "enumValues": ["scheduled", "completed", "cancelled", "overdue"], "defaultValue": "scheduled" }, { "name": "follow_up_type", "displayName": "Follow-up Type", "description": "Type of follow-up activity", "type": "string", "required": true, "semantics": [], "enumValues": ["phone_call", "email", "meeting", "text", "other"] }, { "name": "created_at", "displayName": "Created At", "description": "When the follow-up was created", "type": "datetime", "readOnly": true, "semantics": ["Semantic#CreatedTimestamp"] }], "associations": [{ "name": "client", "displayName": "Client", "description": "Client for this follow-up", "required": true, "multiple": false, "targetEntities": ["client"], "semantics": [], "cardinality": "One-to-One" }, { "name": "agent", "displayName": "Agent", "description": "Agent responsible for this follow-up", "required": true, "multiple": false, "targetEntities": ["agent"], "semantics": [], "cardinality": "One-to-One" }], "semantics": [] }] }] }] } }
@@ -23,6 +23,20 @@ export declare class TemplateRegistry {
23
23
  * Gets templates filtered by category (based on tags)
24
24
  */
25
25
  static getTemplatesByCategory(category: 'business' | 'content' | 'social' | 'technical'): DomainTemplate[];
26
+ /**
27
+ * Gets templates filtered by industry vertical
28
+ */
29
+ static getTemplatesByVertical(vertical: string): DomainTemplate[];
30
+ /**
31
+ * Gets all available industry verticals
32
+ */
33
+ static getIndustryVerticals(): {
34
+ id: string;
35
+ name: string;
36
+ description: string;
37
+ subcategories: string[];
38
+ templateCount: number;
39
+ }[];
26
40
  /**
27
41
  * Searches templates by name or description
28
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../../../../src/modeling/templates/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAUhD;;;;;;GAMG;AAEH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,cAAc,EAAE;IAI1C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI1D;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE;IAIvD;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,EAAE;IAI1G;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE;IAIvD;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI;QACzB,cAAc,EAAE,MAAM,CAAA;QACtB,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,EAAE,MAAM,CAAA;QACvB,iBAAiB,EAAE,MAAM,CAAA;QACzB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACvC;CAGF"}
1
+ {"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../../../../src/modeling/templates/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAUhD;;;;;;GAMG;AAEH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,cAAc,EAAE;IAI1C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI1D;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE;IAIvD;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,EAAE;IAI1G;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IAOjE;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI;QAC7B,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,aAAa,EAAE,MAAM,CAAA;KACtB,EAAE;IAsDH;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE;IAIvD;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI;QACzB,cAAc,EAAE,MAAM,CAAA;QACtB,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,EAAE,MAAM,CAAA;QACvB,iBAAiB,EAAE,MAAM,CAAA;QACzB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACvC;CAGF"}
@@ -32,6 +32,69 @@ export class TemplateRegistry {
32
32
  static getTemplatesByCategory(category) {
33
33
  return getTemplatesByCategory(category);
34
34
  }
35
+ /**
36
+ * Gets templates filtered by industry vertical
37
+ */
38
+ static getTemplatesByVertical(vertical) {
39
+ // This would need to be implemented in the meta/index.js
40
+ return getAllTemplates().filter((template) => template.tags?.some((tag) => tag.toLowerCase().includes(vertical.toLowerCase())));
41
+ }
42
+ /**
43
+ * Gets all available industry verticals
44
+ */
45
+ static getIndustryVerticals() {
46
+ return [
47
+ {
48
+ id: 'business-services',
49
+ name: 'Business Services',
50
+ description: 'E-commerce, Financial Services, Legal Services',
51
+ subcategories: ['E-commerce', 'Financial Services', 'Legal Services'],
52
+ templateCount: 4,
53
+ },
54
+ {
55
+ id: 'healthcare-life-sciences',
56
+ name: 'Healthcare & Life Sciences',
57
+ description: 'Healthcare, Pharmaceutical, Research',
58
+ subcategories: ['Healthcare', 'Pharmaceutical', 'Research'],
59
+ templateCount: 1,
60
+ },
61
+ {
62
+ id: 'education-training',
63
+ name: 'Education & Training',
64
+ description: 'Education, Corporate Training, Certification',
65
+ subcategories: ['Education', 'Corporate Training', 'Certification'],
66
+ templateCount: 1,
67
+ },
68
+ {
69
+ id: 'real-estate-construction',
70
+ name: 'Real Estate & Construction',
71
+ description: 'Real Estate, Construction, Property Management',
72
+ subcategories: ['Real Estate', 'Construction', 'Property Management'],
73
+ templateCount: 1,
74
+ },
75
+ {
76
+ id: 'manufacturing-logistics',
77
+ name: 'Manufacturing & Logistics',
78
+ description: 'Manufacturing, Supply Chain, Distribution',
79
+ subcategories: ['Manufacturing', 'Supply Chain', 'Distribution'],
80
+ templateCount: 1,
81
+ },
82
+ {
83
+ id: 'technology-media',
84
+ name: 'Technology & Media',
85
+ description: 'Gaming, IoT, Content Management, Social Media',
86
+ subcategories: ['Gaming', 'IoT', 'Content Management', 'Social Media'],
87
+ templateCount: 3,
88
+ },
89
+ {
90
+ id: 'public-sector',
91
+ name: 'Public Sector',
92
+ description: 'Government, Non-Profit, Healthcare',
93
+ subcategories: ['Government', 'Non-Profit', 'Healthcare'],
94
+ templateCount: 1,
95
+ },
96
+ ];
97
+ }
35
98
  /**
36
99
  * Searches templates by name or description
37
100
  */
@@ -1 +1 @@
1
- {"version":3,"file":"template-registry.js","sourceRoot":"","sources":["../../../../src/modeling/templates/template-registry.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAExB;;;;;;GAMG;AACH,kEAAkE;AAClE,MAAM,OAAO,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,eAAe;QACpB,OAAO,eAAe,EAAE,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,EAAU;QAC3B,OAAO,WAAW,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAW;QAClC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAyD;QACrF,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAa;QAClC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB;QAOrB,OAAO,gBAAgB,EAAE,CAAA;IAC3B,CAAC;CACF","sourcesContent":["import type { DomainTemplate } from './types.js'\nimport {\n getAllTemplates,\n getTemplate,\n getTemplatesByTag,\n getTemplatesByCategory,\n searchTemplates,\n getTemplateStats,\n} from './meta/index.js'\n\n/**\n * Registry of all available domain templates with their metadata.\n * This provides a central location for UI components to discover and present templates.\n *\n * The templates are pre-processed at build time using the generate-template-metadata.js script\n * to avoid loading and processing all templates on the client side.\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class TemplateRegistry {\n /**\n * Gets all available templates\n */\n static getAllTemplates(): DomainTemplate[] {\n return getAllTemplates()\n }\n\n /**\n * Gets a template by its ID\n */\n static getTemplate(id: string): DomainTemplate | undefined {\n return getTemplate(id)\n }\n\n /**\n * Gets templates filtered by tags\n */\n static getTemplatesByTag(tag: string): DomainTemplate[] {\n return getTemplatesByTag(tag)\n }\n\n /**\n * Gets templates filtered by category (based on tags)\n */\n static getTemplatesByCategory(category: 'business' | 'content' | 'social' | 'technical'): DomainTemplate[] {\n return getTemplatesByCategory(category)\n }\n\n /**\n * Searches templates by name or description\n */\n static searchTemplates(query: string): DomainTemplate[] {\n return searchTemplates(query)\n }\n\n /**\n * Gets template statistics for analytics\n */\n static getTemplateStats(): {\n totalTemplates: number\n totalEntities: number\n totalProperties: number\n totalAssociations: number\n categoryCounts: Record<string, number>\n } {\n return getTemplateStats()\n }\n}\n"]}
1
+ {"version":3,"file":"template-registry.js","sourceRoot":"","sources":["../../../../src/modeling/templates/template-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DomainTemplate } from './types.js'\nimport {\n getAllTemplates,\n getTemplate,\n getTemplatesByTag,\n getTemplatesByCategory,\n searchTemplates,\n getTemplateStats,\n} from './meta/index.js'\n\n/**\n * Registry of all available domain templates with their metadata.\n * This provides a central location for UI components to discover and present templates.\n *\n * The templates are pre-processed at build time using the generate-template-metadata.js script\n * to avoid loading and processing all templates on the client side.\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class TemplateRegistry {\n /**\n * Gets all available templates\n */\n static getAllTemplates(): DomainTemplate[] {\n return getAllTemplates()\n }\n\n /**\n * Gets a template by its ID\n */\n static getTemplate(id: string): DomainTemplate | undefined {\n return getTemplate(id)\n }\n\n /**\n * Gets templates filtered by tags\n */\n static getTemplatesByTag(tag: string): DomainTemplate[] {\n return getTemplatesByTag(tag)\n }\n\n /**\n * Gets templates filtered by category (based on tags)\n */\n static getTemplatesByCategory(category: 'business' | 'content' | 'social' | 'technical'): DomainTemplate[] {\n return getTemplatesByCategory(category)\n }\n\n /**\n * Gets templates filtered by industry vertical\n */\n static getTemplatesByVertical(vertical: string): DomainTemplate[] {\n // This would need to be implemented in the meta/index.js\n return getAllTemplates().filter((template) =>\n template.tags?.some((tag) => tag.toLowerCase().includes(vertical.toLowerCase()))\n )\n }\n\n /**\n * Gets all available industry verticals\n */\n static getIndustryVerticals(): {\n id: string\n name: string\n description: string\n subcategories: string[]\n templateCount: number\n }[] {\n return [\n {\n id: 'business-services',\n name: 'Business Services',\n description: 'E-commerce, Financial Services, Legal Services',\n subcategories: ['E-commerce', 'Financial Services', 'Legal Services'],\n templateCount: 4,\n },\n {\n id: 'healthcare-life-sciences',\n name: 'Healthcare & Life Sciences',\n description: 'Healthcare, Pharmaceutical, Research',\n subcategories: ['Healthcare', 'Pharmaceutical', 'Research'],\n templateCount: 1,\n },\n {\n id: 'education-training',\n name: 'Education & Training',\n description: 'Education, Corporate Training, Certification',\n subcategories: ['Education', 'Corporate Training', 'Certification'],\n templateCount: 1,\n },\n {\n id: 'real-estate-construction',\n name: 'Real Estate & Construction',\n description: 'Real Estate, Construction, Property Management',\n subcategories: ['Real Estate', 'Construction', 'Property Management'],\n templateCount: 1,\n },\n {\n id: 'manufacturing-logistics',\n name: 'Manufacturing & Logistics',\n description: 'Manufacturing, Supply Chain, Distribution',\n subcategories: ['Manufacturing', 'Supply Chain', 'Distribution'],\n templateCount: 1,\n },\n {\n id: 'technology-media',\n name: 'Technology & Media',\n description: 'Gaming, IoT, Content Management, Social Media',\n subcategories: ['Gaming', 'IoT', 'Content Management', 'Social Media'],\n templateCount: 3,\n },\n {\n id: 'public-sector',\n name: 'Public Sector',\n description: 'Government, Non-Profit, Healthcare',\n subcategories: ['Government', 'Non-Profit', 'Healthcare'],\n templateCount: 1,\n },\n ]\n }\n\n /**\n * Searches templates by name or description\n */\n static searchTemplates(query: string): DomainTemplate[] {\n return searchTemplates(query)\n }\n\n /**\n * Gets template statistics for analytics\n */\n static getTemplateStats(): {\n totalTemplates: number\n totalEntities: number\n totalProperties: number\n totalAssociations: number\n categoryCounts: Record<string, number>\n } {\n return getTemplateStats()\n }\n}\n"]}
@@ -21,8 +21,8 @@
21
21
  * console.log('Domain created with', domain.graph.nodeCount(), 'nodes')
22
22
  * ```
23
23
  */
24
- import { DataDomain } from '../DataDomain.js';
25
- import type { CreateTemplateOptions } from './types.js';
24
+ import { DataDomain } from '../../../DataDomain.js';
25
+ import type { CreateTemplateOptions } from '../../types.js';
26
26
  /**
27
27
  * Creates a comprehensive e-commerce data domain following domain-driven design principles.
28
28
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecommerce-domain.d.ts","sourceRoot":"","sources":["../../../../../../src/modeling/templates/verticals/business-services/ecommerce-domain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AA8BnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAa3D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,OAAO,GAAE,qBAA0B,GAAG,UAAU,CAkvB7F"}
@@ -21,12 +21,12 @@
21
21
  * console.log('Domain created with', domain.graph.nodeCount(), 'nodes')
22
22
  * ```
23
23
  */
24
- import { DataDomain } from '../DataDomain.js';
25
- import { SemanticType } from '../Semantics.js';
26
- import { createCalculatedSemantic } from '../definitions/Calculated.js';
27
- import { createCurrencySemantic } from '../definitions/Currency.js';
28
- import { createSummarySemantic } from '../definitions/Summary.js';
29
- import { addAvatarUrlField, addCreatedAtField, addDescriptionField, addEmailField, addFirstNameField, addIdField, addLastNameField, addNameField, addPasswordField, addPhoneField, addPublicUniqueNameField, addUpdatedAtField, addSkuField, addPriceField, addQuantityField, addWeightField, addImagesField, addCustomStatusField, addBooleanField, addSessionIdField, addExpiresAtField, addUnitPriceField, addCurrencyAmountField, } from '../helpers/Intelisense.js';
24
+ import { DataDomain } from '../../../DataDomain.js';
25
+ import { SemanticType } from '../../../Semantics.js';
26
+ import { createCalculatedSemantic } from '../../../definitions/Calculated.js';
27
+ import { createCurrencySemantic } from '../../../definitions/Currency.js';
28
+ import { createSummarySemantic } from '../../../definitions/Summary.js';
29
+ import { addAvatarUrlField, addCreatedAtField, addDescriptionField, addEmailField, addFirstNameField, addIdField, addLastNameField, addNameField, addPasswordField, addPhoneField, addPublicUniqueNameField, addUpdatedAtField, addSkuField, addPriceField, addQuantityField, addWeightField, addImagesField, addCustomStatusField, addBooleanField, addSessionIdField, addExpiresAtField, addUnitPriceField, addCurrencyAmountField, } from '../../../helpers/Intelisense.js';
30
30
  function createDomain() {
31
31
  return new DataDomain({
32
32
  info: {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecommerce-domain.js","sourceRoot":"","sources":["../../../../../../src/modeling/templates/verticals/business-services/ecommerce-domain.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * E-Commerce Data Domain Example\n *\n * This file demonstrates how to create a comprehensive e-commerce data domain\n * using the API Client Core modeling system. It follows the business-first approach\n * and demonstrates proper use of namespaces, models, entities, properties,\n * associations, and semantic annotations.\n *\n * The example includes:\n * - User Management domain with proper authentication setup\n * - Product Catalog with categories and inventory\n * - Order Management with cart functionality and payment processing\n * - Proper semantic annotations for security, timestamps, and business logic\n * - Realistic associations between entities with proper cardinality\n *\n * @example\n * ```typescript\n * import { createEcommerceDomain } from './ecommerce-domain.js'\n *\n * const domain = createEcommerceDomain()\n * console.log('Domain created with', domain.graph.nodeCount(), 'nodes')\n * ```\n */\n\nimport { DataDomain } from '../../../DataDomain.js'\nimport { SemanticType } from '../../../Semantics.js'\nimport { createCalculatedSemantic } from '../../../definitions/Calculated.js'\nimport { createCurrencySemantic } from '../../../definitions/Currency.js'\nimport { createSummarySemantic } from '../../../definitions/Summary.js'\nimport {\n addAvatarUrlField,\n addCreatedAtField,\n addDescriptionField,\n addEmailField,\n addFirstNameField,\n addIdField,\n addLastNameField,\n addNameField,\n addPasswordField,\n addPhoneField,\n addPublicUniqueNameField,\n addUpdatedAtField,\n addSkuField,\n addPriceField,\n addQuantityField,\n addWeightField,\n addImagesField,\n addCustomStatusField,\n addBooleanField,\n addSessionIdField,\n addExpiresAtField,\n addUnitPriceField,\n addCurrencyAmountField,\n} from '../../../helpers/Intelisense.js'\nimport type { CreateTemplateOptions } from '../../types.js'\n\nfunction createDomain(): DataDomain {\n return new DataDomain({\n info: {\n name: 'E-Commerce Platform',\n displayName: 'E-Commerce Platform',\n description:\n 'A comprehensive e-commerce platform with user management, product catalog, and order processing capabilities',\n },\n })\n}\n\n/**\n * Creates a comprehensive e-commerce data domain following domain-driven design principles.\n *\n * This function demonstrates the proper hierarchy and organization for a business domain:\n * 1. Creates the root DataDomain\n * 2. Organizes functionality into logical namespaces (User Management, Product Catalog, etc.)\n * 3. Groups related entities into models within each namespace\n * 4. Defines entities with proper semantic annotations\n * 5. Establishes associations with appropriate cardinality and business rules\n *\n * @returns A fully configured DataDomain with all e-commerce entities and relationships\n */\nexport default function createEcommerceDomain(options: CreateTemplateOptions = {}): DataDomain {\n // Ensure the root data domain\n const domain = options.domain ?? createDomain()\n\n //\n // 1. USER MANAGEMENT NAMESPACE\n //\n const userManagement = domain.addNamespace({\n info: {\n name: 'UserManagement',\n displayName: 'User Management',\n description: 'Handles user authentication, authorization, and profile management',\n },\n })\n\n // User Authentication Model\n const authModel = userManagement.addModel({\n info: {\n name: 'Authentication',\n displayName: 'User Authentication',\n description: 'User accounts and authentication data',\n },\n })\n\n // User Entity - The core user account\n const userEntity = authModel.addEntity({\n info: {\n name: 'User',\n displayName: 'User Account',\n description: 'Represents a user account in the system',\n },\n semantics: [{ id: SemanticType.User }], // Mark this as a User entity for system-wide recognition\n })\n\n // User properties with proper semantic annotations\n addIdField(userEntity, { displayName: 'User ID', description: 'Unique identifier for the user' })\n addEmailField(userEntity, { description: 'User email address for login and communication' })\n addPasswordField(userEntity, { description: 'User password for authentication' })\n\n const fName = addFirstNameField(userEntity, { description: 'User first name' })\n fName.required = true\n\n const lName = addLastNameField(userEntity, { description: 'User last name' })\n lName.required = true\n\n userEntity.addProperty({\n info: { name: 'role', displayName: 'User Role', description: 'User role for permission management' },\n type: 'string',\n required: true,\n schema: {\n enum: ['customer', 'admin', 'moderator'],\n defaultValue: {\n type: 'literal',\n value: 'customer',\n },\n },\n semantics: [{ id: SemanticType.UserRole }],\n })\n\n userEntity.addProperty({\n info: {\n name: 'email_verified',\n displayName: 'Email Verified',\n description: 'Whether the user has verified their email address',\n },\n type: 'boolean',\n required: true,\n schema: {\n defaultValue: {\n type: 'literal',\n value: 'false',\n },\n },\n })\n\n addCreatedAtField(userEntity, { description: 'When the user account was created' })\n addUpdatedAtField(userEntity, { description: 'When the user account was last updated' })\n\n // User Profile Model\n const profileModel = userManagement.addModel({\n info: {\n name: 'UserProfile',\n displayName: 'User Profile',\n description: 'Extended user profile information',\n },\n })\n\n // User Profile Entity\n const userProfileEntity = profileModel.addEntity({\n info: {\n name: 'user_profile',\n displayName: 'User Profile',\n description: 'Extended profile information for users',\n },\n })\n\n addIdField(userProfileEntity, { displayName: 'Profile ID', description: 'Unique identifier for the profile' })\n\n userProfileEntity.addProperty({\n info: { name: 'birthdate', displayName: 'Date of Birth', description: 'User date of birth' },\n type: 'date',\n })\n\n addPhoneField(userProfileEntity, { description: 'User phone number' })\n addAvatarUrlField(userProfileEntity, { description: 'URL to user profile picture' })\n\n // User-Profile Association (One-to-One), not required for registration flows.\n userEntity.addAssociation(\n { key: userProfileEntity.key },\n {\n info: { name: 'profile', displayName: 'User Profile', description: 'Link to extended profile information' },\n required: false,\n multiple: false,\n }\n )\n\n // Address Entity\n const addressEntity = profileModel.addEntity({\n info: {\n name: 'address',\n displayName: 'Address',\n description: 'Physical address information',\n },\n })\n\n addIdField(addressEntity, { displayName: 'Address ID', description: 'Unique identifier for the address' })\n\n addressEntity.addProperty({\n info: { name: 'type', displayName: 'Address Type', description: 'Type of address (shipping, billing, etc.)' },\n type: 'string',\n required: true,\n schema: {\n enum: ['shipping', 'billing', 'both'],\n },\n })\n\n addressEntity.addProperty({\n info: {\n name: 'line1',\n displayName: 'Address Line 1',\n description: 'Primary street address, including house number and street name',\n },\n type: 'string',\n required: true,\n })\n\n addressEntity.addProperty({\n info: {\n name: 'line2',\n displayName: 'Address Line 2',\n description: 'Optional field for additional street-level information like apartment numbers or building names.',\n },\n type: 'string',\n required: false,\n })\n\n addressEntity.addProperty({\n info: {\n name: 'line3',\n displayName: 'Address Line 3',\n description: 'Optional field for additional street-level information like apartment numbers or building names.',\n },\n type: 'string',\n required: false,\n })\n\n addressEntity.addProperty({\n info: { name: 'city', displayName: 'City', description: 'City name' },\n type: 'string',\n required: true,\n })\n\n addressEntity.addProperty({\n info: { name: 'state', displayName: 'State/Province', description: 'State or province' },\n type: 'string',\n required: true,\n })\n\n addressEntity.addProperty({\n info: { name: 'postal_code', displayName: 'ZIP/Postal Code', description: 'ZIP or postal code' },\n type: 'string',\n required: true,\n })\n\n addressEntity.addProperty({\n info: { name: 'country', displayName: 'Country', description: 'Country name' },\n type: 'string',\n required: true,\n })\n\n // User-Address Association (One-to-Many)\n userEntity.addAssociation(\n { key: addressEntity.key },\n {\n info: { name: 'addresses', displayName: 'User Addresses', description: 'User shipping and billing addresses' },\n required: false,\n multiple: true,\n }\n )\n\n //\n // 2. PRODUCT CATALOG NAMESPACE\n //\n const productCatalog = domain.addNamespace({\n info: {\n name: 'ProductCatalog',\n displayName: 'Product Catalog',\n description: 'Product information, categories, and inventory management',\n },\n })\n\n // Product Management Model\n const productModel = productCatalog.addModel({\n info: {\n name: 'Products',\n displayName: 'Product Management',\n description: 'Core product entities and relationships',\n },\n })\n\n // Category Entity\n const categoryEntity = productModel.addEntity({\n info: {\n name: 'category',\n displayName: 'Product Category',\n description: 'Product categorization for organization and navigation',\n },\n })\n addIdField(categoryEntity, { displayName: 'Category ID', description: 'Unique identifier for the category' })\n addNameField(categoryEntity, { displayName: 'Category Name', description: 'Display name of the category' })\n addPublicUniqueNameField(categoryEntity, {\n displayName: 'URL Slug',\n description: 'URL-friendly identifier for the category',\n })\n addDescriptionField(categoryEntity, { description: 'Category description' })\n\n // Self-referencing association for category hierarchy\n categoryEntity.addAssociation(\n { key: categoryEntity.key },\n {\n info: {\n name: 'parent_category',\n displayName: 'Parent Category',\n description: 'Parent category for hierarchical organization',\n },\n required: false,\n multiple: false,\n }\n )\n\n // Product Entity\n const productEntity = productModel.addEntity({\n info: {\n name: 'product',\n displayName: 'Product',\n description: 'Core product information and specifications',\n },\n })\n\n addIdField(productEntity, { displayName: 'Product ID', description: 'Unique identifier for the product' })\n addNameField(productEntity, { displayName: 'Product Name', description: 'Display name of the product' })\n addPublicUniqueNameField(productEntity, {\n displayName: 'URL Slug',\n description: 'URL-friendly identifier for the product',\n })\n addDescriptionField(productEntity, { description: 'Detailed product description' })\n\n productEntity.addProperty({\n info: { name: 'short_description', displayName: 'Short Description', description: 'Brief product summary' },\n type: 'string',\n semantics: [createSummarySemantic()],\n })\n\n addSkuField(productEntity, { description: 'Stock Keeping Unit - unique product identifier' })\n\n addPriceField(productEntity, { description: 'Product price in cents (USD)' })\n\n productEntity.addProperty({\n info: {\n name: 'compare_at_price',\n displayName: 'Compare at Price',\n description: 'Original price for discount display',\n },\n type: 'number',\n schema: {\n maximum: 0,\n },\n bindings: [\n {\n type: 'web',\n schema: {\n dataType: 'float',\n },\n },\n ],\n semantics: [\n createCurrencySemantic({\n storageFormat: 'integer_cents',\n defaultCurrency: 'USD',\n decimalPlaces: 2,\n allowNegative: false,\n validateCurrencyCode: true,\n }),\n ],\n })\n\n addCustomStatusField(productEntity, ['inactive', 'active', 'pending', 'archived'], {\n description: 'Current status of the product',\n })\n\n addWeightField(productEntity, { description: 'Product weight in grams' })\n\n addImagesField(productEntity, { description: 'Array of product image URLs' })\n\n addCreatedAtField(productEntity, { description: 'When the product was created' })\n addUpdatedAtField(productEntity, { description: 'When the product was last updated' })\n\n // Product-Category Association (Many-to-Many)\n productEntity.addAssociation(\n { key: categoryEntity.key },\n {\n info: {\n name: 'categories',\n displayName: 'Product Categories',\n description: 'Categories this product belongs to',\n },\n required: true,\n multiple: true,\n semantics: [{ id: SemanticType.Categories }],\n }\n )\n\n // Inventory Model\n const inventoryModel = productCatalog.addModel({\n info: {\n name: 'Inventory',\n displayName: 'Inventory Management',\n description: 'Stock levels and inventory tracking',\n },\n })\n\n // Inventory Entity\n const inventoryEntity = inventoryModel.addEntity({\n info: {\n name: 'inventory',\n displayName: 'Inventory',\n description: 'Stock levels and inventory information for products',\n },\n })\n\n addIdField(inventoryEntity, {\n displayName: 'Inventory ID',\n description: 'Unique identifier for the inventory record',\n })\n\n addQuantityField(inventoryEntity, { displayName: 'Stock Quantity', description: 'Available stock quantity' })\n\n const reservedQty = addQuantityField(inventoryEntity, {\n name: 'reserved_quantity',\n displayName: 'Reserved Quantity',\n description: 'Quantity reserved for pending orders',\n })\n reservedQty.schema = {\n defaultValue: {\n type: 'literal',\n value: '0',\n },\n minimum: 0,\n }\n\n addBooleanField(inventoryEntity, 'trackQuantity', 'true', {\n displayName: 'Track Quantity',\n description: 'Whether to track inventory for this product',\n })\n\n addBooleanField(inventoryEntity, 'allowBackorder', 'false', {\n displayName: 'Allow Backorder',\n description: 'Whether to allow ordering when out of stock',\n })\n\n // Product-Inventory Association (One-to-One)\n productEntity.addAssociation(\n { key: inventoryEntity.key },\n {\n info: {\n name: 'inventory',\n displayName: 'Product Inventory',\n description: 'Inventory information for this product',\n },\n required: true,\n multiple: false,\n }\n )\n\n //\n // 3. ORDER MANAGEMENT NAMESPACE\n //\n const orderManagement = domain.addNamespace({\n info: {\n name: 'OrderManagement',\n displayName: 'Order Management',\n description: 'Shopping cart, orders, and payment processing',\n },\n })\n\n // Shopping Cart Model\n const cartModel = orderManagement.addModel({\n info: {\n name: 'ShoppingCart',\n displayName: 'Shopping Cart',\n description: 'Shopping cart and cart items',\n },\n })\n\n // Cart Entity\n const cartEntity = cartModel.addEntity({\n info: {\n name: 'cart',\n displayName: 'Shopping Cart',\n description: 'User shopping cart',\n },\n })\n\n addIdField(cartEntity, { displayName: 'Cart ID', description: 'Unique identifier for the cart' })\n\n addSessionIdField(cartEntity, { description: 'Session identifier for guest carts' })\n\n addExpiresAtField(cartEntity, { description: 'When the cart expires for cleanup' })\n\n addCreatedAtField(cartEntity, { description: 'When the cart was created' })\n addUpdatedAtField(cartEntity, { description: 'When the cart was last updated' })\n\n // Cart-User Association (Many-to-One)\n cartEntity.addAssociation(\n { key: userEntity.key },\n {\n info: { name: 'user', displayName: 'Cart Owner', description: 'User who owns this cart' },\n required: false,\n multiple: false,\n semantics: [{ id: SemanticType.ResourceOwnerIdentifier }],\n }\n )\n\n // Cart Item Entity\n const cartItemEntity = cartModel.addEntity({\n info: {\n name: 'cart_item',\n displayName: 'Cart Item',\n description: 'Individual items in a shopping cart',\n },\n })\n\n addIdField(cartItemEntity, { displayName: 'Cart Item ID', description: 'Unique identifier for the cart item' })\n\n const cartItemQuantity = addQuantityField(cartItemEntity, { description: 'Number of items' })\n cartItemQuantity.schema = { minimum: 1 }\n\n const cartUnitPrice = addUnitPriceField(cartItemEntity, { description: 'Price per unit at time of adding to cart' })\n\n cartItemEntity.addProperty({\n info: { name: 'total_price', displayName: 'Total Price', description: 'Total price for this line item' },\n type: 'number',\n required: true,\n readOnly: true,\n semantics: [\n createCurrencySemantic({\n storageFormat: 'integer_cents',\n defaultCurrency: 'USD',\n decimalPlaces: 2,\n allowNegative: false,\n }),\n createCalculatedSemantic({\n formula: '{{unitPrice}} * {{quantity}}',\n dependencies: [cartUnitPrice.key, cartItemQuantity.key],\n recalculateOnUpdate: true,\n }),\n ],\n })\n\n // Cart-CartItem Association (One-to-Many)\n cartEntity.addAssociation(\n { key: cartItemEntity.key },\n {\n info: { name: 'items', displayName: 'Cart Items', description: 'Items in this cart' },\n required: false,\n multiple: true,\n onDelete: 'cascade',\n }\n )\n\n // CartItem-Product Association (Many-to-One)\n cartItemEntity.addAssociation(\n { key: productEntity.key },\n {\n info: { name: 'product', displayName: 'Product', description: 'Product for this cart item' },\n required: true,\n multiple: false,\n }\n )\n\n // Order Processing Model\n const orderModel = orderManagement.addModel({\n info: {\n name: 'Orders',\n displayName: 'Order Processing',\n description: 'Orders and order fulfillment',\n },\n })\n\n // Order Entity\n const orderEntity = orderModel.addEntity({\n info: {\n name: 'order',\n displayName: 'Order',\n description: 'Customer order',\n },\n })\n\n addIdField(orderEntity, { displayName: 'Order ID', description: 'Unique identifier for the order' })\n\n orderEntity.addProperty({\n info: { name: 'order_number', displayName: 'Order Number', description: 'Human-readable order number' },\n type: 'string',\n required: true,\n unique: true,\n })\n\n addCustomStatusField(\n orderEntity,\n ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded'],\n {\n displayName: 'Order Status',\n description: 'Current status of the order',\n }\n )\n\n const subtotal = addCurrencyAmountField(orderEntity, 'subtotal', 'Subtotal', {\n description: 'Order subtotal before taxes and shipping',\n })\n\n const taxAmount = addCurrencyAmountField(orderEntity, 'taxAmount', 'Tax Amount', {\n description: 'Total tax amount',\n })\n\n const shippingAmount = addCurrencyAmountField(orderEntity, 'shippingAmount', 'Shipping Amount', {\n description: 'Shipping cost',\n })\n\n orderEntity.addProperty({\n info: { name: 'total_amount', displayName: 'Total Amount', description: 'Final order total' },\n type: 'number',\n required: true,\n semantics: [\n createCurrencySemantic({\n storageFormat: 'integer_cents',\n defaultCurrency: 'USD',\n decimalPlaces: 2,\n allowNegative: false,\n }),\n createCalculatedSemantic({\n formula: '{{subtotal}} + {{taxAmount}} + {{shippingAmount}}',\n dependencies: [subtotal.key, taxAmount.key, shippingAmount.key],\n recalculateOnUpdate: true,\n }),\n ],\n })\n\n orderEntity.addProperty({\n info: { name: 'notes', displayName: 'Order Notes', description: 'Customer notes or special instructions' },\n type: 'string',\n })\n\n addCreatedAtField(orderEntity, { description: 'When the order was created' })\n addUpdatedAtField(orderEntity, { description: 'When the order was last updated' })\n\n // Order-User Association (Many-to-One)\n orderEntity.addAssociation(\n { key: userEntity.key },\n {\n info: { name: 'customer', displayName: 'Customer', description: 'Customer who placed this order' },\n required: true,\n multiple: false,\n semantics: [{ id: SemanticType.ResourceOwnerIdentifier }],\n }\n )\n\n // Order-Address Associations (Many-to-One)\n orderEntity.addAssociation(\n { key: addressEntity.key },\n {\n info: { name: 'shipping_address', displayName: 'Shipping Address', description: 'Address for order delivery' },\n required: true,\n multiple: false,\n }\n )\n\n orderEntity.addAssociation(\n { key: addressEntity.key },\n {\n info: { name: 'billing_address', displayName: 'Billing Address', description: 'Address for billing purposes' },\n required: true,\n multiple: false,\n }\n )\n\n // Order Line Item Entity\n const orderItemEntity = orderModel.addEntity({\n info: {\n name: 'order_item',\n displayName: 'Order Line Item',\n description: 'Individual line items in an order',\n },\n })\n\n addIdField(orderItemEntity, { displayName: 'Order Item ID', description: 'Unique identifier for the order item' })\n\n const quantity = addQuantityField(orderItemEntity, { description: 'Number of items ordered' })\n quantity.schema = { minimum: 1 }\n\n const unitPrice = addUnitPriceField(orderItemEntity, { description: 'Price per unit at time of order' })\n\n orderItemEntity.addProperty({\n info: { name: 'total_price', displayName: 'Total Price', description: 'Total price for this line item' },\n type: 'number',\n required: true,\n readOnly: true,\n semantics: [\n createCurrencySemantic({\n storageFormat: 'integer_cents',\n defaultCurrency: 'USD',\n decimalPlaces: 2,\n allowNegative: false,\n }),\n createCalculatedSemantic({\n formula: '{{quantity}} * {{unitPrice}}',\n dependencies: [quantity.key, unitPrice.key],\n recalculateOnUpdate: true,\n }),\n ],\n })\n\n // orderItemEntity.addProperty({\n // info: {\n // name: 'productSnapshot',\n // displayName: 'Product Snapshot',\n // description: 'Snapshot of product data at time of order',\n // },\n // type: 'object',\n // required: true,\n // readOnly: true,\n // })\n\n // Order-OrderItem Association (One-to-Many)\n orderEntity.addAssociation(\n { key: orderItemEntity.key },\n {\n info: { name: 'items', displayName: 'Order Items', description: 'Items in this order' },\n required: true,\n multiple: true,\n onDelete: 'cascade',\n }\n )\n\n // OrderItem-Product Association (Many-to-One)\n orderItemEntity.addAssociation(\n { key: productEntity.key },\n {\n info: { name: 'product', displayName: 'Product', description: 'Product for this order item' },\n required: true,\n multiple: false,\n }\n )\n\n // Payment Model\n const paymentModel = orderManagement.addModel({\n info: {\n name: 'Payments',\n displayName: 'Payment Processing',\n description: 'Payment methods and transactions',\n },\n })\n\n // Payment Entity\n const paymentEntity = paymentModel.addEntity({\n info: {\n name: 'payment',\n displayName: 'Payment',\n description: 'Payment transaction record',\n },\n })\n\n addIdField(paymentEntity, { displayName: 'Payment ID', description: 'Unique identifier for the payment' })\n\n paymentEntity.addProperty({\n info: { name: 'method', displayName: 'Payment Method', description: 'Method used for payment' },\n type: 'string',\n required: true,\n schema: {\n enum: ['credit_card', 'debit_card', 'paypal', 'bank_transfer', 'apple_pay', 'google_pay'],\n },\n })\n\n addCustomStatusField(paymentEntity, ['pending', 'authorized', 'captured', 'failed', 'cancelled', 'refunded'], {\n displayName: 'Payment Status',\n description: 'Current status of the payment',\n })\n\n addCurrencyAmountField(paymentEntity, 'amount', 'Payment Amount', { description: 'Amount charged' })\n\n paymentEntity.addProperty({\n info: { name: 'currency', displayName: 'Currency', description: 'Currency code for the payment' },\n type: 'string',\n required: true,\n schema: {\n defaultValue: {\n type: 'literal',\n value: 'USD',\n },\n },\n })\n\n paymentEntity.addProperty({\n info: {\n name: 'transaction_id',\n displayName: 'Transaction ID',\n description: 'External payment processor transaction ID',\n },\n type: 'string',\n })\n\n // paymentEntity.addProperty({\n // info: {\n // name: 'gatewayResponse',\n // displayName: 'Gateway Response',\n // description: 'Raw response from payment gateway',\n // },\n // type: 'object',\n // readOnly: true,\n // })\n\n addCreatedAtField(paymentEntity, { description: 'When the payment was created' })\n\n // Order-Payment Association (One-to-Many)\n orderEntity.addAssociation(\n { key: paymentEntity.key },\n {\n info: { name: 'payments', displayName: 'Order Payments', description: 'Payment transactions for this order' },\n required: false,\n multiple: true,\n onDelete: 'restrict', // Don't allow order deletion if payments exist\n }\n )\n\n return domain\n}\n"]}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Financial Services Data Domain Example
3
+ *
4
+ * This file demonstrates how to create a comprehensive financial services data domain
5
+ * using the API Client Core modeling system. It follows the business-first approach
6
+ * and demonstrates proper use of namespaces, models, entities, properties,
7
+ * associations, and semantic annotations.
8
+ *
9
+ * The example includes:
10
+ * - Account Management with bank accounts, investment accounts, and credit cards
11
+ * - Transaction Processing with payments, transfers, deposits, and withdrawals
12
+ * - Customer Management with KYC, risk profiles, and customer segments
13
+ * - Investment Portfolio with assets, positions, and performance tracking
14
+ * - Compliance & Reporting with regulatory reporting and audit trails
15
+ * - Fraud Detection with transaction monitoring and risk scoring
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { createFinancialServicesDomain } from './financial-services-domain.js'
20
+ *
21
+ * const domain = createFinancialServicesDomain()
22
+ * console.log('Financial Services domain created with', domain.graph.nodeCount(), 'nodes')
23
+ * ```
24
+ */
25
+ import { DataDomain } from '../../../DataDomain.js';
26
+ import type { CreateTemplateOptions } from '../../types.js';
27
+ /**
28
+ * Creates a comprehensive financial services data domain following domain-driven design principles.
29
+ *
30
+ * This function demonstrates the proper hierarchy and organization for a financial services platform:
31
+ * 1. Creates the root DataDomain for the financial services platform
32
+ * 2. Organizes functionality into logical namespaces (Customer Management, Account Management, etc.)
33
+ * 3. Groups related entities into models within each namespace
34
+ * 4. Defines entities with proper semantic annotations for financial workflows
35
+ * 5. Establishes associations with appropriate cardinality for customer-account relationships
36
+ *
37
+ * @returns A fully configured DataDomain with all financial services entities and relationships
38
+ */
39
+ export default function createFinancialServicesDomain(options?: CreateTemplateOptions): DataDomain;
40
+ //# sourceMappingURL=financial-services-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"financial-services-domain.d.ts","sourceRoot":"","sources":["../../../../../../src/modeling/templates/verticals/business-services/financial-services-domain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAcnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAc3D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,6BAA6B,CAAC,OAAO,GAAE,qBAA0B,GAAG,UAAU,CA62BrG"}