@lssm/lib.contracts 1.7.0 → 1.7.2

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 (89) hide show
  1. package/dist/app-config/contracts.d.ts +51 -49
  2. package/dist/app-config/contracts.d.ts.map +1 -1
  3. package/dist/app-config/contracts.js +1 -1
  4. package/dist/app-config/contracts.js.map +1 -1
  5. package/dist/app-config/events.d.ts +28 -26
  6. package/dist/app-config/events.d.ts.map +1 -1
  7. package/dist/app-config/events.js +1 -1
  8. package/dist/app-config/events.js.map +1 -1
  9. package/dist/app-config/lifecycle-contracts.d.ts +81 -79
  10. package/dist/app-config/lifecycle-contracts.d.ts.map +1 -1
  11. package/dist/app-config/lifecycle-contracts.js +1 -1
  12. package/dist/app-config/lifecycle-contracts.js.map +1 -1
  13. package/dist/capabilities/openbanking.js.map +1 -1
  14. package/dist/client/react/form-render.d.ts +1 -0
  15. package/dist/client/react/form-render.d.ts.map +1 -1
  16. package/dist/contracts-adapter-input.d.ts +1 -0
  17. package/dist/contracts-adapter-input.d.ts.map +1 -1
  18. package/dist/events.d.ts +1 -0
  19. package/dist/events.d.ts.map +1 -1
  20. package/dist/events.js +1 -1
  21. package/dist/events.js.map +1 -1
  22. package/dist/forms.d.ts +1 -0
  23. package/dist/forms.d.ts.map +1 -1
  24. package/dist/install.d.ts +1 -0
  25. package/dist/install.d.ts.map +1 -1
  26. package/dist/integrations/contracts.d.ts +103 -101
  27. package/dist/integrations/contracts.d.ts.map +1 -1
  28. package/dist/integrations/contracts.js +1 -1
  29. package/dist/integrations/contracts.js.map +1 -1
  30. package/dist/integrations/openbanking/contracts/accounts.d.ts +67 -65
  31. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -1
  32. package/dist/integrations/openbanking/contracts/accounts.js +1 -1
  33. package/dist/integrations/openbanking/contracts/accounts.js.map +1 -1
  34. package/dist/integrations/openbanking/contracts/balances.d.ts +35 -33
  35. package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -1
  36. package/dist/integrations/openbanking/contracts/balances.js +1 -1
  37. package/dist/integrations/openbanking/contracts/balances.js.map +1 -1
  38. package/dist/integrations/openbanking/contracts/index.js.map +1 -1
  39. package/dist/integrations/openbanking/contracts/transactions.d.ts +49 -47
  40. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -1
  41. package/dist/integrations/openbanking/contracts/transactions.js +1 -1
  42. package/dist/integrations/openbanking/contracts/transactions.js.map +1 -1
  43. package/dist/integrations/openbanking/guards.js.map +1 -1
  44. package/dist/integrations/openbanking/models.d.ts +57 -54
  45. package/dist/integrations/openbanking/models.d.ts.map +1 -1
  46. package/dist/integrations/openbanking/models.js +1 -1
  47. package/dist/integrations/openbanking/models.js.map +1 -1
  48. package/dist/integrations/openbanking/telemetry.js.map +1 -1
  49. package/dist/integrations/providers/powens.js.map +1 -1
  50. package/dist/jsonschema.d.ts +1 -1
  51. package/dist/jsonschema.d.ts.map +1 -1
  52. package/dist/knowledge/contracts.d.ts +67 -65
  53. package/dist/knowledge/contracts.d.ts.map +1 -1
  54. package/dist/knowledge/contracts.js +1 -1
  55. package/dist/knowledge/contracts.js.map +1 -1
  56. package/dist/knowledge/spaces/product-canon.js.map +1 -1
  57. package/dist/knowledge/spaces/support-faq.js.map +1 -1
  58. package/dist/knowledge/spec.js.map +1 -1
  59. package/dist/onboarding-base.d.ts +30 -28
  60. package/dist/onboarding-base.d.ts.map +1 -1
  61. package/dist/onboarding-base.js +1 -1
  62. package/dist/onboarding-base.js.map +1 -1
  63. package/dist/presentations.d.ts +1 -0
  64. package/dist/presentations.d.ts.map +1 -1
  65. package/dist/presentations.v2.d.ts +1 -0
  66. package/dist/presentations.v2.d.ts.map +1 -1
  67. package/dist/regenerator/executor.js.map +1 -1
  68. package/dist/regenerator/service.js.map +1 -1
  69. package/dist/regenerator/sinks.js.map +1 -1
  70. package/dist/regenerator/utils.js.map +1 -1
  71. package/dist/registry.d.ts +1 -0
  72. package/dist/registry.d.ts.map +1 -1
  73. package/dist/resources.d.ts.map +1 -1
  74. package/dist/schema/{src → dist}/FieldType.js +1 -1
  75. package/dist/schema/dist/FieldType.js.map +1 -0
  76. package/dist/schema/dist/ScalarTypeEnum.js +2 -0
  77. package/dist/schema/dist/ScalarTypeEnum.js.map +1 -0
  78. package/dist/schema/{src → dist}/SchemaModel.js +1 -1
  79. package/dist/schema/dist/SchemaModel.js.map +1 -0
  80. package/dist/schema/dist/index.js +1 -0
  81. package/dist/spec.d.ts +1 -0
  82. package/dist/spec.d.ts.map +1 -1
  83. package/package.json +2 -2
  84. package/dist/schema/src/FieldType.js.map +0 -1
  85. package/dist/schema/src/ScalarTypeEnum.js +0 -2
  86. package/dist/schema/src/ScalarTypeEnum.js.map +0 -1
  87. package/dist/schema/src/SchemaModel.js.map +0 -1
  88. package/dist/schema/src/index.js +0 -1
  89. /package/dist/schema/{src → dist}/EnumType.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","names":[],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":[],"mappings":";;;;cAgJa,6BAA2B,aAAA;EAA3B,QAAA,EAAA;IAoBX,IAAA,EAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;IApBsC,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAAA,KAAA;;EAAA,CAAA;EAAA,QAAA,EAAA;IAsB3B,IAAA,QAoBX,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;EApBsC,KAAA,EAAA;IAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,CAAA;EAAA,eAAA,EAAA;IAsB3B,IAAA,QAoBX,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;EApBsC,CAAA;EAAA,eAAA,EAAA;;IAAA,UAAA,EAAA,IAAA;EAAA,CAAA;EAsB3B,eAAA,EAAA;IAoBX,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;EApBqC,kBAAA,EAAA;IAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,SAAA,EAAA;IAAA,IAAA,QAAA,KAAA,EAAA,MAAA,CAAA;IAsB1B,UAAA,EAAA,IAAA;EAoBX,CAAA;CApBoC,CAAA,EAAA,SAAA,CAAA;AAAA,cAlEzB,2BAkEyB,EAlEE,YAkEF,CAlEE,WAkEF,CAAA;;UA9CpC,KAAA;;;;IA8CoC,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;EAsBzB,CAAA;EAWG,MAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAnGwB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsB3B,6BAA2B,aAAA;;UAoBtC,KAAA;;;;;UApBsC,KAAA;;;;cAsB3B,4BAA0B,aAAA;;UAoBrC,KAAA;;;;;;;;;;;;;;;cApBqC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsB1B,2BAAyB,aAAA;;UAoBpC,KAAA;;;;;UApBoC,KAAA;;;;;;;;;;;;;;;;;;;;cAsBzB,sBAAsB,eAEjC;iBASc,4BAAA,WAAuC,eAAY"}
