@estifanos-sh/convex-auth 0.0.1-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/README.md +52 -0
  2. package/dist/_generated/component.d.ts +2981 -0
  3. package/dist/bin.js +7194 -0
  4. package/dist/browser/index.d.ts +22 -0
  5. package/dist/browser/index.js +61 -0
  6. package/dist/browser/locks.js +20 -0
  7. package/dist/browser/navigation.js +14 -0
  8. package/dist/browser/runtime.js +90 -0
  9. package/dist/browser/webauthn.js +99 -0
  10. package/dist/client/core/types.d.ts +615 -0
  11. package/dist/client/core/types.js +23 -0
  12. package/dist/client/errors.js +30 -0
  13. package/dist/client/factors/device.js +100 -0
  14. package/dist/client/factors/totp.js +111 -0
  15. package/dist/client/factors/webauthn.js +69 -0
  16. package/dist/client/index.d.ts +60 -0
  17. package/dist/client/index.js +976 -0
  18. package/dist/client/runtime/invite.js +50 -0
  19. package/dist/client/runtime/mutex.js +25 -0
  20. package/dist/client/runtime/proxy.js +75 -0
  21. package/dist/client/runtime/storage.js +65 -0
  22. package/dist/component/_generated/api.js +26 -0
  23. package/dist/component/_generated/component.d.ts +2981 -0
  24. package/dist/component/_generated/component.js +1 -0
  25. package/dist/component/_generated/dataModel.js +1 -0
  26. package/dist/component/_generated/server.js +74 -0
  27. package/dist/component/account.js +197 -0
  28. package/dist/component/connection/audit.js +152 -0
  29. package/dist/component/connection/cache.js +205 -0
  30. package/dist/component/connection/domain/verification.js +63 -0
  31. package/dist/component/connection/domain.js +108 -0
  32. package/dist/component/connection/saml/assertion.js +41 -0
  33. package/dist/component/connection/saml/request.js +61 -0
  34. package/dist/component/connection/scim/config.js +55 -0
  35. package/dist/component/connection/scim/identity.js +162 -0
  36. package/dist/component/connection/secret.js +65 -0
  37. package/dist/component/connection/webhook/delivery.js +396 -0
  38. package/dist/component/connection/webhook/endpoint.js +77 -0
  39. package/dist/component/connection.js +204 -0
  40. package/dist/component/convex.config.d.ts +7 -0
  41. package/dist/component/convex.config.js +15 -0
  42. package/dist/component/crons.js +27 -0
  43. package/dist/component/event.js +341 -0
  44. package/dist/component/factor/device.js +141 -0
  45. package/dist/component/factor/passkey.js +385 -0
  46. package/dist/component/factor/totp.js +253 -0
  47. package/dist/component/functions.js +3 -0
  48. package/dist/component/group/active.js +63 -0
  49. package/dist/component/group/invite.js +300 -0
  50. package/dist/component/group/member.js +188 -0
  51. package/dist/component/group.js +431 -0
  52. package/dist/component/http.js +9 -0
  53. package/dist/component/index.d.ts +5 -0
  54. package/dist/component/index.js +3 -0
  55. package/dist/component/limits.js +103 -0
  56. package/dist/component/maintenance.js +205 -0
  57. package/dist/component/migrations.js +277 -0
  58. package/dist/component/model.d.ts +384 -0
  59. package/dist/component/model.js +709 -0
  60. package/dist/component/modules.js +53 -0
  61. package/dist/component/oauth/client.js +196 -0
  62. package/dist/component/oauth/code.js +97 -0
  63. package/dist/component/oauth/refresh.js +230 -0
  64. package/dist/component/schema.d.ts +1530 -0
  65. package/dist/component/schema.js +401 -0
  66. package/dist/component/session.js +134 -0
  67. package/dist/component/token/pkce.js +121 -0
  68. package/dist/component/token/refresh.js +189 -0
  69. package/dist/component/token/verification.js +155 -0
  70. package/dist/component/user/email.js +147 -0
  71. package/dist/component/user/key.js +273 -0
  72. package/dist/component/user.js +173 -0
  73. package/dist/core/index.d.ts +531 -0
  74. package/dist/core/index.js +81 -0
  75. package/dist/expo/index.d.ts +43 -0
  76. package/dist/expo/index.js +131 -0
  77. package/dist/expo/webauthn.js +88 -0
  78. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts +2 -0
  79. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts +3 -0
  80. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/index.d.ts +7 -0
  81. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts +21 -0
  82. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts +36 -0
  83. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts +1 -0
  84. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts +1 -0
  85. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts +2 -0
  86. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.d.ts +1 -0
  87. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/baggage/utils.d.ts +1 -0
  88. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/attributes.d.ts +1 -0
  89. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/global-error-handler.d.ts +2 -0
  90. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.d.ts +1 -0
  91. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/time.d.ts +1 -0
  92. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/types.d.ts +16 -0
  93. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/index.d.ts +13 -0
  94. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/propagation/composite.d.ts +1 -0
  95. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/TraceState.d.ts +1 -0
  96. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.d.ts +1 -0
  97. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.d.ts +1 -0
  98. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.d.ts +1 -0
  99. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/utils/configuration.d.ts +1 -0
  100. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/LogRecordProcessor.d.ts +24 -0
  101. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/LoggerProvider.d.ts +2 -0
  102. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/config/LoggerConfigurators.d.ts +1 -0
  103. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/BatchLogRecordProcessorBase.d.ts +4 -0
  104. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/ConsoleLogRecordExporter.d.ts +3 -0
  105. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/InMemoryLogRecordExporter.d.ts +3 -0
  106. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/LogRecordExporter.d.ts +2 -0
  107. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/ReadableLogRecord.d.ts +4 -0
  108. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/SdkLogRecord.d.ts +71 -0
  109. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/SimpleLogRecordProcessor.d.ts +3 -0
  110. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/index.d.ts +11 -0
  111. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/index.d.ts +1 -0
  112. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/node/export/BatchLogRecordProcessor.d.ts +2 -0
  113. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/node/index.d.ts +1 -0
  114. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/types.d.ts +4 -0
  115. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/InstrumentDescriptor.d.ts +3 -0
  116. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/MeterProvider.d.ts +4 -0
  117. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Drop.d.ts +4 -0
  118. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/ExponentialHistogram.d.ts +5 -0
  119. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Histogram.d.ts +5 -0
  120. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/LastValue.d.ts +5 -0
  121. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Sum.d.ts +5 -0
  122. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/index.d.ts +6 -0
  123. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/types.d.ts +53 -0
  124. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/AggregationSelector.d.ts +16 -0
  125. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/AggregationTemporality.d.ts +11 -0
  126. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/CardinalitySelector.d.ts +10 -0
  127. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/ConsoleMetricExporter.d.ts +4 -0
  128. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/InMemoryMetricExporter.d.ts +3 -0
  129. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricData.d.ts +148 -0
  130. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricExporter.d.ts +3 -0
  131. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricProducer.d.ts +27 -0
  132. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricReader.d.ts +138 -0
  133. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/PeriodicExportingMetricReader.d.ts +3 -0
  134. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/index.d.ts +15 -0
  135. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/types.d.ts +10 -0
  136. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/utils.d.ts +2 -0
  137. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/Aggregation.d.ts +4 -0
  138. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/AggregationOption.d.ts +41 -0
  139. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/AttributesProcessor.d.ts +1 -0
  140. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/InstrumentSelector.d.ts +1 -0
  141. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/View.d.ts +5 -0
  142. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.d.ts +2 -0
  143. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.d.ts +11 -0
  144. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.d.ts +74 -0
  145. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.d.ts +17 -0
  146. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.d.ts +43 -0
  147. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.d.ts +19 -0
  148. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.d.ts +6 -0
  149. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.d.ts +3 -0
  150. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.d.ts +3 -0
  151. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.d.ts +4 -0
  152. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.d.ts +29 -0
  153. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.d.ts +5 -0
  154. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.d.ts +2 -0
  155. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/index.d.ts +18 -0
  156. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.d.ts +1 -0
  157. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.d.ts +2 -0
  158. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.d.ts +1 -0
  159. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.d.ts +1 -0
  160. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.d.ts +1 -0
  161. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.d.ts +2 -0
  162. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.d.ts +1 -0
  163. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/types.d.ts +66 -0
  164. package/dist/otel.d.ts +73 -0
  165. package/dist/otel.js +82 -0
  166. package/dist/permissions/index.d.ts +81 -0
  167. package/dist/permissions/index.js +18 -0
  168. package/dist/providers/anonymous.d.ts +35 -0
  169. package/dist/providers/anonymous.js +40 -0
  170. package/dist/providers/apple.d.ts +61 -0
  171. package/dist/providers/apple.js +57 -0
  172. package/dist/providers/connection.d.ts +30 -0
  173. package/dist/providers/connection.js +33 -0
  174. package/dist/providers/credentials.d.ts +78 -0
  175. package/dist/providers/credentials.js +31 -0
  176. package/dist/providers/custom.d.ts +96 -0
  177. package/dist/providers/custom.js +108 -0
  178. package/dist/providers/device.d.ts +33 -0
  179. package/dist/providers/device.js +30 -0
  180. package/dist/providers/email.d.ts +45 -0
  181. package/dist/providers/email.js +52 -0
  182. package/dist/providers/github.d.ts +56 -0
  183. package/dist/providers/github.js +79 -0
  184. package/dist/providers/google.d.ts +56 -0
  185. package/dist/providers/google.js +59 -0
  186. package/dist/providers/index.d.ts +16 -0
  187. package/dist/providers/index.js +16 -0
  188. package/dist/providers/microsoft.d.ts +59 -0
  189. package/dist/providers/microsoft.js +98 -0
  190. package/dist/providers/password.d.ts +68 -0
  191. package/dist/providers/password.js +348 -0
  192. package/dist/providers/phone.d.ts +33 -0
  193. package/dist/providers/phone.js +35 -0
  194. package/dist/providers/redirect.d.ts +1 -0
  195. package/dist/providers/redirect.js +11 -0
  196. package/dist/providers/totp.d.ts +29 -0
  197. package/dist/providers/totp.js +29 -0
  198. package/dist/providers/webauthn/attestation.d.ts +42 -0
  199. package/dist/providers/webauthn/attestation.js +167 -0
  200. package/dist/providers/webauthn.d.ts +83 -0
  201. package/dist/providers/webauthn.js +57 -0
  202. package/dist/react/index.d.ts +55 -0
  203. package/dist/react/index.js +80 -0
  204. package/dist/server/auth.d.ts +443 -0
  205. package/dist/server/auth.js +178 -0
  206. package/dist/server/cache/context.js +94 -0
  207. package/dist/server/component/api.d.ts +14 -0
  208. package/dist/server/component/api.js +13 -0
  209. package/dist/server/component/context.d.ts +16 -0
  210. package/dist/server/component/context.js +1 -0
  211. package/dist/server/component/factor/db.js +71 -0
  212. package/dist/server/config.d.ts +3 -0
  213. package/dist/server/config.js +78 -0
  214. package/dist/server/connection/config.js +101 -0
  215. package/dist/server/connection/domain.d.ts +878 -0
  216. package/dist/server/connection/domain.js +1122 -0
  217. package/dist/server/connection/group/service.d.ts +25 -0
  218. package/dist/server/connection/group/service.js +250 -0
  219. package/dist/server/connection/http.js +1485 -0
  220. package/dist/server/connection/oidc.js +366 -0
  221. package/dist/server/connection/policy/domain.js +59 -0
  222. package/dist/server/connection/policy.d.ts +1 -0
  223. package/dist/server/connection/policy.js +163 -0
  224. package/dist/server/connection/profile.js +22 -0
  225. package/dist/server/connection/provision.js +182 -0
  226. package/dist/server/connection/saml/api.js +70 -0
  227. package/dist/server/connection/saml/binding/post.js +140 -0
  228. package/dist/server/connection/saml/binding/redirect.js +139 -0
  229. package/dist/server/connection/saml/binding/shared.js +18 -0
  230. package/dist/server/connection/saml/c14n.js +224 -0
  231. package/dist/server/connection/saml/constants.js +100 -0
  232. package/dist/server/connection/saml/crypto.js +170 -0
  233. package/dist/server/connection/saml/dom/select.js +299 -0
  234. package/dist/server/connection/saml/encoding.js +93 -0
  235. package/dist/server/connection/saml/encryption.js +34 -0
  236. package/dist/server/connection/saml/entity.js +24 -0
  237. package/dist/server/connection/saml/extractor.js +408 -0
  238. package/dist/server/connection/saml/flow.js +150 -0
  239. package/dist/server/connection/saml/identity/provider.js +66 -0
  240. package/dist/server/connection/saml/index.js +5 -0
  241. package/dist/server/connection/saml/metadata.js +294 -0
  242. package/dist/server/connection/saml/service/provider.js +117 -0
  243. package/dist/server/connection/saml/signature.js +214 -0
  244. package/dist/server/connection/saml/template.js +68 -0
  245. package/dist/server/connection/saml/types.js +1 -0
  246. package/dist/server/connection/saml/validator.js +32 -0
  247. package/dist/server/connection/saml/xml/builder.js +68 -0
  248. package/dist/server/connection/saml/xmldsig.js +598 -0
  249. package/dist/server/connection/saml/xmlenc.js +162 -0
  250. package/dist/server/connection/saml.d.ts +56 -0
  251. package/dist/server/connection/saml.js +762 -0
  252. package/dist/server/connection/scim.js +115 -0
  253. package/dist/server/connection/shared.js +74 -0
  254. package/dist/server/connection/webhook.js +163 -0
  255. package/dist/server/context.d.ts +137 -0
  256. package/dist/server/context.js +108 -0
  257. package/dist/server/contract.d.ts +48 -0
  258. package/dist/server/contract.js +107 -0
  259. package/dist/server/cookies.js +90 -0
  260. package/dist/server/core.js +163 -0
  261. package/dist/server/cors.d.ts +22 -0
  262. package/dist/server/cors.js +93 -0
  263. package/dist/server/crypto.js +43 -0
  264. package/dist/server/db.js +88 -0
  265. package/dist/server/device.js +140 -0
  266. package/dist/server/domains/access.js +29 -0
  267. package/dist/server/domains/account.d.ts +16 -0
  268. package/dist/server/domains/account.js +92 -0
  269. package/dist/server/domains/factor.d.ts +28 -0
  270. package/dist/server/domains/factor.js +115 -0
  271. package/dist/server/domains/group.js +87 -0
  272. package/dist/server/domains/invite.js +76 -0
  273. package/dist/server/domains/key.js +253 -0
  274. package/dist/server/domains/member.js +149 -0
  275. package/dist/server/domains/session.js +29 -0
  276. package/dist/server/domains/user.js +119 -0
  277. package/dist/server/env.d.ts +46 -0
  278. package/dist/server/env.js +96 -0
  279. package/dist/server/errors.js +38 -0
  280. package/dist/server/events.d.ts +880 -0
  281. package/dist/server/events.js +406 -0
  282. package/dist/server/facade.d.ts +83 -0
  283. package/dist/server/facade.js +124 -0
  284. package/dist/server/http.d.ts +125 -0
  285. package/dist/server/http.js +566 -0
  286. package/dist/server/identity/claims.js +58 -0
  287. package/dist/server/identity/convex.d.ts +15 -0
  288. package/dist/server/identity/convex.js +1 -0
  289. package/dist/server/index.d.ts +17 -0
  290. package/dist/server/index.js +11 -0
  291. package/dist/server/keys.js +60 -0
  292. package/dist/server/limits.js +41 -0
  293. package/dist/server/log.js +28 -0
  294. package/dist/server/mcp.d.ts +19 -0
  295. package/dist/server/mcp.js +250 -0
  296. package/dist/server/mutations/account.js +47 -0
  297. package/dist/server/mutations/calls.js +16 -0
  298. package/dist/server/mutations/code.js +91 -0
  299. package/dist/server/mutations/credentials/signin.js +210 -0
  300. package/dist/server/mutations/invalidate.js +60 -0
  301. package/dist/server/mutations/oauth.js +251 -0
  302. package/dist/server/mutations/refresh.js +152 -0
  303. package/dist/server/mutations/register.js +93 -0
  304. package/dist/server/mutations/retrieve.js +66 -0
  305. package/dist/server/mutations/signature.js +36 -0
  306. package/dist/server/mutations/signin.js +81 -0
  307. package/dist/server/mutations/signout.js +61 -0
  308. package/dist/server/mutations/store/refs.js +15 -0
  309. package/dist/server/mutations/store.js +82 -0
  310. package/dist/server/mutations/verifier.js +25 -0
  311. package/dist/server/mutations/verify.js +199 -0
  312. package/dist/server/oauth/authorize.js +98 -0
  313. package/dist/server/oauth/client.d.ts +93 -0
  314. package/dist/server/oauth/client.js +115 -0
  315. package/dist/server/oauth/code.d.ts +63 -0
  316. package/dist/server/oauth/code.js +124 -0
  317. package/dist/server/oauth/domain.d.ts +23 -0
  318. package/dist/server/oauth/domain.js +1 -0
  319. package/dist/server/oauth/factory.js +46 -0
  320. package/dist/server/oauth/grant.js +46 -0
  321. package/dist/server/oauth/handlers.js +108 -0
  322. package/dist/server/oauth/manage.js +121 -0
  323. package/dist/server/oauth/normalize.js +27 -0
  324. package/dist/server/oauth/refresh.d.ts +71 -0
  325. package/dist/server/oauth/refresh.js +132 -0
  326. package/dist/server/oauth/register.js +147 -0
  327. package/dist/server/oauth/runtime.js +280 -0
  328. package/dist/server/oauth/token.js +355 -0
  329. package/dist/server/payloads.d.ts +16 -0
  330. package/dist/server/payloads.js +30 -0
  331. package/dist/server/preload.d.ts +249 -0
  332. package/dist/server/preload.js +673 -0
  333. package/dist/server/random.js +25 -0
  334. package/dist/server/redirects.js +85 -0
  335. package/dist/server/runtime.d.ts +845 -0
  336. package/dist/server/runtime.js +387 -0
  337. package/dist/server/secret.js +46 -0
  338. package/dist/server/services/factors.js +117 -0
  339. package/dist/server/services/providers.js +23 -0
  340. package/dist/server/services/resolve.js +17 -0
  341. package/dist/server/session/lifecycle.d.ts +23 -0
  342. package/dist/server/session/lifecycle.js +139 -0
  343. package/dist/server/signin/flow.js +359 -0
  344. package/dist/server/telemetry.js +68 -0
  345. package/dist/server/templates.js +91 -0
  346. package/dist/server/token/refresh.js +35 -0
  347. package/dist/server/tokens.js +164 -0
  348. package/dist/server/totp.js +282 -0
  349. package/dist/server/types.d.ts +1154 -0
  350. package/dist/server/types.js +1 -0
  351. package/dist/server/url.js +43 -0
  352. package/dist/server/user/account.js +325 -0
  353. package/dist/server/utils/bearer.js +24 -0
  354. package/dist/server/utils/cache.js +51 -0
  355. package/dist/server/utils/retry.js +3 -0
  356. package/dist/server/utils/span.js +59 -0
  357. package/dist/server/validators.d.ts +2061 -0
  358. package/dist/server/validators.js +320 -0
  359. package/dist/server/webauthn.js +699 -0
  360. package/dist/server/wellknown.d.ts +74 -0
  361. package/dist/server/wellknown.js +195 -0
  362. package/dist/shared/brand.d.ts +28 -0
  363. package/dist/shared/brand.js +13 -0
  364. package/dist/shared/codes.d.ts +99 -0
  365. package/dist/shared/codes.js +98 -0
  366. package/dist/shared/compare.js +23 -0
  367. package/dist/shared/errors.js +24 -0
  368. package/dist/shared/event/kinds.d.ts +188 -0
  369. package/dist/shared/event/kinds.js +103 -0
  370. package/dist/shared/fetch/guard.js +189 -0
  371. package/dist/shared/log.js +62 -0
  372. package/dist/shared/results.d.ts +58 -0
  373. package/dist/shared/retry.js +27 -0
  374. package/dist/shared/webauthn.js +9 -0
  375. package/dist/svelte/AuthLoading.svelte +13 -0
  376. package/dist/svelte/AuthLoading.svelte.d.ts +8 -0
  377. package/dist/svelte/SignedIn.svelte +14 -0
  378. package/dist/svelte/SignedIn.svelte.d.ts +8 -0
  379. package/dist/svelte/SignedOut.svelte +13 -0
  380. package/dist/svelte/SignedOut.svelte.d.ts +8 -0
  381. package/dist/svelte/context.svelte.d.ts +26 -0
  382. package/dist/svelte/context.svelte.js +61 -0
  383. package/dist/svelte/index.d.ts +5 -0
  384. package/dist/svelte/index.js +4 -0
  385. package/dist/test.d.ts +48 -0
  386. package/dist/test.js +54 -0
  387. package/package.json +247 -0
