+
diff --git a/frontend/apps/web/app/(mgmt)/[account]/connections/[id]/components/GcpCloudStorageForm.tsx b/frontend/apps/web/app/(mgmt)/[account]/connections/[id]/components/GcpCloudStorageForm.tsx
index 7384544806..b537429384 100644
--- a/frontend/apps/web/app/(mgmt)/[account]/connections/[id]/components/GcpCloudStorageForm.tsx
+++ b/frontend/apps/web/app/(mgmt)/[account]/connections/[id]/components/GcpCloudStorageForm.tsx
@@ -1,6 +1,7 @@
'use client';
import ButtonText from '@/components/ButtonText';
import Spinner from '@/components/Spinner';
+import SystemLicenseAlert from '@/components/SystemLicenseAlert';
import RequiredLabel from '@/components/labels/RequiredLabel';
import { useAccount } from '@/components/providers/account-provider';
import { Button } from '@/components/ui/button';
@@ -73,6 +74,7 @@ export default function GcpCloudStorageForm(props: Props): ReactElement {
return (
{connection.description}
diff --git a/frontend/apps/web/app/(mgmt)/[account]/new/connection/gcp-cloud-storage/GcpCloudStorageForm.tsx b/frontend/apps/web/app/(mgmt)/[account]/new/connection/gcp-cloud-storage/GcpCloudStorageForm.tsx
index aecbaadded..456ea4dc32 100644
--- a/frontend/apps/web/app/(mgmt)/[account]/new/connection/gcp-cloud-storage/GcpCloudStorageForm.tsx
+++ b/frontend/apps/web/app/(mgmt)/[account]/new/connection/gcp-cloud-storage/GcpCloudStorageForm.tsx
@@ -1,6 +1,7 @@
'use client';
import ButtonText from '@/components/ButtonText';
import Spinner from '@/components/Spinner';
+import SystemLicenseAlert from '@/components/SystemLicenseAlert';
import RequiredLabel from '@/components/labels/RequiredLabel';
import { useAccount } from '@/components/providers/account-provider';
import SkeletonForm from '@/components/skeleton/SkeletonForm';
@@ -23,9 +24,17 @@ import {
GcpCloudStorageFormValues,
} from '@/yup-validations/connections';
import { create } from '@bufbuild/protobuf';
-import { createConnectQueryKey, useMutation } from '@connectrpc/connect-query';
+import {
+ createConnectQueryKey,
+ useMutation,
+ useQuery,
+} from '@connectrpc/connect-query';
import { yupResolver } from '@hookform/resolvers/yup';
-import { ConnectionService, GetConnectionResponseSchema } from '@neosync/sdk';
+import {
+ ConnectionService,
+ GetConnectionResponseSchema,
+ UserAccountService,
+} from '@neosync/sdk';
import { useQueryClient } from '@tanstack/react-query';
import Error from 'next/error';
import { useRouter, useSearchParams } from 'next/navigation';
@@ -153,12 +162,24 @@ export default function GcpCloudStorageForm(): ReactElement {
fetchData();
}, [account?.id]);
- if (isLoading || !account?.id || isSystemAppConfigLoading) {
+ const { data: systemInfo, isLoading: isSystemInfoLoading } = useQuery(
+ UserAccountService.method.getSystemInformation
+ );
+
+ if (
+ isLoading ||
+ !account?.id ||
+ isSystemAppConfigLoading ||
+ isSystemInfoLoading
+ ) {
return ;
}
if (!systemAppConfig?.isGcpCloudStorageConnectionsEnabled) {
return ;
}
+ if (!systemInfo?.license?.isValid) {
+ return ;
+ }
return (
+ );
+}
diff --git a/frontend/apps/web/yup-validations/connections.ts b/frontend/apps/web/yup-validations/connections.ts
index 5101615642..9a17a6b1fd 100644
--- a/frontend/apps/web/yup-validations/connections.ts
+++ b/frontend/apps/web/yup-validations/connections.ts
@@ -247,7 +247,7 @@ export type AwsCredentialsFormValues = Yup.InferType<
typeof AwsCredentialsFormValues
>;
-export const AWS_FORM_SCHEMA = Yup.object({
+export const AwsFormValues = Yup.object({
connectionName: connectionNameSchema,
s3: Yup.object({
bucket: Yup.string().required('The Bucket name is required.'),
@@ -258,7 +258,7 @@ export const AWS_FORM_SCHEMA = Yup.object({
}).required('The AWS form fields are required.'),
});
-export type AWSFormValues = Yup.InferType
;
+export type AwsFormValues = Yup.InferType;
export const DynamoDbFormValues = Yup.object({
connectionName: connectionNameSchema,
diff --git a/frontend/packages/sdk/src/client/mgmt/v1alpha1/user_account_pb.ts b/frontend/packages/sdk/src/client/mgmt/v1alpha1/user_account_pb.ts
index 0013e41a6a..421a323396 100644
--- a/frontend/packages/sdk/src/client/mgmt/v1alpha1/user_account_pb.ts
+++ b/frontend/packages/sdk/src/client/mgmt/v1alpha1/user_account_pb.ts
@@ -13,7 +13,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file mgmt/v1alpha1/user_account.proto.
*/
export const file_mgmt_v1alpha1_user_account: GenFile = /*@__PURE__*/
- fileDesc("CiBtZ210L3YxYWxwaGExL3VzZXJfYWNjb3VudC5wcm90bxINbWdtdC52MWFscGhhMSIQCg5HZXRVc2VyUmVxdWVzdCIiCg9HZXRVc2VyUmVzcG9uc2USDwoHdXNlcl9pZBgBIAEoCSIQCg5TZXRVc2VyUmVxdWVzdCIiCg9TZXRVc2VyUmVzcG9uc2USDwoHdXNlcl9pZBgBIAEoCSIYChZHZXRVc2VyQWNjb3VudHNSZXF1ZXN0IkcKF0dldFVzZXJBY2NvdW50c1Jlc3BvbnNlEiwKCGFjY291bnRzGAEgAygLMhoubWdtdC52MWFscGhhMS5Vc2VyQWNjb3VudCJ1CgtVc2VyQWNjb3VudBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEiwKBHR5cGUYAyABKA4yHi5tZ210LnYxYWxwaGExLlVzZXJBY2NvdW50VHlwZRIeChZoYXNfc3RyaXBlX2N1c3RvbWVyX2lkGAQgASgIIoABCiNDb252ZXJ0UGVyc29uYWxUb1RlYW1BY2NvdW50UmVxdWVzdBInCgRuYW1lGAEgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kEiEKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBSACIAQFCDQoLX2FjY291bnRfaWQilwEKJENvbnZlcnRQZXJzb25hbFRvVGVhbUFjY291bnRSZXNwb25zZRISCgphY2NvdW50X2lkGAEgASgJEiEKFGNoZWNrb3V0X3Nlc3Npb25fdXJsGAIgASgJSACIAQESHwoXbmV3X3BlcnNvbmFsX2FjY291bnRfaWQYAyABKAlCFwoVX2NoZWNrb3V0X3Nlc3Npb25fdXJsIhsKGVNldFBlcnNvbmFsQWNjb3VudFJlcXVlc3QiMAoaU2V0UGVyc29uYWxBY2NvdW50UmVzcG9uc2USEgoKYWNjb3VudF9pZBgBIAEoCSI2ChZJc1VzZXJJbkFjY291bnRSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIiUKF0lzVXNlckluQWNjb3VudFJlc3BvbnNlEgoKAm9rGAEgASgIIj8KH0dldEFjY291bnRUZW1wb3JhbENvbmZpZ1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiWAogR2V0QWNjb3VudFRlbXBvcmFsQ29uZmlnUmVzcG9uc2USNAoGY29uZmlnGAEgASgLMiQubWdtdC52MWFscGhhMS5BY2NvdW50VGVtcG9yYWxDb25maWcidQofU2V0QWNjb3VudFRlbXBvcmFsQ29uZmlnUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARI0CgZjb25maWcYAiABKAsyJC5tZ210LnYxYWxwaGExLkFjY291bnRUZW1wb3JhbENvbmZpZyJYCiBTZXRBY2NvdW50VGVtcG9yYWxDb25maWdSZXNwb25zZRI0CgZjb25maWcYASABKAsyJC5tZ210LnYxYWxwaGExLkFjY291bnRUZW1wb3JhbENvbmZpZyJvChVBY2NvdW50VGVtcG9yYWxDb25maWcSFAoDdXJsGAEgASgJQge6SARyAhABEhoKCW5hbWVzcGFjZRgCIAEoCUIHukgEcgIQARIkChNzeW5jX2pvYl9xdWV1ZV9uYW1lGAMgASgJQge6SARyAhABIkMKGENyZWF0ZVRlYW1BY2NvdW50UmVxdWVzdBInCgRuYW1lGAEgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kImsKGUNyZWF0ZVRlYW1BY2NvdW50UmVzcG9uc2USEgoKYWNjb3VudF9pZBgBIAEoCRIhChRjaGVja291dF9zZXNzaW9uX3VybBgCIAEoCUgAiAEBQhcKFV9jaGVja291dF9zZXNzaW9uX3VybCJvCgtBY2NvdW50VXNlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWltYWdlGAMgASgJEg0KBWVtYWlsGAQgASgJEigKBHJvbGUYBSABKA4yGi5tZ210LnYxYWxwaGExLkFjY291bnRSb2xlIjwKHEdldFRlYW1BY2NvdW50TWVtYmVyc1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiSgodR2V0VGVhbUFjY291bnRNZW1iZXJzUmVzcG9uc2USKQoFdXNlcnMYASADKAsyGi5tZ210LnYxYWxwaGExLkFjY291bnRVc2VyIlkKHlJlbW92ZVRlYW1BY2NvdW50TWVtYmVyUmVxdWVzdBIZCgd1c2VyX2lkGAEgASgJQgi6SAVyA7ABARIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASIhCh9SZW1vdmVUZWFtQWNjb3VudE1lbWJlclJlc3BvbnNlIo4BCh5JbnZpdGVVc2VyVG9UZWFtQWNjb3VudFJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESFgoFZW1haWwYAiABKAlCB7pIBHICEAESLQoEcm9sZRgDIAEoDjIaLm1nbXQudjFhbHBoYTEuQWNjb3VudFJvbGVIAIgBAUIHCgVfcm9sZSKxAgoNQWNjb3VudEludml0ZRIKCgJpZBgBIAEoCRISCgphY2NvdW50X2lkGAIgASgJEhYKDnNlbmRlcl91c2VyX2lkGAMgASgJEg0KBWVtYWlsGAQgASgJEg0KBXRva2VuGAUgASgJEhAKCGFjY2VwdGVkGAYgASgIEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEigKBHJvbGUYCiABKA4yGi5tZ210LnYxYWxwaGExLkFjY291bnRSb2xlIk8KH0ludml0ZVVzZXJUb1RlYW1BY2NvdW50UmVzcG9uc2USLAoGaW52aXRlGAEgASgLMhwubWdtdC52MWFscGhhMS5BY2NvdW50SW52aXRlIjwKHEdldFRlYW1BY2NvdW50SW52aXRlc1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiTgodR2V0VGVhbUFjY291bnRJbnZpdGVzUmVzcG9uc2USLQoHaW52aXRlcxgBIAMoCzIcLm1nbXQudjFhbHBoYTEuQWNjb3VudEludml0ZSI2Ch5SZW1vdmVUZWFtQWNjb3VudEludml0ZVJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBIiEKH1JlbW92ZVRlYW1BY2NvdW50SW52aXRlUmVzcG9uc2UiOAoeQWNjZXB0VGVhbUFjY291bnRJbnZpdGVSZXF1ZXN0EhYKBXRva2VuGAEgASgJQge6SARyAhABIk4KH0FjY2VwdFRlYW1BY2NvdW50SW52aXRlUmVzcG9uc2USKwoHYWNjb3VudBgBIAEoCzIaLm1nbXQudjFhbHBoYTEuVXNlckFjY291bnQiHQobR2V0U3lzdGVtSW5mb3JtYXRpb25SZXF1ZXN0IpMBChxHZXRTeXN0ZW1JbmZvcm1hdGlvblJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSDgoGY29tbWl0GAIgASgJEhAKCGNvbXBpbGVyGAMgASgJEhAKCHBsYXRmb3JtGAQgASgJEi4KCmJ1aWxkX2RhdGUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkEKIUdldEFjY291bnRPbmJvYXJkaW5nQ29uZmlnUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASJcCiJHZXRBY2NvdW50T25ib2FyZGluZ0NvbmZpZ1Jlc3BvbnNlEjYKBmNvbmZpZxgBIAEoCzImLm1nbXQudjFhbHBoYTEuQWNjb3VudE9uYm9hcmRpbmdDb25maWcieQohU2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWdSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEjYKBmNvbmZpZxgCIAEoCzImLm1nbXQudjFhbHBoYTEuQWNjb3VudE9uYm9hcmRpbmdDb25maWciXAoiU2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWdSZXNwb25zZRI2CgZjb25maWcYASABKAsyJi5tZ210LnYxYWxwaGExLkFjY291bnRPbmJvYXJkaW5nQ29uZmlnIlMKF0FjY291bnRPbmJvYXJkaW5nQ29uZmlnEiAKGGhhc19jb21wbGV0ZWRfb25ib2FyZGluZxgFIAEoCEoECAEQAkoECAIQA0oECAMQBEoECAQQBSI3ChdHZXRBY2NvdW50U3RhdHVzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASKsAQoYR2V0QWNjb3VudFN0YXR1c1Jlc3BvbnNlEhkKEXVzZWRfcmVjb3JkX2NvdW50GAEgASgEEiEKFGFsbG93ZWRfcmVjb3JkX2NvdW50GAIgASgESACIAQESOQoTc3Vic2NyaXB0aW9uX3N0YXR1cxgDIAEoDjIcLm1nbXQudjFhbHBoYTEuQmlsbGluZ1N0YXR1c0IXChVfYWxsb3dlZF9yZWNvcmRfY291bnQiewobSXNBY2NvdW50U3RhdHVzVmFsaWRSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEiMKFnJlcXVlc3RlZF9yZWNvcmRfY291bnQYAiABKARIAIgBAUIZChdfcmVxdWVzdGVkX3JlY29yZF9jb3VudCL3AQocSXNBY2NvdW50U3RhdHVzVmFsaWRSZXNwb25zZRIQCghpc192YWxpZBgBIAEoCBITCgZyZWFzb24YAiABKAlIAIgBARITCgtzaG91bGRfcG9sbBgDIAEoCBI0Cg5hY2NvdW50X3N0YXR1cxgGIAEoDjIcLm1nbXQudjFhbHBoYTEuQWNjb3VudFN0YXR1cxI5ChB0cmlhbF9leHBpcmVzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgkKB19yZWFzb25CEwoRX3RyaWFsX2V4cGlyZXNfYXRKBAgEEAVKBAgFEAYiRwonR2V0QWNjb3VudEJpbGxpbmdDaGVja291dFNlc3Npb25SZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIkgKKEdldEFjY291bnRCaWxsaW5nQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USHAoUY2hlY2tvdXRfc2Vzc2lvbl91cmwYASABKAkiRQolR2V0QWNjb3VudEJpbGxpbmdQb3J0YWxTZXNzaW9uUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASJECiZHZXRBY2NvdW50QmlsbGluZ1BvcnRhbFNlc3Npb25SZXNwb25zZRIaChJwb3J0YWxfc2Vzc2lvbl91cmwYASABKAkiMAoZR2V0QmlsbGluZ0FjY291bnRzUmVxdWVzdBITCgthY2NvdW50X2lkcxgBIAMoCSJKChpHZXRCaWxsaW5nQWNjb3VudHNSZXNwb25zZRIsCghhY2NvdW50cxgBIAMoCzIaLm1nbXQudjFhbHBoYTEuVXNlckFjY291bnQisQEKG1NldEJpbGxpbmdNZXRlckV2ZW50UmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIbCgpldmVudF9uYW1lGAIgASgJQge6SARyAhABEhYKBXZhbHVlGAMgASgJQge6SARyAhABEhkKCGV2ZW50X2lkGAQgASgJQge6SARyAhABEhYKCXRpbWVzdGFtcBgFIAEoBEgAiAEBQgwKCl90aW1lc3RhbXAiHgocU2V0QmlsbGluZ01ldGVyRXZlbnRSZXNwb25zZSJ3ChJTZXRVc2VyUm9sZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESGQoHdXNlcl9pZBgCIAEoCUIIukgFcgOwAQESKAoEcm9sZRgDIAEoDjIaLm1nbXQudjFhbHBoYTEuQWNjb3VudFJvbGUiFQoTU2V0VXNlclJvbGVSZXNwb25zZSqSAQoPVXNlckFjY291bnRUeXBlEiEKHVVTRVJfQUNDT1VOVF9UWVBFX1VOU1BFQ0lGSUVEEAASHgoaVVNFUl9BQ0NPVU5UX1RZUEVfUEVSU09OQUwQARIaChZVU0VSX0FDQ09VTlRfVFlQRV9URUFNEAISIAocVVNFUl9BQ0NPVU5UX1RZUEVfRU5URVJQUklTRRADKqkBCg1CaWxsaW5nU3RhdHVzEh4KGkJJTExJTkdfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGQoVQklMTElOR19TVEFUVVNfQUNUSVZFEAESGgoWQklMTElOR19TVEFUVVNfRVhQSVJFRBACEh8KG0JJTExJTkdfU1RBVFVTX1RSSUFMX0FDVElWRRADEiAKHEJJTExJTkdfU1RBVFVTX1RSSUFMX0VYUElSRUQQBCqQAgoNQWNjb3VudFN0YXR1cxIlCiFBQ0NPVU5UX1NUQVRVU19SRUFTT05fVU5TUEVDSUZJRUQQABIrCidBQ0NPVU5UX1NUQVRVU19BQ0NPVU5UX0lOX0VYUElSRURfU1RBVEUQAxInCiNBQ0NPVU5UX1NUQVRVU19BQ0NPVU5UX1RSSUFMX0FDVElWRRAEEigKJEFDQ09VTlRfU1RBVFVTX0FDQ09VTlRfVFJJQUxfRVhQSVJFRBAFIgQIARABIgQIAhACKiRBQ0NPVU5UX1NUQVRVU19FWENFRURTX0FMTE9XRURfTElNSVQqJkFDQ09VTlRfU1RBVFVTX1JFUVVFU1RFRF9FWENFRURTX0xJTUlUKp8BCgtBY2NvdW50Um9sZRIcChhBQ0NPVU5UX1JPTEVfVU5TUEVDSUZJRUQQABIWChJBQ0NPVU5UX1JPTEVfQURNSU4QARIeChpBQ0NPVU5UX1JPTEVfSk9CX0RFVkVMT1BFUhACEhsKF0FDQ09VTlRfUk9MRV9KT0JfVklFV0VSEAMSHQoZQUNDT1VOVF9ST0xFX0pPQl9FWEVDVVRPUhAEMvgWChJVc2VyQWNjb3VudFNlcnZpY2USSgoHR2V0VXNlchIdLm1nbXQudjFhbHBoYTEuR2V0VXNlclJlcXVlc3QaHi5tZ210LnYxYWxwaGExLkdldFVzZXJSZXNwb25zZSIAEkoKB1NldFVzZXISHS5tZ210LnYxYWxwaGExLlNldFVzZXJSZXF1ZXN0Gh4ubWdtdC52MWFscGhhMS5TZXRVc2VyUmVzcG9uc2UiABJiCg9HZXRVc2VyQWNjb3VudHMSJS5tZ210LnYxYWxwaGExLkdldFVzZXJBY2NvdW50c1JlcXVlc3QaJi5tZ210LnYxYWxwaGExLkdldFVzZXJBY2NvdW50c1Jlc3BvbnNlIgASawoSU2V0UGVyc29uYWxBY2NvdW50EigubWdtdC52MWFscGhhMS5TZXRQZXJzb25hbEFjY291bnRSZXF1ZXN0GikubWdtdC52MWFscGhhMS5TZXRQZXJzb25hbEFjY291bnRSZXNwb25zZSIAEokBChxDb252ZXJ0UGVyc29uYWxUb1RlYW1BY2NvdW50EjIubWdtdC52MWFscGhhMS5Db252ZXJ0UGVyc29uYWxUb1RlYW1BY2NvdW50UmVxdWVzdBozLm1nbXQudjFhbHBoYTEuQ29udmVydFBlcnNvbmFsVG9UZWFtQWNjb3VudFJlc3BvbnNlIgASaAoRQ3JlYXRlVGVhbUFjY291bnQSJy5tZ210LnYxYWxwaGExLkNyZWF0ZVRlYW1BY2NvdW50UmVxdWVzdBooLm1nbXQudjFhbHBoYTEuQ3JlYXRlVGVhbUFjY291bnRSZXNwb25zZSIAEmIKD0lzVXNlckluQWNjb3VudBIlLm1nbXQudjFhbHBoYTEuSXNVc2VySW5BY2NvdW50UmVxdWVzdBomLm1nbXQudjFhbHBoYTEuSXNVc2VySW5BY2NvdW50UmVzcG9uc2UiABJ9ChhHZXRBY2NvdW50VGVtcG9yYWxDb25maWcSLi5tZ210LnYxYWxwaGExLkdldEFjY291bnRUZW1wb3JhbENvbmZpZ1JlcXVlc3QaLy5tZ210LnYxYWxwaGExLkdldEFjY291bnRUZW1wb3JhbENvbmZpZ1Jlc3BvbnNlIgASfQoYU2V0QWNjb3VudFRlbXBvcmFsQ29uZmlnEi4ubWdtdC52MWFscGhhMS5TZXRBY2NvdW50VGVtcG9yYWxDb25maWdSZXF1ZXN0Gi8ubWdtdC52MWFscGhhMS5TZXRBY2NvdW50VGVtcG9yYWxDb25maWdSZXNwb25zZSIAEnQKFUdldFRlYW1BY2NvdW50TWVtYmVycxIrLm1nbXQudjFhbHBoYTEuR2V0VGVhbUFjY291bnRNZW1iZXJzUmVxdWVzdBosLm1nbXQudjFhbHBoYTEuR2V0VGVhbUFjY291bnRNZW1iZXJzUmVzcG9uc2UiABJ6ChdSZW1vdmVUZWFtQWNjb3VudE1lbWJlchItLm1nbXQudjFhbHBoYTEuUmVtb3ZlVGVhbUFjY291bnRNZW1iZXJSZXF1ZXN0Gi4ubWdtdC52MWFscGhhMS5SZW1vdmVUZWFtQWNjb3VudE1lbWJlclJlc3BvbnNlIgASegoXSW52aXRlVXNlclRvVGVhbUFjY291bnQSLS5tZ210LnYxYWxwaGExLkludml0ZVVzZXJUb1RlYW1BY2NvdW50UmVxdWVzdBouLm1nbXQudjFhbHBoYTEuSW52aXRlVXNlclRvVGVhbUFjY291bnRSZXNwb25zZSIAEnQKFUdldFRlYW1BY2NvdW50SW52aXRlcxIrLm1nbXQudjFhbHBoYTEuR2V0VGVhbUFjY291bnRJbnZpdGVzUmVxdWVzdBosLm1nbXQudjFhbHBoYTEuR2V0VGVhbUFjY291bnRJbnZpdGVzUmVzcG9uc2UiABJ6ChdSZW1vdmVUZWFtQWNjb3VudEludml0ZRItLm1nbXQudjFhbHBoYTEuUmVtb3ZlVGVhbUFjY291bnRJbnZpdGVSZXF1ZXN0Gi4ubWdtdC52MWFscGhhMS5SZW1vdmVUZWFtQWNjb3VudEludml0ZVJlc3BvbnNlIgASegoXQWNjZXB0VGVhbUFjY291bnRJbnZpdGUSLS5tZ210LnYxYWxwaGExLkFjY2VwdFRlYW1BY2NvdW50SW52aXRlUmVxdWVzdBouLm1nbXQudjFhbHBoYTEuQWNjZXB0VGVhbUFjY291bnRJbnZpdGVSZXNwb25zZSIAEnQKFEdldFN5c3RlbUluZm9ybWF0aW9uEioubWdtdC52MWFscGhhMS5HZXRTeXN0ZW1JbmZvcm1hdGlvblJlcXVlc3QaKy5tZ210LnYxYWxwaGExLkdldFN5c3RlbUluZm9ybWF0aW9uUmVzcG9uc2UiA5ACARKDAQoaR2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWcSMC5tZ210LnYxYWxwaGExLkdldEFjY291bnRPbmJvYXJkaW5nQ29uZmlnUmVxdWVzdBoxLm1nbXQudjFhbHBoYTEuR2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWdSZXNwb25zZSIAEoMBChpTZXRBY2NvdW50T25ib2FyZGluZ0NvbmZpZxIwLm1nbXQudjFhbHBoYTEuU2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWdSZXF1ZXN0GjEubWdtdC52MWFscGhhMS5TZXRBY2NvdW50T25ib2FyZGluZ0NvbmZpZ1Jlc3BvbnNlIgASaAoQR2V0QWNjb3VudFN0YXR1cxImLm1nbXQudjFhbHBoYTEuR2V0QWNjb3VudFN0YXR1c1JlcXVlc3QaJy5tZ210LnYxYWxwaGExLkdldEFjY291bnRTdGF0dXNSZXNwb25zZSIDkAIBEnQKFElzQWNjb3VudFN0YXR1c1ZhbGlkEioubWdtdC52MWFscGhhMS5Jc0FjY291bnRTdGF0dXNWYWxpZFJlcXVlc3QaKy5tZ210LnYxYWxwaGExLklzQWNjb3VudFN0YXR1c1ZhbGlkUmVzcG9uc2UiA5ACARKVAQogR2V0QWNjb3VudEJpbGxpbmdDaGVja291dFNlc3Npb24SNi5tZ210LnYxYWxwaGExLkdldEFjY291bnRCaWxsaW5nQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdBo3Lm1nbXQudjFhbHBoYTEuR2V0QWNjb3VudEJpbGxpbmdDaGVja291dFNlc3Npb25SZXNwb25zZSIAEo8BCh5HZXRBY2NvdW50QmlsbGluZ1BvcnRhbFNlc3Npb24SNC5tZ210LnYxYWxwaGExLkdldEFjY291bnRCaWxsaW5nUG9ydGFsU2Vzc2lvblJlcXVlc3QaNS5tZ210LnYxYWxwaGExLkdldEFjY291bnRCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlIgASbgoSR2V0QmlsbGluZ0FjY291bnRzEigubWdtdC52MWFscGhhMS5HZXRCaWxsaW5nQWNjb3VudHNSZXF1ZXN0GikubWdtdC52MWFscGhhMS5HZXRCaWxsaW5nQWNjb3VudHNSZXNwb25zZSIDkAIBEnEKFFNldEJpbGxpbmdNZXRlckV2ZW50EioubWdtdC52MWFscGhhMS5TZXRCaWxsaW5nTWV0ZXJFdmVudFJlcXVlc3QaKy5tZ210LnYxYWxwaGExLlNldEJpbGxpbmdNZXRlckV2ZW50UmVzcG9uc2UiABJWCgtTZXRVc2VyUm9sZRIhLm1nbXQudjFhbHBoYTEuU2V0VXNlclJvbGVSZXF1ZXN0GiIubWdtdC52MWFscGhhMS5TZXRVc2VyUm9sZVJlc3BvbnNlIgBCzAEKEWNvbS5tZ210LnYxYWxwaGExQhBVc2VyQWNjb3VudFByb3RvUAFaUGdpdGh1Yi5jb20vbnVjbGV1c2Nsb3VkL25lb3N5bmMvYmFja2VuZC9nZW4vZ28vcHJvdG9zL21nbXQvdjFhbHBoYTE7bWdtdHYxYWxwaGExogIDTVhYqgINTWdtdC5WMWFscGhhMcoCDU1nbXRcVjFhbHBoYTHiAhlNZ210XFYxYWxwaGExXEdQQk1ldGFkYXRh6gIOTWdtdDo6VjFhbHBoYTFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp]);
+ fileDesc("CiBtZ210L3YxYWxwaGExL3VzZXJfYWNjb3VudC5wcm90bxINbWdtdC52MWFscGhhMSIQCg5HZXRVc2VyUmVxdWVzdCIiCg9HZXRVc2VyUmVzcG9uc2USDwoHdXNlcl9pZBgBIAEoCSIQCg5TZXRVc2VyUmVxdWVzdCIiCg9TZXRVc2VyUmVzcG9uc2USDwoHdXNlcl9pZBgBIAEoCSIYChZHZXRVc2VyQWNjb3VudHNSZXF1ZXN0IkcKF0dldFVzZXJBY2NvdW50c1Jlc3BvbnNlEiwKCGFjY291bnRzGAEgAygLMhoubWdtdC52MWFscGhhMS5Vc2VyQWNjb3VudCJ1CgtVc2VyQWNjb3VudBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEiwKBHR5cGUYAyABKA4yHi5tZ210LnYxYWxwaGExLlVzZXJBY2NvdW50VHlwZRIeChZoYXNfc3RyaXBlX2N1c3RvbWVyX2lkGAQgASgIIoABCiNDb252ZXJ0UGVyc29uYWxUb1RlYW1BY2NvdW50UmVxdWVzdBInCgRuYW1lGAEgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kEiEKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBSACIAQFCDQoLX2FjY291bnRfaWQilwEKJENvbnZlcnRQZXJzb25hbFRvVGVhbUFjY291bnRSZXNwb25zZRISCgphY2NvdW50X2lkGAEgASgJEiEKFGNoZWNrb3V0X3Nlc3Npb25fdXJsGAIgASgJSACIAQESHwoXbmV3X3BlcnNvbmFsX2FjY291bnRfaWQYAyABKAlCFwoVX2NoZWNrb3V0X3Nlc3Npb25fdXJsIhsKGVNldFBlcnNvbmFsQWNjb3VudFJlcXVlc3QiMAoaU2V0UGVyc29uYWxBY2NvdW50UmVzcG9uc2USEgoKYWNjb3VudF9pZBgBIAEoCSI2ChZJc1VzZXJJbkFjY291bnRSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIiUKF0lzVXNlckluQWNjb3VudFJlc3BvbnNlEgoKAm9rGAEgASgIIj8KH0dldEFjY291bnRUZW1wb3JhbENvbmZpZ1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiWAogR2V0QWNjb3VudFRlbXBvcmFsQ29uZmlnUmVzcG9uc2USNAoGY29uZmlnGAEgASgLMiQubWdtdC52MWFscGhhMS5BY2NvdW50VGVtcG9yYWxDb25maWcidQofU2V0QWNjb3VudFRlbXBvcmFsQ29uZmlnUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARI0CgZjb25maWcYAiABKAsyJC5tZ210LnYxYWxwaGExLkFjY291bnRUZW1wb3JhbENvbmZpZyJYCiBTZXRBY2NvdW50VGVtcG9yYWxDb25maWdSZXNwb25zZRI0CgZjb25maWcYASABKAsyJC5tZ210LnYxYWxwaGExLkFjY291bnRUZW1wb3JhbENvbmZpZyJvChVBY2NvdW50VGVtcG9yYWxDb25maWcSFAoDdXJsGAEgASgJQge6SARyAhABEhoKCW5hbWVzcGFjZRgCIAEoCUIHukgEcgIQARIkChNzeW5jX2pvYl9xdWV1ZV9uYW1lGAMgASgJQge6SARyAhABIkMKGENyZWF0ZVRlYW1BY2NvdW50UmVxdWVzdBInCgRuYW1lGAEgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kImsKGUNyZWF0ZVRlYW1BY2NvdW50UmVzcG9uc2USEgoKYWNjb3VudF9pZBgBIAEoCRIhChRjaGVja291dF9zZXNzaW9uX3VybBgCIAEoCUgAiAEBQhcKFV9jaGVja291dF9zZXNzaW9uX3VybCJvCgtBY2NvdW50VXNlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWltYWdlGAMgASgJEg0KBWVtYWlsGAQgASgJEigKBHJvbGUYBSABKA4yGi5tZ210LnYxYWxwaGExLkFjY291bnRSb2xlIjwKHEdldFRlYW1BY2NvdW50TWVtYmVyc1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiSgodR2V0VGVhbUFjY291bnRNZW1iZXJzUmVzcG9uc2USKQoFdXNlcnMYASADKAsyGi5tZ210LnYxYWxwaGExLkFjY291bnRVc2VyIlkKHlJlbW92ZVRlYW1BY2NvdW50TWVtYmVyUmVxdWVzdBIZCgd1c2VyX2lkGAEgASgJQgi6SAVyA7ABARIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASIhCh9SZW1vdmVUZWFtQWNjb3VudE1lbWJlclJlc3BvbnNlIo4BCh5JbnZpdGVVc2VyVG9UZWFtQWNjb3VudFJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESFgoFZW1haWwYAiABKAlCB7pIBHICEAESLQoEcm9sZRgDIAEoDjIaLm1nbXQudjFhbHBoYTEuQWNjb3VudFJvbGVIAIgBAUIHCgVfcm9sZSKxAgoNQWNjb3VudEludml0ZRIKCgJpZBgBIAEoCRISCgphY2NvdW50X2lkGAIgASgJEhYKDnNlbmRlcl91c2VyX2lkGAMgASgJEg0KBWVtYWlsGAQgASgJEg0KBXRva2VuGAUgASgJEhAKCGFjY2VwdGVkGAYgASgIEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEigKBHJvbGUYCiABKA4yGi5tZ210LnYxYWxwaGExLkFjY291bnRSb2xlIk8KH0ludml0ZVVzZXJUb1RlYW1BY2NvdW50UmVzcG9uc2USLAoGaW52aXRlGAEgASgLMhwubWdtdC52MWFscGhhMS5BY2NvdW50SW52aXRlIjwKHEdldFRlYW1BY2NvdW50SW52aXRlc1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiTgodR2V0VGVhbUFjY291bnRJbnZpdGVzUmVzcG9uc2USLQoHaW52aXRlcxgBIAMoCzIcLm1nbXQudjFhbHBoYTEuQWNjb3VudEludml0ZSI2Ch5SZW1vdmVUZWFtQWNjb3VudEludml0ZVJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBIiEKH1JlbW92ZVRlYW1BY2NvdW50SW52aXRlUmVzcG9uc2UiOAoeQWNjZXB0VGVhbUFjY291bnRJbnZpdGVSZXF1ZXN0EhYKBXRva2VuGAEgASgJQge6SARyAhABIk4KH0FjY2VwdFRlYW1BY2NvdW50SW52aXRlUmVzcG9uc2USKwoHYWNjb3VudBgBIAEoCzIaLm1nbXQudjFhbHBoYTEuVXNlckFjY291bnQiHQobR2V0U3lzdGVtSW5mb3JtYXRpb25SZXF1ZXN0IsIBChxHZXRTeXN0ZW1JbmZvcm1hdGlvblJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSDgoGY29tbWl0GAIgASgJEhAKCGNvbXBpbGVyGAMgASgJEhAKCHBsYXRmb3JtGAQgASgJEi4KCmJ1aWxkX2RhdGUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KB2xpY2Vuc2UYBiABKAsyHC5tZ210LnYxYWxwaGExLlN5c3RlbUxpY2Vuc2UiawoNU3lzdGVtTGljZW5zZRIQCghpc192YWxpZBgBIAEoCBIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIYChBpc19uZW9zeW5jX2Nsb3VkGAMgASgIIkEKIUdldEFjY291bnRPbmJvYXJkaW5nQ29uZmlnUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASJcCiJHZXRBY2NvdW50T25ib2FyZGluZ0NvbmZpZ1Jlc3BvbnNlEjYKBmNvbmZpZxgBIAEoCzImLm1nbXQudjFhbHBoYTEuQWNjb3VudE9uYm9hcmRpbmdDb25maWcieQohU2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWdSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEjYKBmNvbmZpZxgCIAEoCzImLm1nbXQudjFhbHBoYTEuQWNjb3VudE9uYm9hcmRpbmdDb25maWciXAoiU2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWdSZXNwb25zZRI2CgZjb25maWcYASABKAsyJi5tZ210LnYxYWxwaGExLkFjY291bnRPbmJvYXJkaW5nQ29uZmlnIlMKF0FjY291bnRPbmJvYXJkaW5nQ29uZmlnEiAKGGhhc19jb21wbGV0ZWRfb25ib2FyZGluZxgFIAEoCEoECAEQAkoECAIQA0oECAMQBEoECAQQBSI3ChdHZXRBY2NvdW50U3RhdHVzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASKsAQoYR2V0QWNjb3VudFN0YXR1c1Jlc3BvbnNlEhkKEXVzZWRfcmVjb3JkX2NvdW50GAEgASgEEiEKFGFsbG93ZWRfcmVjb3JkX2NvdW50GAIgASgESACIAQESOQoTc3Vic2NyaXB0aW9uX3N0YXR1cxgDIAEoDjIcLm1nbXQudjFhbHBoYTEuQmlsbGluZ1N0YXR1c0IXChVfYWxsb3dlZF9yZWNvcmRfY291bnQiewobSXNBY2NvdW50U3RhdHVzVmFsaWRSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEiMKFnJlcXVlc3RlZF9yZWNvcmRfY291bnQYAiABKARIAIgBAUIZChdfcmVxdWVzdGVkX3JlY29yZF9jb3VudCL3AQocSXNBY2NvdW50U3RhdHVzVmFsaWRSZXNwb25zZRIQCghpc192YWxpZBgBIAEoCBITCgZyZWFzb24YAiABKAlIAIgBARITCgtzaG91bGRfcG9sbBgDIAEoCBI0Cg5hY2NvdW50X3N0YXR1cxgGIAEoDjIcLm1nbXQudjFhbHBoYTEuQWNjb3VudFN0YXR1cxI5ChB0cmlhbF9leHBpcmVzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgkKB19yZWFzb25CEwoRX3RyaWFsX2V4cGlyZXNfYXRKBAgEEAVKBAgFEAYiRwonR2V0QWNjb3VudEJpbGxpbmdDaGVja291dFNlc3Npb25SZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIkgKKEdldEFjY291bnRCaWxsaW5nQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USHAoUY2hlY2tvdXRfc2Vzc2lvbl91cmwYASABKAkiRQolR2V0QWNjb3VudEJpbGxpbmdQb3J0YWxTZXNzaW9uUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASJECiZHZXRBY2NvdW50QmlsbGluZ1BvcnRhbFNlc3Npb25SZXNwb25zZRIaChJwb3J0YWxfc2Vzc2lvbl91cmwYASABKAkiMAoZR2V0QmlsbGluZ0FjY291bnRzUmVxdWVzdBITCgthY2NvdW50X2lkcxgBIAMoCSJKChpHZXRCaWxsaW5nQWNjb3VudHNSZXNwb25zZRIsCghhY2NvdW50cxgBIAMoCzIaLm1nbXQudjFhbHBoYTEuVXNlckFjY291bnQisQEKG1NldEJpbGxpbmdNZXRlckV2ZW50UmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIbCgpldmVudF9uYW1lGAIgASgJQge6SARyAhABEhYKBXZhbHVlGAMgASgJQge6SARyAhABEhkKCGV2ZW50X2lkGAQgASgJQge6SARyAhABEhYKCXRpbWVzdGFtcBgFIAEoBEgAiAEBQgwKCl90aW1lc3RhbXAiHgocU2V0QmlsbGluZ01ldGVyRXZlbnRSZXNwb25zZSJ3ChJTZXRVc2VyUm9sZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESGQoHdXNlcl9pZBgCIAEoCUIIukgFcgOwAQESKAoEcm9sZRgDIAEoDjIaLm1nbXQudjFhbHBoYTEuQWNjb3VudFJvbGUiFQoTU2V0VXNlclJvbGVSZXNwb25zZSqSAQoPVXNlckFjY291bnRUeXBlEiEKHVVTRVJfQUNDT1VOVF9UWVBFX1VOU1BFQ0lGSUVEEAASHgoaVVNFUl9BQ0NPVU5UX1RZUEVfUEVSU09OQUwQARIaChZVU0VSX0FDQ09VTlRfVFlQRV9URUFNEAISIAocVVNFUl9BQ0NPVU5UX1RZUEVfRU5URVJQUklTRRADKqkBCg1CaWxsaW5nU3RhdHVzEh4KGkJJTExJTkdfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGQoVQklMTElOR19TVEFUVVNfQUNUSVZFEAESGgoWQklMTElOR19TVEFUVVNfRVhQSVJFRBACEh8KG0JJTExJTkdfU1RBVFVTX1RSSUFMX0FDVElWRRADEiAKHEJJTExJTkdfU1RBVFVTX1RSSUFMX0VYUElSRUQQBCqQAgoNQWNjb3VudFN0YXR1cxIlCiFBQ0NPVU5UX1NUQVRVU19SRUFTT05fVU5TUEVDSUZJRUQQABIrCidBQ0NPVU5UX1NUQVRVU19BQ0NPVU5UX0lOX0VYUElSRURfU1RBVEUQAxInCiNBQ0NPVU5UX1NUQVRVU19BQ0NPVU5UX1RSSUFMX0FDVElWRRAEEigKJEFDQ09VTlRfU1RBVFVTX0FDQ09VTlRfVFJJQUxfRVhQSVJFRBAFIgQIARABIgQIAhACKiRBQ0NPVU5UX1NUQVRVU19FWENFRURTX0FMTE9XRURfTElNSVQqJkFDQ09VTlRfU1RBVFVTX1JFUVVFU1RFRF9FWENFRURTX0xJTUlUKp8BCgtBY2NvdW50Um9sZRIcChhBQ0NPVU5UX1JPTEVfVU5TUEVDSUZJRUQQABIWChJBQ0NPVU5UX1JPTEVfQURNSU4QARIeChpBQ0NPVU5UX1JPTEVfSk9CX0RFVkVMT1BFUhACEhsKF0FDQ09VTlRfUk9MRV9KT0JfVklFV0VSEAMSHQoZQUNDT1VOVF9ST0xFX0pPQl9FWEVDVVRPUhAEMvgWChJVc2VyQWNjb3VudFNlcnZpY2USSgoHR2V0VXNlchIdLm1nbXQudjFhbHBoYTEuR2V0VXNlclJlcXVlc3QaHi5tZ210LnYxYWxwaGExLkdldFVzZXJSZXNwb25zZSIAEkoKB1NldFVzZXISHS5tZ210LnYxYWxwaGExLlNldFVzZXJSZXF1ZXN0Gh4ubWdtdC52MWFscGhhMS5TZXRVc2VyUmVzcG9uc2UiABJiCg9HZXRVc2VyQWNjb3VudHMSJS5tZ210LnYxYWxwaGExLkdldFVzZXJBY2NvdW50c1JlcXVlc3QaJi5tZ210LnYxYWxwaGExLkdldFVzZXJBY2NvdW50c1Jlc3BvbnNlIgASawoSU2V0UGVyc29uYWxBY2NvdW50EigubWdtdC52MWFscGhhMS5TZXRQZXJzb25hbEFjY291bnRSZXF1ZXN0GikubWdtdC52MWFscGhhMS5TZXRQZXJzb25hbEFjY291bnRSZXNwb25zZSIAEokBChxDb252ZXJ0UGVyc29uYWxUb1RlYW1BY2NvdW50EjIubWdtdC52MWFscGhhMS5Db252ZXJ0UGVyc29uYWxUb1RlYW1BY2NvdW50UmVxdWVzdBozLm1nbXQudjFhbHBoYTEuQ29udmVydFBlcnNvbmFsVG9UZWFtQWNjb3VudFJlc3BvbnNlIgASaAoRQ3JlYXRlVGVhbUFjY291bnQSJy5tZ210LnYxYWxwaGExLkNyZWF0ZVRlYW1BY2NvdW50UmVxdWVzdBooLm1nbXQudjFhbHBoYTEuQ3JlYXRlVGVhbUFjY291bnRSZXNwb25zZSIAEmIKD0lzVXNlckluQWNjb3VudBIlLm1nbXQudjFhbHBoYTEuSXNVc2VySW5BY2NvdW50UmVxdWVzdBomLm1nbXQudjFhbHBoYTEuSXNVc2VySW5BY2NvdW50UmVzcG9uc2UiABJ9ChhHZXRBY2NvdW50VGVtcG9yYWxDb25maWcSLi5tZ210LnYxYWxwaGExLkdldEFjY291bnRUZW1wb3JhbENvbmZpZ1JlcXVlc3QaLy5tZ210LnYxYWxwaGExLkdldEFjY291bnRUZW1wb3JhbENvbmZpZ1Jlc3BvbnNlIgASfQoYU2V0QWNjb3VudFRlbXBvcmFsQ29uZmlnEi4ubWdtdC52MWFscGhhMS5TZXRBY2NvdW50VGVtcG9yYWxDb25maWdSZXF1ZXN0Gi8ubWdtdC52MWFscGhhMS5TZXRBY2NvdW50VGVtcG9yYWxDb25maWdSZXNwb25zZSIAEnQKFUdldFRlYW1BY2NvdW50TWVtYmVycxIrLm1nbXQudjFhbHBoYTEuR2V0VGVhbUFjY291bnRNZW1iZXJzUmVxdWVzdBosLm1nbXQudjFhbHBoYTEuR2V0VGVhbUFjY291bnRNZW1iZXJzUmVzcG9uc2UiABJ6ChdSZW1vdmVUZWFtQWNjb3VudE1lbWJlchItLm1nbXQudjFhbHBoYTEuUmVtb3ZlVGVhbUFjY291bnRNZW1iZXJSZXF1ZXN0Gi4ubWdtdC52MWFscGhhMS5SZW1vdmVUZWFtQWNjb3VudE1lbWJlclJlc3BvbnNlIgASegoXSW52aXRlVXNlclRvVGVhbUFjY291bnQSLS5tZ210LnYxYWxwaGExLkludml0ZVVzZXJUb1RlYW1BY2NvdW50UmVxdWVzdBouLm1nbXQudjFhbHBoYTEuSW52aXRlVXNlclRvVGVhbUFjY291bnRSZXNwb25zZSIAEnQKFUdldFRlYW1BY2NvdW50SW52aXRlcxIrLm1nbXQudjFhbHBoYTEuR2V0VGVhbUFjY291bnRJbnZpdGVzUmVxdWVzdBosLm1nbXQudjFhbHBoYTEuR2V0VGVhbUFjY291bnRJbnZpdGVzUmVzcG9uc2UiABJ6ChdSZW1vdmVUZWFtQWNjb3VudEludml0ZRItLm1nbXQudjFhbHBoYTEuUmVtb3ZlVGVhbUFjY291bnRJbnZpdGVSZXF1ZXN0Gi4ubWdtdC52MWFscGhhMS5SZW1vdmVUZWFtQWNjb3VudEludml0ZVJlc3BvbnNlIgASegoXQWNjZXB0VGVhbUFjY291bnRJbnZpdGUSLS5tZ210LnYxYWxwaGExLkFjY2VwdFRlYW1BY2NvdW50SW52aXRlUmVxdWVzdBouLm1nbXQudjFhbHBoYTEuQWNjZXB0VGVhbUFjY291bnRJbnZpdGVSZXNwb25zZSIAEnQKFEdldFN5c3RlbUluZm9ybWF0aW9uEioubWdtdC52MWFscGhhMS5HZXRTeXN0ZW1JbmZvcm1hdGlvblJlcXVlc3QaKy5tZ210LnYxYWxwaGExLkdldFN5c3RlbUluZm9ybWF0aW9uUmVzcG9uc2UiA5ACARKDAQoaR2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWcSMC5tZ210LnYxYWxwaGExLkdldEFjY291bnRPbmJvYXJkaW5nQ29uZmlnUmVxdWVzdBoxLm1nbXQudjFhbHBoYTEuR2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWdSZXNwb25zZSIAEoMBChpTZXRBY2NvdW50T25ib2FyZGluZ0NvbmZpZxIwLm1nbXQudjFhbHBoYTEuU2V0QWNjb3VudE9uYm9hcmRpbmdDb25maWdSZXF1ZXN0GjEubWdtdC52MWFscGhhMS5TZXRBY2NvdW50T25ib2FyZGluZ0NvbmZpZ1Jlc3BvbnNlIgASaAoQR2V0QWNjb3VudFN0YXR1cxImLm1nbXQudjFhbHBoYTEuR2V0QWNjb3VudFN0YXR1c1JlcXVlc3QaJy5tZ210LnYxYWxwaGExLkdldEFjY291bnRTdGF0dXNSZXNwb25zZSIDkAIBEnQKFElzQWNjb3VudFN0YXR1c1ZhbGlkEioubWdtdC52MWFscGhhMS5Jc0FjY291bnRTdGF0dXNWYWxpZFJlcXVlc3QaKy5tZ210LnYxYWxwaGExLklzQWNjb3VudFN0YXR1c1ZhbGlkUmVzcG9uc2UiA5ACARKVAQogR2V0QWNjb3VudEJpbGxpbmdDaGVja291dFNlc3Npb24SNi5tZ210LnYxYWxwaGExLkdldEFjY291bnRCaWxsaW5nQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdBo3Lm1nbXQudjFhbHBoYTEuR2V0QWNjb3VudEJpbGxpbmdDaGVja291dFNlc3Npb25SZXNwb25zZSIAEo8BCh5HZXRBY2NvdW50QmlsbGluZ1BvcnRhbFNlc3Npb24SNC5tZ210LnYxYWxwaGExLkdldEFjY291bnRCaWxsaW5nUG9ydGFsU2Vzc2lvblJlcXVlc3QaNS5tZ210LnYxYWxwaGExLkdldEFjY291bnRCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlIgASbgoSR2V0QmlsbGluZ0FjY291bnRzEigubWdtdC52MWFscGhhMS5HZXRCaWxsaW5nQWNjb3VudHNSZXF1ZXN0GikubWdtdC52MWFscGhhMS5HZXRCaWxsaW5nQWNjb3VudHNSZXNwb25zZSIDkAIBEnEKFFNldEJpbGxpbmdNZXRlckV2ZW50EioubWdtdC52MWFscGhhMS5TZXRCaWxsaW5nTWV0ZXJFdmVudFJlcXVlc3QaKy5tZ210LnYxYWxwaGExLlNldEJpbGxpbmdNZXRlckV2ZW50UmVzcG9uc2UiABJWCgtTZXRVc2VyUm9sZRIhLm1nbXQudjFhbHBoYTEuU2V0VXNlclJvbGVSZXF1ZXN0GiIubWdtdC52MWFscGhhMS5TZXRVc2VyUm9sZVJlc3BvbnNlIgBCzAEKEWNvbS5tZ210LnYxYWxwaGExQhBVc2VyQWNjb3VudFByb3RvUAFaUGdpdGh1Yi5jb20vbnVjbGV1c2Nsb3VkL25lb3N5bmMvYmFja2VuZC9nZW4vZ28vcHJvdG9zL21nbXQvdjFhbHBoYTE7bWdtdHYxYWxwaGExogIDTVhYqgINTWdtdC5WMWFscGhhMcoCDU1nbXRcVjFhbHBoYTHiAhlNZ210XFYxYWxwaGExXEdQQk1ldGFkYXRh6gIOTWdtdDo6VjFhbHBoYTFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp]);
/**
* @generated from message mgmt.v1alpha1.GetUserRequest
@@ -778,9 +778,18 @@ export type GetSystemInformationResponse = Message<"mgmt.v1alpha1.GetSystemInfor
platform: string;
/**
+ * The time when the build was created
+ *
* @generated from field: google.protobuf.Timestamp build_date = 5;
*/
buildDate?: Timestamp;
+
+ /**
+ * The license information for the system
+ *
+ * @generated from field: mgmt.v1alpha1.SystemLicense license = 6;
+ */
+ license?: SystemLicense;
};
/**
@@ -790,6 +799,39 @@ export type GetSystemInformationResponse = Message<"mgmt.v1alpha1.GetSystemInfor
export const GetSystemInformationResponseSchema: GenMessage = /*@__PURE__*/
messageDesc(file_mgmt_v1alpha1_user_account, 35);
+/**
+ * @generated from message mgmt.v1alpha1.SystemLicense
+ */
+export type SystemLicense = Message<"mgmt.v1alpha1.SystemLicense"> & {
+ /**
+ * Whether or not a valid license was found
+ *
+ * @generated from field: bool is_valid = 1;
+ */
+ isValid: boolean;
+
+ /**
+ * The time when the license expires
+ *
+ * @generated from field: google.protobuf.Timestamp expires_at = 2;
+ */
+ expiresAt?: Timestamp;
+
+ /**
+ * Whether or not the license is for NeosyncCloud
+ *
+ * @generated from field: bool is_neosync_cloud = 3;
+ */
+ isNeosyncCloud: boolean;
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.SystemLicense.
+ * Use `create(SystemLicenseSchema)` to create a new message.
+ */
+export const SystemLicenseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_user_account, 36);
+
/**
* @generated from message mgmt.v1alpha1.GetAccountOnboardingConfigRequest
*/
@@ -805,7 +847,7 @@ export type GetAccountOnboardingConfigRequest = Message<"mgmt.v1alpha1.GetAccoun
* Use `create(GetAccountOnboardingConfigRequestSchema)` to create a new message.
*/
export const GetAccountOnboardingConfigRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 36);
+ messageDesc(file_mgmt_v1alpha1_user_account, 37);
/**
* @generated from message mgmt.v1alpha1.GetAccountOnboardingConfigResponse
@@ -822,7 +864,7 @@ export type GetAccountOnboardingConfigResponse = Message<"mgmt.v1alpha1.GetAccou
* Use `create(GetAccountOnboardingConfigResponseSchema)` to create a new message.
*/
export const GetAccountOnboardingConfigResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 37);
+ messageDesc(file_mgmt_v1alpha1_user_account, 38);
/**
* @generated from message mgmt.v1alpha1.SetAccountOnboardingConfigRequest
@@ -844,7 +886,7 @@ export type SetAccountOnboardingConfigRequest = Message<"mgmt.v1alpha1.SetAccoun
* Use `create(SetAccountOnboardingConfigRequestSchema)` to create a new message.
*/
export const SetAccountOnboardingConfigRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 38);
+ messageDesc(file_mgmt_v1alpha1_user_account, 39);
/**
* @generated from message mgmt.v1alpha1.SetAccountOnboardingConfigResponse
@@ -861,7 +903,7 @@ export type SetAccountOnboardingConfigResponse = Message<"mgmt.v1alpha1.SetAccou
* Use `create(SetAccountOnboardingConfigResponseSchema)` to create a new message.
*/
export const SetAccountOnboardingConfigResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 39);
+ messageDesc(file_mgmt_v1alpha1_user_account, 40);
/**
* @generated from message mgmt.v1alpha1.AccountOnboardingConfig
@@ -878,7 +920,7 @@ export type AccountOnboardingConfig = Message<"mgmt.v1alpha1.AccountOnboardingCo
* Use `create(AccountOnboardingConfigSchema)` to create a new message.
*/
export const AccountOnboardingConfigSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 40);
+ messageDesc(file_mgmt_v1alpha1_user_account, 41);
/**
* @generated from message mgmt.v1alpha1.GetAccountStatusRequest
@@ -895,7 +937,7 @@ export type GetAccountStatusRequest = Message<"mgmt.v1alpha1.GetAccountStatusReq
* Use `create(GetAccountStatusRequestSchema)` to create a new message.
*/
export const GetAccountStatusRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 41);
+ messageDesc(file_mgmt_v1alpha1_user_account, 42);
/**
* @generated from message mgmt.v1alpha1.GetAccountStatusResponse
@@ -929,7 +971,7 @@ export type GetAccountStatusResponse = Message<"mgmt.v1alpha1.GetAccountStatusRe
* Use `create(GetAccountStatusResponseSchema)` to create a new message.
*/
export const GetAccountStatusResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 42);
+ messageDesc(file_mgmt_v1alpha1_user_account, 43);
/**
* @generated from message mgmt.v1alpha1.IsAccountStatusValidRequest
@@ -953,7 +995,7 @@ export type IsAccountStatusValidRequest = Message<"mgmt.v1alpha1.IsAccountStatus
* Use `create(IsAccountStatusValidRequestSchema)` to create a new message.
*/
export const IsAccountStatusValidRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 43);
+ messageDesc(file_mgmt_v1alpha1_user_account, 44);
/**
* @generated from message mgmt.v1alpha1.IsAccountStatusValidResponse
@@ -998,7 +1040,7 @@ export type IsAccountStatusValidResponse = Message<"mgmt.v1alpha1.IsAccountStatu
* Use `create(IsAccountStatusValidResponseSchema)` to create a new message.
*/
export const IsAccountStatusValidResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 44);
+ messageDesc(file_mgmt_v1alpha1_user_account, 45);
/**
* @generated from message mgmt.v1alpha1.GetAccountBillingCheckoutSessionRequest
@@ -1015,7 +1057,7 @@ export type GetAccountBillingCheckoutSessionRequest = Message<"mgmt.v1alpha1.Get
* Use `create(GetAccountBillingCheckoutSessionRequestSchema)` to create a new message.
*/
export const GetAccountBillingCheckoutSessionRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 45);
+ messageDesc(file_mgmt_v1alpha1_user_account, 46);
/**
* @generated from message mgmt.v1alpha1.GetAccountBillingCheckoutSessionResponse
@@ -1034,7 +1076,7 @@ export type GetAccountBillingCheckoutSessionResponse = Message<"mgmt.v1alpha1.Ge
* Use `create(GetAccountBillingCheckoutSessionResponseSchema)` to create a new message.
*/
export const GetAccountBillingCheckoutSessionResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 46);
+ messageDesc(file_mgmt_v1alpha1_user_account, 47);
/**
* @generated from message mgmt.v1alpha1.GetAccountBillingPortalSessionRequest
@@ -1051,7 +1093,7 @@ export type GetAccountBillingPortalSessionRequest = Message<"mgmt.v1alpha1.GetAc
* Use `create(GetAccountBillingPortalSessionRequestSchema)` to create a new message.
*/
export const GetAccountBillingPortalSessionRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 47);
+ messageDesc(file_mgmt_v1alpha1_user_account, 48);
/**
* @generated from message mgmt.v1alpha1.GetAccountBillingPortalSessionResponse
@@ -1070,7 +1112,7 @@ export type GetAccountBillingPortalSessionResponse = Message<"mgmt.v1alpha1.GetA
* Use `create(GetAccountBillingPortalSessionResponseSchema)` to create a new message.
*/
export const GetAccountBillingPortalSessionResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 48);
+ messageDesc(file_mgmt_v1alpha1_user_account, 49);
/**
* @generated from message mgmt.v1alpha1.GetBillingAccountsRequest
@@ -1089,7 +1131,7 @@ export type GetBillingAccountsRequest = Message<"mgmt.v1alpha1.GetBillingAccount
* Use `create(GetBillingAccountsRequestSchema)` to create a new message.
*/
export const GetBillingAccountsRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 49);
+ messageDesc(file_mgmt_v1alpha1_user_account, 50);
/**
* @generated from message mgmt.v1alpha1.GetBillingAccountsResponse
@@ -1106,7 +1148,7 @@ export type GetBillingAccountsResponse = Message<"mgmt.v1alpha1.GetBillingAccoun
* Use `create(GetBillingAccountsResponseSchema)` to create a new message.
*/
export const GetBillingAccountsResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 50);
+ messageDesc(file_mgmt_v1alpha1_user_account, 51);
/**
* @generated from message mgmt.v1alpha1.SetBillingMeterEventRequest
@@ -1153,7 +1195,7 @@ export type SetBillingMeterEventRequest = Message<"mgmt.v1alpha1.SetBillingMeter
* Use `create(SetBillingMeterEventRequestSchema)` to create a new message.
*/
export const SetBillingMeterEventRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 51);
+ messageDesc(file_mgmt_v1alpha1_user_account, 52);
/**
* @generated from message mgmt.v1alpha1.SetBillingMeterEventResponse
@@ -1166,7 +1208,7 @@ export type SetBillingMeterEventResponse = Message<"mgmt.v1alpha1.SetBillingMete
* Use `create(SetBillingMeterEventResponseSchema)` to create a new message.
*/
export const SetBillingMeterEventResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 52);
+ messageDesc(file_mgmt_v1alpha1_user_account, 53);
/**
* @generated from message mgmt.v1alpha1.SetUserRoleRequest
@@ -1199,7 +1241,7 @@ export type SetUserRoleRequest = Message<"mgmt.v1alpha1.SetUserRoleRequest"> & {
* Use `create(SetUserRoleRequestSchema)` to create a new message.
*/
export const SetUserRoleRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 53);
+ messageDesc(file_mgmt_v1alpha1_user_account, 54);
/**
* @generated from message mgmt.v1alpha1.SetUserRoleResponse
@@ -1212,7 +1254,7 @@ export type SetUserRoleResponse = Message<"mgmt.v1alpha1.SetUserRoleResponse"> &
* Use `create(SetUserRoleResponseSchema)` to create a new message.
*/
export const SetUserRoleResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_mgmt_v1alpha1_user_account, 54);
+ messageDesc(file_mgmt_v1alpha1_user_account, 55);
/**
* @generated from enum mgmt.v1alpha1.UserAccountType
diff --git a/internal/ee/cloud-license/license.go b/internal/ee/cloud-license/license.go
index 405250de4d..7044724f30 100644
--- a/internal/ee/cloud-license/license.go
+++ b/internal/ee/cloud-license/license.go
@@ -25,6 +25,7 @@ type licenseFile struct {
type Interface interface {
IsValid() bool
+ ExpiresAt() time.Time
}
var _ Interface = (*CloudLicense)(nil)
@@ -51,6 +52,13 @@ func (c *CloudLicense) IsValid() bool {
return c.contents != nil && c.contents.IsValid()
}
+func (c *CloudLicense) ExpiresAt() time.Time {
+ if c.contents == nil {
+ return time.Now().UTC()
+ }
+ return c.contents.ExpiresAt
+}
+
type licenseContents struct {
Version string `json:"version"`
Id string `json:"id"`
diff --git a/internal/ee/license/cascade.go b/internal/ee/license/cascade.go
index 39b88e364c..37a46316b1 100644
--- a/internal/ee/license/cascade.go
+++ b/internal/ee/license/cascade.go
@@ -1,21 +1,30 @@
package license
+import "time"
+
type CascadeLicense struct {
- isValid bool
+ isValid bool
+ expiresAt time.Time
}
// Checks multiple licenses in input order to see if any are valid
func NewCascadeLicense(licenses ...EEInterface) *CascadeLicense {
isValid := false
+ expiresAt := time.Time{}
for _, l := range licenses {
if l.IsValid() {
isValid = true
+ expiresAt = l.ExpiresAt()
break
}
}
- return &CascadeLicense{isValid: isValid}
+ return &CascadeLicense{isValid: isValid, expiresAt: expiresAt}
}
func (c *CascadeLicense) IsValid() bool {
return c.isValid
}
+
+func (c *CascadeLicense) ExpiresAt() time.Time {
+ return c.expiresAt
+}
diff --git a/internal/ee/license/license.go b/internal/ee/license/license.go
index 61571c5d95..1726340871 100644
--- a/internal/ee/license/license.go
+++ b/internal/ee/license/license.go
@@ -29,6 +29,7 @@ type licenseFile struct {
type EEInterface interface {
IsValid() bool
+ ExpiresAt() time.Time
}
var _ EEInterface = (*EELicense)(nil)
@@ -41,6 +42,13 @@ func (e *EELicense) IsValid() bool {
return e.contents != nil && e.contents.IsValid()
}
+func (e *EELicense) ExpiresAt() time.Time {
+ if e.contents == nil {
+ return time.Now().UTC()
+ }
+ return e.contents.ExpiresAt
+}
+
// Retrieves the EE license from the environment
// If not enabled, will still return valid struct.
// Errors if not able to properly parse a provided EE license from the environment
diff --git a/internal/testutil/utils.go b/internal/testutil/utils.go
index b47b715089..c93fa2bd0b 100644
--- a/internal/testutil/utils.go
+++ b/internal/testutil/utils.go
@@ -12,6 +12,7 @@ import (
"path/filepath"
"runtime"
"testing"
+ "time"
"github.com/neilotoole/slogt"
"github.com/testcontainers/testcontainers-go"
@@ -86,6 +87,10 @@ func (f *FakeEELicense) IsValid() bool {
return f.isValid
}
+func (f *FakeEELicense) ExpiresAt() time.Time {
+ return time.Now().Add(time.Hour * 24 * 365)
+}
+
func GetConcurrentTestLogger(t testing.TB) *slog.Logger {
if testing.Verbose() {
return slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{}))
diff --git a/python/src/neosync/mgmt/v1alpha1/user_account_pb2.py b/python/src/neosync/mgmt/v1alpha1/user_account_pb2.py
index 3675daf42f..aba79643d5 100644
--- a/python/src/neosync/mgmt/v1alpha1/user_account_pb2.py
+++ b/python/src/neosync/mgmt/v1alpha1/user_account_pb2.py
@@ -26,7 +26,7 @@
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n mgmt/v1alpha1/user_account.proto\x12\rmgmt.v1alpha1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x10\n\x0eGetUserRequest\"*\n\x0fGetUserResponse\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\"\x10\n\x0eSetUserRequest\"*\n\x0fSetUserResponse\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\"\x18\n\x16GetUserAccountsRequest\"Q\n\x17GetUserAccountsResponse\x12\x36\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.UserAccountR\x08\x61\x63\x63ounts\"\x9a\x01\n\x0bUserAccount\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x32\n\x04type\x18\x03 \x01(\x0e\x32\x1e.mgmt.v1alpha1.UserAccountTypeR\x04type\x12\x33\n\x16has_stripe_customer_id\x18\x04 \x01(\x08R\x13hasStripeCustomerId\"\x91\x01\n#ConvertPersonalToTeamAccountRequest\x12-\n\x04name\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\x12,\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\taccountId\x88\x01\x01\x42\r\n\x0b_account_id\"\xcc\x01\n$ConvertPersonalToTeamAccountResponse\x12\x1d\n\naccount_id\x18\x01 \x01(\tR\taccountId\x12\x35\n\x14\x63heckout_session_url\x18\x02 \x01(\tH\x00R\x12\x63heckoutSessionUrl\x88\x01\x01\x12\x35\n\x17new_personal_account_id\x18\x03 \x01(\tR\x14newPersonalAccountIdB\x17\n\x15_checkout_session_url\"\x1b\n\x19SetPersonalAccountRequest\";\n\x1aSetPersonalAccountResponse\x12\x1d\n\naccount_id\x18\x01 \x01(\tR\taccountId\"A\n\x16IsUserInAccountRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\")\n\x17IsUserInAccountResponse\x12\x0e\n\x02ok\x18\x01 \x01(\x08R\x02ok\"J\n\x1fGetAccountTemporalConfigRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"`\n GetAccountTemporalConfigResponse\x12<\n\x06\x63onfig\x18\x01 \x01(\x0b\x32$.mgmt.v1alpha1.AccountTemporalConfigR\x06\x63onfig\"\x88\x01\n\x1fSetAccountTemporalConfigRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12<\n\x06\x63onfig\x18\x02 \x01(\x0b\x32$.mgmt.v1alpha1.AccountTemporalConfigR\x06\x63onfig\"`\n SetAccountTemporalConfigResponse\x12<\n\x06\x63onfig\x18\x01 \x01(\x0b\x32$.mgmt.v1alpha1.AccountTemporalConfigR\x06\x63onfig\"\x91\x01\n\x15\x41\x63\x63ountTemporalConfig\x12\x19\n\x03url\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03url\x12%\n\tnamespace\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\tnamespace\x12\x36\n\x13sync_job_queue_name\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x10syncJobQueueName\"I\n\x18\x43reateTeamAccountRequest\x12-\n\x04name\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\"\x8a\x01\n\x19\x43reateTeamAccountResponse\x12\x1d\n\naccount_id\x18\x01 \x01(\tR\taccountId\x12\x35\n\x14\x63heckout_session_url\x18\x02 \x01(\tH\x00R\x12\x63heckoutSessionUrl\x88\x01\x01\x42\x17\n\x15_checkout_session_url\"\x8d\x01\n\x0b\x41\x63\x63ountUser\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05image\x18\x03 \x01(\tR\x05image\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12.\n\x04role\x18\x05 \x01(\x0e\x32\x1a.mgmt.v1alpha1.AccountRoleR\x04role\"G\n\x1cGetTeamAccountMembersRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"Q\n\x1dGetTeamAccountMembersResponse\x12\x30\n\x05users\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.AccountUserR\x05users\"l\n\x1eRemoveTeamAccountMemberRequest\x12!\n\x07user_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06userId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"!\n\x1fRemoveTeamAccountMemberResponse\"\xa6\x01\n\x1eInviteUserToTeamAccountRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x1d\n\x05\x65mail\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05\x65mail\x12\x33\n\x04role\x18\x03 \x01(\x0e\x32\x1a.mgmt.v1alpha1.AccountRoleH\x00R\x04role\x88\x01\x01\x42\x07\n\x05_role\"\x8d\x03\n\rAccountInvite\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n\naccount_id\x18\x02 \x01(\tR\taccountId\x12$\n\x0esender_user_id\x18\x03 \x01(\tR\x0csenderUserId\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\x12\x1a\n\x08\x61\x63\x63\x65pted\x18\x06 \x01(\x08R\x08\x61\x63\x63\x65pted\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x39\n\nexpires_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12.\n\x04role\x18\n \x01(\x0e\x32\x1a.mgmt.v1alpha1.AccountRoleR\x04role\"W\n\x1fInviteUserToTeamAccountResponse\x12\x34\n\x06invite\x18\x01 \x01(\x0b\x32\x1c.mgmt.v1alpha1.AccountInviteR\x06invite\"G\n\x1cGetTeamAccountInvitesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"W\n\x1dGetTeamAccountInvitesResponse\x12\x36\n\x07invites\x18\x01 \x03(\x0b\x32\x1c.mgmt.v1alpha1.AccountInviteR\x07invites\":\n\x1eRemoveTeamAccountInviteRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"!\n\x1fRemoveTeamAccountInviteResponse\"?\n\x1e\x41\x63\x63\x65ptTeamAccountInviteRequest\x12\x1d\n\x05token\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05token\"W\n\x1f\x41\x63\x63\x65ptTeamAccountInviteResponse\x12\x34\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0b\x32\x1a.mgmt.v1alpha1.UserAccountR\x07\x61\x63\x63ount\"\x1d\n\x1bGetSystemInformationRequest\"\xc3\x01\n\x1cGetSystemInformationResponse\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x16\n\x06\x63ommit\x18\x02 \x01(\tR\x06\x63ommit\x12\x1a\n\x08\x63ompiler\x18\x03 \x01(\tR\x08\x63ompiler\x12\x1a\n\x08platform\x18\x04 \x01(\tR\x08platform\x12\x39\n\nbuild_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tbuildDate\"L\n!GetAccountOnboardingConfigRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"d\n\"GetAccountOnboardingConfigResponse\x12>\n\x06\x63onfig\x18\x01 \x01(\x0b\x32&.mgmt.v1alpha1.AccountOnboardingConfigR\x06\x63onfig\"\x8c\x01\n!SetAccountOnboardingConfigRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12>\n\x06\x63onfig\x18\x02 \x01(\x0b\x32&.mgmt.v1alpha1.AccountOnboardingConfigR\x06\x63onfig\"d\n\"SetAccountOnboardingConfigResponse\x12>\n\x06\x63onfig\x18\x01 \x01(\x0b\x32&.mgmt.v1alpha1.AccountOnboardingConfigR\x06\x63onfig\"k\n\x17\x41\x63\x63ountOnboardingConfig\x12\x38\n\x18has_completed_onboarding\x18\x05 \x01(\x08R\x16hasCompletedOnboardingJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05\"B\n\x17GetAccountStatusRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\xe5\x01\n\x18GetAccountStatusResponse\x12*\n\x11used_record_count\x18\x01 \x01(\x04R\x0fusedRecordCount\x12\x35\n\x14\x61llowed_record_count\x18\x02 \x01(\x04H\x00R\x12\x61llowedRecordCount\x88\x01\x01\x12M\n\x13subscription_status\x18\x03 \x01(\x0e\x32\x1c.mgmt.v1alpha1.BillingStatusR\x12subscriptionStatusB\x17\n\x15_allowed_record_count\"\x9c\x01\n\x1bIsAccountStatusValidRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x39\n\x16requested_record_count\x18\x02 \x01(\x04H\x00R\x14requestedRecordCount\x88\x01\x01\x42\x19\n\x17_requested_record_count\"\xb3\x02\n\x1cIsAccountStatusValidResponse\x12\x19\n\x08is_valid\x18\x01 \x01(\x08R\x07isValid\x12\x1b\n\x06reason\x18\x02 \x01(\tH\x00R\x06reason\x88\x01\x01\x12\x1f\n\x0bshould_poll\x18\x03 \x01(\x08R\nshouldPoll\x12\x43\n\x0e\x61\x63\x63ount_status\x18\x06 \x01(\x0e\x32\x1c.mgmt.v1alpha1.AccountStatusR\raccountStatus\x12I\n\x10trial_expires_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x0etrialExpiresAt\x88\x01\x01\x42\t\n\x07_reasonB\x13\n\x11_trial_expires_atJ\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06\"R\n\'GetAccountBillingCheckoutSessionRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\\\n(GetAccountBillingCheckoutSessionResponse\x12\x30\n\x14\x63heckout_session_url\x18\x01 \x01(\tR\x12\x63heckoutSessionUrl\"P\n%GetAccountBillingPortalSessionRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"V\n&GetAccountBillingPortalSessionResponse\x12,\n\x12portal_session_url\x18\x01 \x01(\tR\x10portalSessionUrl\"<\n\x19GetBillingAccountsRequest\x12\x1f\n\x0b\x61\x63\x63ount_ids\x18\x01 \x03(\tR\naccountIds\"T\n\x1aGetBillingAccountsResponse\x12\x36\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.UserAccountR\x08\x61\x63\x63ounts\"\xe2\x01\n\x1bSetBillingMeterEventRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12&\n\nevent_name\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\teventName\x12\x1d\n\x05value\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05value\x12\"\n\x08\x65vent_id\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07\x65ventId\x12!\n\ttimestamp\x18\x05 \x01(\x04H\x00R\ttimestamp\x88\x01\x01\x42\x0c\n\n_timestamp\"\x1e\n\x1cSetBillingMeterEventResponse\"\x90\x01\n\x12SetUserRoleRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07user_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06userId\x12.\n\x04role\x18\x03 \x01(\x0e\x32\x1a.mgmt.v1alpha1.AccountRoleR\x04role\"\x15\n\x13SetUserRoleResponse*\x92\x01\n\x0fUserAccountType\x12!\n\x1dUSER_ACCOUNT_TYPE_UNSPECIFIED\x10\x00\x12\x1e\n\x1aUSER_ACCOUNT_TYPE_PERSONAL\x10\x01\x12\x1a\n\x16USER_ACCOUNT_TYPE_TEAM\x10\x02\x12 \n\x1cUSER_ACCOUNT_TYPE_ENTERPRISE\x10\x03*\xa9\x01\n\rBillingStatus\x12\x1e\n\x1a\x42ILLING_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15\x42ILLING_STATUS_ACTIVE\x10\x01\x12\x1a\n\x16\x42ILLING_STATUS_EXPIRED\x10\x02\x12\x1f\n\x1b\x42ILLING_STATUS_TRIAL_ACTIVE\x10\x03\x12 \n\x1c\x42ILLING_STATUS_TRIAL_EXPIRED\x10\x04*\x90\x02\n\rAccountStatus\x12%\n!ACCOUNT_STATUS_REASON_UNSPECIFIED\x10\x00\x12+\n\'ACCOUNT_STATUS_ACCOUNT_IN_EXPIRED_STATE\x10\x03\x12\'\n#ACCOUNT_STATUS_ACCOUNT_TRIAL_ACTIVE\x10\x04\x12(\n$ACCOUNT_STATUS_ACCOUNT_TRIAL_EXPIRED\x10\x05\"\x04\x08\x01\x10\x01\"\x04\x08\x02\x10\x02*$ACCOUNT_STATUS_EXCEEDS_ALLOWED_LIMIT*&ACCOUNT_STATUS_REQUESTED_EXCEEDS_LIMIT*\x9f\x01\n\x0b\x41\x63\x63ountRole\x12\x1c\n\x18\x41\x43\x43OUNT_ROLE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x41\x43\x43OUNT_ROLE_ADMIN\x10\x01\x12\x1e\n\x1a\x41\x43\x43OUNT_ROLE_JOB_DEVELOPER\x10\x02\x12\x1b\n\x17\x41\x43\x43OUNT_ROLE_JOB_VIEWER\x10\x03\x12\x1d\n\x19\x41\x43\x43OUNT_ROLE_JOB_EXECUTOR\x10\x04\x32\xf8\x16\n\x12UserAccountService\x12J\n\x07GetUser\x12\x1d.mgmt.v1alpha1.GetUserRequest\x1a\x1e.mgmt.v1alpha1.GetUserResponse\"\x00\x12J\n\x07SetUser\x12\x1d.mgmt.v1alpha1.SetUserRequest\x1a\x1e.mgmt.v1alpha1.SetUserResponse\"\x00\x12\x62\n\x0fGetUserAccounts\x12%.mgmt.v1alpha1.GetUserAccountsRequest\x1a&.mgmt.v1alpha1.GetUserAccountsResponse\"\x00\x12k\n\x12SetPersonalAccount\x12(.mgmt.v1alpha1.SetPersonalAccountRequest\x1a).mgmt.v1alpha1.SetPersonalAccountResponse\"\x00\x12\x89\x01\n\x1c\x43onvertPersonalToTeamAccount\x12\x32.mgmt.v1alpha1.ConvertPersonalToTeamAccountRequest\x1a\x33.mgmt.v1alpha1.ConvertPersonalToTeamAccountResponse\"\x00\x12h\n\x11\x43reateTeamAccount\x12\'.mgmt.v1alpha1.CreateTeamAccountRequest\x1a(.mgmt.v1alpha1.CreateTeamAccountResponse\"\x00\x12\x62\n\x0fIsUserInAccount\x12%.mgmt.v1alpha1.IsUserInAccountRequest\x1a&.mgmt.v1alpha1.IsUserInAccountResponse\"\x00\x12}\n\x18GetAccountTemporalConfig\x12..mgmt.v1alpha1.GetAccountTemporalConfigRequest\x1a/.mgmt.v1alpha1.GetAccountTemporalConfigResponse\"\x00\x12}\n\x18SetAccountTemporalConfig\x12..mgmt.v1alpha1.SetAccountTemporalConfigRequest\x1a/.mgmt.v1alpha1.SetAccountTemporalConfigResponse\"\x00\x12t\n\x15GetTeamAccountMembers\x12+.mgmt.v1alpha1.GetTeamAccountMembersRequest\x1a,.mgmt.v1alpha1.GetTeamAccountMembersResponse\"\x00\x12z\n\x17RemoveTeamAccountMember\x12-.mgmt.v1alpha1.RemoveTeamAccountMemberRequest\x1a..mgmt.v1alpha1.RemoveTeamAccountMemberResponse\"\x00\x12z\n\x17InviteUserToTeamAccount\x12-.mgmt.v1alpha1.InviteUserToTeamAccountRequest\x1a..mgmt.v1alpha1.InviteUserToTeamAccountResponse\"\x00\x12t\n\x15GetTeamAccountInvites\x12+.mgmt.v1alpha1.GetTeamAccountInvitesRequest\x1a,.mgmt.v1alpha1.GetTeamAccountInvitesResponse\"\x00\x12z\n\x17RemoveTeamAccountInvite\x12-.mgmt.v1alpha1.RemoveTeamAccountInviteRequest\x1a..mgmt.v1alpha1.RemoveTeamAccountInviteResponse\"\x00\x12z\n\x17\x41\x63\x63\x65ptTeamAccountInvite\x12-.mgmt.v1alpha1.AcceptTeamAccountInviteRequest\x1a..mgmt.v1alpha1.AcceptTeamAccountInviteResponse\"\x00\x12t\n\x14GetSystemInformation\x12*.mgmt.v1alpha1.GetSystemInformationRequest\x1a+.mgmt.v1alpha1.GetSystemInformationResponse\"\x03\x90\x02\x01\x12\x83\x01\n\x1aGetAccountOnboardingConfig\x12\x30.mgmt.v1alpha1.GetAccountOnboardingConfigRequest\x1a\x31.mgmt.v1alpha1.GetAccountOnboardingConfigResponse\"\x00\x12\x83\x01\n\x1aSetAccountOnboardingConfig\x12\x30.mgmt.v1alpha1.SetAccountOnboardingConfigRequest\x1a\x31.mgmt.v1alpha1.SetAccountOnboardingConfigResponse\"\x00\x12h\n\x10GetAccountStatus\x12&.mgmt.v1alpha1.GetAccountStatusRequest\x1a\'.mgmt.v1alpha1.GetAccountStatusResponse\"\x03\x90\x02\x01\x12t\n\x14IsAccountStatusValid\x12*.mgmt.v1alpha1.IsAccountStatusValidRequest\x1a+.mgmt.v1alpha1.IsAccountStatusValidResponse\"\x03\x90\x02\x01\x12\x95\x01\n GetAccountBillingCheckoutSession\x12\x36.mgmt.v1alpha1.GetAccountBillingCheckoutSessionRequest\x1a\x37.mgmt.v1alpha1.GetAccountBillingCheckoutSessionResponse\"\x00\x12\x8f\x01\n\x1eGetAccountBillingPortalSession\x12\x34.mgmt.v1alpha1.GetAccountBillingPortalSessionRequest\x1a\x35.mgmt.v1alpha1.GetAccountBillingPortalSessionResponse\"\x00\x12n\n\x12GetBillingAccounts\x12(.mgmt.v1alpha1.GetBillingAccountsRequest\x1a).mgmt.v1alpha1.GetBillingAccountsResponse\"\x03\x90\x02\x01\x12q\n\x14SetBillingMeterEvent\x12*.mgmt.v1alpha1.SetBillingMeterEventRequest\x1a+.mgmt.v1alpha1.SetBillingMeterEventResponse\"\x00\x12V\n\x0bSetUserRole\x12!.mgmt.v1alpha1.SetUserRoleRequest\x1a\".mgmt.v1alpha1.SetUserRoleResponse\"\x00\x42\xcc\x01\n\x11\x63om.mgmt.v1alpha1B\x10UserAccountProtoP\x01ZPgithub.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1;mgmtv1alpha1\xa2\x02\x03MXX\xaa\x02\rMgmt.V1alpha1\xca\x02\rMgmt\\V1alpha1\xe2\x02\x19Mgmt\\V1alpha1\\GPBMetadata\xea\x02\x0eMgmt::V1alpha1b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n mgmt/v1alpha1/user_account.proto\x12\rmgmt.v1alpha1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x10\n\x0eGetUserRequest\"*\n\x0fGetUserResponse\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\"\x10\n\x0eSetUserRequest\"*\n\x0fSetUserResponse\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\"\x18\n\x16GetUserAccountsRequest\"Q\n\x17GetUserAccountsResponse\x12\x36\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.UserAccountR\x08\x61\x63\x63ounts\"\x9a\x01\n\x0bUserAccount\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x32\n\x04type\x18\x03 \x01(\x0e\x32\x1e.mgmt.v1alpha1.UserAccountTypeR\x04type\x12\x33\n\x16has_stripe_customer_id\x18\x04 \x01(\x08R\x13hasStripeCustomerId\"\x91\x01\n#ConvertPersonalToTeamAccountRequest\x12-\n\x04name\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\x12,\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\taccountId\x88\x01\x01\x42\r\n\x0b_account_id\"\xcc\x01\n$ConvertPersonalToTeamAccountResponse\x12\x1d\n\naccount_id\x18\x01 \x01(\tR\taccountId\x12\x35\n\x14\x63heckout_session_url\x18\x02 \x01(\tH\x00R\x12\x63heckoutSessionUrl\x88\x01\x01\x12\x35\n\x17new_personal_account_id\x18\x03 \x01(\tR\x14newPersonalAccountIdB\x17\n\x15_checkout_session_url\"\x1b\n\x19SetPersonalAccountRequest\";\n\x1aSetPersonalAccountResponse\x12\x1d\n\naccount_id\x18\x01 \x01(\tR\taccountId\"A\n\x16IsUserInAccountRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\")\n\x17IsUserInAccountResponse\x12\x0e\n\x02ok\x18\x01 \x01(\x08R\x02ok\"J\n\x1fGetAccountTemporalConfigRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"`\n GetAccountTemporalConfigResponse\x12<\n\x06\x63onfig\x18\x01 \x01(\x0b\x32$.mgmt.v1alpha1.AccountTemporalConfigR\x06\x63onfig\"\x88\x01\n\x1fSetAccountTemporalConfigRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12<\n\x06\x63onfig\x18\x02 \x01(\x0b\x32$.mgmt.v1alpha1.AccountTemporalConfigR\x06\x63onfig\"`\n SetAccountTemporalConfigResponse\x12<\n\x06\x63onfig\x18\x01 \x01(\x0b\x32$.mgmt.v1alpha1.AccountTemporalConfigR\x06\x63onfig\"\x91\x01\n\x15\x41\x63\x63ountTemporalConfig\x12\x19\n\x03url\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03url\x12%\n\tnamespace\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\tnamespace\x12\x36\n\x13sync_job_queue_name\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x10syncJobQueueName\"I\n\x18\x43reateTeamAccountRequest\x12-\n\x04name\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\"\x8a\x01\n\x19\x43reateTeamAccountResponse\x12\x1d\n\naccount_id\x18\x01 \x01(\tR\taccountId\x12\x35\n\x14\x63heckout_session_url\x18\x02 \x01(\tH\x00R\x12\x63heckoutSessionUrl\x88\x01\x01\x42\x17\n\x15_checkout_session_url\"\x8d\x01\n\x0b\x41\x63\x63ountUser\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05image\x18\x03 \x01(\tR\x05image\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12.\n\x04role\x18\x05 \x01(\x0e\x32\x1a.mgmt.v1alpha1.AccountRoleR\x04role\"G\n\x1cGetTeamAccountMembersRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"Q\n\x1dGetTeamAccountMembersResponse\x12\x30\n\x05users\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.AccountUserR\x05users\"l\n\x1eRemoveTeamAccountMemberRequest\x12!\n\x07user_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06userId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"!\n\x1fRemoveTeamAccountMemberResponse\"\xa6\x01\n\x1eInviteUserToTeamAccountRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x1d\n\x05\x65mail\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05\x65mail\x12\x33\n\x04role\x18\x03 \x01(\x0e\x32\x1a.mgmt.v1alpha1.AccountRoleH\x00R\x04role\x88\x01\x01\x42\x07\n\x05_role\"\x8d\x03\n\rAccountInvite\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n\naccount_id\x18\x02 \x01(\tR\taccountId\x12$\n\x0esender_user_id\x18\x03 \x01(\tR\x0csenderUserId\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\x12\x1a\n\x08\x61\x63\x63\x65pted\x18\x06 \x01(\x08R\x08\x61\x63\x63\x65pted\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x39\n\nexpires_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12.\n\x04role\x18\n \x01(\x0e\x32\x1a.mgmt.v1alpha1.AccountRoleR\x04role\"W\n\x1fInviteUserToTeamAccountResponse\x12\x34\n\x06invite\x18\x01 \x01(\x0b\x32\x1c.mgmt.v1alpha1.AccountInviteR\x06invite\"G\n\x1cGetTeamAccountInvitesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"W\n\x1dGetTeamAccountInvitesResponse\x12\x36\n\x07invites\x18\x01 \x03(\x0b\x32\x1c.mgmt.v1alpha1.AccountInviteR\x07invites\":\n\x1eRemoveTeamAccountInviteRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"!\n\x1fRemoveTeamAccountInviteResponse\"?\n\x1e\x41\x63\x63\x65ptTeamAccountInviteRequest\x12\x1d\n\x05token\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05token\"W\n\x1f\x41\x63\x63\x65ptTeamAccountInviteResponse\x12\x34\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0b\x32\x1a.mgmt.v1alpha1.UserAccountR\x07\x61\x63\x63ount\"\x1d\n\x1bGetSystemInformationRequest\"\xfb\x01\n\x1cGetSystemInformationResponse\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x16\n\x06\x63ommit\x18\x02 \x01(\tR\x06\x63ommit\x12\x1a\n\x08\x63ompiler\x18\x03 \x01(\tR\x08\x63ompiler\x12\x1a\n\x08platform\x18\x04 \x01(\tR\x08platform\x12\x39\n\nbuild_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tbuildDate\x12\x36\n\x07license\x18\x06 \x01(\x0b\x32\x1c.mgmt.v1alpha1.SystemLicenseR\x07license\"\x8f\x01\n\rSystemLicense\x12\x19\n\x08is_valid\x18\x01 \x01(\x08R\x07isValid\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12(\n\x10is_neosync_cloud\x18\x03 \x01(\x08R\x0eisNeosyncCloud\"L\n!GetAccountOnboardingConfigRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"d\n\"GetAccountOnboardingConfigResponse\x12>\n\x06\x63onfig\x18\x01 \x01(\x0b\x32&.mgmt.v1alpha1.AccountOnboardingConfigR\x06\x63onfig\"\x8c\x01\n!SetAccountOnboardingConfigRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12>\n\x06\x63onfig\x18\x02 \x01(\x0b\x32&.mgmt.v1alpha1.AccountOnboardingConfigR\x06\x63onfig\"d\n\"SetAccountOnboardingConfigResponse\x12>\n\x06\x63onfig\x18\x01 \x01(\x0b\x32&.mgmt.v1alpha1.AccountOnboardingConfigR\x06\x63onfig\"k\n\x17\x41\x63\x63ountOnboardingConfig\x12\x38\n\x18has_completed_onboarding\x18\x05 \x01(\x08R\x16hasCompletedOnboardingJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05\"B\n\x17GetAccountStatusRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\xe5\x01\n\x18GetAccountStatusResponse\x12*\n\x11used_record_count\x18\x01 \x01(\x04R\x0fusedRecordCount\x12\x35\n\x14\x61llowed_record_count\x18\x02 \x01(\x04H\x00R\x12\x61llowedRecordCount\x88\x01\x01\x12M\n\x13subscription_status\x18\x03 \x01(\x0e\x32\x1c.mgmt.v1alpha1.BillingStatusR\x12subscriptionStatusB\x17\n\x15_allowed_record_count\"\x9c\x01\n\x1bIsAccountStatusValidRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x39\n\x16requested_record_count\x18\x02 \x01(\x04H\x00R\x14requestedRecordCount\x88\x01\x01\x42\x19\n\x17_requested_record_count\"\xb3\x02\n\x1cIsAccountStatusValidResponse\x12\x19\n\x08is_valid\x18\x01 \x01(\x08R\x07isValid\x12\x1b\n\x06reason\x18\x02 \x01(\tH\x00R\x06reason\x88\x01\x01\x12\x1f\n\x0bshould_poll\x18\x03 \x01(\x08R\nshouldPoll\x12\x43\n\x0e\x61\x63\x63ount_status\x18\x06 \x01(\x0e\x32\x1c.mgmt.v1alpha1.AccountStatusR\raccountStatus\x12I\n\x10trial_expires_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\x0etrialExpiresAt\x88\x01\x01\x42\t\n\x07_reasonB\x13\n\x11_trial_expires_atJ\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06\"R\n\'GetAccountBillingCheckoutSessionRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\\\n(GetAccountBillingCheckoutSessionResponse\x12\x30\n\x14\x63heckout_session_url\x18\x01 \x01(\tR\x12\x63heckoutSessionUrl\"P\n%GetAccountBillingPortalSessionRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"V\n&GetAccountBillingPortalSessionResponse\x12,\n\x12portal_session_url\x18\x01 \x01(\tR\x10portalSessionUrl\"<\n\x19GetBillingAccountsRequest\x12\x1f\n\x0b\x61\x63\x63ount_ids\x18\x01 \x03(\tR\naccountIds\"T\n\x1aGetBillingAccountsResponse\x12\x36\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.UserAccountR\x08\x61\x63\x63ounts\"\xe2\x01\n\x1bSetBillingMeterEventRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12&\n\nevent_name\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\teventName\x12\x1d\n\x05value\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05value\x12\"\n\x08\x65vent_id\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07\x65ventId\x12!\n\ttimestamp\x18\x05 \x01(\x04H\x00R\ttimestamp\x88\x01\x01\x42\x0c\n\n_timestamp\"\x1e\n\x1cSetBillingMeterEventResponse\"\x90\x01\n\x12SetUserRoleRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07user_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06userId\x12.\n\x04role\x18\x03 \x01(\x0e\x32\x1a.mgmt.v1alpha1.AccountRoleR\x04role\"\x15\n\x13SetUserRoleResponse*\x92\x01\n\x0fUserAccountType\x12!\n\x1dUSER_ACCOUNT_TYPE_UNSPECIFIED\x10\x00\x12\x1e\n\x1aUSER_ACCOUNT_TYPE_PERSONAL\x10\x01\x12\x1a\n\x16USER_ACCOUNT_TYPE_TEAM\x10\x02\x12 \n\x1cUSER_ACCOUNT_TYPE_ENTERPRISE\x10\x03*\xa9\x01\n\rBillingStatus\x12\x1e\n\x1a\x42ILLING_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15\x42ILLING_STATUS_ACTIVE\x10\x01\x12\x1a\n\x16\x42ILLING_STATUS_EXPIRED\x10\x02\x12\x1f\n\x1b\x42ILLING_STATUS_TRIAL_ACTIVE\x10\x03\x12 \n\x1c\x42ILLING_STATUS_TRIAL_EXPIRED\x10\x04*\x90\x02\n\rAccountStatus\x12%\n!ACCOUNT_STATUS_REASON_UNSPECIFIED\x10\x00\x12+\n\'ACCOUNT_STATUS_ACCOUNT_IN_EXPIRED_STATE\x10\x03\x12\'\n#ACCOUNT_STATUS_ACCOUNT_TRIAL_ACTIVE\x10\x04\x12(\n$ACCOUNT_STATUS_ACCOUNT_TRIAL_EXPIRED\x10\x05\"\x04\x08\x01\x10\x01\"\x04\x08\x02\x10\x02*$ACCOUNT_STATUS_EXCEEDS_ALLOWED_LIMIT*&ACCOUNT_STATUS_REQUESTED_EXCEEDS_LIMIT*\x9f\x01\n\x0b\x41\x63\x63ountRole\x12\x1c\n\x18\x41\x43\x43OUNT_ROLE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x41\x43\x43OUNT_ROLE_ADMIN\x10\x01\x12\x1e\n\x1a\x41\x43\x43OUNT_ROLE_JOB_DEVELOPER\x10\x02\x12\x1b\n\x17\x41\x43\x43OUNT_ROLE_JOB_VIEWER\x10\x03\x12\x1d\n\x19\x41\x43\x43OUNT_ROLE_JOB_EXECUTOR\x10\x04\x32\xf8\x16\n\x12UserAccountService\x12J\n\x07GetUser\x12\x1d.mgmt.v1alpha1.GetUserRequest\x1a\x1e.mgmt.v1alpha1.GetUserResponse\"\x00\x12J\n\x07SetUser\x12\x1d.mgmt.v1alpha1.SetUserRequest\x1a\x1e.mgmt.v1alpha1.SetUserResponse\"\x00\x12\x62\n\x0fGetUserAccounts\x12%.mgmt.v1alpha1.GetUserAccountsRequest\x1a&.mgmt.v1alpha1.GetUserAccountsResponse\"\x00\x12k\n\x12SetPersonalAccount\x12(.mgmt.v1alpha1.SetPersonalAccountRequest\x1a).mgmt.v1alpha1.SetPersonalAccountResponse\"\x00\x12\x89\x01\n\x1c\x43onvertPersonalToTeamAccount\x12\x32.mgmt.v1alpha1.ConvertPersonalToTeamAccountRequest\x1a\x33.mgmt.v1alpha1.ConvertPersonalToTeamAccountResponse\"\x00\x12h\n\x11\x43reateTeamAccount\x12\'.mgmt.v1alpha1.CreateTeamAccountRequest\x1a(.mgmt.v1alpha1.CreateTeamAccountResponse\"\x00\x12\x62\n\x0fIsUserInAccount\x12%.mgmt.v1alpha1.IsUserInAccountRequest\x1a&.mgmt.v1alpha1.IsUserInAccountResponse\"\x00\x12}\n\x18GetAccountTemporalConfig\x12..mgmt.v1alpha1.GetAccountTemporalConfigRequest\x1a/.mgmt.v1alpha1.GetAccountTemporalConfigResponse\"\x00\x12}\n\x18SetAccountTemporalConfig\x12..mgmt.v1alpha1.SetAccountTemporalConfigRequest\x1a/.mgmt.v1alpha1.SetAccountTemporalConfigResponse\"\x00\x12t\n\x15GetTeamAccountMembers\x12+.mgmt.v1alpha1.GetTeamAccountMembersRequest\x1a,.mgmt.v1alpha1.GetTeamAccountMembersResponse\"\x00\x12z\n\x17RemoveTeamAccountMember\x12-.mgmt.v1alpha1.RemoveTeamAccountMemberRequest\x1a..mgmt.v1alpha1.RemoveTeamAccountMemberResponse\"\x00\x12z\n\x17InviteUserToTeamAccount\x12-.mgmt.v1alpha1.InviteUserToTeamAccountRequest\x1a..mgmt.v1alpha1.InviteUserToTeamAccountResponse\"\x00\x12t\n\x15GetTeamAccountInvites\x12+.mgmt.v1alpha1.GetTeamAccountInvitesRequest\x1a,.mgmt.v1alpha1.GetTeamAccountInvitesResponse\"\x00\x12z\n\x17RemoveTeamAccountInvite\x12-.mgmt.v1alpha1.RemoveTeamAccountInviteRequest\x1a..mgmt.v1alpha1.RemoveTeamAccountInviteResponse\"\x00\x12z\n\x17\x41\x63\x63\x65ptTeamAccountInvite\x12-.mgmt.v1alpha1.AcceptTeamAccountInviteRequest\x1a..mgmt.v1alpha1.AcceptTeamAccountInviteResponse\"\x00\x12t\n\x14GetSystemInformation\x12*.mgmt.v1alpha1.GetSystemInformationRequest\x1a+.mgmt.v1alpha1.GetSystemInformationResponse\"\x03\x90\x02\x01\x12\x83\x01\n\x1aGetAccountOnboardingConfig\x12\x30.mgmt.v1alpha1.GetAccountOnboardingConfigRequest\x1a\x31.mgmt.v1alpha1.GetAccountOnboardingConfigResponse\"\x00\x12\x83\x01\n\x1aSetAccountOnboardingConfig\x12\x30.mgmt.v1alpha1.SetAccountOnboardingConfigRequest\x1a\x31.mgmt.v1alpha1.SetAccountOnboardingConfigResponse\"\x00\x12h\n\x10GetAccountStatus\x12&.mgmt.v1alpha1.GetAccountStatusRequest\x1a\'.mgmt.v1alpha1.GetAccountStatusResponse\"\x03\x90\x02\x01\x12t\n\x14IsAccountStatusValid\x12*.mgmt.v1alpha1.IsAccountStatusValidRequest\x1a+.mgmt.v1alpha1.IsAccountStatusValidResponse\"\x03\x90\x02\x01\x12\x95\x01\n GetAccountBillingCheckoutSession\x12\x36.mgmt.v1alpha1.GetAccountBillingCheckoutSessionRequest\x1a\x37.mgmt.v1alpha1.GetAccountBillingCheckoutSessionResponse\"\x00\x12\x8f\x01\n\x1eGetAccountBillingPortalSession\x12\x34.mgmt.v1alpha1.GetAccountBillingPortalSessionRequest\x1a\x35.mgmt.v1alpha1.GetAccountBillingPortalSessionResponse\"\x00\x12n\n\x12GetBillingAccounts\x12(.mgmt.v1alpha1.GetBillingAccountsRequest\x1a).mgmt.v1alpha1.GetBillingAccountsResponse\"\x03\x90\x02\x01\x12q\n\x14SetBillingMeterEvent\x12*.mgmt.v1alpha1.SetBillingMeterEventRequest\x1a+.mgmt.v1alpha1.SetBillingMeterEventResponse\"\x00\x12V\n\x0bSetUserRole\x12!.mgmt.v1alpha1.SetUserRoleRequest\x1a\".mgmt.v1alpha1.SetUserRoleResponse\"\x00\x42\xcc\x01\n\x11\x63om.mgmt.v1alpha1B\x10UserAccountProtoP\x01ZPgithub.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1;mgmtv1alpha1\xa2\x02\x03MXX\xaa\x02\rMgmt.V1alpha1\xca\x02\rMgmt\\V1alpha1\xe2\x02\x19Mgmt\\V1alpha1\\GPBMetadata\xea\x02\x0eMgmt::V1alpha1b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -100,14 +100,14 @@
_globals['_USERACCOUNTSERVICE'].methods_by_name['IsAccountStatusValid']._serialized_options = b'\220\002\001'
_globals['_USERACCOUNTSERVICE'].methods_by_name['GetBillingAccounts']._loaded_options = None
_globals['_USERACCOUNTSERVICE'].methods_by_name['GetBillingAccounts']._serialized_options = b'\220\002\001'
- _globals['_USERACCOUNTTYPE']._serialized_start=5807
- _globals['_USERACCOUNTTYPE']._serialized_end=5953
- _globals['_BILLINGSTATUS']._serialized_start=5956
- _globals['_BILLINGSTATUS']._serialized_end=6125
- _globals['_ACCOUNTSTATUS']._serialized_start=6128
- _globals['_ACCOUNTSTATUS']._serialized_end=6400
- _globals['_ACCOUNTROLE']._serialized_start=6403
- _globals['_ACCOUNTROLE']._serialized_end=6562
+ _globals['_USERACCOUNTTYPE']._serialized_start=6009
+ _globals['_USERACCOUNTTYPE']._serialized_end=6155
+ _globals['_BILLINGSTATUS']._serialized_start=6158
+ _globals['_BILLINGSTATUS']._serialized_end=6327
+ _globals['_ACCOUNTSTATUS']._serialized_start=6330
+ _globals['_ACCOUNTSTATUS']._serialized_end=6602
+ _globals['_ACCOUNTROLE']._serialized_start=6605
+ _globals['_ACCOUNTROLE']._serialized_end=6764
_globals['_GETUSERREQUEST']._serialized_start=113
_globals['_GETUSERREQUEST']._serialized_end=129
_globals['_GETUSERRESPONSE']._serialized_start=131
@@ -179,45 +179,47 @@
_globals['_GETSYSTEMINFORMATIONREQUEST']._serialized_start=3347
_globals['_GETSYSTEMINFORMATIONREQUEST']._serialized_end=3376
_globals['_GETSYSTEMINFORMATIONRESPONSE']._serialized_start=3379
- _globals['_GETSYSTEMINFORMATIONRESPONSE']._serialized_end=3574
- _globals['_GETACCOUNTONBOARDINGCONFIGREQUEST']._serialized_start=3576
- _globals['_GETACCOUNTONBOARDINGCONFIGREQUEST']._serialized_end=3652
- _globals['_GETACCOUNTONBOARDINGCONFIGRESPONSE']._serialized_start=3654
- _globals['_GETACCOUNTONBOARDINGCONFIGRESPONSE']._serialized_end=3754
- _globals['_SETACCOUNTONBOARDINGCONFIGREQUEST']._serialized_start=3757
- _globals['_SETACCOUNTONBOARDINGCONFIGREQUEST']._serialized_end=3897
- _globals['_SETACCOUNTONBOARDINGCONFIGRESPONSE']._serialized_start=3899
- _globals['_SETACCOUNTONBOARDINGCONFIGRESPONSE']._serialized_end=3999
- _globals['_ACCOUNTONBOARDINGCONFIG']._serialized_start=4001
- _globals['_ACCOUNTONBOARDINGCONFIG']._serialized_end=4108
- _globals['_GETACCOUNTSTATUSREQUEST']._serialized_start=4110
- _globals['_GETACCOUNTSTATUSREQUEST']._serialized_end=4176
- _globals['_GETACCOUNTSTATUSRESPONSE']._serialized_start=4179
- _globals['_GETACCOUNTSTATUSRESPONSE']._serialized_end=4408
- _globals['_ISACCOUNTSTATUSVALIDREQUEST']._serialized_start=4411
- _globals['_ISACCOUNTSTATUSVALIDREQUEST']._serialized_end=4567
- _globals['_ISACCOUNTSTATUSVALIDRESPONSE']._serialized_start=4570
- _globals['_ISACCOUNTSTATUSVALIDRESPONSE']._serialized_end=4877
- _globals['_GETACCOUNTBILLINGCHECKOUTSESSIONREQUEST']._serialized_start=4879
- _globals['_GETACCOUNTBILLINGCHECKOUTSESSIONREQUEST']._serialized_end=4961
- _globals['_GETACCOUNTBILLINGCHECKOUTSESSIONRESPONSE']._serialized_start=4963
- _globals['_GETACCOUNTBILLINGCHECKOUTSESSIONRESPONSE']._serialized_end=5055
- _globals['_GETACCOUNTBILLINGPORTALSESSIONREQUEST']._serialized_start=5057
- _globals['_GETACCOUNTBILLINGPORTALSESSIONREQUEST']._serialized_end=5137
- _globals['_GETACCOUNTBILLINGPORTALSESSIONRESPONSE']._serialized_start=5139
- _globals['_GETACCOUNTBILLINGPORTALSESSIONRESPONSE']._serialized_end=5225
- _globals['_GETBILLINGACCOUNTSREQUEST']._serialized_start=5227
- _globals['_GETBILLINGACCOUNTSREQUEST']._serialized_end=5287
- _globals['_GETBILLINGACCOUNTSRESPONSE']._serialized_start=5289
- _globals['_GETBILLINGACCOUNTSRESPONSE']._serialized_end=5373
- _globals['_SETBILLINGMETEREVENTREQUEST']._serialized_start=5376
- _globals['_SETBILLINGMETEREVENTREQUEST']._serialized_end=5602
- _globals['_SETBILLINGMETEREVENTRESPONSE']._serialized_start=5604
- _globals['_SETBILLINGMETEREVENTRESPONSE']._serialized_end=5634
- _globals['_SETUSERROLEREQUEST']._serialized_start=5637
- _globals['_SETUSERROLEREQUEST']._serialized_end=5781
- _globals['_SETUSERROLERESPONSE']._serialized_start=5783
- _globals['_SETUSERROLERESPONSE']._serialized_end=5804
- _globals['_USERACCOUNTSERVICE']._serialized_start=6565
- _globals['_USERACCOUNTSERVICE']._serialized_end=9501
+ _globals['_GETSYSTEMINFORMATIONRESPONSE']._serialized_end=3630
+ _globals['_SYSTEMLICENSE']._serialized_start=3633
+ _globals['_SYSTEMLICENSE']._serialized_end=3776
+ _globals['_GETACCOUNTONBOARDINGCONFIGREQUEST']._serialized_start=3778
+ _globals['_GETACCOUNTONBOARDINGCONFIGREQUEST']._serialized_end=3854
+ _globals['_GETACCOUNTONBOARDINGCONFIGRESPONSE']._serialized_start=3856
+ _globals['_GETACCOUNTONBOARDINGCONFIGRESPONSE']._serialized_end=3956
+ _globals['_SETACCOUNTONBOARDINGCONFIGREQUEST']._serialized_start=3959
+ _globals['_SETACCOUNTONBOARDINGCONFIGREQUEST']._serialized_end=4099
+ _globals['_SETACCOUNTONBOARDINGCONFIGRESPONSE']._serialized_start=4101
+ _globals['_SETACCOUNTONBOARDINGCONFIGRESPONSE']._serialized_end=4201
+ _globals['_ACCOUNTONBOARDINGCONFIG']._serialized_start=4203
+ _globals['_ACCOUNTONBOARDINGCONFIG']._serialized_end=4310
+ _globals['_GETACCOUNTSTATUSREQUEST']._serialized_start=4312
+ _globals['_GETACCOUNTSTATUSREQUEST']._serialized_end=4378
+ _globals['_GETACCOUNTSTATUSRESPONSE']._serialized_start=4381
+ _globals['_GETACCOUNTSTATUSRESPONSE']._serialized_end=4610
+ _globals['_ISACCOUNTSTATUSVALIDREQUEST']._serialized_start=4613
+ _globals['_ISACCOUNTSTATUSVALIDREQUEST']._serialized_end=4769
+ _globals['_ISACCOUNTSTATUSVALIDRESPONSE']._serialized_start=4772
+ _globals['_ISACCOUNTSTATUSVALIDRESPONSE']._serialized_end=5079
+ _globals['_GETACCOUNTBILLINGCHECKOUTSESSIONREQUEST']._serialized_start=5081
+ _globals['_GETACCOUNTBILLINGCHECKOUTSESSIONREQUEST']._serialized_end=5163
+ _globals['_GETACCOUNTBILLINGCHECKOUTSESSIONRESPONSE']._serialized_start=5165
+ _globals['_GETACCOUNTBILLINGCHECKOUTSESSIONRESPONSE']._serialized_end=5257
+ _globals['_GETACCOUNTBILLINGPORTALSESSIONREQUEST']._serialized_start=5259
+ _globals['_GETACCOUNTBILLINGPORTALSESSIONREQUEST']._serialized_end=5339
+ _globals['_GETACCOUNTBILLINGPORTALSESSIONRESPONSE']._serialized_start=5341
+ _globals['_GETACCOUNTBILLINGPORTALSESSIONRESPONSE']._serialized_end=5427
+ _globals['_GETBILLINGACCOUNTSREQUEST']._serialized_start=5429
+ _globals['_GETBILLINGACCOUNTSREQUEST']._serialized_end=5489
+ _globals['_GETBILLINGACCOUNTSRESPONSE']._serialized_start=5491
+ _globals['_GETBILLINGACCOUNTSRESPONSE']._serialized_end=5575
+ _globals['_SETBILLINGMETEREVENTREQUEST']._serialized_start=5578
+ _globals['_SETBILLINGMETEREVENTREQUEST']._serialized_end=5804
+ _globals['_SETBILLINGMETEREVENTRESPONSE']._serialized_start=5806
+ _globals['_SETBILLINGMETEREVENTRESPONSE']._serialized_end=5836
+ _globals['_SETUSERROLEREQUEST']._serialized_start=5839
+ _globals['_SETUSERROLEREQUEST']._serialized_end=5983
+ _globals['_SETUSERROLERESPONSE']._serialized_start=5985
+ _globals['_SETUSERROLERESPONSE']._serialized_end=6006
+ _globals['_USERACCOUNTSERVICE']._serialized_start=6767
+ _globals['_USERACCOUNTSERVICE']._serialized_end=9703
# @@protoc_insertion_point(module_scope)
diff --git a/python/src/neosync/mgmt/v1alpha1/user_account_pb2.pyi b/python/src/neosync/mgmt/v1alpha1/user_account_pb2.pyi
index 35b448478f..f844e53776 100644
--- a/python/src/neosync/mgmt/v1alpha1/user_account_pb2.pyi
+++ b/python/src/neosync/mgmt/v1alpha1/user_account_pb2.pyi
@@ -305,18 +305,30 @@ class GetSystemInformationRequest(_message.Message):
def __init__(self) -> None: ...
class GetSystemInformationResponse(_message.Message):
- __slots__ = ("version", "commit", "compiler", "platform", "build_date")
+ __slots__ = ("version", "commit", "compiler", "platform", "build_date", "license")
VERSION_FIELD_NUMBER: _ClassVar[int]
COMMIT_FIELD_NUMBER: _ClassVar[int]
COMPILER_FIELD_NUMBER: _ClassVar[int]
PLATFORM_FIELD_NUMBER: _ClassVar[int]
BUILD_DATE_FIELD_NUMBER: _ClassVar[int]
+ LICENSE_FIELD_NUMBER: _ClassVar[int]
version: str
commit: str
compiler: str
platform: str
build_date: _timestamp_pb2.Timestamp
- def __init__(self, version: _Optional[str] = ..., commit: _Optional[str] = ..., compiler: _Optional[str] = ..., platform: _Optional[str] = ..., build_date: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
+ license: SystemLicense
+ def __init__(self, version: _Optional[str] = ..., commit: _Optional[str] = ..., compiler: _Optional[str] = ..., platform: _Optional[str] = ..., build_date: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., license: _Optional[_Union[SystemLicense, _Mapping]] = ...) -> None: ...
+
+class SystemLicense(_message.Message):
+ __slots__ = ("is_valid", "expires_at", "is_neosync_cloud")
+ IS_VALID_FIELD_NUMBER: _ClassVar[int]
+ EXPIRES_AT_FIELD_NUMBER: _ClassVar[int]
+ IS_NEOSYNC_CLOUD_FIELD_NUMBER: _ClassVar[int]
+ is_valid: bool
+ expires_at: _timestamp_pb2.Timestamp
+ is_neosync_cloud: bool
+ def __init__(self, is_valid: bool = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., is_neosync_cloud: bool = ...) -> None: ...
class GetAccountOnboardingConfigRequest(_message.Message):
__slots__ = ("account_id",)
diff --git a/worker/pkg/integration-test/datasync_workflow.go b/worker/pkg/integration-test/datasync_workflow.go
index 6dfde25e1c..a121a98fed 100644
--- a/worker/pkg/integration-test/datasync_workflow.go
+++ b/worker/pkg/integration-test/datasync_workflow.go
@@ -89,10 +89,10 @@ func NewTestDataSyncWorkflowEnv(
}
workflowEnv.redisclient = redisclient
- connclient := neosyncApi.UnauthdClients.Connections
- jobclient := neosyncApi.UnauthdClients.Jobs
- transformerclient := neosyncApi.UnauthdClients.Transformers
- userclient := neosyncApi.UnauthdClients.Users
+ connclient := neosyncApi.OSSUnauthenticatedLicensedClients.Connections()
+ jobclient := neosyncApi.OSSUnauthenticatedLicensedClients.Jobs()
+ transformerclient := neosyncApi.OSSUnauthenticatedLicensedClients.Transformers()
+ userclient := neosyncApi.OSSUnauthenticatedLicensedClients.Users()
testSuite := &testsuite.WorkflowTestSuite{}
testSuite.SetLogger(log.NewStructuredLogger(testutil.GetConcurrentTestLogger(t)))
diff --git a/worker/pkg/workflows/datasync/activities/run-sql-init-table-stmts/init-statement-builder_test.go b/worker/pkg/workflows/datasync/activities/run-sql-init-table-stmts/init-statement-builder_test.go
index de76b0c6f8..4591e370e8 100644
--- a/worker/pkg/workflows/datasync/activities/run-sql-init-table-stmts/init-statement-builder_test.go
+++ b/worker/pkg/workflows/datasync/activities/run-sql-init-table-stmts/init-statement-builder_test.go
@@ -21,11 +21,9 @@ const (
workflowId = "workflow-id"
)
-type fakeLicense struct{}
-
-func (f *fakeLicense) IsValid() bool {
- return true
-}
+var (
+ fakeEELicense = testutil.NewFakeEELicense(testutil.WithIsValid())
+)
func Test_InitStatementBuilder_Pg_Generate_InitSchema(t *testing.T) {
t.Parallel()
@@ -167,7 +165,7 @@ func Test_InitStatementBuilder_Pg_Generate_InitSchema(t *testing.T) {
mockSqlDb.On("BatchExec", mock.Anything, mock.Anything, []string{"test-idx-statement"}, &sqlmanager_shared.BatchExecOpts{}).Return(nil)
mockSqlDb.On("Close").Return(nil)
- bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, &fakeLicense{}, workflowId)
+ bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, fakeEELicense, workflowId)
_, err := bbuilder.RunSqlInitTableStatements(
context.Background(),
&RunSqlInitTableStatementsRequest{JobId: "123"},
@@ -269,7 +267,7 @@ func Test_InitStatementBuilder_Pg_Generate_NoInitStatement(t *testing.T) {
mockSqlManager.On("NewSqlConnection", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sqlmanager.NewPostgresSqlConnection(mockSqlDb), nil)
mockSqlDb.On("Close").Return(nil)
- bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, &fakeLicense{}, workflowId)
+ bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, fakeEELicense, workflowId)
_, err := bbuilder.RunSqlInitTableStatements(
context.Background(),
&RunSqlInitTableStatementsRequest{JobId: "123"},
@@ -401,7 +399,7 @@ func Test_InitStatementBuilder_Pg_TruncateCascade(t *testing.T) {
mockSqlDb.On("BatchExec", mock.Anything, mock.Anything, mock.MatchedBy(func(query []string) bool { return compareSlices(query, stmts) }), &sqlmanager_shared.BatchExecOpts{}).Return(nil)
mockSqlDb.On("Close").Return(nil)
- bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, &fakeLicense{}, workflowId)
+ bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, fakeEELicense, workflowId)
_, err := bbuilder.RunSqlInitTableStatements(
context.Background(),
&RunSqlInitTableStatementsRequest{JobId: "123"},
@@ -541,7 +539,7 @@ func Test_InitStatementBuilder_Pg_Truncate(t *testing.T) {
mockSqlDb.On("Exec", mock.Anything, "TRUNCATE \"public\".\"accounts\", \"public\".\"users\" RESTART IDENTITY;").Return(nil)
mockSqlDb.On("Close").Return(nil)
- bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, &fakeLicense{}, workflowId)
+ bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, fakeEELicense, workflowId)
_, err := bbuilder.RunSqlInitTableStatements(
context.Background(),
&RunSqlInitTableStatementsRequest{JobId: "123"},
@@ -685,7 +683,7 @@ func Test_InitStatementBuilder_Pg_InitSchema(t *testing.T) {
mockSqlDb.On("BatchExec", mock.Anything, mock.Anything, []string{"test-idx-statement"}, &sqlmanager_shared.BatchExecOpts{}).Return(nil)
mockSqlDb.On("Close").Return(nil)
- bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, &fakeLicense{}, workflowId)
+ bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, fakeEELicense, workflowId)
_, err := bbuilder.RunSqlInitTableStatements(
context.Background(),
&RunSqlInitTableStatementsRequest{JobId: "123"},
@@ -797,7 +795,7 @@ func Test_InitStatementBuilder_Mysql_Generate(t *testing.T) {
mockSqlManager.On("NewSqlConnection", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sqlmanager.NewMysqlSqlConnection(mockSqlDb), nil)
mockSqlDb.On("Close").Return(nil)
- bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, &fakeLicense{}, workflowId)
+ bbuilder := newInitStatementBuilder(mockSqlManager, mockJobClient, mockConnectionClient, fakeEELicense, workflowId)
_, err := bbuilder.RunSqlInitTableStatements(
context.Background(),
&RunSqlInitTableStatementsRequest{JobId: "123"},
diff --git a/worker/pkg/workflows/datasync/workflow/workflow_integration_test.go b/worker/pkg/workflows/datasync/workflow/workflow_integration_test.go
index cbdd2a14ef..4bffb3d83c 100644
--- a/worker/pkg/workflows/datasync/workflow/workflow_integration_test.go
+++ b/worker/pkg/workflows/datasync/workflow/workflow_integration_test.go
@@ -1590,12 +1590,6 @@ func (s *IntegrationTestSuite) Test_Workflow_Generate() {
require.NoError(s.T(), err)
}
-type fakeEELicense struct{}
-
-func (f *fakeEELicense) IsValid() bool {
- return true
-}
-
func executeWorkflow(
t testing.TB,
srv *httptest.Server,
@@ -1653,11 +1647,13 @@ func executeWorkflow(
)
var activityMeter metric.Meter
+ fakeEELicense := testutil.NewFakeEELicense(testutil.WithIsValid())
+
syncActivity := sync_activity.New(connclient, jobclient, sqlconnmanager, mongoconnmanager, activityMeter, sync_activity.NewBenthosStreamManager())
retrieveActivityOpts := syncactivityopts_activity.New(jobclient)
- runSqlInitTableStatements := runsqlinittablestmts_activity.New(jobclient, connclient, sqlmanager, &fakeEELicense{})
+ runSqlInitTableStatements := runsqlinittablestmts_activity.New(jobclient, connclient, sqlmanager, fakeEELicense)
accountStatusActivity := accountstatus_activity.New(userclient)
- jobhookTimingActivity := jobhooks_by_timing_activity.New(jobclient, connclient, sqlmanager, &fakeEELicense{})
+ jobhookTimingActivity := jobhooks_by_timing_activity.New(jobclient, connclient, sqlmanager, fakeEELicense)
posttableSyncActivity := posttablesync_activity.New(jobclient, sqlmanager, connclient)
redisCleanUpActivity := syncrediscleanup_activity.New(redisclient)