1
+ {"version":3,"file":"contracts.d.ts","names":[],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":[],"mappings":";;;;;;cAgJa,6BAA2B,aAAA;;UAoBtC,mBAAA,CAAA;IApBW,UAAA,EAAA,KAAA;EAoBX,CAAA;;;;;;;;;;;;EApBsC,CAAA;EAAA,aAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAAA,mBAAA,CAAA;;;;IAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAsB3B,CAAA;EAoBX,cAAA,EAAA;;;;;;;;;;IApBsC,UAAA,EAAA,KAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA,IAAA,+BAAA,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;EAsB3B,CAAA;EAoBX,eAAA,EAAA;IApBsC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;;EAAA,eAAA,EAAA;IAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAsB3B,UAAA,EAAA,IAAA;EAoBX,CAAA;;;IApBqC,UAAA,EAAA,IAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA,UAAA,EAAA,IAAA;EAAA,CAAA;AAsBvC,CAAA,CAAA,EAAa,SAAA,CAAA;AAoBX,cAtFW,2BAsFX,EAtFsC,YAsFtC,CAtFsC,WAsFtC,CAAA;EApBoC,YAAA,EAAA;IAAA,IAAA,EA9CpC,mBAAA,CAAA,SA8CoC,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;EAAA,CAAA;EAAA,MAAA,EAAA;IAsBzB,IAAA,+BAEX,CAAA,MAFiC,EAAA,MAAM,CAAA;IAWzB,UAAA,EAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;UAnGwB,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsB3B,6BAA2B,aAAA;;UAoBtC,mBAAA,CAAA;;;;;UApBsC,mBAAA,CAAA;;;;cAsB3B,4BAA0B,aAAA;;UAoBrC,mBAAA,CAAA;;;;;;;;;;;;;;;cApBqC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsB1B,2BAAyB,aAAA;;UAoBpC,mBAAA,CAAA;;;;;UApBoC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;cAsBzB,sBAAsB,eAEjC;iBASc,4BAAA,WAAuC,eAAY"}
@@ -1,2 +1,2 @@
1
- import{ScalarTypeEnum as e}from"../schema/src/ScalarTypeEnum.js";import{SchemaModel as t}from"../schema/src/SchemaModel.js";import"../schema/src/index.js";import{defineCommand as n,defineQuery as r}from"../spec.js";const i=new t({name:`IntegrationConnectionRecord`,fields:{id:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},integrationKey:{type:e.NonEmptyString(),isOptional:!1},integrationVersion:{type:e.Int_unsecure(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!1},ownershipMode:{type:e.String_unsecure(),isOptional:!1},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!1},secretRef:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},healthStatus:{type:e.String_unsecure(),isOptional:!0},healthCheckedAt:{type:e.DateTime(),isOptional:!0},healthLatencyMs:{type:e.Float_unsecure(),isOptional:!0},healthErrorCode:{type:e.String_unsecure(),isOptional:!0},healthErrorMessage:{type:e.String_unsecure(),isOptional:!0},usageRequestCount:{type:e.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:e.Int_unsecure(),isOptional:!0},usageErrorCount:{type:e.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:e.DateTime(),isOptional:!0},usageLastErrorAt:{type:e.DateTime(),isOptional:!0},usageLastErrorCode:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!0},updatedAt:{type:e.DateTime(),isOptional:!0}}}),a=new t({name:`CreateIntegrationConnectionInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},integrationKey:{type:e.NonEmptyString(),isOptional:!1},integrationVersion:{type:e.Int_unsecure(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!1},ownershipMode:{type:e.String_unsecure(),isOptional:!1},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!1},secretRef:{type:e.String_unsecure(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},config:{type:e.JSONObject(),isOptional:!1}}}),o=new t({name:`UpdateIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0},ownershipMode:{type:e.String_unsecure(),isOptional:!0},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!0},secretRef:{type:e.String_unsecure(),isOptional:!0},config:{type:e.JSONObject(),isOptional:!0}}}),s=new t({name:`DeleteIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1}}}),c=new t({name:`ListIntegrationConnectionsInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},category:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0}}}),l=new t({name:`ListIntegrationConnectionsOutput`,fields:{connections:{type:i,isOptional:!1,isArray:!0}}}),u=new t({name:`TestIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1}}}),d=new t({name:`TestIntegrationConnectionOutput`,fields:{success:{type:e.Boolean(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!0},latencyMs:{type:e.Float_unsecure(),isOptional:!0},error:{type:e.String_unsecure(),isOptional:!0},errorCode:{type:e.String_unsecure(),isOptional:!0}}}),f=new t({name:`DeleteIntegrationConnectionOutput`,fields:{success:{type:e.Boolean(),isOptional:!1}}}),p=n({meta:{name:`integrations.connection.create`,version:1,description:`Create a new integration connection for a tenant.`,goal:`Provision a tenant-scoped connection to an external provider.`,context:`Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:a,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),m=n({meta:{name:`integrations.connection.update`,version:1,description:`Update metadata or credentials for an integration connection.`,goal:`Allow secure rotation of credentials and metadata adjustments.`,context:`Supports rotating API keys, toggling status, or updating labels for tenant integrations.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:o,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),h=n({meta:{name:`integrations.connection.delete`,version:1,description:`Delete an integration connection for a tenant.`,goal:`Safely remove credentials and disable connector usage.`,context:`Ensures connections are de-provisioned when no longer needed or breached.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:s,output:f},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),g=r({meta:{name:`integrations.connection.list`,version:1,description:`List integration connections for a tenant.`,goal:`Provide visibility into configured integrations and their status.`,context:`Used by the App Studio and Ops flows to show bindings and health.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`,policies:[{name:`platform.integration.read`,version:1}]}}),_=n({meta:{name:`integrations.connection.test`,version:1,description:`Run a health check against a configured integration connection.`,goal:`Validate credentials and connectivity for external providers.`,context:`Triggered manually or by background monitors to confirm provider availability.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:u,output:d},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),v={CreateIntegrationConnection:p,UpdateIntegrationConnection:m,DeleteIntegrationConnection:h,ListIntegrationConnections:g,TestIntegrationConnection:_};function y(e){return e.register(p).register(m).register(h).register(g).register(_)}export{p as CreateIntegrationConnection,h as DeleteIntegrationConnection,g as ListIntegrationConnections,_ as TestIntegrationConnection,m as UpdateIntegrationConnection,v as integrationContracts,y as registerIntegrationContracts};
1
+ import{l as e}from"../schema/dist/ScalarTypeEnum.js";import{t}from"../schema/dist/SchemaModel.js";import"../schema/dist/index.js";import{defineCommand as n,defineQuery as r}from"../spec.js";const i=new t({name:`IntegrationConnectionRecord`,fields:{id:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},integrationKey:{type:e.NonEmptyString(),isOptional:!1},integrationVersion:{type:e.Int_unsecure(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!1},ownershipMode:{type:e.String_unsecure(),isOptional:!1},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!1},secretRef:{type:e.String_unsecure(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},healthStatus:{type:e.String_unsecure(),isOptional:!0},healthCheckedAt:{type:e.DateTime(),isOptional:!0},healthLatencyMs:{type:e.Float_unsecure(),isOptional:!0},healthErrorCode:{type:e.String_unsecure(),isOptional:!0},healthErrorMessage:{type:e.String_unsecure(),isOptional:!0},usageRequestCount:{type:e.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:e.Int_unsecure(),isOptional:!0},usageErrorCount:{type:e.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:e.DateTime(),isOptional:!0},usageLastErrorAt:{type:e.DateTime(),isOptional:!0},usageLastErrorCode:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!0},updatedAt:{type:e.DateTime(),isOptional:!0}}}),a=new t({name:`CreateIntegrationConnectionInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},integrationKey:{type:e.NonEmptyString(),isOptional:!1},integrationVersion:{type:e.Int_unsecure(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!1},ownershipMode:{type:e.String_unsecure(),isOptional:!1},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!1},secretRef:{type:e.String_unsecure(),isOptional:!1},environment:{type:e.String_unsecure(),isOptional:!0},config:{type:e.JSONObject(),isOptional:!1}}}),o=new t({name:`UpdateIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1},label:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0},ownershipMode:{type:e.String_unsecure(),isOptional:!0},externalAccountId:{type:e.String_unsecure(),isOptional:!0},secretProvider:{type:e.String_unsecure(),isOptional:!0},secretRef:{type:e.String_unsecure(),isOptional:!0},config:{type:e.JSONObject(),isOptional:!0}}}),s=new t({name:`DeleteIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1}}}),c=new t({name:`ListIntegrationConnectionsInput`,fields:{tenantId:{type:e.ID(),isOptional:!1},category:{type:e.String_unsecure(),isOptional:!0},status:{type:e.String_unsecure(),isOptional:!0}}}),l=new t({name:`ListIntegrationConnectionsOutput`,fields:{connections:{type:i,isOptional:!1,isArray:!0}}}),u=new t({name:`TestIntegrationConnectionInput`,fields:{connectionId:{type:e.ID(),isOptional:!1}}}),d=new t({name:`TestIntegrationConnectionOutput`,fields:{success:{type:e.Boolean(),isOptional:!1},status:{type:e.String_unsecure(),isOptional:!0},latencyMs:{type:e.Float_unsecure(),isOptional:!0},error:{type:e.String_unsecure(),isOptional:!0},errorCode:{type:e.String_unsecure(),isOptional:!0}}}),f=new t({name:`DeleteIntegrationConnectionOutput`,fields:{success:{type:e.Boolean(),isOptional:!1}}}),p=n({meta:{name:`integrations.connection.create`,version:1,description:`Create a new integration connection for a tenant.`,goal:`Provision a tenant-scoped connection to an external provider.`,context:`Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:a,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),m=n({meta:{name:`integrations.connection.update`,version:1,description:`Update metadata or credentials for an integration connection.`,goal:`Allow secure rotation of credentials and metadata adjustments.`,context:`Supports rotating API keys, toggling status, or updating labels for tenant integrations.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:o,output:i},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),h=n({meta:{name:`integrations.connection.delete`,version:1,description:`Delete an integration connection for a tenant.`,goal:`Safely remove credentials and disable connector usage.`,context:`Ensures connections are de-provisioned when no longer needed or breached.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:s,output:f},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),g=r({meta:{name:`integrations.connection.list`,version:1,description:`List integration connections for a tenant.`,goal:`Provide visibility into configured integrations and their status.`,context:`Used by the App Studio and Ops flows to show bindings and health.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`,policies:[{name:`platform.integration.read`,version:1}]}}),_=n({meta:{name:`integrations.connection.test`,version:1,description:`Run a health check against a configured integration connection.`,goal:`Validate credentials and connectivity for external providers.`,context:`Triggered manually or by background monitors to confirm provider availability.`,owners:[`platform.integrations`],tags:[`integration`,`connections`],stability:`experimental`},io:{input:u,output:d},policy:{auth:`admin`,policies:[{name:`platform.integration.manage`,version:1}]}}),v={CreateIntegrationConnection:p,UpdateIntegrationConnection:m,DeleteIntegrationConnection:h,ListIntegrationConnections:g,TestIntegrationConnection:_};function y(e){return e.register(p).register(m).register(h).register(g).register(_)}export{p as CreateIntegrationConnection,h as DeleteIntegrationConnection,g as ListIntegrationConnections,_ as TestIntegrationConnection,m as UpdateIntegrationConnection,v as integrationContracts,y as registerIntegrationContracts};
2
2
  //# sourceMappingURL=contracts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","names":["integrationContracts: Record<\n string,\n ContractSpec<any, any>\n>"],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../spec';\nimport type { SpecRegistry } from '../registry';\n\nconst IntegrationConnectionRecord = new SchemaModel({\n name: 'IntegrationConnectionRecord',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n integrationKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n integrationVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthCheckedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n healthLatencyMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n healthErrorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthErrorMessage: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n usageRequestCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageSuccessCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageErrorCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageLastUsedAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n usageLastErrorAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n usageLastErrorCode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n\nconst CreateIntegrationConnectionInput = new SchemaModel({\n name: 'CreateIntegrationConnectionInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n integrationKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n integrationVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n },\n});\n\nconst UpdateIntegrationConnectionInput = new SchemaModel({\n name: 'UpdateIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n },\n});\n\nconst DeleteIntegrationConnectionInput = new SchemaModel({\n name: 'DeleteIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst ListIntegrationConnectionsInput = new SchemaModel({\n name: 'ListIntegrationConnectionsInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n category: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst ListIntegrationConnectionsOutput = new SchemaModel({\n name: 'ListIntegrationConnectionsOutput',\n fields: {\n connections: {\n type: IntegrationConnectionRecord,\n isOptional: false,\n isArray: true,\n },\n },\n});\n\nconst TestIntegrationConnectionInput = new SchemaModel({\n name: 'TestIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst TestIntegrationConnectionOutput = new SchemaModel({\n name: 'TestIntegrationConnectionOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n latencyMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n error: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n errorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst DeleteIntegrationConnectionOutput = new SchemaModel({\n name: 'DeleteIntegrationConnectionOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n },\n});\n\nexport const CreateIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.create',\n version: 1,\n description: 'Create a new integration connection for a tenant.',\n goal: 'Provision a tenant-scoped connection to an external provider.',\n context:\n 'Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: CreateIntegrationConnectionInput,\n output: IntegrationConnectionRecord,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const UpdateIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.update',\n version: 1,\n description: 'Update metadata or credentials for an integration connection.',\n goal: 'Allow secure rotation of credentials and metadata adjustments.',\n context:\n 'Supports rotating API keys, toggling status, or updating labels for tenant integrations.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: UpdateIntegrationConnectionInput,\n output: IntegrationConnectionRecord,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const DeleteIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.delete',\n version: 1,\n description: 'Delete an integration connection for a tenant.',\n goal: 'Safely remove credentials and disable connector usage.',\n context:\n 'Ensures connections are de-provisioned when no longer needed or breached.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: DeleteIntegrationConnectionInput,\n output: DeleteIntegrationConnectionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const ListIntegrationConnections = defineQuery({\n meta: {\n name: 'integrations.connection.list',\n version: 1,\n description: 'List integration connections for a tenant.',\n goal: 'Provide visibility into configured integrations and their status.',\n context:\n 'Used by the App Studio and Ops flows to show bindings and health.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: ListIntegrationConnectionsInput,\n output: ListIntegrationConnectionsOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.read', version: 1 }],\n },\n});\n\nexport const TestIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.test',\n version: 1,\n description: 'Run a health check against a configured integration connection.',\n goal: 'Validate credentials and connectivity for external providers.',\n context:\n 'Triggered manually or by background monitors to confirm provider availability.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: TestIntegrationConnectionInput,\n output: TestIntegrationConnectionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const integrationContracts: Record<\n string,\n ContractSpec<any, any>\n> = {\n CreateIntegrationConnection,\n UpdateIntegrationConnection,\n DeleteIntegrationConnection,\n ListIntegrationConnections,\n TestIntegrationConnection,\n};\n\nexport function registerIntegrationContracts(registry: SpecRegistry) {\n return registry\n .register(CreateIntegrationConnection)\n .register(UpdateIntegrationConnection)\n .register(DeleteIntegrationConnection)\n .register(ListIntegrationConnections)\n .register(TestIntegrationConnection);\n}\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"contracts.js","names":["SchemaModel","ScalarTypeEnum","integrationContracts: Record<\n string,\n ContractSpec<any, any>\n>"],"sources":["../../src/integrations/contracts.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../spec';\nimport type { SpecRegistry } from '../registry';\n\nconst IntegrationConnectionRecord = new SchemaModel({\n name: 'IntegrationConnectionRecord',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n integrationKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n integrationVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthCheckedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n healthLatencyMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n healthErrorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n healthErrorMessage: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n usageRequestCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageSuccessCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageErrorCount: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n usageLastUsedAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n usageLastErrorAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n usageLastErrorCode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n\nconst CreateIntegrationConnectionInput = new SchemaModel({\n name: 'CreateIntegrationConnectionInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n integrationKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n integrationVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n },\n});\n\nconst UpdateIntegrationConnectionInput = new SchemaModel({\n name: 'UpdateIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n label: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n ownershipMode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n externalAccountId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretProvider: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n secretRef: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n },\n});\n\nconst DeleteIntegrationConnectionInput = new SchemaModel({\n name: 'DeleteIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst ListIntegrationConnectionsInput = new SchemaModel({\n name: 'ListIntegrationConnectionsInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n category: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst ListIntegrationConnectionsOutput = new SchemaModel({\n name: 'ListIntegrationConnectionsOutput',\n fields: {\n connections: {\n type: IntegrationConnectionRecord,\n isOptional: false,\n isArray: true,\n },\n },\n});\n\nconst TestIntegrationConnectionInput = new SchemaModel({\n name: 'TestIntegrationConnectionInput',\n fields: {\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst TestIntegrationConnectionOutput = new SchemaModel({\n name: 'TestIntegrationConnectionOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n latencyMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n error: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n errorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst DeleteIntegrationConnectionOutput = new SchemaModel({\n name: 'DeleteIntegrationConnectionOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n },\n});\n\nexport const CreateIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.create',\n version: 1,\n description: 'Create a new integration connection for a tenant.',\n goal: 'Provision a tenant-scoped connection to an external provider.',\n context:\n 'Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: CreateIntegrationConnectionInput,\n output: IntegrationConnectionRecord,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const UpdateIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.update',\n version: 1,\n description: 'Update metadata or credentials for an integration connection.',\n goal: 'Allow secure rotation of credentials and metadata adjustments.',\n context:\n 'Supports rotating API keys, toggling status, or updating labels for tenant integrations.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: UpdateIntegrationConnectionInput,\n output: IntegrationConnectionRecord,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const DeleteIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.delete',\n version: 1,\n description: 'Delete an integration connection for a tenant.',\n goal: 'Safely remove credentials and disable connector usage.',\n context:\n 'Ensures connections are de-provisioned when no longer needed or breached.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: DeleteIntegrationConnectionInput,\n output: DeleteIntegrationConnectionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const ListIntegrationConnections = defineQuery({\n meta: {\n name: 'integrations.connection.list',\n version: 1,\n description: 'List integration connections for a tenant.',\n goal: 'Provide visibility into configured integrations and their status.',\n context:\n 'Used by the App Studio and Ops flows to show bindings and health.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: ListIntegrationConnectionsInput,\n output: ListIntegrationConnectionsOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.read', version: 1 }],\n },\n});\n\nexport const TestIntegrationConnection = defineCommand({\n meta: {\n name: 'integrations.connection.test',\n version: 1,\n description: 'Run a health check against a configured integration connection.',\n goal: 'Validate credentials and connectivity for external providers.',\n context:\n 'Triggered manually or by background monitors to confirm provider availability.',\n owners: ['platform.integrations'],\n tags: ['integration', 'connections'],\n stability: 'experimental',\n },\n io: {\n input: TestIntegrationConnectionInput,\n output: TestIntegrationConnectionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.integration.manage', version: 1 }],\n },\n});\n\nexport const integrationContracts: Record<\n string,\n ContractSpec<any, any>\n> = {\n CreateIntegrationConnection,\n UpdateIntegrationConnection,\n DeleteIntegrationConnection,\n ListIntegrationConnections,\n TestIntegrationConnection,\n};\n\nexport function registerIntegrationContracts(registry: SpecRegistry) {\n return registry\n .register(CreateIntegrationConnection)\n .register(UpdateIntegrationConnection)\n .register(DeleteIntegrationConnection)\n .register(ListIntegrationConnections)\n .register(TestIntegrationConnection);\n}\n\n"],"mappings":"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"}
@@ -1,121 +1,123 @@
1
1
  import { ContractSpec } from "../../../spec.js";
2
2
  import { SpecRegistry } from "../../../registry.js";
3
+ import * as _lssm_lib_schema300 from "@lssm/lib.schema";
4
+ import { SchemaModel } from "@lssm/lib.schema";
3
5
 
4
6
  //#region src/integrations/openbanking/contracts/accounts.d.ts
5
7
  declare const OpenBankingListAccounts: ContractSpec<SchemaModel<{
6
8
  tenantId: {
7
- type: void 0<string, string>;
9
+ type: _lssm_lib_schema300.FieldType<string, string>;
8
10
  isOptional: false;
9
11
  };
10
12
  userId: {
11
- type: void 0<string, string>;
13
+ type: _lssm_lib_schema300.FieldType<string, string>;
12
14
  isOptional: false;
13
15
  };
14
16
  connectionId: {
15
- type: void 0<string, string>;
17
+ type: _lssm_lib_schema300.FieldType<string, string>;
16
18
  isOptional: true;
17
19
  };
18
20
  includeBalances: {
19
- type: void 0<boolean, boolean>;
21
+ type: _lssm_lib_schema300.FieldType<boolean, boolean>;
20
22
  isOptional: true;
21
23
  };
22
24
  institutionId: {
23
- type: void 0<string, string>;
25
+ type: _lssm_lib_schema300.FieldType<string, string>;
24
26
  isOptional: true;
25
27
  };
26
28
  cursor: {
27
- type: void 0<string, string>;
29
+ type: _lssm_lib_schema300.FieldType<string, string>;
28
30
  isOptional: true;
29
31
  };
30
32
  pageSize: {
31
- type: void 0<number, number>;
33
+ type: _lssm_lib_schema300.FieldType<number, number>;
32
34
  isOptional: true;
33
35
  };
34
36
  }>, SchemaModel<{
35
37
  accounts: {
36
38
  type: SchemaModel<{
37
39
  id: {
38
- type: void 0<string, string>;
40
+ type: _lssm_lib_schema300.FieldType<string, string>;
39
41
  isOptional: false;
40
42
  };
41
43
  tenantId: {
42
- type: void 0<string, string>;
44
+ type: _lssm_lib_schema300.FieldType<string, string>;
43
45
  isOptional: false;
44
46
  };
45
47
  userId: {
46
- type: void 0<string, string>;
48
+ type: _lssm_lib_schema300.FieldType<string, string>;
47
49
  isOptional: false;
48
50
  };
49
51
  connectionId: {
50
- type: void 0<string, string>;
52
+ type: _lssm_lib_schema300.FieldType<string, string>;
51
53
  isOptional: false;
52
54
  };
53
55
  externalId: {
54
- type: void 0<string, string>;
56
+ type: _lssm_lib_schema300.FieldType<string, string>;
55
57
  isOptional: false;
56
58
  };
57
59
  institutionId: {
58
- type: void 0<string, string>;
60
+ type: _lssm_lib_schema300.FieldType<string, string>;
59
61
  isOptional: false;
60
62
  };
61
63
  institutionName: {
62
- type: void 0<string, string>;
64
+ type: _lssm_lib_schema300.FieldType<string, string>;
63
65
  isOptional: false;
64
66
  };
65
67
  institutionLogoUrl: {
66
- type: void 0<string, string>;
68
+ type: _lssm_lib_schema300.FieldType<string, string>;
67
69
  isOptional: true;
68
70
  };
69
71
  iban: {
70
- type: void 0<string, string>;
72
+ type: _lssm_lib_schema300.FieldType<string, string>;
71
73
  isOptional: true;
72
74
  };
73
75
  bic: {
74
- type: void 0<string, string>;
76
+ type: _lssm_lib_schema300.FieldType<string, string>;
75
77
  isOptional: true;
76
78
  };
77
79
  accountType: {
78
- type: void 0<string, string>;
80
+ type: _lssm_lib_schema300.FieldType<string, string>;
79
81
  isOptional: false;
80
82
  };
81
83
  currency: {
82
- type: void 0<string, string>;
84
+ type: _lssm_lib_schema300.FieldType<string, string>;
83
85
  isOptional: false;
84
86
  };
85
87
  displayName: {
86
- type: void 0<string, string>;
88
+ type: _lssm_lib_schema300.FieldType<string, string>;
87
89
  isOptional: false;
88
90
  };
89
91
  accountNumberMasked: {
90
- type: void 0<string, string>;
92
+ type: _lssm_lib_schema300.FieldType<string, string>;
91
93
  isOptional: true;
92
94
  };
93
95
  productCode: {
94
- type: void 0<string, string>;
96
+ type: _lssm_lib_schema300.FieldType<string, string>;
95
97
  isOptional: true;
96
98
  };
97
99
  balance: {
98
- type: void 0<number, number>;
100
+ type: _lssm_lib_schema300.FieldType<number, number>;
99
101
  isOptional: true;
100
102
  };
101
103
  availableBalance: {
102
- type: void 0<number, number>;
104
+ type: _lssm_lib_schema300.FieldType<number, number>;
103
105
  isOptional: true;
104
106
  };
105
107
  lastSyncedAt: {
106
- type: void 0<Date, string>;
108
+ type: _lssm_lib_schema300.FieldType<Date, string>;
107
109
  isOptional: false;
108
110
  };
109
111
  createdAt: {
110
- type: void 0<Date, string>;
112
+ type: _lssm_lib_schema300.FieldType<Date, string>;
111
113
  isOptional: false;
112
114
  };
113
115
  updatedAt: {
114
- type: void 0<Date, string>;
116
+ type: _lssm_lib_schema300.FieldType<Date, string>;
115
117
  isOptional: false;
116
118
  };
117
119
  metadata: {
118
- type: void 0<Record<string, unknown>, Record<string, unknown>>;
120
+ type: _lssm_lib_schema300.FieldType<Record<string, unknown>, Record<string, unknown>>;
119
121
  isOptional: true;
120
122
  };
121
123
  }>;
@@ -123,159 +125,159 @@ declare const OpenBankingListAccounts: ContractSpec<SchemaModel<{
123
125
  isArray: true;
124
126
  };
125
127
  nextCursor: {
126
- type: void 0<string, string>;
128
+ type: _lssm_lib_schema300.FieldType<string, string>;
127
129
  isOptional: true;
128
130
  };
129
131
  hasMore: {
130
- type: void 0<boolean, boolean>;
132
+ type: _lssm_lib_schema300.FieldType<boolean, boolean>;
131
133
  isOptional: true;
132
134
  };
133
135
  }>, undefined>;
134
136
  declare const OpenBankingGetAccount: ContractSpec<SchemaModel<{
135
137
  tenantId: {
136
- type: void 0<string, string>;
138
+ type: _lssm_lib_schema300.FieldType<string, string>;
137
139
  isOptional: false;
138
140
  };
139
141
  accountId: {
140
- type: void 0<string, string>;
142
+ type: _lssm_lib_schema300.FieldType<string, string>;
141
143
  isOptional: false;
142
144
  };
143
145
  includeBalances: {
144
- type: void 0<boolean, boolean>;
146
+ type: _lssm_lib_schema300.FieldType<boolean, boolean>;
145
147
  isOptional: true;
146
148
  };
147
149
  includeLatestTransactions: {
148
- type: void 0<boolean, boolean>;
150
+ type: _lssm_lib_schema300.FieldType<boolean, boolean>;
149
151
  isOptional: true;
150
152
  };
151
153
  }>, SchemaModel<{
152
154
  id: {
153
- type: void 0<string, string>;
155
+ type: _lssm_lib_schema300.FieldType<string, string>;
154
156
  isOptional: false;
155
157
  };
156
158
  tenantId: {
157
- type: void 0<string, string>;
159
+ type: _lssm_lib_schema300.FieldType<string, string>;
158
160
  isOptional: false;
159
161
  };
160
162
  userId: {
161
- type: void 0<string, string>;
163
+ type: _lssm_lib_schema300.FieldType<string, string>;
162
164
  isOptional: false;
163
165
  };
164
166
  connectionId: {
165
- type: void 0<string, string>;
167
+ type: _lssm_lib_schema300.FieldType<string, string>;
166
168
  isOptional: false;
167
169
  };
168
170
  externalId: {
169
- type: void 0<string, string>;
171
+ type: _lssm_lib_schema300.FieldType<string, string>;
170
172
  isOptional: false;
171
173
  };
172
174
  institutionId: {
173
- type: void 0<string, string>;
175
+ type: _lssm_lib_schema300.FieldType<string, string>;
174
176
  isOptional: false;
175
177
  };
176
178
  institutionName: {
177
- type: void 0<string, string>;
179
+ type: _lssm_lib_schema300.FieldType<string, string>;
178
180
  isOptional: false;
179
181
  };
180
182
  institutionLogoUrl: {
181
- type: void 0<string, string>;
183
+ type: _lssm_lib_schema300.FieldType<string, string>;
182
184
  isOptional: true;
183
185
  };
184
186
  iban: {
185
- type: void 0<string, string>;
187
+ type: _lssm_lib_schema300.FieldType<string, string>;
186
188
  isOptional: true;
187
189
  };
188
190
  bic: {
189
- type: void 0<string, string>;
191
+ type: _lssm_lib_schema300.FieldType<string, string>;
190
192
  isOptional: true;
191
193
  };
192
194
  accountType: {
193
- type: void 0<string, string>;
195
+ type: _lssm_lib_schema300.FieldType<string, string>;
194
196
  isOptional: false;
195
197
  };
196
198
  currency: {
197
- type: void 0<string, string>;
199
+ type: _lssm_lib_schema300.FieldType<string, string>;
198
200
  isOptional: false;
199
201
  };
200
202
  displayName: {
201
- type: void 0<string, string>;
203
+ type: _lssm_lib_schema300.FieldType<string, string>;
202
204
  isOptional: false;
203
205
  };
204
206
  accountNumberMasked: {
205
- type: void 0<string, string>;
207
+ type: _lssm_lib_schema300.FieldType<string, string>;
206
208
  isOptional: true;
207
209
  };
208
210
  productCode: {
209
- type: void 0<string, string>;
211
+ type: _lssm_lib_schema300.FieldType<string, string>;
210
212
  isOptional: true;
211
213
  };
212
214
  balance: {
213
- type: void 0<number, number>;
215
+ type: _lssm_lib_schema300.FieldType<number, number>;
214
216
  isOptional: true;
215
217
  };
216
218
  availableBalance: {
217
- type: void 0<number, number>;
219
+ type: _lssm_lib_schema300.FieldType<number, number>;
218
220
  isOptional: true;
219
221
  };
220
222
  lastSyncedAt: {
221
- type: void 0<Date, string>;
223
+ type: _lssm_lib_schema300.FieldType<Date, string>;
222
224
  isOptional: false;
223
225
  };
224
226
  createdAt: {
225
- type: void 0<Date, string>;
227
+ type: _lssm_lib_schema300.FieldType<Date, string>;
226
228
  isOptional: false;
227
229
  };
228
230
  updatedAt: {
229
- type: void 0<Date, string>;
231
+ type: _lssm_lib_schema300.FieldType<Date, string>;
230
232
  isOptional: false;
231
233
  };
232
234
  metadata: {
233
- type: void 0<Record<string, unknown>, Record<string, unknown>>;
235
+ type: _lssm_lib_schema300.FieldType<Record<string, unknown>, Record<string, unknown>>;
234
236
  isOptional: true;
235
237
  };
236
238
  }>, undefined>;
237
239
  declare const OpenBankingSyncAccounts: ContractSpec<SchemaModel<{
238
240
  tenantId: {
239
- type: void 0<string, string>;
241
+ type: _lssm_lib_schema300.FieldType<string, string>;
240
242
  isOptional: false;
241
243
  };
242
244
  userId: {
243
- type: void 0<string, string>;
245
+ type: _lssm_lib_schema300.FieldType<string, string>;
244
246
  isOptional: true;
245
247
  };
246
248
  connectionId: {
247
- type: void 0<string, string>;
249
+ type: _lssm_lib_schema300.FieldType<string, string>;
248
250
  isOptional: false;
249
251
  };
250
252
  accountIds: {
251
- type: void 0<string, string>;
253
+ type: _lssm_lib_schema300.FieldType<string, string>;
252
254
  isArray: true;
253
255
  isOptional: true;
254
256
  };
255
257
  forceFullRefresh: {
256
- type: void 0<boolean, boolean>;
258
+ type: _lssm_lib_schema300.FieldType<boolean, boolean>;
257
259
  isOptional: true;
258
260
  };
259
261
  triggerWorkflows: {
260
- type: void 0<boolean, boolean>;
262
+ type: _lssm_lib_schema300.FieldType<boolean, boolean>;
261
263
  isOptional: true;
262
264
  };
263
265
  }>, SchemaModel<{
264
266
  synced: {
265
- type: void 0<number, number>;
267
+ type: _lssm_lib_schema300.FieldType<number, number>;
266
268
  isOptional: false;
267
269
  };
268
270
  failed: {
269
- type: void 0<number, number>;
271
+ type: _lssm_lib_schema300.FieldType<number, number>;
270
272
  isOptional: false;
271
273
  };
272
274
  errors: {
273
- type: void 0<string, string>;
275
+ type: _lssm_lib_schema300.FieldType<string, string>;
274
276
  isArray: true;
275
277
  isOptional: true;
276
278
  };
277
279
  nextSyncSuggestedAt: {
278
- type: void 0<Date, string>;
280
+ type: _lssm_lib_schema300.FieldType<Date, string>;
279
281
  isOptional: true;
280
282
  };
281
283
  }>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":[],"mappings":";;;;cA2Fa,yBAAuB,aAAA;EAAvB,QAAA,EAAA;IAmBX,IAAA,EAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;EAnBkC,YAAA,EAAA;IAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;cAAA,KAAA;;;;;;;MAAA,MAAA,EAAA;QAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAqBvB,UAAA,EAmBX,KAAA;MAAA,CAAA;;;;MAnBgC,CAAA;MAAA,UAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAA,CAAA;MAAA,QAAA,EAAA;QAqBrB,IAAA,QAsDX,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;;;;;;MAtDkC,mBAAA,EAAA;QAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;MAAA,CAAA;MAAA,OAAA,EAAA;QAwDvB,IAAA,QAA4C,CAAA,MAAf,EAAM,MAAA,CAAA;QAOhC,UAAA,EAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cApFH,uBAAqB,aAAA;;UAmBhC,KAAA;;;;;;;;;;;;;;;;;UAnBgC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqBrB,yBAAuB,aAAA;;UAsDlC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAtDkC,KAAA;;;;;;;;;;;;;;;;;cAwDvB,6BAA6B,eAAe;iBAOzC,mCAAA,WACJ,eACT"}
1
+ {"version":3,"file":"accounts.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":[],"mappings":";;;;;;cA2Fa,yBAAuB,aAAA;;UAmBlC,mBAAA,CAAA;IAnBW,UAAA,EAAA,KAAA;EAmBX,CAAA;;;;;;;IAnBkC,UAAA,EAAA,IAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;cAAA,mBAAA,CAAA;;;;;;;;;QAAA,UAAA,EAAA,KAAA;MAAA,CAAA;MAqBvB,YAAA,EAAA;QAmBX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;QAnBgC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;MAqBrB,CAAA;MAsDX,WAAA,EAAA;;;;;;QAtDkC,UAAA,EAAA,IAAA;MAAA,CAAA;;;;;;QAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,IAAA;MAwDvB,CAAA;MAOG,gBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cApFH,uBAAqB,aAAA;;UAmBhC,mBAAA,CAAA;;;;;;;;;;;;;;;;;UAnBgC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqBrB,yBAAuB,aAAA;;UAsDlC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAtDkC,mBAAA,CAAA;;;;;;;;;;;;;;;;;cAwDvB,6BAA6B,eAAe;iBAOzC,mCAAA,WACJ,eACT"}
@@ -1,2 +1,2 @@
1
- import{ScalarTypeEnum as e}from"../../../schema/src/ScalarTypeEnum.js";import{SchemaModel as t}from"../../../schema/src/SchemaModel.js";import"../../../schema/src/index.js";import{defineCommand as n,defineQuery as r}from"../../../spec.js";import{BankAccountRecord as i}from"../models.js";import{OPENBANKING_TELEMETRY_EVENTS as a}from"../telemetry.js";const o=new t({name:`OpenBankingListAccountsInput`,description:`Parameters for listing bank accounts through the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!0},includeBalances:{type:e.Boolean(),isOptional:!0},institutionId:{type:e.String_unsecure(),isOptional:!0},cursor:{type:e.String_unsecure(),isOptional:!0},pageSize:{type:e.Int_unsecure(),isOptional:!0}}}),s=new t({name:`OpenBankingListAccountsOutput`,description:`Paginated list of bank accounts available to the tenant and user.`,fields:{accounts:{type:i,isOptional:!1,isArray:!0},nextCursor:{type:e.String_unsecure(),isOptional:!0},hasMore:{type:e.Boolean(),isOptional:!0}}}),c=new t({name:`OpenBankingGetAccountInput`,description:`Parameters for retrieving a specific bank account.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},includeBalances:{type:e.Boolean(),isOptional:!0},includeLatestTransactions:{type:e.Boolean(),isOptional:!0}}}),l=new t({name:`OpenBankingSyncAccountsInput`,description:`Command payload to trigger an account synchronisation against the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!0},connectionId:{type:e.ID(),isOptional:!1},accountIds:{type:e.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:e.Boolean(),isOptional:!0},triggerWorkflows:{type:e.Boolean(),isOptional:!0}}}),u=new t({name:`OpenBankingSyncAccountsOutput`,description:`Result of a bank account synchronisation run.`,fields:{synced:{type:e.Int_unsecure(),isOptional:!1},failed:{type:e.Int_unsecure(),isOptional:!1},errors:{type:e.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:e.DateTime(),isOptional:!0}}}),d=r({meta:{name:`openbanking.accounts.list`,version:1,description:`List bank accounts available to a tenant/user via Powens Open Banking.`,goal:`Provide downstream workflows with the set of accounts accessible via the configured open banking connection.`,context:`Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),f=r({meta:{name:`openbanking.accounts.get`,version:1,description:`Retrieve the canonical bank account record for the given account identifier.`,goal:`Allow user-facing experiences and automations to display up-to-date account metadata.`,context:`Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:c,output:i},policy:{auth:`user`}}),p=n({meta:{name:`openbanking.accounts.sync`,version:1,description:`Initiate a synchronisation run to refresh bank account metadata from Powens.`,goal:`Keep canonical bank account records aligned with the external open banking provider.`,context:`Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:l,output:u},policy:{auth:`admin`},telemetry:{success:{event:{name:a.accountsSynced},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,connectionId:n?.connectionId,synced:r?.synced,failed:r?.failed}}},failure:{event:{name:a.accountsSyncFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,connectionId:n?.connectionId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}}),m={OpenBankingListAccounts:d,OpenBankingGetAccount:f,OpenBankingSyncAccounts:p};function h(e){return e.register(d).register(f).register(p)}export{f as OpenBankingGetAccount,d as OpenBankingListAccounts,p as OpenBankingSyncAccounts,m as openBankingAccountContracts,h as registerOpenBankingAccountContracts};
1
+ import{l as e}from"../../../schema/dist/ScalarTypeEnum.js";import{t}from"../../../schema/dist/SchemaModel.js";import"../../../schema/dist/index.js";import{defineCommand as n,defineQuery as r}from"../../../spec.js";import{BankAccountRecord as i}from"../models.js";import{OPENBANKING_TELEMETRY_EVENTS as a}from"../telemetry.js";const o=new t({name:`OpenBankingListAccountsInput`,description:`Parameters for listing bank accounts through the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!0},includeBalances:{type:e.Boolean(),isOptional:!0},institutionId:{type:e.String_unsecure(),isOptional:!0},cursor:{type:e.String_unsecure(),isOptional:!0},pageSize:{type:e.Int_unsecure(),isOptional:!0}}}),s=new t({name:`OpenBankingListAccountsOutput`,description:`Paginated list of bank accounts available to the tenant and user.`,fields:{accounts:{type:i,isOptional:!1,isArray:!0},nextCursor:{type:e.String_unsecure(),isOptional:!0},hasMore:{type:e.Boolean(),isOptional:!0}}}),c=new t({name:`OpenBankingGetAccountInput`,description:`Parameters for retrieving a specific bank account.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},includeBalances:{type:e.Boolean(),isOptional:!0},includeLatestTransactions:{type:e.Boolean(),isOptional:!0}}}),l=new t({name:`OpenBankingSyncAccountsInput`,description:`Command payload to trigger an account synchronisation against the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!0},connectionId:{type:e.ID(),isOptional:!1},accountIds:{type:e.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:e.Boolean(),isOptional:!0},triggerWorkflows:{type:e.Boolean(),isOptional:!0}}}),u=new t({name:`OpenBankingSyncAccountsOutput`,description:`Result of a bank account synchronisation run.`,fields:{synced:{type:e.Int_unsecure(),isOptional:!1},failed:{type:e.Int_unsecure(),isOptional:!1},errors:{type:e.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:e.DateTime(),isOptional:!0}}}),d=r({meta:{name:`openbanking.accounts.list`,version:1,description:`List bank accounts available to a tenant/user via Powens Open Banking.`,goal:`Provide downstream workflows with the set of accounts accessible via the configured open banking connection.`,context:`Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),f=r({meta:{name:`openbanking.accounts.get`,version:1,description:`Retrieve the canonical bank account record for the given account identifier.`,goal:`Allow user-facing experiences and automations to display up-to-date account metadata.`,context:`Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:c,output:i},policy:{auth:`user`}}),p=n({meta:{name:`openbanking.accounts.sync`,version:1,description:`Initiate a synchronisation run to refresh bank account metadata from Powens.`,goal:`Keep canonical bank account records aligned with the external open banking provider.`,context:`Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`accounts`],stability:`experimental`},io:{input:l,output:u},policy:{auth:`admin`},telemetry:{success:{event:{name:a.accountsSynced},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,connectionId:n?.connectionId,synced:r?.synced,failed:r?.failed}}},failure:{event:{name:a.accountsSyncFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,connectionId:n?.connectionId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}}),m={OpenBankingListAccounts:d,OpenBankingGetAccount:f,OpenBankingSyncAccounts:p};function h(e){return e.register(d).register(f).register(p)}export{f as OpenBankingGetAccount,d as OpenBankingListAccounts,p as OpenBankingSyncAccounts,m as openBankingAccountContracts,h as registerOpenBankingAccountContracts};
2
2
  //# sourceMappingURL=accounts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.js","names":["openBankingAccountContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../../../spec';\nimport type { SpecRegistry } from '../../../registry';\nimport { BankAccountRecord } from '../models';\nimport { OPENBANKING_TELEMETRY_EVENTS } from '../telemetry';\n\nconst OpenBankingListAccountsInput = new SchemaModel({\n name: 'OpenBankingListAccountsInput',\n description: 'Parameters for listing bank accounts through the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: true },\n includeBalances: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n institutionId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n cursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n pageSize: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n});\n\nconst OpenBankingListAccountsOutput = new SchemaModel({\n name: 'OpenBankingListAccountsOutput',\n description: 'Paginated list of bank accounts available to the tenant and user.',\n fields: {\n accounts: {\n type: BankAccountRecord,\n isOptional: false,\n isArray: true,\n },\n nextCursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n hasMore: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingGetAccountInput = new SchemaModel({\n name: 'OpenBankingGetAccountInput',\n description: 'Parameters for retrieving a specific bank account.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n includeBalances: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n includeLatestTransactions: {\n type: ScalarTypeEnum.Boolean(),\n isOptional: true,\n },\n },\n});\n\nconst OpenBankingSyncAccountsInput = new SchemaModel({\n name: 'OpenBankingSyncAccountsInput',\n description:\n 'Command payload to trigger an account synchronisation against the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: true },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountIds: {\n type: ScalarTypeEnum.ID(),\n isArray: true,\n isOptional: true,\n },\n forceFullRefresh: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n triggerWorkflows: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingSyncAccountsOutput = new SchemaModel({\n name: 'OpenBankingSyncAccountsOutput',\n description: 'Result of a bank account synchronisation run.',\n fields: {\n synced: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n failed: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n errors: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n nextSyncSuggestedAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n },\n});\n\nexport const OpenBankingListAccounts = defineQuery({\n meta: {\n name: 'openbanking.accounts.list',\n version: 1,\n description: 'List bank accounts available to a tenant/user via Powens Open Banking.',\n goal: 'Provide downstream workflows with the set of accounts accessible via the configured open banking connection.',\n context:\n 'Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingListAccountsInput,\n output: OpenBankingListAccountsOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingGetAccount = defineQuery({\n meta: {\n name: 'openbanking.accounts.get',\n version: 1,\n description: 'Retrieve the canonical bank account record for the given account identifier.',\n goal: 'Allow user-facing experiences and automations to display up-to-date account metadata.',\n context:\n 'Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingGetAccountInput,\n output: BankAccountRecord,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingSyncAccounts = defineCommand({\n meta: {\n name: 'openbanking.accounts.sync',\n version: 1,\n description: 'Initiate a synchronisation run to refresh bank account metadata from Powens.',\n goal: 'Keep canonical bank account records aligned with the external open banking provider.',\n context:\n 'Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingSyncAccountsInput,\n output: OpenBankingSyncAccountsOutput,\n },\n policy: {\n auth: 'admin',\n },\n telemetry: {\n success: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.accountsSynced },\n properties: ({ input, output }) => {\n const payload = input as {\n tenantId?: string;\n connectionId?: string;\n };\n const result = output as {\n synced?: number;\n failed?: number;\n } | null;\n return {\n tenantId: payload?.tenantId,\n connectionId: payload?.connectionId,\n synced: result?.synced,\n failed: result?.failed,\n };\n },\n },\n failure: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.accountsSyncFailed },\n properties: ({ input, error }) => {\n const payload = input as {\n tenantId?: string;\n connectionId?: string;\n };\n return {\n tenantId: payload?.tenantId,\n connectionId: payload?.connectionId,\n error: error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingAccountContracts: Record<string, ContractSpec<any, any>> =\n {\n OpenBankingListAccounts,\n OpenBankingGetAccount,\n OpenBankingSyncAccounts,\n };\n\nexport function registerOpenBankingAccountContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registry\n .register(OpenBankingListAccounts)\n .register(OpenBankingGetAccount)\n .register(OpenBankingSyncAccounts);\n}\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"accounts.js","names":["SchemaModel","ScalarTypeEnum","openBankingAccountContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../../../src/integrations/openbanking/contracts/accounts.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../../../spec';\nimport type { SpecRegistry } from '../../../registry';\nimport { BankAccountRecord } from '../models';\nimport { OPENBANKING_TELEMETRY_EVENTS } from '../telemetry';\n\nconst OpenBankingListAccountsInput = new SchemaModel({\n name: 'OpenBankingListAccountsInput',\n description: 'Parameters for listing bank accounts through the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: true },\n includeBalances: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n institutionId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n cursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n pageSize: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n});\n\nconst OpenBankingListAccountsOutput = new SchemaModel({\n name: 'OpenBankingListAccountsOutput',\n description: 'Paginated list of bank accounts available to the tenant and user.',\n fields: {\n accounts: {\n type: BankAccountRecord,\n isOptional: false,\n isArray: true,\n },\n nextCursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n hasMore: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingGetAccountInput = new SchemaModel({\n name: 'OpenBankingGetAccountInput',\n description: 'Parameters for retrieving a specific bank account.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n includeBalances: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n includeLatestTransactions: {\n type: ScalarTypeEnum.Boolean(),\n isOptional: true,\n },\n },\n});\n\nconst OpenBankingSyncAccountsInput = new SchemaModel({\n name: 'OpenBankingSyncAccountsInput',\n description:\n 'Command payload to trigger an account synchronisation against the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: true },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountIds: {\n type: ScalarTypeEnum.ID(),\n isArray: true,\n isOptional: true,\n },\n forceFullRefresh: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n triggerWorkflows: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingSyncAccountsOutput = new SchemaModel({\n name: 'OpenBankingSyncAccountsOutput',\n description: 'Result of a bank account synchronisation run.',\n fields: {\n synced: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n failed: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n errors: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n nextSyncSuggestedAt: {\n type: ScalarTypeEnum.DateTime(),\n isOptional: true,\n },\n },\n});\n\nexport const OpenBankingListAccounts = defineQuery({\n meta: {\n name: 'openbanking.accounts.list',\n version: 1,\n description: 'List bank accounts available to a tenant/user via Powens Open Banking.',\n goal: 'Provide downstream workflows with the set of accounts accessible via the configured open banking connection.',\n context:\n 'Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingListAccountsInput,\n output: OpenBankingListAccountsOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingGetAccount = defineQuery({\n meta: {\n name: 'openbanking.accounts.get',\n version: 1,\n description: 'Retrieve the canonical bank account record for the given account identifier.',\n goal: 'Allow user-facing experiences and automations to display up-to-date account metadata.',\n context:\n 'Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingGetAccountInput,\n output: BankAccountRecord,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingSyncAccounts = defineCommand({\n meta: {\n name: 'openbanking.accounts.sync',\n version: 1,\n description: 'Initiate a synchronisation run to refresh bank account metadata from Powens.',\n goal: 'Keep canonical bank account records aligned with the external open banking provider.',\n context:\n 'Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'accounts'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingSyncAccountsInput,\n output: OpenBankingSyncAccountsOutput,\n },\n policy: {\n auth: 'admin',\n },\n telemetry: {\n success: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.accountsSynced },\n properties: ({ input, output }) => {\n const payload = input as {\n tenantId?: string;\n connectionId?: string;\n };\n const result = output as {\n synced?: number;\n failed?: number;\n } | null;\n return {\n tenantId: payload?.tenantId,\n connectionId: payload?.connectionId,\n synced: result?.synced,\n failed: result?.failed,\n };\n },\n },\n failure: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.accountsSyncFailed },\n properties: ({ input, error }) => {\n const payload = input as {\n tenantId?: string;\n connectionId?: string;\n };\n return {\n tenantId: payload?.tenantId,\n connectionId: payload?.connectionId,\n error: error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingAccountContracts: Record<string, ContractSpec<any, any>> =\n {\n OpenBankingListAccounts,\n OpenBankingGetAccount,\n OpenBankingSyncAccounts,\n };\n\nexport function registerOpenBankingAccountContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registry\n .register(OpenBankingListAccounts)\n .register(OpenBankingGetAccount)\n .register(OpenBankingSyncAccounts);\n}\n\n"],"mappings":"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"}