@@ -0,0 +1,1530 @@
1
+ import * as convex_values1839 from "convex/values";
2
+ import * as convex_server32 from "convex/server";
3
+
4
+ //#region src/component/schema.d.ts
5
+ /**
6
+ * Schema for the auth component.
7
+ *
8
+ * Contains tables for core authentication (users, sessions, accounts, tokens,
9
+ * verification codes, PKCE verifiers, rate limits) and hierarchical group
10
+ * management (groups, members, invites).
11
+ */
12
+ declare const _default: convex_server32.SchemaDefinition<{
13
+ /**
14
+ * Authenticated users. A user may have multiple linked accounts
15
+ * and multiple concurrent sessions.
16
+ */
17
+ User: convex_server32.TableDefinition<convex_values1839.VObject<{
18
+ name?: string | undefined;
19
+ email?: string | undefined;
20
+ phone?: string | undefined;
21
+ firstName?: string | undefined;
22
+ lastName?: string | undefined;
23
+ image?: string | undefined;
24
+ emailVerificationTime?: number | undefined;
25
+ phoneVerificationTime?: number | undefined;
26
+ isAnonymous?: boolean | undefined;
27
+ lastActiveGroup?: convex_values1839.GenericId<"Group"> | undefined;
28
+ hasTotp?: boolean | undefined;
29
+ extend?: any;
30
+ }, {
31
+ name: convex_values1839.VString<string | undefined, "optional">;
32
+ firstName: convex_values1839.VString<string | undefined, "optional">;
33
+ lastName: convex_values1839.VString<string | undefined, "optional">;
34
+ image: convex_values1839.VString<string | undefined, "optional">;
35
+ email: convex_values1839.VString<string | undefined, "optional">;
36
+ emailVerificationTime: convex_values1839.VFloat64<number | undefined, "optional">;
37
+ phone: convex_values1839.VString<string | undefined, "optional">;
38
+ phoneVerificationTime: convex_values1839.VFloat64<number | undefined, "optional">;
39
+ isAnonymous: convex_values1839.VBoolean<boolean | undefined, "optional">;
40
+ lastActiveGroup: convex_values1839.VId<convex_values1839.GenericId<"Group"> | undefined, "optional">;
41
+ /**
42
+ * @deprecated Retained so pre-existing rows still validate after the
43
+ * denormalized-cache removal. Still accepted on the `user.patch` validator
44
+ * (`vUserPatchData`) until the major-version removal — nothing writes a
45
+ * meaningful value; strip existing data via the `dropHasTotp` migration.
46
+ */
47
+ hasTotp: convex_values1839.VBoolean<boolean | undefined, "optional">;
48
+ extend: convex_values1839.VAny<any, "optional", string>;
49
+ }, "required", "name" | "email" | "phone" | "firstName" | "lastName" | "image" | "emailVerificationTime" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | "hasTotp" | "extend" | `extend.${string}`>, {
50
+ email: ["email", "_creationTime"];
51
+ email_verified: ["email", "emailVerificationTime", "_creationTime"];
52
+ phone: ["phone", "_creationTime"];
53
+ phone_verified: ["phone", "phoneVerificationTime", "_creationTime"];
54
+ }, {}, {}>;
55
+ /**
56
+ * All emails a user owns, across providers/connections. `User.email`
57
+ * remains the single denormalized primary pointer (the row with
58
+ * `isPrimary: true`); this table is the source of truth for the full
59
+ * set and carries provenance so Connection linking can be connection-scoped.
60
+ *
61
+ * `verificationTime` present ⇔ the email is verified. `source` and
62
+ * `connectionId` record which provider/Connection connection asserted it —
63
+ * email-based account linking for Connection must stay scoped to the same
64
+ * `connectionId` (see server/users.ts) to avoid cross-IdP takeover.
65
+ */
66
+ UserEmail: convex_server32.TableDefinition<convex_values1839.VObject<{
67
+ verificationTime?: number | undefined;
68
+ accountId?: convex_values1839.GenericId<"Account"> | undefined;
69
+ provider?: string | undefined;
70
+ connectionId?: convex_values1839.GenericId<"GroupConnection"> | undefined;
71
+ email: string;
72
+ userId: convex_values1839.GenericId<"User">;
73
+ isPrimary: boolean;
74
+ source: "password" | "oauth" | "oidc" | "saml" | "scim";
75
+ }, {
76
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">;
77
+ email: convex_values1839.VString<string, "required">;
78
+ verificationTime: convex_values1839.VFloat64<number | undefined, "optional">;
79
+ isPrimary: convex_values1839.VBoolean<boolean, "required">;
80
+ source: convex_values1839.VUnion<"password" | "oauth" | "oidc" | "saml" | "scim", [convex_values1839.VLiteral<"password", "required">, convex_values1839.VLiteral<"oauth", "required">, convex_values1839.VLiteral<"oidc", "required">, convex_values1839.VLiteral<"saml", "required">, convex_values1839.VLiteral<"scim", "required">], "required", never>;
81
+ accountId: convex_values1839.VId<convex_values1839.GenericId<"Account"> | undefined, "optional">;
82
+ provider: convex_values1839.VString<string | undefined, "optional">;
83
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection"> | undefined, "optional">;
84
+ }, "required", "email" | "userId" | "verificationTime" | "isPrimary" | "source" | "accountId" | "provider" | "connectionId">, {
85
+ user_id: ["userId", "_creationTime"];
86
+ user_id_email: ["userId", "email", "_creationTime"];
87
+ connection_id_email: ["connectionId", "email", "_creationTime"];
88
+ }, {}, {}>;
89
+ /**
90
+ * Active sessions. A single user can have multiple concurrent sessions
91
+ * across different devices or browsers. Sessions expire after a
92
+ * configurable duration.
93
+ */
94
+ Session: convex_server32.TableDefinition<convex_values1839.VObject<{
95
+ userId: convex_values1839.GenericId<"User">;
96
+ expirationTime: number;
97
+ }, {
98
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">;
99
+ expirationTime: convex_values1839.VFloat64<number, "required">;
100
+ }, "required", "userId" | "expirationTime">, {
101
+ user_id: ["userId", "_creationTime"];
102
+ expiration_time: ["expirationTime", "_creationTime"];
103
+ }, {}, {}>;
104
+ /**
105
+ * Authentication accounts. Each account links a user to a single
106
+ * authentication provider (e.g. Google OAuth, email/password).
107
+ * A user can have multiple accounts linked.
108
+ */
109
+ Account: convex_server32.TableDefinition<convex_values1839.VObject<{
110
+ extend?: any;
111
+ secret?: string | undefined;
112
+ emailVerified?: string | undefined;
113
+ phoneVerified?: string | undefined;
114
+ userId: convex_values1839.GenericId<"User">;
115
+ provider: string;
116
+ providerAccountId: string;
117
+ }, {
118
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">;
119
+ provider: convex_values1839.VString<string, "required">;
120
+ providerAccountId: convex_values1839.VString<string, "required">;
121
+ secret: convex_values1839.VString<string | undefined, "optional">;
122
+ emailVerified: convex_values1839.VString<string | undefined, "optional">;
123
+ phoneVerified: convex_values1839.VString<string | undefined, "optional">;
124
+ extend: convex_values1839.VAny<any, "optional", string>;
125
+ }, "required", "extend" | `extend.${string}` | "userId" | "provider" | "providerAccountId" | "secret" | "emailVerified" | "phoneVerified">, {
126
+ user_id_provider: ["userId", "provider", "_creationTime"];
127
+ provider_account_id: ["provider", "providerAccountId", "_creationTime"];
128
+ }, {}, {}>;
129
+ /**
130
+ * Refresh tokens for session continuity. Tokens are single-use and form
131
+ * a chain — each token references the one it was exchanged from.
132
+ *
133
+ * The active refresh token is the most recently created token that has not
134
+ * been used yet. A 10-second reuse window allows for concurrent requests.
135
+ * Any invalid use of a token invalidates the entire chain.
136
+ */
137
+ RefreshToken: convex_server32.TableDefinition<convex_values1839.VObject<{
138
+ firstUsedTime?: number | undefined;
139
+ parentRefreshTokenId?: convex_values1839.GenericId<"RefreshToken"> | undefined;
140
+ expirationTime: number;
141
+ sessionId: convex_values1839.GenericId<"Session">;
142
+ }, {
143
+ sessionId: convex_values1839.VId<convex_values1839.GenericId<"Session">, "required">;
144
+ expirationTime: convex_values1839.VFloat64<number, "required">;
145
+ firstUsedTime: convex_values1839.VFloat64<number | undefined, "optional">;
146
+ parentRefreshTokenId: convex_values1839.VId<convex_values1839.GenericId<"RefreshToken"> | undefined, "optional">;
147
+ }, "required", "expirationTime" | "sessionId" | "firstUsedTime" | "parentRefreshTokenId">, {
148
+ session_id: ["sessionId", "_creationTime"];
149
+ session_id_first_used: ["sessionId", "firstUsedTime", "_creationTime"];
150
+ session_id_parent_refresh_token_id: ["sessionId", "parentRefreshTokenId", "_creationTime"];
151
+ expiration_time: ["expirationTime", "_creationTime"];
152
+ }, {}, {}>;
153
+ /**
154
+ * Verification codes for OTP tokens, magic link tokens, and OAuth codes.
155
+ */
156
+ VerificationCode: convex_server32.TableDefinition<convex_values1839.VObject<{
157
+ emailVerified?: string | undefined;
158
+ phoneVerified?: string | undefined;
159
+ verifier?: string | undefined;
160
+ accountId: convex_values1839.GenericId<"Account">;
161
+ provider: string;
162
+ expirationTime: number;
163
+ code: string;
164
+ }, {
165
+ accountId: convex_values1839.VId<convex_values1839.GenericId<"Account">, "required">;
166
+ provider: convex_values1839.VString<string, "required">;
167
+ code: convex_values1839.VString<string, "required">;
168
+ expirationTime: convex_values1839.VFloat64<number, "required">;
169
+ verifier: convex_values1839.VString<string | undefined, "optional">;
170
+ emailVerified: convex_values1839.VString<string | undefined, "optional">;
171
+ phoneVerified: convex_values1839.VString<string | undefined, "optional">;
172
+ }, "required", "accountId" | "provider" | "expirationTime" | "emailVerified" | "phoneVerified" | "code" | "verifier">, {
173
+ account_id: ["accountId", "_creationTime"];
174
+ code: ["code", "_creationTime"];
175
+ expiration_time: ["expirationTime", "_creationTime"];
176
+ }, {}, {}>;
177
+ /**
178
+ * PKCE verifiers for OAuth flows. Stores the cryptographic verifier
179
+ * used to prove the authorization request originated from this client.
180
+ */
181
+ AuthVerifier: convex_server32.TableDefinition<convex_values1839.VObject<{
182
+ expirationTime?: number | undefined;
183
+ sessionId?: convex_values1839.GenericId<"Session"> | undefined;
184
+ signature?: string | undefined;
185
+ }, {
186
+ sessionId: convex_values1839.VId<convex_values1839.GenericId<"Session"> | undefined, "optional">;
187
+ signature: convex_values1839.VString<string | undefined, "optional">;
188
+ expirationTime: convex_values1839.VFloat64<number | undefined, "optional">;
189
+ }, "required", "expirationTime" | "sessionId" | "signature">, {
190
+ signature: ["signature", "_creationTime"];
191
+ expiration_time: ["expirationTime", "_creationTime"];
192
+ }, {}, {}>; /** Token-bucket state for guessable-secret authentication attempts. */
193
+ SignInLimit: convex_server32.TableDefinition<convex_values1839.VObject<{
194
+ identifier: string;
195
+ tokens: number;
196
+ updatedAt: number;
197
+ }, {
198
+ identifier: convex_values1839.VString<string, "required">;
199
+ tokens: convex_values1839.VFloat64<number, "required">;
200
+ updatedAt: convex_values1839.VFloat64<number, "required">;
201
+ }, "required", "identifier" | "tokens" | "updatedAt">, {
202
+ identifier: ["identifier", "_creationTime"];
203
+ updated_at: ["updatedAt", "_creationTime"];
204
+ }, {}, {}>;
205
+ /**
206
+ * WebAuthn passkey credentials. Each credential links a user to a
207
+ * registered authenticator (Touch ID, Face ID, security key, etc.).
208
+ * A user can have multiple passkeys across different devices.
209
+ */
210
+ Passkey: convex_server32.TableDefinition<convex_values1839.VObject<{
211
+ name?: string | undefined;
212
+ transports?: string[] | undefined;
213
+ attestation?: {
214
+ metadataDescription?: string | undefined;
215
+ verifier: string;
216
+ aaguid: string;
217
+ format: string;
218
+ verifiedAt: number;
219
+ status: "trusted";
220
+ } | undefined;
221
+ lastUsedAt?: number | undefined;
222
+ userId: convex_values1839.GenericId<"User">;
223
+ credentialId: string;
224
+ publicKey: ArrayBuffer;
225
+ algorithm: number;
226
+ counter: number;
227
+ deviceType: string;
228
+ backedUp: boolean;
229
+ createdAt: number;
230
+ }, {
231
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">; /** Base64url-encoded credential ID from the authenticator. */
232
+ credentialId: convex_values1839.VString<string, "required">; /** Public key bytes (SEC1 uncompressed for EC, SPKI for RSA). */
233
+ publicKey: convex_values1839.VBytes<ArrayBuffer, "required">; /** COSE algorithm identifier (-7 for ES256, -257 for RS256, -8 for EdDSA). */
234
+ algorithm: convex_values1839.VFloat64<number, "required">; /** Signature counter for clone detection. Many authenticators return 0. */
235
+ counter: convex_values1839.VFloat64<number, "required">; /** Authenticator transport hints (e.g. "internal", "hybrid", "usb", "ble", "nfc"). */
236
+ transports: convex_values1839.VArray<string[] | undefined, convex_values1839.VString<string, "required">, "optional">; /** Whether this is a single-device or multi-device (synced) credential. */
237
+ deviceType: convex_values1839.VString<string, "required">; /** Whether the credential is backed up (synced passkey). */
238
+ backedUp: convex_values1839.VBoolean<boolean, "required">; /** User-assigned friendly name (e.g. "MacBook Touch ID"). */
239
+ name: convex_values1839.VString<string | undefined, "optional">; /** Trusted authenticator-attestation evidence, absent on legacy/unattested credentials. */
240
+ attestation: convex_values1839.VObject<{
241
+ metadataDescription?: string | undefined;
242
+ verifier: string;
243
+ aaguid: string;
244
+ format: string;
245
+ verifiedAt: number;
246
+ status: "trusted";
247
+ } | undefined, {
248
+ verifier: convex_values1839.VString<string, "required">;
249
+ aaguid: convex_values1839.VString<string, "required">;
250
+ format: convex_values1839.VString<string, "required">;
251
+ metadataDescription: convex_values1839.VString<string | undefined, "optional">;
252
+ verifiedAt: convex_values1839.VFloat64<number, "required">;
253
+ status: convex_values1839.VLiteral<"trusted", "required">;
254
+ }, "optional", "verifier" | "aaguid" | "format" | "metadataDescription" | "verifiedAt" | "status">;
255
+ createdAt: convex_values1839.VFloat64<number, "required">;
256
+ lastUsedAt: convex_values1839.VFloat64<number | undefined, "optional">;
257
+ }, "required", "name" | "userId" | "credentialId" | "publicKey" | "algorithm" | "counter" | "transports" | "deviceType" | "backedUp" | "attestation" | "createdAt" | "lastUsedAt" | "attestation.verifier" | "attestation.aaguid" | "attestation.format" | "attestation.metadataDescription" | "attestation.verifiedAt" | "attestation.status">, {
258
+ user_id: ["userId", "_creationTime"];
259
+ credential_id: ["credentialId", "_creationTime"];
260
+ }, {}, {}>;
261
+ /**
262
+ * TOTP two-factor authentication secrets. Each record links a user to
263
+ * an authenticator app. A user can have multiple TOTP enrollments
264
+ * (e.g. different authenticator apps) but typically has one.
265
+ *
266
+ * The `verified` flag indicates whether the user has completed setup
267
+ * by successfully entering a code from their authenticator app.
268
+ * Unverified enrollments are in-progress setup that can be discarded.
269
+ */
270
+ TotpFactor: convex_server32.TableDefinition<convex_values1839.VObject<{
271
+ name?: string | undefined;
272
+ lastUsedAt?: number | undefined;
273
+ userId: convex_values1839.GenericId<"User">;
274
+ secret: ArrayBuffer;
275
+ createdAt: number;
276
+ digits: number;
277
+ period: number;
278
+ verified: boolean;
279
+ }, {
280
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">; /** Raw TOTP secret key bytes. */
281
+ secret: convex_values1839.VBytes<ArrayBuffer, "required">; /** Number of digits in each code (typically 6). */
282
+ digits: convex_values1839.VFloat64<number, "required">; /** Time period in seconds for code rotation (typically 30). */
283
+ period: convex_values1839.VFloat64<number, "required">; /** Whether setup has been confirmed with a valid code. */
284
+ verified: convex_values1839.VBoolean<boolean, "required">; /** User-assigned friendly name (e.g. "Google Authenticator"). */
285
+ name: convex_values1839.VString<string | undefined, "optional">;
286
+ createdAt: convex_values1839.VFloat64<number, "required">;
287
+ lastUsedAt: convex_values1839.VFloat64<number | undefined, "optional">;
288
+ }, "required", "name" | "userId" | "secret" | "createdAt" | "lastUsedAt" | "digits" | "period" | "verified">, {
289
+ user_id: ["userId", "_creationTime"];
290
+ user_id_verified: ["userId", "verified", "_creationTime"];
291
+ }, {}, {}>;
292
+ /**
293
+ * Device authorization codes (RFC 8628). Each record tracks a pending
294
+ * device auth session — the device polls with `deviceCode` while the
295
+ * user authorizes via `userCode` on a secondary device.
296
+ */
297
+ DeviceCode: convex_server32.TableDefinition<convex_values1839.VObject<{
298
+ userId?: convex_values1839.GenericId<"User"> | undefined;
299
+ sessionId?: convex_values1839.GenericId<"Session"> | undefined;
300
+ lastPolledAt?: number | undefined;
301
+ status: "pending" | "authorized" | "denied";
302
+ deviceCodeHash: string;
303
+ userCode: string;
304
+ expiresAt: number;
305
+ interval: number;
306
+ }, {
307
+ /** High-entropy code used by the device for polling. Stored as SHA-256 hash. */deviceCodeHash: convex_values1839.VString<string, "required">; /** Short human-readable code the user enters (e.g. "WDJB-MJHT"). */
308
+ userCode: convex_values1839.VString<string, "required">; /** Expiration timestamp (ms since epoch). */
309
+ expiresAt: convex_values1839.VFloat64<number, "required">; /** Minimum polling interval in seconds. */
310
+ interval: convex_values1839.VFloat64<number, "required">; /** Current status of this device authorization session. */
311
+ status: convex_values1839.VUnion<"pending" | "authorized" | "denied", [convex_values1839.VLiteral<"pending", "required">, convex_values1839.VLiteral<"authorized", "required">, convex_values1839.VLiteral<"denied", "required">], "required", never>; /** Set when the user authorizes — links to the authorizing user. */
312
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User"> | undefined, "optional">; /** Set when the user authorizes — the session created for the device. */
313
+ sessionId: convex_values1839.VId<convex_values1839.GenericId<"Session"> | undefined, "optional">; /** Timestamp of the last poll request (for slow_down enforcement). */
314
+ lastPolledAt: convex_values1839.VFloat64<number | undefined, "optional">;
315
+ }, "required", "userId" | "sessionId" | "status" | "deviceCodeHash" | "userCode" | "expiresAt" | "interval" | "lastPolledAt">, {
316
+ device_code_hash: ["deviceCodeHash", "_creationTime"];
317
+ user_code_status: ["userCode", "status", "_creationTime"];
318
+ expires_at: ["expiresAt", "_creationTime"];
319
+ }, {}, {}>;
320
+ /**
321
+ * Hierarchical groups. A group with no `parentGroupId` is a root group.
322
+ * Groups can nest arbitrarily deep via `parentGroupId` for modeling
323
+ * organizations, teams, departments, or any tree structure.
324
+ */
325
+ Group: convex_server32.TableDefinition<convex_values1839.VObject<{
326
+ extend?: any;
327
+ type?: string | undefined;
328
+ slug?: string | undefined;
329
+ parentGroupId?: convex_values1839.GenericId<"Group"> | undefined;
330
+ rootGroupId?: convex_values1839.GenericId<"Group"> | undefined;
331
+ isRoot?: boolean | undefined;
332
+ policy?: {
333
+ extend?: any;
334
+ version: 1;
335
+ identity: {
336
+ accountLinking: {
337
+ oidc: "verifiedEmail" | "none" | "sameConnection";
338
+ saml: "verifiedEmail" | "none" | "sameConnection";
339
+ };
340
+ };
341
+ provisioning: {
342
+ user: {
343
+ createOnSignIn: boolean;
344
+ updateProfileOnLogin: "never" | "missing" | "always";
345
+ updateProfileFromScim: "never" | "missing" | "always";
346
+ authority: "scim" | "app" | "connection";
347
+ };
348
+ scimReuse: {
349
+ user: "none" | "externalId";
350
+ };
351
+ jit: {
352
+ defaultRole?: string | undefined;
353
+ defaultRoleIds?: string[] | undefined;
354
+ mode: "off" | "createUser" | "createUserAndMembership";
355
+ };
356
+ deprovision: {
357
+ mode: "soft" | "hard";
358
+ };
359
+ groups: {
360
+ mapping?: Record<string, string[]> | undefined;
361
+ source: "protocol";
362
+ mode: "ignore" | "sync";
363
+ };
364
+ roles: {
365
+ mapping?: Record<string, string[]> | undefined;
366
+ source: "protocol";
367
+ mode: "map" | "ignore";
368
+ };
369
+ };
370
+ } | undefined;
371
+ tags?: any;
372
+ name: string;
373
+ }, {
374
+ name: convex_values1839.VString<string, "required">;
375
+ slug: convex_values1839.VString<string | undefined, "optional">;
376
+ type: convex_values1839.VString<string | undefined, "optional">;
377
+ parentGroupId: convex_values1839.VId<convex_values1839.GenericId<"Group"> | undefined, "optional">; /** Denormalized root group ID. Self-referencing for root groups. */
378
+ rootGroupId: convex_values1839.VId<convex_values1839.GenericId<"Group"> | undefined, "optional">; /** Denormalized flag: `true` when `parentGroupId` is absent. */
379
+ isRoot: convex_values1839.VBoolean<boolean | undefined, "optional">;
380
+ policy: convex_values1839.VObject<{
381
+ extend?: any;
382
+ version: 1;
383
+ identity: {
384
+ accountLinking: {
385
+ oidc: "verifiedEmail" | "none" | "sameConnection";
386
+ saml: "verifiedEmail" | "none" | "sameConnection";
387
+ };
388
+ };
389
+ provisioning: {
390
+ user: {
391
+ createOnSignIn: boolean;
392
+ updateProfileOnLogin: "never" | "missing" | "always";
393
+ updateProfileFromScim: "never" | "missing" | "always";
394
+ authority: "scim" | "app" | "connection";
395
+ };
396
+ scimReuse: {
397
+ user: "none" | "externalId";
398
+ };
399
+ jit: {
400
+ defaultRole?: string | undefined;
401
+ defaultRoleIds?: string[] | undefined;
402
+ mode: "off" | "createUser" | "createUserAndMembership";
403
+ };
404
+ deprovision: {
405
+ mode: "soft" | "hard";
406
+ };
407
+ groups: {
408
+ mapping?: Record<string, string[]> | undefined;
409
+ source: "protocol";
410
+ mode: "ignore" | "sync";
411
+ };
412
+ roles: {
413
+ mapping?: Record<string, string[]> | undefined;
414
+ source: "protocol";
415
+ mode: "map" | "ignore";
416
+ };
417
+ };
418
+ } | undefined, {
419
+ version: convex_values1839.VLiteral<1, "required">;
420
+ identity: convex_values1839.VObject<{
421
+ accountLinking: {
422
+ oidc: "verifiedEmail" | "none" | "sameConnection";
423
+ saml: "verifiedEmail" | "none" | "sameConnection";
424
+ };
425
+ }, {
426
+ accountLinking: convex_values1839.VObject<{
427
+ oidc: "verifiedEmail" | "none" | "sameConnection";
428
+ saml: "verifiedEmail" | "none" | "sameConnection";
429
+ }, {
430
+ oidc: convex_values1839.VUnion<"verifiedEmail" | "none" | "sameConnection", [convex_values1839.VLiteral<"verifiedEmail", "required">, convex_values1839.VLiteral<"none", "required">, convex_values1839.VLiteral<"sameConnection", "required">], "required", never>;
431
+ saml: convex_values1839.VUnion<"verifiedEmail" | "none" | "sameConnection", [convex_values1839.VLiteral<"verifiedEmail", "required">, convex_values1839.VLiteral<"none", "required">, convex_values1839.VLiteral<"sameConnection", "required">], "required", never>;
432
+ }, "required", "oidc" | "saml">;
433
+ }, "required", "accountLinking" | "accountLinking.oidc" | "accountLinking.saml">;
434
+ provisioning: convex_values1839.VObject<{
435
+ user: {
436
+ createOnSignIn: boolean;
437
+ updateProfileOnLogin: "never" | "missing" | "always";
438
+ updateProfileFromScim: "never" | "missing" | "always";
439
+ authority: "scim" | "app" | "connection";
440
+ };
441
+ scimReuse: {
442
+ user: "none" | "externalId";
443
+ };
444
+ jit: {
445
+ defaultRole?: string | undefined;
446
+ defaultRoleIds?: string[] | undefined;
447
+ mode: "off" | "createUser" | "createUserAndMembership";
448
+ };
449
+ deprovision: {
450
+ mode: "soft" | "hard";
451
+ };
452
+ groups: {
453
+ mapping?: Record<string, string[]> | undefined;
454
+ source: "protocol";
455
+ mode: "ignore" | "sync";
456
+ };
457
+ roles: {
458
+ mapping?: Record<string, string[]> | undefined;
459
+ source: "protocol";
460
+ mode: "map" | "ignore";
461
+ };
462
+ }, {
463
+ user: convex_values1839.VObject<{
464
+ createOnSignIn: boolean;
465
+ updateProfileOnLogin: "never" | "missing" | "always";
466
+ updateProfileFromScim: "never" | "missing" | "always";
467
+ authority: "scim" | "app" | "connection";
468
+ }, {
469
+ createOnSignIn: convex_values1839.VBoolean<boolean, "required">;
470
+ updateProfileOnLogin: convex_values1839.VUnion<"never" | "missing" | "always", [convex_values1839.VLiteral<"never", "required">, convex_values1839.VLiteral<"missing", "required">, convex_values1839.VLiteral<"always", "required">], "required", never>;
471
+ updateProfileFromScim: convex_values1839.VUnion<"never" | "missing" | "always", [convex_values1839.VLiteral<"never", "required">, convex_values1839.VLiteral<"missing", "required">, convex_values1839.VLiteral<"always", "required">], "required", never>;
472
+ authority: convex_values1839.VUnion<"scim" | "app" | "connection", [convex_values1839.VLiteral<"app", "required">, convex_values1839.VLiteral<"connection", "required">, convex_values1839.VLiteral<"scim", "required">], "required", never>;
473
+ }, "required", "createOnSignIn" | "updateProfileOnLogin" | "updateProfileFromScim" | "authority">;
474
+ scimReuse: convex_values1839.VObject<{
475
+ user: "none" | "externalId";
476
+ }, {
477
+ user: convex_values1839.VUnion<"none" | "externalId", [convex_values1839.VLiteral<"externalId", "required">, convex_values1839.VLiteral<"none", "required">], "required", never>;
478
+ }, "required", "user">;
479
+ jit: convex_values1839.VObject<{
480
+ defaultRole?: string | undefined;
481
+ defaultRoleIds?: string[] | undefined;
482
+ mode: "off" | "createUser" | "createUserAndMembership";
483
+ }, {
484
+ mode: convex_values1839.VUnion<"off" | "createUser" | "createUserAndMembership", [convex_values1839.VLiteral<"off", "required">, convex_values1839.VLiteral<"createUser", "required">, convex_values1839.VLiteral<"createUserAndMembership", "required">], "required", never>;
485
+ defaultRole: convex_values1839.VString<string | undefined, "optional">;
486
+ defaultRoleIds: convex_values1839.VArray<string[] | undefined, convex_values1839.VString<string, "required">, "optional">;
487
+ }, "required", "mode" | "defaultRole" | "defaultRoleIds">;
488
+ deprovision: convex_values1839.VObject<{
489
+ mode: "soft" | "hard";
490
+ }, {
491
+ mode: convex_values1839.VUnion<"soft" | "hard", [convex_values1839.VLiteral<"soft", "required">, convex_values1839.VLiteral<"hard", "required">], "required", never>;
492
+ }, "required", "mode">;
493
+ groups: convex_values1839.VObject<{
494
+ mapping?: Record<string, string[]> | undefined;
495
+ source: "protocol";
496
+ mode: "ignore" | "sync";
497
+ }, {
498
+ mode: convex_values1839.VUnion<"ignore" | "sync", [convex_values1839.VLiteral<"ignore", "required">, convex_values1839.VLiteral<"sync", "required">], "required", never>;
499
+ source: convex_values1839.VLiteral<"protocol", "required">;
500
+ mapping: convex_values1839.VRecord<Record<string, string[]> | undefined, convex_values1839.VString<string, "required">, convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">, "optional", string>;
501
+ }, "required", "source" | "mode" | "mapping" | `mapping.${string}`>;
502
+ roles: convex_values1839.VObject<{
503
+ mapping?: Record<string, string[]> | undefined;
504
+ source: "protocol";
505
+ mode: "map" | "ignore";
506
+ }, {
507
+ mode: convex_values1839.VUnion<"map" | "ignore", [convex_values1839.VLiteral<"ignore", "required">, convex_values1839.VLiteral<"map", "required">], "required", never>;
508
+ source: convex_values1839.VLiteral<"protocol", "required">;
509
+ mapping: convex_values1839.VRecord<Record<string, string[]> | undefined, convex_values1839.VString<string, "required">, convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">, "optional", string>;
510
+ }, "required", "source" | "mode" | "mapping" | `mapping.${string}`>;
511
+ }, "required", "user" | "scimReuse" | "jit" | "deprovision" | "groups" | "roles" | "user.createOnSignIn" | "user.updateProfileOnLogin" | "user.updateProfileFromScim" | "user.authority" | "scimReuse.user" | "jit.mode" | "jit.defaultRole" | "jit.defaultRoleIds" | "deprovision.mode" | "groups.source" | "groups.mode" | "groups.mapping" | `groups.mapping.${string}` | "roles.source" | "roles.mode" | "roles.mapping" | `roles.mapping.${string}`>;
512
+ extend: convex_values1839.VAny<any, "optional", string>;
513
+ }, "optional", "extend" | `extend.${string}` | "version" | "identity" | "provisioning" | "identity.accountLinking" | "identity.accountLinking.oidc" | "identity.accountLinking.saml" | "provisioning.user" | "provisioning.scimReuse" | "provisioning.jit" | "provisioning.deprovision" | "provisioning.groups" | "provisioning.roles" | "provisioning.user.createOnSignIn" | "provisioning.user.updateProfileOnLogin" | "provisioning.user.updateProfileFromScim" | "provisioning.user.authority" | "provisioning.scimReuse.user" | "provisioning.jit.mode" | "provisioning.jit.defaultRole" | "provisioning.jit.defaultRoleIds" | "provisioning.deprovision.mode" | "provisioning.groups.source" | "provisioning.groups.mode" | "provisioning.groups.mapping" | `provisioning.groups.mapping.${string}` | "provisioning.roles.source" | "provisioning.roles.mode" | "provisioning.roles.mapping" | `provisioning.roles.mapping.${string}`>;
514
+ extend: convex_values1839.VAny<any, "optional", string>;
515
+ /**
516
+ * @deprecated Removed faceted classification tags (was
517
+ * `v.array(v.object({ key, value }))`). Retained as `v.any()` so
518
+ * pre-existing rows still validate on deploy — do NOT re-narrow it here.
519
+ * Clear existing data via the `dropGroupTags` migration, then drop this
520
+ * field in a later major release.
521
+ */
522
+ tags: convex_values1839.VAny<any, "optional", string>;
523
+ }, "required", "name" | "extend" | "type" | `extend.${string}` | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "policy" | "tags" | "policy.extend" | `policy.extend.${string}` | "policy.version" | "policy.identity" | "policy.provisioning" | "policy.identity.accountLinking" | "policy.identity.accountLinking.oidc" | "policy.identity.accountLinking.saml" | "policy.provisioning.user" | "policy.provisioning.scimReuse" | "policy.provisioning.jit" | "policy.provisioning.deprovision" | "policy.provisioning.groups" | "policy.provisioning.roles" | "policy.provisioning.user.createOnSignIn" | "policy.provisioning.user.updateProfileOnLogin" | "policy.provisioning.user.updateProfileFromScim" | "policy.provisioning.user.authority" | "policy.provisioning.scimReuse.user" | "policy.provisioning.jit.mode" | "policy.provisioning.jit.defaultRole" | "policy.provisioning.jit.defaultRoleIds" | "policy.provisioning.deprovision.mode" | "policy.provisioning.groups.source" | "policy.provisioning.groups.mode" | "policy.provisioning.groups.mapping" | `policy.provisioning.groups.mapping.${string}` | "policy.provisioning.roles.source" | "policy.provisioning.roles.mode" | "policy.provisioning.roles.mapping" | `policy.provisioning.roles.mapping.${string}` | `tags.${string}`>, {
524
+ name: ["name", "_creationTime"];
525
+ slug: ["slug", "_creationTime"];
526
+ parent_group_id: ["parentGroupId", "_creationTime"];
527
+ parent_group_id_name: ["parentGroupId", "name", "_creationTime"];
528
+ parent_group_id_slug: ["parentGroupId", "slug", "_creationTime"];
529
+ parent_group_id_type: ["parentGroupId", "type", "_creationTime"];
530
+ root_group_id: ["rootGroupId", "_creationTime"];
531
+ is_root: ["isRoot", "_creationTime"];
532
+ type: ["type", "_creationTime"];
533
+ type_parent_group_id: ["type", "parentGroupId", "_creationTime"];
534
+ }, {}, {}>;
535
+ /**
536
+ * Durable state for large group subtree removals and root-id re-stamps.
537
+ * These rows are component-internal implementation details; the public
538
+ * `Group` document stays free of workflow metadata.
539
+ */
540
+ GroupHierarchyOperation: convex_server32.TableDefinition<convex_values1839.VObject<{
541
+ newRootGroupId?: convex_values1839.GenericId<"Group"> | undefined;
542
+ expectedParentGroupId?: convex_values1839.GenericId<"Group"> | undefined;
543
+ groupId: convex_values1839.GenericId<"Group">;
544
+ phase: "planning" | "applying" | "cleaning";
545
+ kind: "remove" | "restamp";
546
+ }, {
547
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
548
+ kind: convex_values1839.VUnion<"remove" | "restamp", [convex_values1839.VLiteral<"remove", "required">, convex_values1839.VLiteral<"restamp", "required">], "required", never>;
549
+ phase: convex_values1839.VUnion<"planning" | "applying" | "cleaning", [convex_values1839.VLiteral<"planning", "required">, convex_values1839.VLiteral<"applying", "required">, convex_values1839.VLiteral<"cleaning", "required">], "required", never>;
550
+ newRootGroupId: convex_values1839.VId<convex_values1839.GenericId<"Group"> | undefined, "optional">;
551
+ expectedParentGroupId: convex_values1839.VId<convex_values1839.GenericId<"Group"> | undefined, "optional">;
552
+ }, "required", "groupId" | "phase" | "newRootGroupId" | "expectedParentGroupId" | "kind">, {
553
+ group_id_kind: ["groupId", "kind", "_creationTime"];
554
+ group_id_kind_parent_root: ["groupId", "kind", "expectedParentGroupId", "newRootGroupId", "_creationTime"];
555
+ }, {}, {}>;
556
+ /**
557
+ * One durable queue row per group in a hierarchy operation. Keeping work as
558
+ * rows instead of a carried array avoids an unbounded scheduled-function
559
+ * argument/frontier and makes every continuation safe to retry.
560
+ */
561
+ GroupHierarchyWork: convex_server32.TableDefinition<convex_values1839.VObject<{
562
+ expectedParentGroupId?: convex_values1839.GenericId<"Group"> | undefined;
563
+ parentWorkId?: convex_values1839.GenericId<"GroupHierarchyWork"> | undefined;
564
+ eligible?: boolean | undefined;
565
+ scanCursor?: string | undefined;
566
+ groupId: convex_values1839.GenericId<"Group">;
567
+ kind: "remove" | "restamp";
568
+ operationId: convex_values1839.GenericId<"GroupHierarchyOperation">;
569
+ depth: number;
570
+ planned: boolean;
571
+ applied: boolean;
572
+ }, {
573
+ operationId: convex_values1839.VId<convex_values1839.GenericId<"GroupHierarchyOperation">, "required">;
574
+ kind: convex_values1839.VUnion<"remove" | "restamp", [convex_values1839.VLiteral<"remove", "required">, convex_values1839.VLiteral<"restamp", "required">], "required", never>;
575
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
576
+ parentWorkId: convex_values1839.VId<convex_values1839.GenericId<"GroupHierarchyWork"> | undefined, "optional">;
577
+ expectedParentGroupId: convex_values1839.VId<convex_values1839.GenericId<"Group"> | undefined, "optional">;
578
+ depth: convex_values1839.VFloat64<number, "required">;
579
+ planned: convex_values1839.VBoolean<boolean, "required">;
580
+ applied: convex_values1839.VBoolean<boolean, "required">;
581
+ eligible: convex_values1839.VBoolean<boolean | undefined, "optional">;
582
+ scanCursor: convex_values1839.VString<string | undefined, "optional">;
583
+ }, "required", "groupId" | "expectedParentGroupId" | "kind" | "operationId" | "parentWorkId" | "depth" | "planned" | "applied" | "eligible" | "scanCursor">, {
584
+ operation_id_group_id: ["operationId", "groupId", "_creationTime"];
585
+ operation_id_planned: ["operationId", "planned", "_creationTime"];
586
+ operation_id_applied_depth: ["operationId", "applied", "depth", "_creationTime"];
587
+ group_id: ["groupId", "_creationTime"];
588
+ group_id_kind: ["groupId", "kind", "_creationTime"];
589
+ }, {}, {}>;
590
+ /**
591
+ * Group membership. Links a user to a group with an application-defined
592
+ * role (e.g. "owner", "admin", "member", "viewer"). A user can be a
593
+ * member of multiple groups with different roles in each.
594
+ */
595
+ GroupMember: convex_server32.TableDefinition<convex_values1839.VObject<{
596
+ extend?: any;
597
+ status?: string | undefined;
598
+ role?: string | undefined;
599
+ roleIds?: string[] | undefined;
600
+ userId: convex_values1839.GenericId<"User">;
601
+ groupId: convex_values1839.GenericId<"Group">;
602
+ }, {
603
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
604
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">;
605
+ role: convex_values1839.VString<string | undefined, "optional">;
606
+ roleIds: convex_values1839.VArray<string[] | undefined, convex_values1839.VString<string, "required">, "optional">;
607
+ status: convex_values1839.VString<string | undefined, "optional">;
608
+ extend: convex_values1839.VAny<any, "optional", string>;
609
+ }, "required", "extend" | `extend.${string}` | "userId" | "status" | "groupId" | "role" | "roleIds">, {
610
+ group_id: ["groupId", "_creationTime"];
611
+ group_id_user_id: ["groupId", "userId", "_creationTime"];
612
+ group_id_status: ["groupId", "status", "_creationTime"];
613
+ user_id: ["userId", "_creationTime"];
614
+ user_id_status: ["userId", "status", "_creationTime"];
615
+ status: ["status", "_creationTime"];
616
+ }, {}, {}>;
617
+ /**
618
+ * Invitations. Tracks pending, accepted, revoked, and expired
619
+ * invitations. Optionally scoped to a group via `groupId`, or
620
+ * platform-level when `groupId` is omitted.
621
+ *
622
+ * `email` and `invitedByUserId` are optional to support CLI-generated
623
+ * invite links where neither is known upfront.
624
+ */
625
+ GroupInvite: convex_server32.TableDefinition<convex_values1839.VObject<{
626
+ email?: string | undefined;
627
+ extend?: any;
628
+ groupId?: convex_values1839.GenericId<"Group"> | undefined;
629
+ role?: string | undefined;
630
+ roleIds?: string[] | undefined;
631
+ invitedByUserId?: convex_values1839.GenericId<"User"> | undefined;
632
+ expiresTime?: number | undefined;
633
+ acceptedByUserId?: convex_values1839.GenericId<"User"> | undefined;
634
+ acceptedTime?: number | undefined;
635
+ status: "pending" | "accepted" | "revoked" | "expired";
636
+ tokenHash: string;
637
+ }, {
638
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group"> | undefined, "optional">;
639
+ invitedByUserId: convex_values1839.VId<convex_values1839.GenericId<"User"> | undefined, "optional">;
640
+ email: convex_values1839.VString<string | undefined, "optional">;
641
+ tokenHash: convex_values1839.VString<string, "required">;
642
+ role: convex_values1839.VString<string | undefined, "optional">;
643
+ roleIds: convex_values1839.VArray<string[] | undefined, convex_values1839.VString<string, "required">, "optional">;
644
+ status: convex_values1839.VUnion<"pending" | "accepted" | "revoked" | "expired", [convex_values1839.VLiteral<"pending", "required">, convex_values1839.VLiteral<"accepted", "required">, convex_values1839.VLiteral<"revoked", "required">, convex_values1839.VLiteral<"expired", "required">], "required", never>;
645
+ expiresTime: convex_values1839.VFloat64<number | undefined, "optional">;
646
+ acceptedByUserId: convex_values1839.VId<convex_values1839.GenericId<"User"> | undefined, "optional">;
647
+ acceptedTime: convex_values1839.VFloat64<number | undefined, "optional">;
648
+ extend: convex_values1839.VAny<any, "optional", string>;
649
+ }, "required", "email" | "extend" | `extend.${string}` | "status" | "groupId" | "role" | "roleIds" | "invitedByUserId" | "tokenHash" | "expiresTime" | "acceptedByUserId" | "acceptedTime">, {
650
+ token_hash: ["tokenHash", "_creationTime"];
651
+ status: ["status", "_creationTime"];
652
+ email_status: ["email", "status", "_creationTime"];
653
+ email_group_id_status: ["email", "groupId", "status", "_creationTime"];
654
+ invited_by_user_id_status: ["invitedByUserId", "status", "_creationTime"];
655
+ group_id: ["groupId", "_creationTime"];
656
+ group_id_status: ["groupId", "status", "_creationTime"];
657
+ group_id_email_status: ["groupId", "email", "status", "_creationTime"];
658
+ expires_time: ["expiresTime", "_creationTime"];
659
+ }, {}, {}>;
660
+ /**
661
+ * Group Connection configuration attached to a root group/organization.
662
+ *
663
+ * The `config` payload intentionally stays flexible so the headless group connection
664
+ * SDK can evolve without forcing schema churn for every protocol-specific
665
+ * field addition.
666
+ */
667
+ GroupConnection: convex_server32.TableDefinition<convex_values1839.VObject<{
668
+ name?: string | undefined;
669
+ extend?: any;
670
+ slug?: string | undefined;
671
+ config?: any;
672
+ status: "draft" | "active" | "disabled";
673
+ protocol: "oidc" | "saml";
674
+ groupId: convex_values1839.GenericId<"Group">;
675
+ }, {
676
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
677
+ slug: convex_values1839.VString<string | undefined, "optional">;
678
+ name: convex_values1839.VString<string | undefined, "optional">;
679
+ protocol: convex_values1839.VUnion<"oidc" | "saml", [convex_values1839.VLiteral<"oidc", "required">, convex_values1839.VLiteral<"saml", "required">], "required", never>;
680
+ status: convex_values1839.VUnion<"draft" | "active" | "disabled", [convex_values1839.VLiteral<"draft", "required">, convex_values1839.VLiteral<"active", "required">, convex_values1839.VLiteral<"disabled", "required">], "required", never>;
681
+ config: convex_values1839.VAny<any, "optional", string>;
682
+ extend: convex_values1839.VAny<any, "optional", string>;
683
+ }, "required", "name" | "extend" | `extend.${string}` | "status" | "slug" | "protocol" | "groupId" | "config" | `config.${string}`>, {
684
+ group_id: ["groupId", "_creationTime"];
685
+ name: ["name", "_creationTime"];
686
+ slug: ["slug", "_creationTime"];
687
+ status: ["status", "_creationTime"];
688
+ group_id_name: ["groupId", "name", "_creationTime"];
689
+ group_id_status: ["groupId", "status", "_creationTime"];
690
+ group_id_slug: ["groupId", "slug", "_creationTime"];
691
+ }, {}, {}>;
692
+ /**
693
+ * Verified or pending domains linked to an group connection record.
694
+ */
695
+ GroupConnectionDomain: convex_server32.TableDefinition<convex_values1839.VObject<{
696
+ verifiedAt?: number | undefined;
697
+ isPrimary: boolean;
698
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
699
+ groupId: convex_values1839.GenericId<"Group">;
700
+ domain: string;
701
+ }, {
702
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
703
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
704
+ domain: convex_values1839.VString<string, "required">;
705
+ isPrimary: convex_values1839.VBoolean<boolean, "required">;
706
+ verifiedAt: convex_values1839.VFloat64<number | undefined, "optional">;
707
+ }, "required", "isPrimary" | "connectionId" | "verifiedAt" | "groupId" | "domain">, {
708
+ connection_id: ["connectionId", "_creationTime"];
709
+ group_id: ["groupId", "_creationTime"];
710
+ domain: ["domain", "_creationTime"];
711
+ }, {}, {}>;
712
+ /**
713
+ * Pending SAML AuthnRequest IDs awaiting a matching ACS response.
714
+ *
715
+ * A row is created when the SP generates a SAML sign-in request and accepted
716
+ * (single-use) at the ACS handler. Because the ID is looked up server-side and
717
+ * marked `acceptedAt`, a captured SAMLResponse/RelayState pair cannot be
718
+ * replayed — the second accept fails. Rows are pruned by `expiresAt`.
719
+ */
720
+ SamlLoginRequest: convex_server32.TableDefinition<convex_values1839.VObject<{
721
+ acceptedAt?: number | undefined;
722
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
723
+ createdAt: number;
724
+ expiresAt: number;
725
+ requestId: string;
726
+ }, {
727
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
728
+ requestId: convex_values1839.VString<string, "required">;
729
+ createdAt: convex_values1839.VFloat64<number, "required">;
730
+ expiresAt: convex_values1839.VFloat64<number, "required">;
731
+ acceptedAt: convex_values1839.VFloat64<number | undefined, "optional">;
732
+ }, "required", "connectionId" | "createdAt" | "expiresAt" | "requestId" | "acceptedAt">, {
733
+ request_id: ["requestId", "_creationTime"];
734
+ expires_at: ["expiresAt", "_creationTime"];
735
+ }, {}, {}>;
736
+ /**
737
+ * Replay cache of SAML assertion IDs already accepted at the ACS handler.
738
+ *
739
+ * Catches IdP-initiated responses that carry no `InResponseTo` (so have no
740
+ * pending {@link SamlLoginRequest} to accept): an assertion ID is recorded
741
+ * on first acceptance and rejected if seen again. `expiresAt` is bounded by
742
+ * the assertion's `NotOnOrAfter`, and rows are pruned by `expiresAt`.
743
+ */
744
+ SamlSeenAssertion: convex_server32.TableDefinition<convex_values1839.VObject<{
745
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
746
+ expiresAt: number;
747
+ assertionId: string;
748
+ }, {
749
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
750
+ assertionId: convex_values1839.VString<string, "required">;
751
+ expiresAt: convex_values1839.VFloat64<number, "required">;
752
+ }, "required", "connectionId" | "expiresAt" | "assertionId">, {
753
+ connection_id_assertion_id: ["connectionId", "assertionId", "_creationTime"];
754
+ expires_at: ["expiresAt", "_creationTime"];
755
+ }, {}, {}>;
756
+ /**
757
+ * Pending DNS TXT verification challenges for group connection domains.
758
+ */
759
+ GroupConnectionDomainVerification: convex_server32.TableDefinition<convex_values1839.VObject<{
760
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
761
+ expiresAt: number;
762
+ groupId: convex_values1839.GenericId<"Group">;
763
+ tokenHash: string;
764
+ domain: string;
765
+ domainId: convex_values1839.GenericId<"GroupConnectionDomain">;
766
+ recordName: string;
767
+ token: string;
768
+ requestedAt: number;
769
+ }, {
770
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
771
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
772
+ domainId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnectionDomain">, "required">;
773
+ domain: convex_values1839.VString<string, "required">;
774
+ recordName: convex_values1839.VString<string, "required">;
775
+ token: convex_values1839.VString<string, "required">;
776
+ tokenHash: convex_values1839.VString<string, "required">;
777
+ requestedAt: convex_values1839.VFloat64<number, "required">;
778
+ expiresAt: convex_values1839.VFloat64<number, "required">;
779
+ }, "required", "connectionId" | "expiresAt" | "groupId" | "tokenHash" | "domain" | "domainId" | "recordName" | "token" | "requestedAt">, {
780
+ connection_id: ["connectionId", "_creationTime"];
781
+ domain_id: ["domainId", "_creationTime"];
782
+ token_hash: ["tokenHash", "_creationTime"];
783
+ expires_at: ["expiresAt", "_creationTime"];
784
+ }, {}, {}>;
785
+ /**
786
+ * Encrypted group connection secrets stored separately from protocol config.
787
+ */
788
+ GroupConnectionSecret: convex_server32.TableDefinition<convex_values1839.VObject<{
789
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
790
+ updatedAt: number;
791
+ groupId: convex_values1839.GenericId<"Group">;
792
+ kind: "oidc_client_secret";
793
+ ciphertext: string;
794
+ }, {
795
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
796
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
797
+ kind: convex_values1839.VUnion<"oidc_client_secret", [convex_values1839.VLiteral<"oidc_client_secret", "required">], "required", never>;
798
+ ciphertext: convex_values1839.VString<string, "required">;
799
+ updatedAt: convex_values1839.VFloat64<number, "required">;
800
+ }, "required", "connectionId" | "updatedAt" | "groupId" | "kind" | "ciphertext">, {
801
+ connection_id: ["connectionId", "_creationTime"];
802
+ connection_id_kind: ["connectionId", "kind", "_creationTime"];
803
+ group_id: ["groupId", "_creationTime"];
804
+ }, {}, {}>;
805
+ /**
806
+ * SCIM configuration for an group connection tenant.
807
+ */
808
+ GroupConnectionScimConfig: convex_server32.TableDefinition<convex_values1839.VObject<{
809
+ extend?: any;
810
+ lastRotatedAt?: number | undefined;
811
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
812
+ status: "draft" | "active" | "disabled";
813
+ groupId: convex_values1839.GenericId<"Group">;
814
+ tokenHash: string;
815
+ basePath: string;
816
+ }, {
817
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
818
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
819
+ status: convex_values1839.VUnion<"draft" | "active" | "disabled", [convex_values1839.VLiteral<"draft", "required">, convex_values1839.VLiteral<"active", "required">, convex_values1839.VLiteral<"disabled", "required">], "required", never>;
820
+ basePath: convex_values1839.VString<string, "required">;
821
+ tokenHash: convex_values1839.VString<string, "required">;
822
+ lastRotatedAt: convex_values1839.VFloat64<number | undefined, "optional">;
823
+ extend: convex_values1839.VAny<any, "optional", string>;
824
+ }, "required", "extend" | `extend.${string}` | "connectionId" | "status" | "groupId" | "tokenHash" | "basePath" | "lastRotatedAt">, {
825
+ group_connection_id: ["connectionId", "_creationTime"];
826
+ group_id: ["groupId", "_creationTime"];
827
+ token_hash: ["tokenHash", "_creationTime"];
828
+ status: ["status", "_creationTime"];
829
+ }, {}, {}>;
830
+ /**
831
+ * External SCIM identities mapped into local users/groups.
832
+ */
833
+ GroupConnectionScimIdentity: convex_server32.TableDefinition<convex_values1839.VObject<{
834
+ userId?: convex_values1839.GenericId<"User"> | undefined;
835
+ active?: boolean | undefined;
836
+ mappedGroupId?: convex_values1839.GenericId<"Group"> | undefined;
837
+ lastProvisionedAt?: number | undefined;
838
+ raw?: any;
839
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
840
+ externalId: string;
841
+ groupId: convex_values1839.GenericId<"Group">;
842
+ resourceType: "user" | "group";
843
+ }, {
844
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
845
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
846
+ resourceType: convex_values1839.VUnion<"user" | "group", [convex_values1839.VLiteral<"user", "required">, convex_values1839.VLiteral<"group", "required">], "required", never>;
847
+ externalId: convex_values1839.VString<string, "required">;
848
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User"> | undefined, "optional">;
849
+ mappedGroupId: convex_values1839.VId<convex_values1839.GenericId<"Group"> | undefined, "optional">;
850
+ lastProvisionedAt: convex_values1839.VFloat64<number | undefined, "optional">;
851
+ active: convex_values1839.VBoolean<boolean | undefined, "optional">;
852
+ raw: convex_values1839.VAny<any, "optional", string>;
853
+ }, "required", "userId" | "connectionId" | "externalId" | "groupId" | "active" | "resourceType" | "mappedGroupId" | "lastProvisionedAt" | "raw" | `raw.${string}`>, {
854
+ group_connection_id: ["connectionId", "_creationTime"];
855
+ group_id: ["groupId", "_creationTime"];
856
+ group_connection_id_resource_type_external_id: ["connectionId", "resourceType", "externalId", "_creationTime"];
857
+ group_connection_id_user_id: ["connectionId", "userId", "_creationTime"];
858
+ user_id: ["userId", "_creationTime"];
859
+ mapped_group_id: ["mappedGroupId", "_creationTime"];
860
+ }, {}, {}>;
861
+ /**
862
+ * Durable, queryable auth-event projection rows.
863
+ *
864
+ * Each target owns one immutable copy of the fields needed for indexed reads.
865
+ * Legacy stream fields remain temporarily so existing deployments can
866
+ * migrate in place.
867
+ *
868
+ * NOTE (0.1 upgrade): this table REPLACES the removed `GroupAuditEvent` table.
869
+ * Dropping a table is not deploy-blocking (Convex simply orphans its rows), so
870
+ * there is intentionally NO data-copy migration: the old audit rows used a
871
+ * different taxonomy (`eventType`/`actorType`/`status` vs the event
872
+ * `kind`/`actorType`/`outcome` here) and cannot be projected without lossy
873
+ * guesswork. Pre-0.1 `GroupAuditEvent` history is therefore not carried
874
+ * forward; consumers that need it must export it from the old deployment
875
+ * before upgrading. See `migrations.ts` for the runnable upgrade sequence.
876
+ */
877
+ AuthEventProjection: convex_server32.TableDefinition<convex_values1839.VObject<{
878
+ requestId?: string | undefined;
879
+ actorId?: string | undefined;
880
+ subjectId?: string | undefined;
881
+ errorCode?: string | undefined;
882
+ ip?: string | undefined;
883
+ userAgent?: string | undefined;
884
+ data?: {
885
+ profile?: Record<string, any> | undefined;
886
+ type?: string | undefined;
887
+ provider?: string | undefined;
888
+ existingUserId?: string | undefined;
889
+ } | {
890
+ method?: string | undefined;
891
+ provider: string;
892
+ } | {
893
+ userId?: string | undefined;
894
+ sessionId?: string | undefined;
895
+ reason?: string | undefined;
896
+ refreshTokenId?: string | undefined;
897
+ flow?: "reset" | "change" | undefined;
898
+ } | {
899
+ accountId?: string | undefined;
900
+ provider?: string | undefined;
901
+ providerAccountId?: string | undefined;
902
+ } | {
903
+ name?: string | undefined;
904
+ credentialId?: string | undefined;
905
+ reason?: string | undefined;
906
+ passkeyId?: string | undefined;
907
+ totpId?: string | undefined;
908
+ keyId?: string | undefined;
909
+ prefix?: string | undefined;
910
+ } | {
911
+ email?: string | undefined;
912
+ phone?: string | undefined;
913
+ userId?: string | undefined;
914
+ } | {
915
+ name?: string | undefined;
916
+ userId?: string | undefined;
917
+ clientId?: string | undefined;
918
+ codeId?: string | undefined;
919
+ scopes?: string[] | undefined;
920
+ redirectUri?: string | undefined;
921
+ grantType?: string | undefined;
922
+ resource?: string | undefined;
923
+ } | {
924
+ userId?: string | undefined;
925
+ connectionId?: string | undefined;
926
+ verifiedAt?: number | undefined;
927
+ expiresAt?: number | undefined;
928
+ version?: number | undefined;
929
+ protocol?: "oidc" | "saml" | undefined;
930
+ domain?: string | undefined;
931
+ recordName?: string | undefined;
932
+ errorCode?: string | undefined;
933
+ changed?: string[] | undefined;
934
+ metadataUrl?: string | undefined;
935
+ domains?: string[] | undefined;
936
+ issuer?: string | undefined;
937
+ discoveryUrl?: string | undefined;
938
+ jwksUri?: string | undefined;
939
+ audience?: string | string[] | undefined;
940
+ tokenEndpointAuthMethod?: string | undefined;
941
+ } | {
942
+ userId?: string | undefined;
943
+ externalId?: string | undefined;
944
+ groupId?: string | undefined;
945
+ active?: boolean | undefined;
946
+ resourceType?: "user" | "group" | undefined;
947
+ scimConfigId?: string | undefined;
948
+ resourceId?: string | undefined;
949
+ operation?: string | undefined;
950
+ } | {
951
+ status?: number | undefined;
952
+ endpointId?: string | undefined;
953
+ deliveryId?: string | undefined;
954
+ sourceEventId?: string | undefined;
955
+ sourceEventType?: "user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed" | undefined;
956
+ attemptCount?: number | undefined;
957
+ error?: string | undefined;
958
+ } | undefined;
959
+ streamId?: string | undefined;
960
+ streamIndex?: number | undefined;
961
+ kind: "user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed";
962
+ targetKind: "user" | "connection" | "group" | "session" | "api_key" | "oauth_client" | "global";
963
+ category: "email" | "phone" | "password" | "oauth" | "scim" | "user" | "connection" | "session" | "account" | "passkey" | "totp" | "api_key" | "webhook" | "security";
964
+ actorType: "scim" | "user" | "api_key" | "webhook" | "oauth_client" | "system" | "anonymous";
965
+ subjectType: "email" | "phone" | "user" | "connection" | "group" | "session" | "account" | "passkey" | "totp" | "api_key" | "oauth_client" | "system" | "oauth_code" | "scim_identity" | "webhook_endpoint" | "webhook_delivery";
966
+ outcome: "success" | "failure";
967
+ eventId: string;
968
+ targetId: string;
969
+ occurredAt: number;
970
+ }, {
971
+ eventId: convex_values1839.VString<string, "required">;
972
+ targetKind: convex_values1839.VUnion<"user" | "connection" | "group" | "session" | "api_key" | "oauth_client" | "global", [convex_values1839.VLiteral<"user", "required">, convex_values1839.VLiteral<"session", "required">, convex_values1839.VLiteral<"group", "required">, convex_values1839.VLiteral<"connection", "required">, convex_values1839.VLiteral<"oauth_client", "required">, convex_values1839.VLiteral<"api_key", "required">, convex_values1839.VLiteral<"global", "required">], "required", never>;
973
+ targetId: convex_values1839.VString<string, "required">;
974
+ kind: convex_values1839.VUnion<"user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed", convex_values1839.VLiteral<"user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed", "required">[], "required", never>;
975
+ category: convex_values1839.VUnion<"email" | "phone" | "password" | "oauth" | "scim" | "user" | "connection" | "session" | "account" | "passkey" | "totp" | "api_key" | "webhook" | "security", convex_values1839.VLiteral<"email" | "phone" | "password" | "oauth" | "scim" | "user" | "connection" | "session" | "account" | "passkey" | "totp" | "api_key" | "webhook" | "security", "required">[], "required", never>;
976
+ occurredAt: convex_values1839.VFloat64<number, "required">;
977
+ actorType: convex_values1839.VUnion<"scim" | "user" | "api_key" | "webhook" | "oauth_client" | "system" | "anonymous", [convex_values1839.VLiteral<"user", "required">, convex_values1839.VLiteral<"system", "required">, convex_values1839.VLiteral<"scim", "required">, convex_values1839.VLiteral<"api_key", "required">, convex_values1839.VLiteral<"oauth_client", "required">, convex_values1839.VLiteral<"webhook", "required">, convex_values1839.VLiteral<"anonymous", "required">], "required", never>;
978
+ actorId: convex_values1839.VString<string | undefined, "optional">;
979
+ subjectType: convex_values1839.VUnion<"email" | "phone" | "user" | "connection" | "group" | "session" | "account" | "passkey" | "totp" | "api_key" | "oauth_client" | "system" | "oauth_code" | "scim_identity" | "webhook_endpoint" | "webhook_delivery", [convex_values1839.VLiteral<"user", "required">, convex_values1839.VLiteral<"session", "required">, convex_values1839.VLiteral<"account", "required">, convex_values1839.VLiteral<"passkey", "required">, convex_values1839.VLiteral<"totp", "required">, convex_values1839.VLiteral<"email", "required">, convex_values1839.VLiteral<"phone", "required">, convex_values1839.VLiteral<"api_key", "required">, convex_values1839.VLiteral<"oauth_client", "required">, convex_values1839.VLiteral<"oauth_code", "required">, convex_values1839.VLiteral<"group", "required">, convex_values1839.VLiteral<"connection", "required">, convex_values1839.VLiteral<"scim_identity", "required">, convex_values1839.VLiteral<"webhook_endpoint", "required">, convex_values1839.VLiteral<"webhook_delivery", "required">, convex_values1839.VLiteral<"system", "required">], "required", never>;
980
+ subjectId: convex_values1839.VString<string | undefined, "optional">;
981
+ outcome: convex_values1839.VUnion<"success" | "failure", [convex_values1839.VLiteral<"success", "required">, convex_values1839.VLiteral<"failure", "required">], "required", never>;
982
+ errorCode: convex_values1839.VString<string | undefined, "optional">;
983
+ requestId: convex_values1839.VString<string | undefined, "optional">;
984
+ ip: convex_values1839.VString<string | undefined, "optional">;
985
+ userAgent: convex_values1839.VString<string | undefined, "optional">;
986
+ data: convex_values1839.VUnion<{
987
+ profile?: Record<string, any> | undefined;
988
+ type?: string | undefined;
989
+ provider?: string | undefined;
990
+ existingUserId?: string | undefined;
991
+ } | {
992
+ method?: string | undefined;
993
+ provider: string;
994
+ } | {
995
+ userId?: string | undefined;
996
+ sessionId?: string | undefined;
997
+ reason?: string | undefined;
998
+ refreshTokenId?: string | undefined;
999
+ flow?: "reset" | "change" | undefined;
1000
+ } | {
1001
+ accountId?: string | undefined;
1002
+ provider?: string | undefined;
1003
+ providerAccountId?: string | undefined;
1004
+ } | {
1005
+ name?: string | undefined;
1006
+ credentialId?: string | undefined;
1007
+ reason?: string | undefined;
1008
+ passkeyId?: string | undefined;
1009
+ totpId?: string | undefined;
1010
+ keyId?: string | undefined;
1011
+ prefix?: string | undefined;
1012
+ } | {
1013
+ email?: string | undefined;
1014
+ phone?: string | undefined;
1015
+ userId?: string | undefined;
1016
+ } | {
1017
+ name?: string | undefined;
1018
+ userId?: string | undefined;
1019
+ clientId?: string | undefined;
1020
+ codeId?: string | undefined;
1021
+ scopes?: string[] | undefined;
1022
+ redirectUri?: string | undefined;
1023
+ grantType?: string | undefined;
1024
+ resource?: string | undefined;
1025
+ } | {
1026
+ userId?: string | undefined;
1027
+ connectionId?: string | undefined;
1028
+ verifiedAt?: number | undefined;
1029
+ expiresAt?: number | undefined;
1030
+ version?: number | undefined;
1031
+ protocol?: "oidc" | "saml" | undefined;
1032
+ domain?: string | undefined;
1033
+ recordName?: string | undefined;
1034
+ errorCode?: string | undefined;
1035
+ changed?: string[] | undefined;
1036
+ metadataUrl?: string | undefined;
1037
+ domains?: string[] | undefined;
1038
+ issuer?: string | undefined;
1039
+ discoveryUrl?: string | undefined;
1040
+ jwksUri?: string | undefined;
1041
+ audience?: string | string[] | undefined;
1042
+ tokenEndpointAuthMethod?: string | undefined;
1043
+ } | {
1044
+ userId?: string | undefined;
1045
+ externalId?: string | undefined;
1046
+ groupId?: string | undefined;
1047
+ active?: boolean | undefined;
1048
+ resourceType?: "user" | "group" | undefined;
1049
+ scimConfigId?: string | undefined;
1050
+ resourceId?: string | undefined;
1051
+ operation?: string | undefined;
1052
+ } | {
1053
+ status?: number | undefined;
1054
+ endpointId?: string | undefined;
1055
+ deliveryId?: string | undefined;
1056
+ sourceEventId?: string | undefined;
1057
+ sourceEventType?: "user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed" | undefined;
1058
+ attemptCount?: number | undefined;
1059
+ error?: string | undefined;
1060
+ } | undefined, [convex_values1839.VObject<{
1061
+ profile?: Record<string, any> | undefined;
1062
+ type?: string | undefined;
1063
+ provider?: string | undefined;
1064
+ existingUserId?: string | undefined;
1065
+ }, {
1066
+ type: convex_values1839.VString<string | undefined, "optional">;
1067
+ provider: convex_values1839.VString<string | undefined, "optional">;
1068
+ profile: convex_values1839.VRecord<Record<string, any> | undefined, convex_values1839.VString<string, "required">, convex_values1839.VAny<any, "required", string>, "optional", string>;
1069
+ existingUserId: convex_values1839.VString<string | undefined, "optional">;
1070
+ }, "required", "profile" | "type" | "provider" | "existingUserId" | `profile.${string}`>, convex_values1839.VObject<{
1071
+ method?: string | undefined;
1072
+ provider: string;
1073
+ }, {
1074
+ provider: convex_values1839.VString<string, "required">;
1075
+ method: convex_values1839.VString<string | undefined, "optional">;
1076
+ }, "required", "provider" | "method">, convex_values1839.VObject<{
1077
+ userId?: string | undefined;
1078
+ sessionId?: string | undefined;
1079
+ reason?: string | undefined;
1080
+ refreshTokenId?: string | undefined;
1081
+ flow?: "reset" | "change" | undefined;
1082
+ }, {
1083
+ userId: convex_values1839.VString<string | undefined, "optional">;
1084
+ reason: convex_values1839.VString<string | undefined, "optional">;
1085
+ sessionId: convex_values1839.VString<string | undefined, "optional">;
1086
+ refreshTokenId: convex_values1839.VString<string | undefined, "optional">;
1087
+ flow: convex_values1839.VUnion<"reset" | "change" | undefined, [convex_values1839.VLiteral<"reset", "required">, convex_values1839.VLiteral<"change", "required">], "optional", never>;
1088
+ }, "required", "userId" | "sessionId" | "reason" | "refreshTokenId" | "flow">, convex_values1839.VObject<{
1089
+ accountId?: string | undefined;
1090
+ provider?: string | undefined;
1091
+ providerAccountId?: string | undefined;
1092
+ }, {
1093
+ provider: convex_values1839.VString<string | undefined, "optional">;
1094
+ providerAccountId: convex_values1839.VString<string | undefined, "optional">;
1095
+ accountId: convex_values1839.VString<string | undefined, "optional">;
1096
+ }, "required", "accountId" | "provider" | "providerAccountId">, convex_values1839.VObject<{
1097
+ name?: string | undefined;
1098
+ credentialId?: string | undefined;
1099
+ reason?: string | undefined;
1100
+ passkeyId?: string | undefined;
1101
+ totpId?: string | undefined;
1102
+ keyId?: string | undefined;
1103
+ prefix?: string | undefined;
1104
+ }, {
1105
+ passkeyId: convex_values1839.VString<string | undefined, "optional">;
1106
+ credentialId: convex_values1839.VString<string | undefined, "optional">;
1107
+ totpId: convex_values1839.VString<string | undefined, "optional">;
1108
+ keyId: convex_values1839.VString<string | undefined, "optional">;
1109
+ name: convex_values1839.VString<string | undefined, "optional">;
1110
+ prefix: convex_values1839.VString<string | undefined, "optional">;
1111
+ reason: convex_values1839.VString<string | undefined, "optional">;
1112
+ }, "required", "name" | "credentialId" | "reason" | "passkeyId" | "totpId" | "keyId" | "prefix">, convex_values1839.VObject<{
1113
+ email?: string | undefined;
1114
+ phone?: string | undefined;
1115
+ userId?: string | undefined;
1116
+ }, {
1117
+ email: convex_values1839.VString<string | undefined, "optional">;
1118
+ phone: convex_values1839.VString<string | undefined, "optional">;
1119
+ userId: convex_values1839.VString<string | undefined, "optional">;
1120
+ }, "required", "email" | "phone" | "userId">, convex_values1839.VObject<{
1121
+ name?: string | undefined;
1122
+ userId?: string | undefined;
1123
+ clientId?: string | undefined;
1124
+ codeId?: string | undefined;
1125
+ scopes?: string[] | undefined;
1126
+ redirectUri?: string | undefined;
1127
+ grantType?: string | undefined;
1128
+ resource?: string | undefined;
1129
+ }, {
1130
+ clientId: convex_values1839.VString<string | undefined, "optional">;
1131
+ codeId: convex_values1839.VString<string | undefined, "optional">;
1132
+ name: convex_values1839.VString<string | undefined, "optional">;
1133
+ scopes: convex_values1839.VArray<string[] | undefined, convex_values1839.VString<string, "required">, "optional">;
1134
+ redirectUri: convex_values1839.VString<string | undefined, "optional">;
1135
+ grantType: convex_values1839.VString<string | undefined, "optional">;
1136
+ resource: convex_values1839.VString<string | undefined, "optional">;
1137
+ userId: convex_values1839.VString<string | undefined, "optional">;
1138
+ }, "required", "name" | "userId" | "clientId" | "codeId" | "scopes" | "redirectUri" | "grantType" | "resource">, convex_values1839.VObject<{
1139
+ userId?: string | undefined;
1140
+ connectionId?: string | undefined;
1141
+ verifiedAt?: number | undefined;
1142
+ expiresAt?: number | undefined;
1143
+ version?: number | undefined;
1144
+ protocol?: "oidc" | "saml" | undefined;
1145
+ domain?: string | undefined;
1146
+ recordName?: string | undefined;
1147
+ errorCode?: string | undefined;
1148
+ changed?: string[] | undefined;
1149
+ metadataUrl?: string | undefined;
1150
+ domains?: string[] | undefined;
1151
+ issuer?: string | undefined;
1152
+ discoveryUrl?: string | undefined;
1153
+ jwksUri?: string | undefined;
1154
+ audience?: string | string[] | undefined;
1155
+ tokenEndpointAuthMethod?: string | undefined;
1156
+ }, {
1157
+ connectionId: convex_values1839.VString<string | undefined, "optional">;
1158
+ changed: convex_values1839.VArray<string[] | undefined, convex_values1839.VString<string, "required">, "optional">;
1159
+ userId: convex_values1839.VString<string | undefined, "optional">;
1160
+ protocol: convex_values1839.VUnion<"oidc" | "saml" | undefined, [convex_values1839.VLiteral<"oidc", "required">, convex_values1839.VLiteral<"saml", "required">], "optional", never>;
1161
+ domain: convex_values1839.VString<string | undefined, "optional">;
1162
+ recordName: convex_values1839.VString<string | undefined, "optional">;
1163
+ expiresAt: convex_values1839.VFloat64<number | undefined, "optional">;
1164
+ verifiedAt: convex_values1839.VFloat64<number | undefined, "optional">;
1165
+ metadataUrl: convex_values1839.VString<string | undefined, "optional">;
1166
+ domains: convex_values1839.VArray<string[] | undefined, convex_values1839.VString<string, "required">, "optional">;
1167
+ issuer: convex_values1839.VString<string | undefined, "optional">;
1168
+ discoveryUrl: convex_values1839.VString<string | undefined, "optional">;
1169
+ jwksUri: convex_values1839.VString<string | undefined, "optional">;
1170
+ audience: convex_values1839.VUnion<string | string[] | undefined, [convex_values1839.VString<string, "required">, convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">], "optional", never>;
1171
+ tokenEndpointAuthMethod: convex_values1839.VString<string | undefined, "optional">;
1172
+ version: convex_values1839.VFloat64<number | undefined, "optional">;
1173
+ errorCode: convex_values1839.VString<string | undefined, "optional">;
1174
+ }, "required", "userId" | "connectionId" | "verifiedAt" | "expiresAt" | "version" | "protocol" | "domain" | "recordName" | "errorCode" | "changed" | "metadataUrl" | "domains" | "issuer" | "discoveryUrl" | "jwksUri" | "audience" | "tokenEndpointAuthMethod">, convex_values1839.VObject<{
1175
+ userId?: string | undefined;
1176
+ externalId?: string | undefined;
1177
+ groupId?: string | undefined;
1178
+ active?: boolean | undefined;
1179
+ resourceType?: "user" | "group" | undefined;
1180
+ scimConfigId?: string | undefined;
1181
+ resourceId?: string | undefined;
1182
+ operation?: string | undefined;
1183
+ }, {
1184
+ scimConfigId: convex_values1839.VString<string | undefined, "optional">;
1185
+ resourceType: convex_values1839.VUnion<"user" | "group" | undefined, [convex_values1839.VLiteral<"user", "required">, convex_values1839.VLiteral<"group", "required">], "optional", never>;
1186
+ resourceId: convex_values1839.VString<string | undefined, "optional">;
1187
+ operation: convex_values1839.VString<string | undefined, "optional">;
1188
+ externalId: convex_values1839.VString<string | undefined, "optional">;
1189
+ active: convex_values1839.VBoolean<boolean | undefined, "optional">;
1190
+ groupId: convex_values1839.VString<string | undefined, "optional">;
1191
+ userId: convex_values1839.VString<string | undefined, "optional">;
1192
+ }, "required", "userId" | "externalId" | "groupId" | "active" | "resourceType" | "scimConfigId" | "resourceId" | "operation">, convex_values1839.VObject<{
1193
+ status?: number | undefined;
1194
+ endpointId?: string | undefined;
1195
+ deliveryId?: string | undefined;
1196
+ sourceEventId?: string | undefined;
1197
+ sourceEventType?: "user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed" | undefined;
1198
+ attemptCount?: number | undefined;
1199
+ error?: string | undefined;
1200
+ }, {
1201
+ endpointId: convex_values1839.VString<string | undefined, "optional">;
1202
+ deliveryId: convex_values1839.VString<string | undefined, "optional">;
1203
+ sourceEventId: convex_values1839.VString<string | undefined, "optional">;
1204
+ sourceEventType: convex_values1839.VUnion<"user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed" | undefined, convex_values1839.VLiteral<"user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed", "required">[], "optional", never>;
1205
+ attemptCount: convex_values1839.VFloat64<number | undefined, "optional">;
1206
+ status: convex_values1839.VFloat64<number | undefined, "optional">;
1207
+ error: convex_values1839.VString<string | undefined, "optional">;
1208
+ }, "required", "status" | "endpointId" | "deliveryId" | "sourceEventId" | "sourceEventType" | "attemptCount" | "error">], "optional", "name" | "email" | "profile" | "phone" | "type" | "userId" | "accountId" | "provider" | "connectionId" | "providerAccountId" | "sessionId" | "credentialId" | "verifiedAt" | "status" | "expiresAt" | "version" | "externalId" | "protocol" | "groupId" | "active" | "domain" | "recordName" | "resourceType" | "errorCode" | "existingUserId" | `profile.${string}` | "method" | "reason" | "refreshTokenId" | "flow" | "passkeyId" | "totpId" | "keyId" | "prefix" | "clientId" | "codeId" | "scopes" | "redirectUri" | "grantType" | "resource" | "changed" | "metadataUrl" | "domains" | "issuer" | "discoveryUrl" | "jwksUri" | "audience" | "tokenEndpointAuthMethod" | "scimConfigId" | "resourceId" | "operation" | "endpointId" | "deliveryId" | "sourceEventId" | "sourceEventType" | "attemptCount" | "error">; /** @deprecated Retained only for stored-row compatibility. */
1209
+ streamId: convex_values1839.VString<string | undefined, "optional">; /** @deprecated Retained only for stored-row compatibility. */
1210
+ streamIndex: convex_values1839.VFloat64<number | undefined, "optional">;
1211
+ }, "required", "kind" | "requestId" | "targetKind" | "category" | "actorType" | "subjectType" | "outcome" | "eventId" | "targetId" | "occurredAt" | "actorId" | "subjectId" | "errorCode" | "ip" | "userAgent" | "data" | "streamId" | "streamIndex" | "data.name" | "data.email" | "data.profile" | "data.phone" | "data.type" | "data.userId" | "data.accountId" | "data.provider" | "data.connectionId" | "data.providerAccountId" | "data.sessionId" | "data.credentialId" | "data.verifiedAt" | "data.status" | "data.expiresAt" | "data.version" | "data.externalId" | "data.protocol" | "data.groupId" | "data.active" | "data.domain" | "data.recordName" | "data.resourceType" | "data.errorCode" | "data.existingUserId" | `data.profile.${string}` | "data.method" | "data.reason" | "data.refreshTokenId" | "data.flow" | "data.passkeyId" | "data.totpId" | "data.keyId" | "data.prefix" | "data.clientId" | "data.codeId" | "data.scopes" | "data.redirectUri" | "data.grantType" | "data.resource" | "data.changed" | "data.metadataUrl" | "data.domains" | "data.issuer" | "data.discoveryUrl" | "data.jwksUri" | "data.audience" | "data.tokenEndpointAuthMethod" | "data.scimConfigId" | "data.resourceId" | "data.operation" | "data.endpointId" | "data.deliveryId" | "data.sourceEventId" | "data.sourceEventType" | "data.attemptCount" | "data.error">, {
1212
+ target_time: ["targetKind", "targetId", "occurredAt", "_creationTime"];
1213
+ target_kind_time: ["targetKind", "targetId", "kind", "occurredAt", "_creationTime"];
1214
+ target_outcome_time: ["targetKind", "targetId", "outcome", "occurredAt", "_creationTime"];
1215
+ target_kind_outcome_time: ["targetKind", "targetId", "kind", "outcome", "occurredAt", "_creationTime"];
1216
+ event_id_target: ["eventId", "targetKind", "targetId", "_creationTime"];
1217
+ kind_time: ["kind", "occurredAt", "_creationTime"];
1218
+ category_time: ["category", "occurredAt", "_creationTime"];
1219
+ outcome_time: ["outcome", "occurredAt", "_creationTime"];
1220
+ actor_time: ["actorType", "actorId", "occurredAt", "_creationTime"];
1221
+ subject_time: ["subjectType", "subjectId", "occurredAt", "_creationTime"];
1222
+ request_id_time: ["requestId", "occurredAt", "_creationTime"];
1223
+ occurred_at: ["occurredAt", "_creationTime"];
1224
+ }, {}, {}>;
1225
+ /**
1226
+ * Webhook endpoints subscribed to group audit and lifecycle events.
1227
+ */
1228
+ GroupWebhookEndpoint: convex_server32.TableDefinition<convex_values1839.VObject<{
1229
+ extend?: any;
1230
+ secretCiphertext?: string | undefined;
1231
+ secretHash?: string | undefined;
1232
+ createdByUserId?: convex_values1839.GenericId<"User"> | undefined;
1233
+ lastSuccessAt?: number | undefined;
1234
+ lastFailureAt?: number | undefined;
1235
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
1236
+ status: "active" | "disabled";
1237
+ groupId: convex_values1839.GenericId<"Group">;
1238
+ url: string;
1239
+ subscriptions: string[];
1240
+ failureCount: number;
1241
+ }, {
1242
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
1243
+ groupId: convex_values1839.VId<convex_values1839.GenericId<"Group">, "required">;
1244
+ url: convex_values1839.VString<string, "required">;
1245
+ status: convex_values1839.VUnion<"active" | "disabled", [convex_values1839.VLiteral<"active", "required">, convex_values1839.VLiteral<"disabled", "required">], "required", never>;
1246
+ /**
1247
+ * Endpoint signing secret encrypted with `AUTH_SECRET_ENCRYPTION_KEY`.
1248
+ * Decrypted at emit time to HMAC-SHA256 each outbound payload; the
1249
+ * dispatch action forwards the precomputed signature in
1250
+ * `X-Auth-Signature`.
1251
+ *
1252
+ * Optional for the 0.1 two-phase upgrade: pre-existing rows carry the
1253
+ * one-way `secretHash` and have no `secretCiphertext` yet. The
1254
+ * `disableLegacyWebhookEndpoints` migration disables those rows and erases
1255
+ * the hash; an operator must provide a new secret before re-enabling them.
1256
+ * Tighten back to required in a later release once every live row is
1257
+ * encrypted.
1258
+ */
1259
+ secretCiphertext: convex_values1839.VString<string | undefined, "optional">;
1260
+ /**
1261
+ * @deprecated One-way SHA-256 hash from the pre-encryption signing scheme.
1262
+ * Retained only so pre-existing rows validate on deploy; the endpoint
1263
+ * migration disables hash-only rows and clears this field. It cannot be
1264
+ * converted into the original secret. Removed in a later release.
1265
+ */
1266
+ secretHash: convex_values1839.VString<string | undefined, "optional">;
1267
+ /**
1268
+ * Kept permissive (`v.array(v.string())`, not `v.array(vAuthEventKind)`) so
1269
+ * rows holding pre-rename kind strings validate on deploy. The
1270
+ * `renameWebhookEndpointSubscriptions` migration remaps them; re-narrow in a
1271
+ * later release.
1272
+ */
1273
+ subscriptions: convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">;
1274
+ createdByUserId: convex_values1839.VId<convex_values1839.GenericId<"User"> | undefined, "optional">;
1275
+ lastSuccessAt: convex_values1839.VFloat64<number | undefined, "optional">;
1276
+ lastFailureAt: convex_values1839.VFloat64<number | undefined, "optional">;
1277
+ failureCount: convex_values1839.VFloat64<number, "required">;
1278
+ extend: convex_values1839.VAny<any, "optional", string>;
1279
+ }, "required", "extend" | `extend.${string}` | "connectionId" | "status" | "groupId" | "url" | "secretCiphertext" | "secretHash" | "subscriptions" | "createdByUserId" | "lastSuccessAt" | "lastFailureAt" | "failureCount">, {
1280
+ group_connection_id: ["connectionId", "_creationTime"];
1281
+ group_id: ["groupId", "_creationTime"];
1282
+ status: ["status", "_creationTime"];
1283
+ }, {}, {}>;
1284
+ /**
1285
+ * Delivery queue for outbound group webhooks.
1286
+ */
1287
+ GroupWebhookDelivery: convex_server32.TableDefinition<convex_values1839.VObject<{
1288
+ signature?: string | undefined;
1289
+ kind?: "user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed" | undefined;
1290
+ eventId?: string | undefined;
1291
+ lastAttemptAt?: number | undefined;
1292
+ lastResponseStatus?: number | undefined;
1293
+ lastError?: string | undefined;
1294
+ signedAt?: number | undefined;
1295
+ eventType?: string | undefined;
1296
+ auditEventId?: string | undefined;
1297
+ connectionId: convex_values1839.GenericId<"GroupConnection">;
1298
+ status: "pending" | "processing" | "delivered" | "failed";
1299
+ endpointId: convex_values1839.GenericId<"GroupWebhookEndpoint">;
1300
+ attemptCount: number;
1301
+ nextAttemptAt: number;
1302
+ payload: any;
1303
+ }, {
1304
+ connectionId: convex_values1839.VId<convex_values1839.GenericId<"GroupConnection">, "required">;
1305
+ endpointId: convex_values1839.VId<convex_values1839.GenericId<"GroupWebhookEndpoint">, "required">;
1306
+ /**
1307
+ * `eventId`/`kind`/`signature`/`signedAt` became required after the
1308
+ * audit→event migration. Relaxed to optional for the 0.1 two-phase upgrade
1309
+ * so pre-existing rows (which instead carry `eventType`/`auditEventId`, and
1310
+ * may predate `signature`/`signedAt`) validate on deploy. The
1311
+ * `renameWebhookDeliveryKinds` migration backfills them from the legacy
1312
+ * fields; tighten back to required in a later release.
1313
+ */
1314
+ eventId: convex_values1839.VString<string | undefined, "optional">;
1315
+ kind: convex_values1839.VUnion<"user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed" | undefined, convex_values1839.VLiteral<"user.created" | "user.updated" | "session.signed_in" | "session.signed_out" | "session.invalidated" | "session.refresh_exchanged" | "session.refresh_reuse_detected" | "account.linked" | "account.unlinked" | "password.changed" | "passkey.added" | "passkey.removed" | "totp.enrolled" | "totp.removed" | "email.verified" | "phone.verified" | "api_key.created" | "api_key.revoked" | "oauth.client.created" | "oauth.client.revoked" | "oauth.code.created" | "oauth.token.created" | "oauth.token.exchanged" | "oauth.refresh.reuse_detected" | "oauth.refresh.revoked" | "connection.created" | "connection.updated" | "connection.removed" | "connection.login.succeeded" | "connection.login.failed" | "connection.domain.verification_requested" | "connection.domain.verified" | "connection.policy.updated" | "connection.saml.set" | "connection.saml.refreshed" | "connection.oidc.set" | "connection.scim.set" | "connection.scim.read" | "connection.scim.user.provisioned" | "connection.scim.user.updated" | "connection.scim.user.deactivated" | "connection.scim.user.reactivated" | "connection.scim.group.provisioned" | "connection.scim.group.updated" | "connection.scim.group.deactivated" | "connection.scim.group.reactivated" | "webhook.endpoint.created" | "webhook.endpoint.disabled" | "webhook.delivery.created" | "webhook.delivery.attempted" | "webhook.delivery.succeeded" | "webhook.delivery.failed", "required">[], "optional", never>;
1316
+ status: convex_values1839.VUnion<"pending" | "processing" | "delivered" | "failed", [convex_values1839.VLiteral<"pending", "required">, convex_values1839.VLiteral<"processing", "required">, convex_values1839.VLiteral<"delivered", "required">, convex_values1839.VLiteral<"failed", "required">], "required", never>;
1317
+ attemptCount: convex_values1839.VFloat64<number, "required">;
1318
+ nextAttemptAt: convex_values1839.VFloat64<number, "required">;
1319
+ lastAttemptAt: convex_values1839.VFloat64<number | undefined, "optional">;
1320
+ lastResponseStatus: convex_values1839.VFloat64<number | undefined, "optional">;
1321
+ lastError: convex_values1839.VString<string | undefined, "optional">;
1322
+ payload: convex_values1839.VAny<any, "required", string>; /** HMAC-SHA256 hex of `${signedAt}.${body}` using the endpoint secret. */
1323
+ signature: convex_values1839.VString<string | undefined, "optional">; /** Epoch ms used in the signature pre-image. */
1324
+ signedAt: convex_values1839.VFloat64<number | undefined, "optional">;
1325
+ /**
1326
+ * @deprecated Legacy pre-`event` audit fields. `eventType` held the old
1327
+ * audit event-type string; `auditEventId` referenced the dropped
1328
+ * `GroupAuditEvent` table (kept as `v.string()` since that table no longer
1329
+ * exists). Retained so pre-existing rows validate on deploy; the
1330
+ * `renameWebhookDeliveryKinds` migration reads them to backfill
1331
+ * `kind`/`eventId`, then clears them. Removed in a later release.
1332
+ */
1333
+ eventType: convex_values1839.VString<string | undefined, "optional">;
1334
+ auditEventId: convex_values1839.VString<string | undefined, "optional">;
1335
+ }, "required", "connectionId" | "signature" | "status" | "kind" | "eventId" | "endpointId" | "attemptCount" | "nextAttemptAt" | "lastAttemptAt" | "lastResponseStatus" | "lastError" | "payload" | "signedAt" | "eventType" | "auditEventId" | `payload.${string}`>, {
1336
+ group_connection_id: ["connectionId", "_creationTime"];
1337
+ status_next_attempt_at: ["status", "nextAttemptAt", "_creationTime"];
1338
+ status_signed_at: ["status", "signedAt", "_creationTime"];
1339
+ endpoint_id_status: ["endpointId", "status", "_creationTime"];
1340
+ event_id: ["eventId", "_creationTime"];
1341
+ event_id_endpoint_id: ["eventId", "endpointId", "_creationTime"];
1342
+ }, {}, {}>;
1343
+ /**
1344
+ * API keys for programmatic access. Each key links a user to a set of
1345
+ * scoped permissions and optional per-key rate limiting.
1346
+ *
1347
+ * The raw key is never stored — only a SHA-256 hash. A short prefix
1348
+ * (e.g. "sk_abc1...") is kept for display in admin interfaces.
1349
+ *
1350
+ * Keys support:
1351
+ * - **Scoped permissions**: resource:action pairs (e.g. users:read)
1352
+ * - **Per-key rate limiting**: token-bucket with configurable window
1353
+ * - **Expiration**: optional TTL
1354
+ * - **Soft revocation**: `revoked` flag preserves audit trail
1355
+ */
1356
+ ApiKey: convex_server32.TableDefinition<convex_values1839.VObject<{
1357
+ extend?: any;
1358
+ lastUsedAt?: number | undefined;
1359
+ expiresAt?: number | undefined;
1360
+ rateLimit?: {
1361
+ maxRequests: number;
1362
+ windowMs: number;
1363
+ } | undefined;
1364
+ rateLimitState?: {
1365
+ attemptsLeft: number;
1366
+ lastAttemptTime: number;
1367
+ } | undefined;
1368
+ metadata?: any;
1369
+ name: string;
1370
+ userId: convex_values1839.GenericId<"User">;
1371
+ createdAt: number;
1372
+ revoked: boolean;
1373
+ prefix: string;
1374
+ scopes: {
1375
+ resource: string;
1376
+ actions: string[];
1377
+ }[];
1378
+ hashedKey: string;
1379
+ }, {
1380
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">; /** First chars of the key for display (e.g. "sk_abc1..."). */
1381
+ prefix: convex_values1839.VString<string, "required">; /** SHA-256 hex hash of the full raw key. */
1382
+ hashedKey: convex_values1839.VString<string, "required">; /** User-assigned name (e.g. "CI Pipeline", "Production API"). */
1383
+ name: convex_values1839.VString<string, "required">; /** Scoped permissions: [{ resource: "users", actions: ["read", "list"] }]. */
1384
+ scopes: convex_values1839.VArray<{
1385
+ resource: string;
1386
+ actions: string[];
1387
+ }[], convex_values1839.VObject<{
1388
+ resource: string;
1389
+ actions: string[];
1390
+ }, {
1391
+ resource: convex_values1839.VString<string, "required">;
1392
+ actions: convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">;
1393
+ }, "required", "resource" | "actions">, "required">; /** Optional per-key rate limit configuration. */
1394
+ rateLimit: convex_values1839.VObject<{
1395
+ maxRequests: number;
1396
+ windowMs: number;
1397
+ } | undefined, {
1398
+ maxRequests: convex_values1839.VFloat64<number, "required">;
1399
+ windowMs: convex_values1839.VFloat64<number, "required">;
1400
+ }, "optional", "maxRequests" | "windowMs">; /** Rate limit state tracking (token-bucket). */
1401
+ rateLimitState: convex_values1839.VObject<{
1402
+ attemptsLeft: number;
1403
+ lastAttemptTime: number;
1404
+ } | undefined, {
1405
+ attemptsLeft: convex_values1839.VFloat64<number, "required">;
1406
+ lastAttemptTime: convex_values1839.VFloat64<number, "required">;
1407
+ }, "optional", "attemptsLeft" | "lastAttemptTime">; /** Expiration timestamp. Null/undefined = never expires. */
1408
+ expiresAt: convex_values1839.VFloat64<number | undefined, "optional">;
1409
+ lastUsedAt: convex_values1839.VFloat64<number | undefined, "optional">;
1410
+ createdAt: convex_values1839.VFloat64<number, "required">; /** Soft-revoke flag. Revoked keys are kept for audit trail. */
1411
+ revoked: convex_values1839.VBoolean<boolean, "required">; /** Arbitrary app-specific metadata attached to the key. */
1412
+ extend: convex_values1839.VAny<any, "optional", string>;
1413
+ /**
1414
+ * @deprecated Renamed to `extend`. Retained so pre-existing rows validate on
1415
+ * deploy; the `backfillApiKeyExtend` migration copies it into `extend` (when
1416
+ * `extend` is unset) and clears this. Removed in a later release.
1417
+ */
1418
+ metadata: convex_values1839.VAny<any, "optional", string>;
1419
+ }, "required", "name" | "extend" | `extend.${string}` | "userId" | "createdAt" | "lastUsedAt" | "expiresAt" | "revoked" | "prefix" | "scopes" | "hashedKey" | "rateLimit" | "rateLimitState" | "metadata" | "rateLimit.maxRequests" | "rateLimit.windowMs" | "rateLimitState.attemptsLeft" | "rateLimitState.lastAttemptTime" | `metadata.${string}`>, {
1420
+ user_id: ["userId", "_creationTime"];
1421
+ hashed_key: ["hashedKey", "_creationTime"];
1422
+ }, {}, {}>;
1423
+ OAuthClient: convex_server32.TableDefinition<convex_values1839.VObject<{
1424
+ extend?: any;
1425
+ tokenEndpointAuthMethod?: "none" | "client_secret_basic" | "client_secret_post" | undefined;
1426
+ clientSecretHash?: string | undefined;
1427
+ registrationAccessTokenHash?: string | undefined;
1428
+ createdBy?: convex_values1839.GenericId<"User"> | undefined;
1429
+ revokedAt?: number | undefined;
1430
+ name: string;
1431
+ revoked: boolean;
1432
+ clientId: string;
1433
+ scopes: string[];
1434
+ redirectUris: string[];
1435
+ grantTypes: string[];
1436
+ }, {
1437
+ clientId: convex_values1839.VString<string, "required">;
1438
+ clientSecretHash: convex_values1839.VString<string | undefined, "optional">;
1439
+ name: convex_values1839.VString<string, "required">;
1440
+ redirectUris: convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">;
1441
+ scopes: convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">;
1442
+ grantTypes: convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">;
1443
+ /** RFC 7591 token-endpoint auth method; `none` = public client. Optional
1444
+ * so pre-existing rows validate before the backfill migration runs. */
1445
+ tokenEndpointAuthMethod: convex_values1839.VUnion<"none" | "client_secret_basic" | "client_secret_post" | undefined, [convex_values1839.VLiteral<"client_secret_basic", "required">, convex_values1839.VLiteral<"client_secret_post", "required">, convex_values1839.VLiteral<"none", "required">], "optional", never>; /** SHA-256 of the RFC 7592 registration access token (management bearer). */
1446
+ registrationAccessTokenHash: convex_values1839.VString<string | undefined, "optional">;
1447
+ createdBy: convex_values1839.VId<convex_values1839.GenericId<"User"> | undefined, "optional">;
1448
+ revoked: convex_values1839.VBoolean<boolean, "required">; /** Set when revoked; optional until the compatibility backfill runs. */
1449
+ revokedAt: convex_values1839.VFloat64<number | undefined, "optional">;
1450
+ extend: convex_values1839.VAny<any, "optional", string>;
1451
+ }, "required", "name" | "extend" | `extend.${string}` | "revoked" | "clientId" | "scopes" | "tokenEndpointAuthMethod" | "clientSecretHash" | "redirectUris" | "grantTypes" | "registrationAccessTokenHash" | "createdBy" | "revokedAt">, {
1452
+ client_id: ["clientId", "_creationTime"];
1453
+ created_by: ["createdBy", "_creationTime"];
1454
+ created_by_revoked: ["createdBy", "revoked", "_creationTime"];
1455
+ revoked: ["revoked", "_creationTime"];
1456
+ revoked_at: ["revoked", "revokedAt", "_creationTime"];
1457
+ }, {}, {}>;
1458
+ OAuthCode: convex_server32.TableDefinition<convex_values1839.VObject<{
1459
+ resource?: string | undefined;
1460
+ usedAt?: number | undefined;
1461
+ userId: convex_values1839.GenericId<"User">;
1462
+ expiresAt: number;
1463
+ clientId: string;
1464
+ scopes: string[];
1465
+ redirectUri: string;
1466
+ codeHash: string;
1467
+ codeChallenge: string;
1468
+ }, {
1469
+ codeHash: convex_values1839.VString<string, "required">;
1470
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">;
1471
+ clientId: convex_values1839.VString<string, "required">;
1472
+ redirectUri: convex_values1839.VString<string, "required">;
1473
+ scopes: convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">;
1474
+ codeChallenge: convex_values1839.VString<string, "required">;
1475
+ resource: convex_values1839.VString<string | undefined, "optional">;
1476
+ expiresAt: convex_values1839.VFloat64<number, "required">;
1477
+ usedAt: convex_values1839.VFloat64<number | undefined, "optional">;
1478
+ }, "required", "userId" | "expiresAt" | "clientId" | "scopes" | "redirectUri" | "resource" | "codeHash" | "codeChallenge" | "usedAt">, {
1479
+ code_hash: ["codeHash", "_creationTime"];
1480
+ user_id: ["userId", "_creationTime"];
1481
+ expires_at: ["expiresAt", "_creationTime"];
1482
+ }, {}, {}>;
1483
+ /**
1484
+ * Root record for a refresh-token rotation chain (one per code exchange).
1485
+ * Carries the identity/authorization shared by every token in the chain;
1486
+ * setting `revokedAt` kills the whole chain in O(1) (reuse-detection / sign-out)
1487
+ * — token lookups reject a revoked or missing grant before the bounded,
1488
+ * scheduled token-row cleanup runs. Mirrors `Session` for OAuth refresh.
1489
+ */
1490
+ OAuthRefreshGrant: convex_server32.TableDefinition<convex_values1839.VObject<{
1491
+ resource?: string | undefined;
1492
+ revokedAt?: number | undefined;
1493
+ userId: convex_values1839.GenericId<"User">;
1494
+ expiresAt: number;
1495
+ clientId: string;
1496
+ scopes: string[];
1497
+ }, {
1498
+ clientId: convex_values1839.VString<string, "required">;
1499
+ userId: convex_values1839.VId<convex_values1839.GenericId<"User">, "required">;
1500
+ scopes: convex_values1839.VArray<string[], convex_values1839.VString<string, "required">, "required">;
1501
+ resource: convex_values1839.VString<string | undefined, "optional">;
1502
+ expiresAt: convex_values1839.VFloat64<number, "required">;
1503
+ revokedAt: convex_values1839.VFloat64<number | undefined, "optional">;
1504
+ }, "required", "userId" | "expiresAt" | "clientId" | "scopes" | "resource" | "revokedAt">, {
1505
+ expires_at: ["expiresAt", "_creationTime"];
1506
+ revoked_at: ["revokedAt", "_creationTime"];
1507
+ }, {}, {}>;
1508
+ OAuthRefreshToken: convex_server32.TableDefinition<convex_values1839.VObject<{
1509
+ firstUsedTime?: number | undefined;
1510
+ grantId?: convex_values1839.GenericId<"OAuthRefreshGrant"> | undefined;
1511
+ parentTokenId?: convex_values1839.GenericId<"OAuthRefreshToken"> | undefined;
1512
+ expiresAt: number;
1513
+ tokenHash: string;
1514
+ }, {
1515
+ tokenHash: convex_values1839.VString<string, "required">;
1516
+ grantId: convex_values1839.VId<convex_values1839.GenericId<"OAuthRefreshGrant"> | undefined, "optional">;
1517
+ expiresAt: convex_values1839.VFloat64<number, "required">;
1518
+ firstUsedTime: convex_values1839.VFloat64<number | undefined, "optional">;
1519
+ parentTokenId: convex_values1839.VId<convex_values1839.GenericId<"OAuthRefreshToken"> | undefined, "optional">;
1520
+ }, "required", "firstUsedTime" | "expiresAt" | "tokenHash" | "grantId" | "parentTokenId">, {
1521
+ token_hash: ["tokenHash", "_creationTime"];
1522
+ grant_id: ["grantId", "_creationTime"];
1523
+ grant_id_first_used: ["grantId", "firstUsedTime", "_creationTime"];
1524
+ grant_id_parent_token_id_first_used: ["grantId", "parentTokenId", "firstUsedTime", "_creationTime"];
1525
+ expires_at: ["expiresAt", "_creationTime"];
1526
+ }, {}, {}>;
1527
+ }, true>;
1528
+ //#endregion
1529
+ export { _default };
1530
+ //# sourceMappingURL=schema.d.ts.map