// @generated by protoc-gen-es v1.10.0 with parameter "target=ts"
// @generated from file user.proto (package api, syntax proto3)
/* eslint-disable */
// @ts-nocheck

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
import { RequestOrganisationHeader, RequestProjectHeader } from "./shared_pb.js";

/**
 * @generated from enum api.TwoFAValue
 */
export enum TwoFAValue {
  /**
   * @generated from enum value: TWOFA_VALUE_UNKNOWN = 0;
   */
  TWOFA_VALUE_UNKNOWN = 0,

  /**
   * 2FA is optional (default)
   *
   * @generated from enum value: TWOFA_VALUE_OPTIONAL = 10;
   */
  TWOFA_VALUE_OPTIONAL = 10,

  /**
   * 2FA is mandatory
   *
   * @generated from enum value: TWOFA_VALUE_FORCE = 20;
   */
  TWOFA_VALUE_FORCE = 20,

  /**
   * 2FA will be skipped
   *
   * @generated from enum value: TWOFA_VALUE_SKIP = 30;
   */
  TWOFA_VALUE_SKIP = 30,
}
// Retrieve enum metadata with: proto3.getEnumType(TwoFAValue)
proto3.util.setEnumType(TwoFAValue, "api.TwoFAValue", [
  { no: 0, name: "TWOFA_VALUE_UNKNOWN" },
  { no: 10, name: "TWOFA_VALUE_OPTIONAL" },
  { no: 20, name: "TWOFA_VALUE_FORCE" },
  { no: 30, name: "TWOFA_VALUE_SKIP" },
]);

/**
 * @generated from enum api.UserStatus
 */
export enum UserStatus {
  /**
   * @generated from enum value: USER_STATUS_UNKNOWN = 0;
   */
  UNKNOWN = 0,

  /**
   * Email not yet verified
   *
   * @generated from enum value: USER_STATUS_PENDING = 10;
   */
  PENDING = 10,

  /**
   * Email invitation expired
   *
   * @generated from enum value: USER_STATUS_EXPIRED = 11;
   */
  EXPIRED = 11,

  /**
   * Email verified, user active
   *
   * @generated from enum value: USER_STATUS_ACTIVE = 20;
   */
  ACTIVE = 20,

  /**
   * @generated from enum value: USER_STATUS_DISABLED = 30;
   */
  DISABLED = 30,
}
// Retrieve enum metadata with: proto3.getEnumType(UserStatus)
proto3.util.setEnumType(UserStatus, "api.UserStatus", [
  { no: 0, name: "USER_STATUS_UNKNOWN" },
  { no: 10, name: "USER_STATUS_PENDING" },
  { no: 11, name: "USER_STATUS_EXPIRED" },
  { no: 20, name: "USER_STATUS_ACTIVE" },
  { no: 30, name: "USER_STATUS_DISABLED" },
]);

/**
 * @generated from enum api.UserType
 */
export enum UserType {
  /**
   * @generated from enum value: USER_TYPE_UNKNOWN = 0;
   */
  UNKNOWN = 0,

  /**
   * @generated from enum value: USER_TYPE_USER = 10;
   */
  USER = 10,

  /**
   * @generated from enum value: USER_TYPE_SERVICE_ACCOUNT = 20;
   */
  SERVICE_ACCOUNT = 20,
}
// Retrieve enum metadata with: proto3.getEnumType(UserType)
proto3.util.setEnumType(UserType, "api.UserType", [
  { no: 0, name: "USER_TYPE_UNKNOWN" },
  { no: 10, name: "USER_TYPE_USER" },
  { no: 20, name: "USER_TYPE_SERVICE_ACCOUNT" },
]);

/**
 * @generated from message api.User
 */
export class User extends Message<User> {
  /**
   * @generated from field: string ID = 1;
   */
  ID = "";

  /**
   * @generated from field: string FirstName = 2;
   */
  FirstName = "";

  /**
   * @generated from field: string LastName = 3;
   */
  LastName = "";

  /**
   * @generated from field: string Mail = 4;
   */
  Mail = "";

  /**
   * bool Active = 5;
   *
   * @generated from field: string LanguageCode = 6;
   */
  LanguageCode = "";

  /**
   * @generated from field: string TimezoneCode = 7;
   */
  TimezoneCode = "";

  /**
   * repeated string Roles = 8;
   * repeated string InheritedRoles = 9;
   *
   * @generated from field: api.UserStatus Status = 10;
   */
  Status = UserStatus.UNKNOWN;

  /**
   * UTC date/time in <a href='https://en.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format
   *
   * @generated from field: string CreatedAt = 11;
   */
  CreatedAt = "";

  /**
   * @generated from field: api.UserType Type = 12;
   */
  Type = UserType.UNKNOWN;

  /**
   * @generated from field: string PartnerAppID = 13;
   */
  PartnerAppID = "";

  /**
   * Only for SA
   *
   * @generated from field: string ExpiresAt = 14;
   */
  ExpiresAt = "";

  /**
   * @generated from field: string PartnerID = 15;
   */
  PartnerID = "";

  /**
   * @generated from field: api.TwoFAValue TwoFA = 16;
   */
  TwoFA = TwoFAValue.TWOFA_VALUE_UNKNOWN;

  /**
   * @generated from field: bool TemporarilyLocked = 17;
   */
  TemporarilyLocked = false;

  constructor(data?: PartialMessage<User>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.User";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "FirstName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "LastName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 6, name: "LanguageCode", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 7, name: "TimezoneCode", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 10, name: "Status", kind: "enum", T: proto3.getEnumType(UserStatus) },
    { no: 11, name: "CreatedAt", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 12, name: "Type", kind: "enum", T: proto3.getEnumType(UserType) },
    { no: 13, name: "PartnerAppID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 14, name: "ExpiresAt", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 15, name: "PartnerID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 16, name: "TwoFA", kind: "enum", T: proto3.getEnumType(TwoFAValue) },
    { no: 17, name: "TemporarilyLocked", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): User {
    return new User().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): User {
    return new User().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): User {
    return new User().fromJsonString(jsonString, options);
  }

  static equals(a: User | PlainMessage<User> | undefined, b: User | PlainMessage<User> | undefined): boolean {
    return proto3.util.equals(User, a, b);
  }
}

/**
 * @generated from message api.RemoveUserRequest
 */
export class RemoveUserRequest extends Message<RemoveUserRequest> {
  /**
   * @generated from field: string UserID = 1;
   */
  UserID = "";

  constructor(data?: PartialMessage<RemoveUserRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.RemoveUserRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RemoveUserRequest {
    return new RemoveUserRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): RemoveUserRequest {
    return new RemoveUserRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): RemoveUserRequest {
    return new RemoveUserRequest().fromJsonString(jsonString, options);
  }

  static equals(a: RemoveUserRequest | PlainMessage<RemoveUserRequest> | undefined, b: RemoveUserRequest | PlainMessage<RemoveUserRequest> | undefined): boolean {
    return proto3.util.equals(RemoveUserRequest, a, b);
  }
}

/**
 * @generated from message api.EnrollUserRequest
 */
export class EnrollUserRequest extends Message<EnrollUserRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string Mail = 2;
   */
  Mail = "";

  /**
   * The locale the user will be enrolled with following the specification defined at
   * http://www.rfc-editor.org/rfc/bcp/bcp47.txt.
   * Examples are: "en-US", "fr-CH", "es-MX"
   *
   * @generated from field: string locale = 3;
   */
  locale = "";

  /**
   * @generated from field: bool ForceTwoFA = 4;
   */
  ForceTwoFA = false;

  constructor(data?: PartialMessage<EnrollUserRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.EnrollUserRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "locale", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ForceTwoFA", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnrollUserRequest {
    return new EnrollUserRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnrollUserRequest {
    return new EnrollUserRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnrollUserRequest {
    return new EnrollUserRequest().fromJsonString(jsonString, options);
  }

  static equals(a: EnrollUserRequest | PlainMessage<EnrollUserRequest> | undefined, b: EnrollUserRequest | PlainMessage<EnrollUserRequest> | undefined): boolean {
    return proto3.util.equals(EnrollUserRequest, a, b);
  }
}

/**
 * @generated from message api.SendVerificationMailRequest
 */
export class SendVerificationMailRequest extends Message<SendVerificationMailRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  constructor(data?: PartialMessage<SendVerificationMailRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SendVerificationMailRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SendVerificationMailRequest {
    return new SendVerificationMailRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SendVerificationMailRequest {
    return new SendVerificationMailRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SendVerificationMailRequest {
    return new SendVerificationMailRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SendVerificationMailRequest | PlainMessage<SendVerificationMailRequest> | undefined, b: SendVerificationMailRequest | PlainMessage<SendVerificationMailRequest> | undefined): boolean {
    return proto3.util.equals(SendVerificationMailRequest, a, b);
  }
}

/**
 * @generated from message api.SendVerificationMailAsRequest
 */
export class SendVerificationMailAsRequest extends Message<SendVerificationMailAsRequest> {
  /**
   * The mail address of the user who is inviting the other user.
   *
   * @generated from field: string SenderMail = 1;
   */
  SenderMail = "";

  /**
   * The user ID of the user who is invited and will receive the mail.
   *
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  /**
   * The organisation ID the user is invited to, if any. If ProjectID is set, this field is ignored and the organisation ID is taken from the project.
   *
   * @generated from field: string OrganisationID = 3;
   */
  OrganisationID = "";

  /**
   * The project ID the user is invited to, if any.
   *
   * @generated from field: string ProjectID = 4;
   */
  ProjectID = "";

  constructor(data?: PartialMessage<SendVerificationMailAsRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SendVerificationMailAsRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "SenderMail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "OrganisationID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ProjectID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SendVerificationMailAsRequest {
    return new SendVerificationMailAsRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SendVerificationMailAsRequest {
    return new SendVerificationMailAsRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SendVerificationMailAsRequest {
    return new SendVerificationMailAsRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SendVerificationMailAsRequest | PlainMessage<SendVerificationMailAsRequest> | undefined, b: SendVerificationMailAsRequest | PlainMessage<SendVerificationMailAsRequest> | undefined): boolean {
    return proto3.util.equals(SendVerificationMailAsRequest, a, b);
  }
}

/**
 * @generated from message api.EnrollUserProjectRequest
 */
export class EnrollUserProjectRequest extends Message<EnrollUserProjectRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string Mail = 2;
   */
  Mail = "";

  /**
   * The locale the user will be enrolled with following the specification defined at
   * http://www.rfc-editor.org/rfc/bcp/bcp47.txt.
   * Examples are: "en-US", "fr-CH", "es-MX"
   *
   * @generated from field: string locale = 3;
   */
  locale = "";

  /**
   * @generated from field: bool ForceTwoFA = 4;
   */
  ForceTwoFA = false;

  constructor(data?: PartialMessage<EnrollUserProjectRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.EnrollUserProjectRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "locale", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ForceTwoFA", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnrollUserProjectRequest {
    return new EnrollUserProjectRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnrollUserProjectRequest {
    return new EnrollUserProjectRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnrollUserProjectRequest {
    return new EnrollUserProjectRequest().fromJsonString(jsonString, options);
  }

  static equals(a: EnrollUserProjectRequest | PlainMessage<EnrollUserProjectRequest> | undefined, b: EnrollUserProjectRequest | PlainMessage<EnrollUserProjectRequest> | undefined): boolean {
    return proto3.util.equals(EnrollUserProjectRequest, a, b);
  }
}

/**
 * @generated from message api.SendVerificationMailProjectRequest
 */
export class SendVerificationMailProjectRequest extends Message<SendVerificationMailProjectRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  constructor(data?: PartialMessage<SendVerificationMailProjectRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SendVerificationMailProjectRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SendVerificationMailProjectRequest {
    return new SendVerificationMailProjectRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SendVerificationMailProjectRequest {
    return new SendVerificationMailProjectRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SendVerificationMailProjectRequest {
    return new SendVerificationMailProjectRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SendVerificationMailProjectRequest | PlainMessage<SendVerificationMailProjectRequest> | undefined, b: SendVerificationMailProjectRequest | PlainMessage<SendVerificationMailProjectRequest> | undefined): boolean {
    return proto3.util.equals(SendVerificationMailProjectRequest, a, b);
  }
}

/**
 * @generated from message api.CreateSARequest
 */
export class CreateSARequest extends Message<CreateSARequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string Name = 2;
   */
  Name = "";

  constructor(data?: PartialMessage<CreateSARequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreateSARequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateSARequest {
    return new CreateSARequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateSARequest {
    return new CreateSARequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateSARequest {
    return new CreateSARequest().fromJsonString(jsonString, options);
  }

  static equals(a: CreateSARequest | PlainMessage<CreateSARequest> | undefined, b: CreateSARequest | PlainMessage<CreateSARequest> | undefined): boolean {
    return proto3.util.equals(CreateSARequest, a, b);
  }
}

/**
 * @generated from message api.RenewSARequest
 */
export class RenewSARequest extends Message<RenewSARequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string Mail = 2;
   */
  Mail = "";

  constructor(data?: PartialMessage<RenewSARequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.RenewSARequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RenewSARequest {
    return new RenewSARequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): RenewSARequest {
    return new RenewSARequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): RenewSARequest {
    return new RenewSARequest().fromJsonString(jsonString, options);
  }

  static equals(a: RenewSARequest | PlainMessage<RenewSARequest> | undefined, b: RenewSARequest | PlainMessage<RenewSARequest> | undefined): boolean {
    return proto3.util.equals(RenewSARequest, a, b);
  }
}

/**
 * @generated from message api.RemoveSARequest
 */
export class RemoveSARequest extends Message<RemoveSARequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string Mail = 2;
   */
  Mail = "";

  constructor(data?: PartialMessage<RemoveSARequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.RemoveSARequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RemoveSARequest {
    return new RemoveSARequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): RemoveSARequest {
    return new RemoveSARequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): RemoveSARequest {
    return new RemoveSARequest().fromJsonString(jsonString, options);
  }

  static equals(a: RemoveSARequest | PlainMessage<RemoveSARequest> | undefined, b: RemoveSARequest | PlainMessage<RemoveSARequest> | undefined): boolean {
    return proto3.util.equals(RemoveSARequest, a, b);
  }
}

/**
 * @generated from message api.SuggestSANameRequest
 */
export class SuggestSANameRequest extends Message<SuggestSANameRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string Name = 2;
   */
  Name = "";

  constructor(data?: PartialMessage<SuggestSANameRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SuggestSANameRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SuggestSANameRequest {
    return new SuggestSANameRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SuggestSANameRequest {
    return new SuggestSANameRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SuggestSANameRequest {
    return new SuggestSANameRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SuggestSANameRequest | PlainMessage<SuggestSANameRequest> | undefined, b: SuggestSANameRequest | PlainMessage<SuggestSANameRequest> | undefined): boolean {
    return proto3.util.equals(SuggestSANameRequest, a, b);
  }
}

/**
 * @generated from message api.ListPlatformUsersRequest
 */
export class ListPlatformUsersRequest extends Message<ListPlatformUsersRequest> {
  constructor(data?: PartialMessage<ListPlatformUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListPlatformUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListPlatformUsersRequest {
    return new ListPlatformUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListPlatformUsersRequest {
    return new ListPlatformUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListPlatformUsersRequest {
    return new ListPlatformUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListPlatformUsersRequest | PlainMessage<ListPlatformUsersRequest> | undefined, b: ListPlatformUsersRequest | PlainMessage<ListPlatformUsersRequest> | undefined): boolean {
    return proto3.util.equals(ListPlatformUsersRequest, a, b);
  }
}

/**
 * @generated from message api.ListOrganisationUsersRequest
 */
export class ListOrganisationUsersRequest extends Message<ListOrganisationUsersRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  constructor(data?: PartialMessage<ListOrganisationUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListOrganisationUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListOrganisationUsersRequest {
    return new ListOrganisationUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListOrganisationUsersRequest {
    return new ListOrganisationUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListOrganisationUsersRequest {
    return new ListOrganisationUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListOrganisationUsersRequest | PlainMessage<ListOrganisationUsersRequest> | undefined, b: ListOrganisationUsersRequest | PlainMessage<ListOrganisationUsersRequest> | undefined): boolean {
    return proto3.util.equals(ListOrganisationUsersRequest, a, b);
  }
}

/**
 * @generated from message api.ListProjectUsersRequest
 */
export class ListProjectUsersRequest extends Message<ListProjectUsersRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  constructor(data?: PartialMessage<ListProjectUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListProjectUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListProjectUsersRequest {
    return new ListProjectUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListProjectUsersRequest {
    return new ListProjectUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListProjectUsersRequest {
    return new ListProjectUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListProjectUsersRequest | PlainMessage<ListProjectUsersRequest> | undefined, b: ListProjectUsersRequest | PlainMessage<ListProjectUsersRequest> | undefined): boolean {
    return proto3.util.equals(ListProjectUsersRequest, a, b);
  }
}

/**
 * @generated from message api.ListPartnerAppUsersRequest
 */
export class ListPartnerAppUsersRequest extends Message<ListPartnerAppUsersRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string PartnerAppID = 2;
   */
  PartnerAppID = "";

  constructor(data?: PartialMessage<ListPartnerAppUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListPartnerAppUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "PartnerAppID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListPartnerAppUsersRequest {
    return new ListPartnerAppUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListPartnerAppUsersRequest {
    return new ListPartnerAppUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListPartnerAppUsersRequest {
    return new ListPartnerAppUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListPartnerAppUsersRequest | PlainMessage<ListPartnerAppUsersRequest> | undefined, b: ListPartnerAppUsersRequest | PlainMessage<ListPartnerAppUsersRequest> | undefined): boolean {
    return proto3.util.equals(ListPartnerAppUsersRequest, a, b);
  }
}

/**
 * @generated from message api.ListConnectionUsersRequest
 */
export class ListConnectionUsersRequest extends Message<ListConnectionUsersRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string ConnectionID = 2;
   */
  ConnectionID = "";

  constructor(data?: PartialMessage<ListConnectionUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListConnectionUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "ConnectionID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListConnectionUsersRequest {
    return new ListConnectionUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListConnectionUsersRequest {
    return new ListConnectionUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListConnectionUsersRequest {
    return new ListConnectionUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListConnectionUsersRequest | PlainMessage<ListConnectionUsersRequest> | undefined, b: ListConnectionUsersRequest | PlainMessage<ListConnectionUsersRequest> | undefined): boolean {
    return proto3.util.equals(ListConnectionUsersRequest, a, b);
  }
}

/**
 * @generated from message api.GetPlatformUserRequest
 */
export class GetPlatformUserRequest extends Message<GetPlatformUserRequest> {
  /**
   * @generated from field: string UserID = 1;
   */
  UserID = "";

  constructor(data?: PartialMessage<GetPlatformUserRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetPlatformUserRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetPlatformUserRequest {
    return new GetPlatformUserRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetPlatformUserRequest {
    return new GetPlatformUserRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetPlatformUserRequest {
    return new GetPlatformUserRequest().fromJsonString(jsonString, options);
  }

  static equals(a: GetPlatformUserRequest | PlainMessage<GetPlatformUserRequest> | undefined, b: GetPlatformUserRequest | PlainMessage<GetPlatformUserRequest> | undefined): boolean {
    return proto3.util.equals(GetPlatformUserRequest, a, b);
  }
}

/**
 * @generated from message api.GetOrganisationUserRequest
 */
export class GetOrganisationUserRequest extends Message<GetOrganisationUserRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  constructor(data?: PartialMessage<GetOrganisationUserRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetOrganisationUserRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetOrganisationUserRequest {
    return new GetOrganisationUserRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetOrganisationUserRequest {
    return new GetOrganisationUserRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetOrganisationUserRequest {
    return new GetOrganisationUserRequest().fromJsonString(jsonString, options);
  }

  static equals(a: GetOrganisationUserRequest | PlainMessage<GetOrganisationUserRequest> | undefined, b: GetOrganisationUserRequest | PlainMessage<GetOrganisationUserRequest> | undefined): boolean {
    return proto3.util.equals(GetOrganisationUserRequest, a, b);
  }
}

/**
 * @generated from message api.GetProjectUserRequest
 */
export class GetProjectUserRequest extends Message<GetProjectUserRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  constructor(data?: PartialMessage<GetProjectUserRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetProjectUserRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetProjectUserRequest {
    return new GetProjectUserRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetProjectUserRequest {
    return new GetProjectUserRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetProjectUserRequest {
    return new GetProjectUserRequest().fromJsonString(jsonString, options);
  }

  static equals(a: GetProjectUserRequest | PlainMessage<GetProjectUserRequest> | undefined, b: GetProjectUserRequest | PlainMessage<GetProjectUserRequest> | undefined): boolean {
    return proto3.util.equals(GetProjectUserRequest, a, b);
  }
}

/**
 * @generated from message api.ListUserPlatformRolesRequest
 */
export class ListUserPlatformRolesRequest extends Message<ListUserPlatformRolesRequest> {
  /**
   * @generated from field: string UserID = 1;
   */
  UserID = "";

  constructor(data?: PartialMessage<ListUserPlatformRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserPlatformRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserPlatformRolesRequest {
    return new ListUserPlatformRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserPlatformRolesRequest {
    return new ListUserPlatformRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserPlatformRolesRequest {
    return new ListUserPlatformRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserPlatformRolesRequest | PlainMessage<ListUserPlatformRolesRequest> | undefined, b: ListUserPlatformRolesRequest | PlainMessage<ListUserPlatformRolesRequest> | undefined): boolean {
    return proto3.util.equals(ListUserPlatformRolesRequest, a, b);
  }
}

/**
 * @generated from message api.ListUserOrganisationRolesRequest
 */
export class ListUserOrganisationRolesRequest extends Message<ListUserOrganisationRolesRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  constructor(data?: PartialMessage<ListUserOrganisationRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserOrganisationRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserOrganisationRolesRequest {
    return new ListUserOrganisationRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserOrganisationRolesRequest {
    return new ListUserOrganisationRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserOrganisationRolesRequest {
    return new ListUserOrganisationRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserOrganisationRolesRequest | PlainMessage<ListUserOrganisationRolesRequest> | undefined, b: ListUserOrganisationRolesRequest | PlainMessage<ListUserOrganisationRolesRequest> | undefined): boolean {
    return proto3.util.equals(ListUserOrganisationRolesRequest, a, b);
  }
}

/**
 * @generated from message api.ListUserProjectRolesRequest
 */
export class ListUserProjectRolesRequest extends Message<ListUserProjectRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  constructor(data?: PartialMessage<ListUserProjectRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserProjectRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserProjectRolesRequest {
    return new ListUserProjectRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserProjectRolesRequest {
    return new ListUserProjectRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserProjectRolesRequest {
    return new ListUserProjectRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserProjectRolesRequest | PlainMessage<ListUserProjectRolesRequest> | undefined, b: ListUserProjectRolesRequest | PlainMessage<ListUserProjectRolesRequest> | undefined): boolean {
    return proto3.util.equals(ListUserProjectRolesRequest, a, b);
  }
}

/**
 * @generated from message api.ListUserPartnerAppRolesRequest
 */
export class ListUserPartnerAppRolesRequest extends Message<ListUserPartnerAppRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string PartnerAppID = 2;
   */
  PartnerAppID = "";

  /**
   * @generated from field: string UserID = 3;
   */
  UserID = "";

  constructor(data?: PartialMessage<ListUserPartnerAppRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserPartnerAppRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "PartnerAppID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserPartnerAppRolesRequest {
    return new ListUserPartnerAppRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserPartnerAppRolesRequest {
    return new ListUserPartnerAppRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserPartnerAppRolesRequest {
    return new ListUserPartnerAppRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserPartnerAppRolesRequest | PlainMessage<ListUserPartnerAppRolesRequest> | undefined, b: ListUserPartnerAppRolesRequest | PlainMessage<ListUserPartnerAppRolesRequest> | undefined): boolean {
    return proto3.util.equals(ListUserPartnerAppRolesRequest, a, b);
  }
}

/**
 * @generated from message api.ListUserConnectionRolesRequest
 */
export class ListUserConnectionRolesRequest extends Message<ListUserConnectionRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string ConnectionID = 2;
   */
  ConnectionID = "";

  /**
   * @generated from field: string UserID = 3;
   */
  UserID = "";

  constructor(data?: PartialMessage<ListUserConnectionRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserConnectionRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "ConnectionID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserConnectionRolesRequest {
    return new ListUserConnectionRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserConnectionRolesRequest {
    return new ListUserConnectionRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserConnectionRolesRequest {
    return new ListUserConnectionRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserConnectionRolesRequest | PlainMessage<ListUserConnectionRolesRequest> | undefined, b: ListUserConnectionRolesRequest | PlainMessage<ListUserConnectionRolesRequest> | undefined): boolean {
    return proto3.util.equals(ListUserConnectionRolesRequest, a, b);
  }
}

/**
 * @generated from message api.ListUserAttachmentTypeRolesRequest
 */
export class ListUserAttachmentTypeRolesRequest extends Message<ListUserAttachmentTypeRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string AttachmentTypeID = 2;
   */
  AttachmentTypeID = "";

  /**
   * @generated from field: string UserID = 3;
   */
  UserID = "";

  constructor(data?: PartialMessage<ListUserAttachmentTypeRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserAttachmentTypeRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "AttachmentTypeID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserAttachmentTypeRolesRequest {
    return new ListUserAttachmentTypeRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserAttachmentTypeRolesRequest {
    return new ListUserAttachmentTypeRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserAttachmentTypeRolesRequest {
    return new ListUserAttachmentTypeRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserAttachmentTypeRolesRequest | PlainMessage<ListUserAttachmentTypeRolesRequest> | undefined, b: ListUserAttachmentTypeRolesRequest | PlainMessage<ListUserAttachmentTypeRolesRequest> | undefined): boolean {
    return proto3.util.equals(ListUserAttachmentTypeRolesRequest, a, b);
  }
}

/**
 * @generated from message api.SetUserPlatformRolesRequest
 */
export class SetUserPlatformRolesRequest extends Message<SetUserPlatformRolesRequest> {
  /**
   * @generated from field: string UserID = 1;
   */
  UserID = "";

  /**
   * @generated from field: repeated string Roles = 2;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<SetUserPlatformRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserPlatformRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserPlatformRolesRequest {
    return new SetUserPlatformRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserPlatformRolesRequest {
    return new SetUserPlatformRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserPlatformRolesRequest {
    return new SetUserPlatformRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserPlatformRolesRequest | PlainMessage<SetUserPlatformRolesRequest> | undefined, b: SetUserPlatformRolesRequest | PlainMessage<SetUserPlatformRolesRequest> | undefined): boolean {
    return proto3.util.equals(SetUserPlatformRolesRequest, a, b);
  }
}

/**
 * @generated from message api.SetUserOrganisationRolesRequest
 */
export class SetUserOrganisationRolesRequest extends Message<SetUserOrganisationRolesRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  /**
   * @generated from field: repeated string Roles = 3;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<SetUserOrganisationRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserOrganisationRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserOrganisationRolesRequest {
    return new SetUserOrganisationRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserOrganisationRolesRequest {
    return new SetUserOrganisationRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserOrganisationRolesRequest {
    return new SetUserOrganisationRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserOrganisationRolesRequest | PlainMessage<SetUserOrganisationRolesRequest> | undefined, b: SetUserOrganisationRolesRequest | PlainMessage<SetUserOrganisationRolesRequest> | undefined): boolean {
    return proto3.util.equals(SetUserOrganisationRolesRequest, a, b);
  }
}

/**
 * @generated from message api.SetUserProjectRolesRequest
 */
export class SetUserProjectRolesRequest extends Message<SetUserProjectRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  /**
   * @generated from field: repeated string Roles = 3;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<SetUserProjectRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserProjectRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserProjectRolesRequest {
    return new SetUserProjectRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserProjectRolesRequest {
    return new SetUserProjectRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserProjectRolesRequest {
    return new SetUserProjectRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserProjectRolesRequest | PlainMessage<SetUserProjectRolesRequest> | undefined, b: SetUserProjectRolesRequest | PlainMessage<SetUserProjectRolesRequest> | undefined): boolean {
    return proto3.util.equals(SetUserProjectRolesRequest, a, b);
  }
}

/**
 * @generated from message api.SetUserPartnerAppRolesRequest
 */
export class SetUserPartnerAppRolesRequest extends Message<SetUserPartnerAppRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string PartnerAppID = 2;
   */
  PartnerAppID = "";

  /**
   * @generated from field: string UserID = 3;
   */
  UserID = "";

  /**
   * @generated from field: repeated string Roles = 4;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<SetUserPartnerAppRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserPartnerAppRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "PartnerAppID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserPartnerAppRolesRequest {
    return new SetUserPartnerAppRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserPartnerAppRolesRequest {
    return new SetUserPartnerAppRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserPartnerAppRolesRequest {
    return new SetUserPartnerAppRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserPartnerAppRolesRequest | PlainMessage<SetUserPartnerAppRolesRequest> | undefined, b: SetUserPartnerAppRolesRequest | PlainMessage<SetUserPartnerAppRolesRequest> | undefined): boolean {
    return proto3.util.equals(SetUserPartnerAppRolesRequest, a, b);
  }
}

/**
 * @generated from message api.SetUserConnectionRolesRequest
 */
export class SetUserConnectionRolesRequest extends Message<SetUserConnectionRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string ConnectionID = 2;
   */
  ConnectionID = "";

  /**
   * @generated from field: string UserID = 3;
   */
  UserID = "";

  /**
   * @generated from field: repeated string Roles = 4;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<SetUserConnectionRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserConnectionRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "ConnectionID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserConnectionRolesRequest {
    return new SetUserConnectionRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserConnectionRolesRequest {
    return new SetUserConnectionRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserConnectionRolesRequest {
    return new SetUserConnectionRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserConnectionRolesRequest | PlainMessage<SetUserConnectionRolesRequest> | undefined, b: SetUserConnectionRolesRequest | PlainMessage<SetUserConnectionRolesRequest> | undefined): boolean {
    return proto3.util.equals(SetUserConnectionRolesRequest, a, b);
  }
}

/**
 * @generated from message api.SetUserAttachmentTypeRolesRequest
 */
export class SetUserAttachmentTypeRolesRequest extends Message<SetUserAttachmentTypeRolesRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string AttachmentTypeID = 2;
   */
  AttachmentTypeID = "";

  /**
   * @generated from field: string UserID = 3;
   */
  UserID = "";

  /**
   * @generated from field: repeated string Roles = 4;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<SetUserAttachmentTypeRolesRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserAttachmentTypeRolesRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "AttachmentTypeID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserAttachmentTypeRolesRequest {
    return new SetUserAttachmentTypeRolesRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserAttachmentTypeRolesRequest {
    return new SetUserAttachmentTypeRolesRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserAttachmentTypeRolesRequest {
    return new SetUserAttachmentTypeRolesRequest().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserAttachmentTypeRolesRequest | PlainMessage<SetUserAttachmentTypeRolesRequest> | undefined, b: SetUserAttachmentTypeRolesRequest | PlainMessage<SetUserAttachmentTypeRolesRequest> | undefined): boolean {
    return proto3.util.equals(SetUserAttachmentTypeRolesRequest, a, b);
  }
}

/**
 * @generated from message api.RemoveUserResult
 */
export class RemoveUserResult extends Message<RemoveUserResult> {
  constructor(data?: PartialMessage<RemoveUserResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.RemoveUserResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RemoveUserResult {
    return new RemoveUserResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): RemoveUserResult {
    return new RemoveUserResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): RemoveUserResult {
    return new RemoveUserResult().fromJsonString(jsonString, options);
  }

  static equals(a: RemoveUserResult | PlainMessage<RemoveUserResult> | undefined, b: RemoveUserResult | PlainMessage<RemoveUserResult> | undefined): boolean {
    return proto3.util.equals(RemoveUserResult, a, b);
  }
}

/**
 * @generated from message api.EnrollUserResult
 */
export class EnrollUserResult extends Message<EnrollUserResult> {
  /**
   * @generated from field: api.User User = 1;
   */
  User?: User;

  constructor(data?: PartialMessage<EnrollUserResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.EnrollUserResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "User", kind: "message", T: User },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnrollUserResult {
    return new EnrollUserResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnrollUserResult {
    return new EnrollUserResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnrollUserResult {
    return new EnrollUserResult().fromJsonString(jsonString, options);
  }

  static equals(a: EnrollUserResult | PlainMessage<EnrollUserResult> | undefined, b: EnrollUserResult | PlainMessage<EnrollUserResult> | undefined): boolean {
    return proto3.util.equals(EnrollUserResult, a, b);
  }
}

/**
 * @generated from message api.SendVerificationMailResult
 */
export class SendVerificationMailResult extends Message<SendVerificationMailResult> {
  constructor(data?: PartialMessage<SendVerificationMailResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SendVerificationMailResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SendVerificationMailResult {
    return new SendVerificationMailResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SendVerificationMailResult {
    return new SendVerificationMailResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SendVerificationMailResult {
    return new SendVerificationMailResult().fromJsonString(jsonString, options);
  }

  static equals(a: SendVerificationMailResult | PlainMessage<SendVerificationMailResult> | undefined, b: SendVerificationMailResult | PlainMessage<SendVerificationMailResult> | undefined): boolean {
    return proto3.util.equals(SendVerificationMailResult, a, b);
  }
}

/**
 * @generated from message api.CreateSAResult
 */
export class CreateSAResult extends Message<CreateSAResult> {
  /**
   * @generated from field: api.User SA = 1;
   */
  SA?: User;

  /**
   * @generated from field: string PEM = 2;
   */
  PEM = "";

  constructor(data?: PartialMessage<CreateSAResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.CreateSAResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "SA", kind: "message", T: User },
    { no: 2, name: "PEM", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateSAResult {
    return new CreateSAResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateSAResult {
    return new CreateSAResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateSAResult {
    return new CreateSAResult().fromJsonString(jsonString, options);
  }

  static equals(a: CreateSAResult | PlainMessage<CreateSAResult> | undefined, b: CreateSAResult | PlainMessage<CreateSAResult> | undefined): boolean {
    return proto3.util.equals(CreateSAResult, a, b);
  }
}

/**
 * @generated from message api.RenewSAResult
 */
export class RenewSAResult extends Message<RenewSAResult> {
  /**
   * @generated from field: api.User SA = 1;
   */
  SA?: User;

  /**
   * @generated from field: string PEM = 2;
   */
  PEM = "";

  constructor(data?: PartialMessage<RenewSAResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.RenewSAResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "SA", kind: "message", T: User },
    { no: 2, name: "PEM", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RenewSAResult {
    return new RenewSAResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): RenewSAResult {
    return new RenewSAResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): RenewSAResult {
    return new RenewSAResult().fromJsonString(jsonString, options);
  }

  static equals(a: RenewSAResult | PlainMessage<RenewSAResult> | undefined, b: RenewSAResult | PlainMessage<RenewSAResult> | undefined): boolean {
    return proto3.util.equals(RenewSAResult, a, b);
  }
}

/**
 * @generated from message api.RemoveSAResult
 */
export class RemoveSAResult extends Message<RemoveSAResult> {
  constructor(data?: PartialMessage<RemoveSAResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.RemoveSAResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RemoveSAResult {
    return new RemoveSAResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): RemoveSAResult {
    return new RemoveSAResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): RemoveSAResult {
    return new RemoveSAResult().fromJsonString(jsonString, options);
  }

  static equals(a: RemoveSAResult | PlainMessage<RemoveSAResult> | undefined, b: RemoveSAResult | PlainMessage<RemoveSAResult> | undefined): boolean {
    return proto3.util.equals(RemoveSAResult, a, b);
  }
}

/**
 * @generated from message api.SuggestSANameResult
 */
export class SuggestSANameResult extends Message<SuggestSANameResult> {
  /**
   * @generated from field: string Name = 1;
   */
  Name = "";

  /**
   * @generated from field: string Mail = 2;
   */
  Mail = "";

  constructor(data?: PartialMessage<SuggestSANameResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SuggestSANameResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SuggestSANameResult {
    return new SuggestSANameResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SuggestSANameResult {
    return new SuggestSANameResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SuggestSANameResult {
    return new SuggestSANameResult().fromJsonString(jsonString, options);
  }

  static equals(a: SuggestSANameResult | PlainMessage<SuggestSANameResult> | undefined, b: SuggestSANameResult | PlainMessage<SuggestSANameResult> | undefined): boolean {
    return proto3.util.equals(SuggestSANameResult, a, b);
  }
}

/**
 * @generated from message api.ListPlatformUsersResult
 */
export class ListPlatformUsersResult extends Message<ListPlatformUsersResult> {
  /**
   * @generated from field: repeated api.User Users = 1;
   */
  Users: User[] = [];

  constructor(data?: PartialMessage<ListPlatformUsersResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListPlatformUsersResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Users", kind: "message", T: User, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListPlatformUsersResult {
    return new ListPlatformUsersResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListPlatformUsersResult {
    return new ListPlatformUsersResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListPlatformUsersResult {
    return new ListPlatformUsersResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListPlatformUsersResult | PlainMessage<ListPlatformUsersResult> | undefined, b: ListPlatformUsersResult | PlainMessage<ListPlatformUsersResult> | undefined): boolean {
    return proto3.util.equals(ListPlatformUsersResult, a, b);
  }
}

/**
 * @generated from message api.ListOrganisationUsersResult
 */
export class ListOrganisationUsersResult extends Message<ListOrganisationUsersResult> {
  /**
   * @generated from field: repeated api.User Users = 1;
   */
  Users: User[] = [];

  constructor(data?: PartialMessage<ListOrganisationUsersResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListOrganisationUsersResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Users", kind: "message", T: User, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListOrganisationUsersResult {
    return new ListOrganisationUsersResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListOrganisationUsersResult {
    return new ListOrganisationUsersResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListOrganisationUsersResult {
    return new ListOrganisationUsersResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListOrganisationUsersResult | PlainMessage<ListOrganisationUsersResult> | undefined, b: ListOrganisationUsersResult | PlainMessage<ListOrganisationUsersResult> | undefined): boolean {
    return proto3.util.equals(ListOrganisationUsersResult, a, b);
  }
}

/**
 * @generated from message api.ListProjectUsersResult
 */
export class ListProjectUsersResult extends Message<ListProjectUsersResult> {
  /**
   * @generated from field: repeated api.User Users = 1;
   */
  Users: User[] = [];

  constructor(data?: PartialMessage<ListProjectUsersResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListProjectUsersResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Users", kind: "message", T: User, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListProjectUsersResult {
    return new ListProjectUsersResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListProjectUsersResult {
    return new ListProjectUsersResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListProjectUsersResult {
    return new ListProjectUsersResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListProjectUsersResult | PlainMessage<ListProjectUsersResult> | undefined, b: ListProjectUsersResult | PlainMessage<ListProjectUsersResult> | undefined): boolean {
    return proto3.util.equals(ListProjectUsersResult, a, b);
  }
}

/**
 * @generated from message api.ListPartnerAppUsersResult
 */
export class ListPartnerAppUsersResult extends Message<ListPartnerAppUsersResult> {
  /**
   * @generated from field: repeated api.User Users = 1;
   */
  Users: User[] = [];

  constructor(data?: PartialMessage<ListPartnerAppUsersResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListPartnerAppUsersResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Users", kind: "message", T: User, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListPartnerAppUsersResult {
    return new ListPartnerAppUsersResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListPartnerAppUsersResult {
    return new ListPartnerAppUsersResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListPartnerAppUsersResult {
    return new ListPartnerAppUsersResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListPartnerAppUsersResult | PlainMessage<ListPartnerAppUsersResult> | undefined, b: ListPartnerAppUsersResult | PlainMessage<ListPartnerAppUsersResult> | undefined): boolean {
    return proto3.util.equals(ListPartnerAppUsersResult, a, b);
  }
}

/**
 * @generated from message api.ListConnectionUsersResult
 */
export class ListConnectionUsersResult extends Message<ListConnectionUsersResult> {
  /**
   * @generated from field: repeated api.User Users = 1;
   */
  Users: User[] = [];

  constructor(data?: PartialMessage<ListConnectionUsersResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListConnectionUsersResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Users", kind: "message", T: User, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListConnectionUsersResult {
    return new ListConnectionUsersResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListConnectionUsersResult {
    return new ListConnectionUsersResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListConnectionUsersResult {
    return new ListConnectionUsersResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListConnectionUsersResult | PlainMessage<ListConnectionUsersResult> | undefined, b: ListConnectionUsersResult | PlainMessage<ListConnectionUsersResult> | undefined): boolean {
    return proto3.util.equals(ListConnectionUsersResult, a, b);
  }
}

/**
 * @generated from message api.GetPlatformUserResult
 */
export class GetPlatformUserResult extends Message<GetPlatformUserResult> {
  /**
   * @generated from field: api.User User = 1;
   */
  User?: User;

  constructor(data?: PartialMessage<GetPlatformUserResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetPlatformUserResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "User", kind: "message", T: User },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetPlatformUserResult {
    return new GetPlatformUserResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetPlatformUserResult {
    return new GetPlatformUserResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetPlatformUserResult {
    return new GetPlatformUserResult().fromJsonString(jsonString, options);
  }

  static equals(a: GetPlatformUserResult | PlainMessage<GetPlatformUserResult> | undefined, b: GetPlatformUserResult | PlainMessage<GetPlatformUserResult> | undefined): boolean {
    return proto3.util.equals(GetPlatformUserResult, a, b);
  }
}

/**
 * @generated from message api.GetOrganisationUserResult
 */
export class GetOrganisationUserResult extends Message<GetOrganisationUserResult> {
  /**
   * @generated from field: api.User User = 1;
   */
  User?: User;

  constructor(data?: PartialMessage<GetOrganisationUserResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetOrganisationUserResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "User", kind: "message", T: User },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetOrganisationUserResult {
    return new GetOrganisationUserResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetOrganisationUserResult {
    return new GetOrganisationUserResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetOrganisationUserResult {
    return new GetOrganisationUserResult().fromJsonString(jsonString, options);
  }

  static equals(a: GetOrganisationUserResult | PlainMessage<GetOrganisationUserResult> | undefined, b: GetOrganisationUserResult | PlainMessage<GetOrganisationUserResult> | undefined): boolean {
    return proto3.util.equals(GetOrganisationUserResult, a, b);
  }
}

/**
 * @generated from message api.GetProjectUserResult
 */
export class GetProjectUserResult extends Message<GetProjectUserResult> {
  /**
   * @generated from field: api.User User = 1;
   */
  User?: User;

  constructor(data?: PartialMessage<GetProjectUserResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.GetProjectUserResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "User", kind: "message", T: User },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetProjectUserResult {
    return new GetProjectUserResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetProjectUserResult {
    return new GetProjectUserResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetProjectUserResult {
    return new GetProjectUserResult().fromJsonString(jsonString, options);
  }

  static equals(a: GetProjectUserResult | PlainMessage<GetProjectUserResult> | undefined, b: GetProjectUserResult | PlainMessage<GetProjectUserResult> | undefined): boolean {
    return proto3.util.equals(GetProjectUserResult, a, b);
  }
}

/**
 * @generated from message api.ListUserPlatformRolesResult
 */
export class ListUserPlatformRolesResult extends Message<ListUserPlatformRolesResult> {
  /**
   * @generated from field: repeated string Roles = 1;
   */
  Roles: string[] = [];

  /**
   * @generated from field: repeated string InheritedRoles = 2;
   */
  InheritedRoles: string[] = [];

  constructor(data?: PartialMessage<ListUserPlatformRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserPlatformRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 2, name: "InheritedRoles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserPlatformRolesResult {
    return new ListUserPlatformRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserPlatformRolesResult {
    return new ListUserPlatformRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserPlatformRolesResult {
    return new ListUserPlatformRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserPlatformRolesResult | PlainMessage<ListUserPlatformRolesResult> | undefined, b: ListUserPlatformRolesResult | PlainMessage<ListUserPlatformRolesResult> | undefined): boolean {
    return proto3.util.equals(ListUserPlatformRolesResult, a, b);
  }
}

/**
 * @generated from message api.ListUserOrganisationRolesResult
 */
export class ListUserOrganisationRolesResult extends Message<ListUserOrganisationRolesResult> {
  /**
   * @generated from field: repeated string Roles = 1;
   */
  Roles: string[] = [];

  /**
   * @generated from field: repeated string InheritedRoles = 2;
   */
  InheritedRoles: string[] = [];

  constructor(data?: PartialMessage<ListUserOrganisationRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserOrganisationRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 2, name: "InheritedRoles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserOrganisationRolesResult {
    return new ListUserOrganisationRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserOrganisationRolesResult {
    return new ListUserOrganisationRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserOrganisationRolesResult {
    return new ListUserOrganisationRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserOrganisationRolesResult | PlainMessage<ListUserOrganisationRolesResult> | undefined, b: ListUserOrganisationRolesResult | PlainMessage<ListUserOrganisationRolesResult> | undefined): boolean {
    return proto3.util.equals(ListUserOrganisationRolesResult, a, b);
  }
}

/**
 * @generated from message api.ListUserProjectRolesResult
 */
export class ListUserProjectRolesResult extends Message<ListUserProjectRolesResult> {
  /**
   * @generated from field: repeated string Roles = 1;
   */
  Roles: string[] = [];

  /**
   * @generated from field: repeated string InheritedRoles = 2;
   */
  InheritedRoles: string[] = [];

  constructor(data?: PartialMessage<ListUserProjectRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserProjectRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 2, name: "InheritedRoles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserProjectRolesResult {
    return new ListUserProjectRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserProjectRolesResult {
    return new ListUserProjectRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserProjectRolesResult {
    return new ListUserProjectRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserProjectRolesResult | PlainMessage<ListUserProjectRolesResult> | undefined, b: ListUserProjectRolesResult | PlainMessage<ListUserProjectRolesResult> | undefined): boolean {
    return proto3.util.equals(ListUserProjectRolesResult, a, b);
  }
}

/**
 * @generated from message api.ListUserPartnerAppRolesResult
 */
export class ListUserPartnerAppRolesResult extends Message<ListUserPartnerAppRolesResult> {
  /**
   * @generated from field: repeated string Roles = 1;
   */
  Roles: string[] = [];

  /**
   * @generated from field: repeated string InheritedRoles = 2;
   */
  InheritedRoles: string[] = [];

  constructor(data?: PartialMessage<ListUserPartnerAppRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserPartnerAppRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 2, name: "InheritedRoles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserPartnerAppRolesResult {
    return new ListUserPartnerAppRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserPartnerAppRolesResult {
    return new ListUserPartnerAppRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserPartnerAppRolesResult {
    return new ListUserPartnerAppRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserPartnerAppRolesResult | PlainMessage<ListUserPartnerAppRolesResult> | undefined, b: ListUserPartnerAppRolesResult | PlainMessage<ListUserPartnerAppRolesResult> | undefined): boolean {
    return proto3.util.equals(ListUserPartnerAppRolesResult, a, b);
  }
}

/**
 * @generated from message api.ListUserConnectionRolesResult
 */
export class ListUserConnectionRolesResult extends Message<ListUserConnectionRolesResult> {
  /**
   * @generated from field: repeated string Roles = 1;
   */
  Roles: string[] = [];

  /**
   * @generated from field: repeated string InheritedRoles = 2;
   */
  InheritedRoles: string[] = [];

  constructor(data?: PartialMessage<ListUserConnectionRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserConnectionRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 2, name: "InheritedRoles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserConnectionRolesResult {
    return new ListUserConnectionRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserConnectionRolesResult {
    return new ListUserConnectionRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserConnectionRolesResult {
    return new ListUserConnectionRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserConnectionRolesResult | PlainMessage<ListUserConnectionRolesResult> | undefined, b: ListUserConnectionRolesResult | PlainMessage<ListUserConnectionRolesResult> | undefined): boolean {
    return proto3.util.equals(ListUserConnectionRolesResult, a, b);
  }
}

/**
 * @generated from message api.ListUserAttachmentTypeRolesResult
 */
export class ListUserAttachmentTypeRolesResult extends Message<ListUserAttachmentTypeRolesResult> {
  /**
   * @generated from field: repeated string Roles = 1;
   */
  Roles: string[] = [];

  /**
   * @generated from field: repeated string InheritedRoles = 2;
   */
  InheritedRoles: string[] = [];

  constructor(data?: PartialMessage<ListUserAttachmentTypeRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUserAttachmentTypeRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 2, name: "InheritedRoles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUserAttachmentTypeRolesResult {
    return new ListUserAttachmentTypeRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUserAttachmentTypeRolesResult {
    return new ListUserAttachmentTypeRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUserAttachmentTypeRolesResult {
    return new ListUserAttachmentTypeRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListUserAttachmentTypeRolesResult | PlainMessage<ListUserAttachmentTypeRolesResult> | undefined, b: ListUserAttachmentTypeRolesResult | PlainMessage<ListUserAttachmentTypeRolesResult> | undefined): boolean {
    return proto3.util.equals(ListUserAttachmentTypeRolesResult, a, b);
  }
}

/**
 * @generated from message api.SetUserPlatformRolesResult
 */
export class SetUserPlatformRolesResult extends Message<SetUserPlatformRolesResult> {
  constructor(data?: PartialMessage<SetUserPlatformRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserPlatformRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserPlatformRolesResult {
    return new SetUserPlatformRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserPlatformRolesResult {
    return new SetUserPlatformRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserPlatformRolesResult {
    return new SetUserPlatformRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserPlatformRolesResult | PlainMessage<SetUserPlatformRolesResult> | undefined, b: SetUserPlatformRolesResult | PlainMessage<SetUserPlatformRolesResult> | undefined): boolean {
    return proto3.util.equals(SetUserPlatformRolesResult, a, b);
  }
}

/**
 * @generated from message api.SetUserOrganisationRolesResult
 */
export class SetUserOrganisationRolesResult extends Message<SetUserOrganisationRolesResult> {
  constructor(data?: PartialMessage<SetUserOrganisationRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserOrganisationRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserOrganisationRolesResult {
    return new SetUserOrganisationRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserOrganisationRolesResult {
    return new SetUserOrganisationRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserOrganisationRolesResult {
    return new SetUserOrganisationRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserOrganisationRolesResult | PlainMessage<SetUserOrganisationRolesResult> | undefined, b: SetUserOrganisationRolesResult | PlainMessage<SetUserOrganisationRolesResult> | undefined): boolean {
    return proto3.util.equals(SetUserOrganisationRolesResult, a, b);
  }
}

/**
 * @generated from message api.SetUserProjectRolesResult
 */
export class SetUserProjectRolesResult extends Message<SetUserProjectRolesResult> {
  constructor(data?: PartialMessage<SetUserProjectRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserProjectRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserProjectRolesResult {
    return new SetUserProjectRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserProjectRolesResult {
    return new SetUserProjectRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserProjectRolesResult {
    return new SetUserProjectRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserProjectRolesResult | PlainMessage<SetUserProjectRolesResult> | undefined, b: SetUserProjectRolesResult | PlainMessage<SetUserProjectRolesResult> | undefined): boolean {
    return proto3.util.equals(SetUserProjectRolesResult, a, b);
  }
}

/**
 * @generated from message api.SetUserPartnerAppRolesResult
 */
export class SetUserPartnerAppRolesResult extends Message<SetUserPartnerAppRolesResult> {
  constructor(data?: PartialMessage<SetUserPartnerAppRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserPartnerAppRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserPartnerAppRolesResult {
    return new SetUserPartnerAppRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserPartnerAppRolesResult {
    return new SetUserPartnerAppRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserPartnerAppRolesResult {
    return new SetUserPartnerAppRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserPartnerAppRolesResult | PlainMessage<SetUserPartnerAppRolesResult> | undefined, b: SetUserPartnerAppRolesResult | PlainMessage<SetUserPartnerAppRolesResult> | undefined): boolean {
    return proto3.util.equals(SetUserPartnerAppRolesResult, a, b);
  }
}

/**
 * @generated from message api.SetUserConnectionRolesResult
 */
export class SetUserConnectionRolesResult extends Message<SetUserConnectionRolesResult> {
  constructor(data?: PartialMessage<SetUserConnectionRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserConnectionRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserConnectionRolesResult {
    return new SetUserConnectionRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserConnectionRolesResult {
    return new SetUserConnectionRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserConnectionRolesResult {
    return new SetUserConnectionRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserConnectionRolesResult | PlainMessage<SetUserConnectionRolesResult> | undefined, b: SetUserConnectionRolesResult | PlainMessage<SetUserConnectionRolesResult> | undefined): boolean {
    return proto3.util.equals(SetUserConnectionRolesResult, a, b);
  }
}

/**
 * @generated from message api.SetUserAttachmentTypeRolesResult
 */
export class SetUserAttachmentTypeRolesResult extends Message<SetUserAttachmentTypeRolesResult> {
  constructor(data?: PartialMessage<SetUserAttachmentTypeRolesResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.SetUserAttachmentTypeRolesResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetUserAttachmentTypeRolesResult {
    return new SetUserAttachmentTypeRolesResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetUserAttachmentTypeRolesResult {
    return new SetUserAttachmentTypeRolesResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetUserAttachmentTypeRolesResult {
    return new SetUserAttachmentTypeRolesResult().fromJsonString(jsonString, options);
  }

  static equals(a: SetUserAttachmentTypeRolesResult | PlainMessage<SetUserAttachmentTypeRolesResult> | undefined, b: SetUserAttachmentTypeRolesResult | PlainMessage<SetUserAttachmentTypeRolesResult> | undefined): boolean {
    return proto3.util.equals(SetUserAttachmentTypeRolesResult, a, b);
  }
}

/**
 * @generated from message api.EnrollUserWithoutMailRequest
 */
export class EnrollUserWithoutMailRequest extends Message<EnrollUserWithoutMailRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string Mail = 2;
   */
  Mail = "";

  /**
   * The locale the user will be enrolled with following the specification defined at
   * http://www.rfc-editor.org/rfc/bcp/bcp47.txt.
   * Examples are: "en-US", "fr-CH", "es-MX"
   *
   * @generated from field: string locale = 3;
   */
  locale = "";

  /**
   * @generated from field: bool ForceTwoFA = 4;
   */
  ForceTwoFA = false;

  constructor(data?: PartialMessage<EnrollUserWithoutMailRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.EnrollUserWithoutMailRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "locale", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ForceTwoFA", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnrollUserWithoutMailRequest {
    return new EnrollUserWithoutMailRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnrollUserWithoutMailRequest {
    return new EnrollUserWithoutMailRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnrollUserWithoutMailRequest {
    return new EnrollUserWithoutMailRequest().fromJsonString(jsonString, options);
  }

  static equals(a: EnrollUserWithoutMailRequest | PlainMessage<EnrollUserWithoutMailRequest> | undefined, b: EnrollUserWithoutMailRequest | PlainMessage<EnrollUserWithoutMailRequest> | undefined): boolean {
    return proto3.util.equals(EnrollUserWithoutMailRequest, a, b);
  }
}

/**
 * @generated from message api.EnrollUserWithoutMailResult
 */
export class EnrollUserWithoutMailResult extends Message<EnrollUserWithoutMailResult> {
  /**
   * @generated from field: api.User User = 1;
   */
  User?: User;

  constructor(data?: PartialMessage<EnrollUserWithoutMailResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.EnrollUserWithoutMailResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "User", kind: "message", T: User },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnrollUserWithoutMailResult {
    return new EnrollUserWithoutMailResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnrollUserWithoutMailResult {
    return new EnrollUserWithoutMailResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnrollUserWithoutMailResult {
    return new EnrollUserWithoutMailResult().fromJsonString(jsonString, options);
  }

  static equals(a: EnrollUserWithoutMailResult | PlainMessage<EnrollUserWithoutMailResult> | undefined, b: EnrollUserWithoutMailResult | PlainMessage<EnrollUserWithoutMailResult> | undefined): boolean {
    return proto3.util.equals(EnrollUserWithoutMailResult, a, b);
  }
}

/**
 * @generated from message api.EnrollUserProjectWithoutMailRequest
 */
export class EnrollUserProjectWithoutMailRequest extends Message<EnrollUserProjectWithoutMailRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string Mail = 2;
   */
  Mail = "";

  /**
   * The locale the user will be enrolled with following the specification defined at
   * http://www.rfc-editor.org/rfc/bcp/bcp47.txt.
   * Examples are: "en-US", "fr-CH", "es-MX"
   *
   * @generated from field: string locale = 3;
   */
  locale = "";

  /**
   * @generated from field: bool ForceTwoFA = 4;
   */
  ForceTwoFA = false;

  constructor(data?: PartialMessage<EnrollUserProjectWithoutMailRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.EnrollUserProjectWithoutMailRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "locale", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "ForceTwoFA", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnrollUserProjectWithoutMailRequest {
    return new EnrollUserProjectWithoutMailRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnrollUserProjectWithoutMailRequest {
    return new EnrollUserProjectWithoutMailRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnrollUserProjectWithoutMailRequest {
    return new EnrollUserProjectWithoutMailRequest().fromJsonString(jsonString, options);
  }

  static equals(a: EnrollUserProjectWithoutMailRequest | PlainMessage<EnrollUserProjectWithoutMailRequest> | undefined, b: EnrollUserProjectWithoutMailRequest | PlainMessage<EnrollUserProjectWithoutMailRequest> | undefined): boolean {
    return proto3.util.equals(EnrollUserProjectWithoutMailRequest, a, b);
  }
}

/**
 * @generated from message api.UpdateTwoFAPlatformRequest
 */
export class UpdateTwoFAPlatformRequest extends Message<UpdateTwoFAPlatformRequest> {
  /**
   * @generated from field: string UserID = 1;
   */
  UserID = "";

  /**
   * @generated from field: api.TwoFAValue Value = 2;
   */
  Value = TwoFAValue.TWOFA_VALUE_UNKNOWN;

  constructor(data?: PartialMessage<UpdateTwoFAPlatformRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.UpdateTwoFAPlatformRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Value", kind: "enum", T: proto3.getEnumType(TwoFAValue) },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UpdateTwoFAPlatformRequest {
    return new UpdateTwoFAPlatformRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UpdateTwoFAPlatformRequest {
    return new UpdateTwoFAPlatformRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UpdateTwoFAPlatformRequest {
    return new UpdateTwoFAPlatformRequest().fromJsonString(jsonString, options);
  }

  static equals(a: UpdateTwoFAPlatformRequest | PlainMessage<UpdateTwoFAPlatformRequest> | undefined, b: UpdateTwoFAPlatformRequest | PlainMessage<UpdateTwoFAPlatformRequest> | undefined): boolean {
    return proto3.util.equals(UpdateTwoFAPlatformRequest, a, b);
  }
}

/**
 * @generated from message api.UpdateTwoFAPlatformResult
 */
export class UpdateTwoFAPlatformResult extends Message<UpdateTwoFAPlatformResult> {
  /**
   * @generated from field: api.User User = 1;
   */
  User?: User;

  constructor(data?: PartialMessage<UpdateTwoFAPlatformResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.UpdateTwoFAPlatformResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "User", kind: "message", T: User },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UpdateTwoFAPlatformResult {
    return new UpdateTwoFAPlatformResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UpdateTwoFAPlatformResult {
    return new UpdateTwoFAPlatformResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UpdateTwoFAPlatformResult {
    return new UpdateTwoFAPlatformResult().fromJsonString(jsonString, options);
  }

  static equals(a: UpdateTwoFAPlatformResult | PlainMessage<UpdateTwoFAPlatformResult> | undefined, b: UpdateTwoFAPlatformResult | PlainMessage<UpdateTwoFAPlatformResult> | undefined): boolean {
    return proto3.util.equals(UpdateTwoFAPlatformResult, a, b);
  }
}

/**
 * @generated from message api.ForceTwoFAOrganisationRequest
 */
export class ForceTwoFAOrganisationRequest extends Message<ForceTwoFAOrganisationRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  /**
   * @generated from field: bool ForceTwoFA = 3;
   */
  ForceTwoFA = false;

  constructor(data?: PartialMessage<ForceTwoFAOrganisationRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ForceTwoFAOrganisationRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "ForceTwoFA", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ForceTwoFAOrganisationRequest {
    return new ForceTwoFAOrganisationRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ForceTwoFAOrganisationRequest {
    return new ForceTwoFAOrganisationRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ForceTwoFAOrganisationRequest {
    return new ForceTwoFAOrganisationRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ForceTwoFAOrganisationRequest | PlainMessage<ForceTwoFAOrganisationRequest> | undefined, b: ForceTwoFAOrganisationRequest | PlainMessage<ForceTwoFAOrganisationRequest> | undefined): boolean {
    return proto3.util.equals(ForceTwoFAOrganisationRequest, a, b);
  }
}

/**
 * @generated from message api.ForceProjectUserTwoFARequest
 */
export class ForceProjectUserTwoFARequest extends Message<ForceProjectUserTwoFARequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string UserID = 2;
   */
  UserID = "";

  constructor(data?: PartialMessage<ForceProjectUserTwoFARequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ForceProjectUserTwoFARequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ForceProjectUserTwoFARequest {
    return new ForceProjectUserTwoFARequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ForceProjectUserTwoFARequest {
    return new ForceProjectUserTwoFARequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ForceProjectUserTwoFARequest {
    return new ForceProjectUserTwoFARequest().fromJsonString(jsonString, options);
  }

  static equals(a: ForceProjectUserTwoFARequest | PlainMessage<ForceProjectUserTwoFARequest> | undefined, b: ForceProjectUserTwoFARequest | PlainMessage<ForceProjectUserTwoFARequest> | undefined): boolean {
    return proto3.util.equals(ForceProjectUserTwoFARequest, a, b);
  }
}

/**
 * @generated from message api.ForceTwoFAResult
 */
export class ForceTwoFAResult extends Message<ForceTwoFAResult> {
  /**
   * @generated from field: api.User User = 1;
   */
  User?: User;

  constructor(data?: PartialMessage<ForceTwoFAResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ForceTwoFAResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "User", kind: "message", T: User },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ForceTwoFAResult {
    return new ForceTwoFAResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ForceTwoFAResult {
    return new ForceTwoFAResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ForceTwoFAResult {
    return new ForceTwoFAResult().fromJsonString(jsonString, options);
  }

  static equals(a: ForceTwoFAResult | PlainMessage<ForceTwoFAResult> | undefined, b: ForceTwoFAResult | PlainMessage<ForceTwoFAResult> | undefined): boolean {
    return proto3.util.equals(ForceTwoFAResult, a, b);
  }
}

/**
 * @generated from message api.FindUsersFilters
 */
export class FindUsersFilters extends Message<FindUsersFilters> {
  /**
   * @generated from field: string Mail = 1;
   */
  Mail = "";

  /**
   * @generated from field: api.UserStatus Status = 2;
   */
  Status = UserStatus.UNKNOWN;

  /**
   * @generated from field: string FirstName = 3;
   */
  FirstName = "";

  /**
   * @generated from field: string LastName = 4;
   */
  LastName = "";

  /**
   * @generated from field: string LanguageCode = 5;
   */
  LanguageCode = "";

  /**
   * @generated from field: api.UserType Type = 6;
   */
  Type = UserType.UNKNOWN;

  /**
   * @generated from field: int32 Limit = 7;
   */
  Limit = 0;

  constructor(data?: PartialMessage<FindUsersFilters>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FindUsersFilters";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Mail", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Status", kind: "enum", T: proto3.getEnumType(UserStatus) },
    { no: 3, name: "FirstName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "LastName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 5, name: "LanguageCode", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 6, name: "Type", kind: "enum", T: proto3.getEnumType(UserType) },
    { no: 7, name: "Limit", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FindUsersFilters {
    return new FindUsersFilters().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FindUsersFilters {
    return new FindUsersFilters().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FindUsersFilters {
    return new FindUsersFilters().fromJsonString(jsonString, options);
  }

  static equals(a: FindUsersFilters | PlainMessage<FindUsersFilters> | undefined, b: FindUsersFilters | PlainMessage<FindUsersFilters> | undefined): boolean {
    return proto3.util.equals(FindUsersFilters, a, b);
  }
}

/**
 * @generated from message api.FindPlatformUsersRequest
 */
export class FindPlatformUsersRequest extends Message<FindPlatformUsersRequest> {
  /**
   * @generated from field: api.FindUsersFilters Filter = 1;
   */
  Filter?: FindUsersFilters;

  constructor(data?: PartialMessage<FindPlatformUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FindPlatformUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Filter", kind: "message", T: FindUsersFilters },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FindPlatformUsersRequest {
    return new FindPlatformUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FindPlatformUsersRequest {
    return new FindPlatformUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FindPlatformUsersRequest {
    return new FindPlatformUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: FindPlatformUsersRequest | PlainMessage<FindPlatformUsersRequest> | undefined, b: FindPlatformUsersRequest | PlainMessage<FindPlatformUsersRequest> | undefined): boolean {
    return proto3.util.equals(FindPlatformUsersRequest, a, b);
  }
}

/**
 * @generated from message api.FindOrganisationUsersRequest
 */
export class FindOrganisationUsersRequest extends Message<FindOrganisationUsersRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * @generated from field: api.FindUsersFilters Filter = 2;
   */
  Filter?: FindUsersFilters;

  constructor(data?: PartialMessage<FindOrganisationUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FindOrganisationUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Filter", kind: "message", T: FindUsersFilters },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FindOrganisationUsersRequest {
    return new FindOrganisationUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FindOrganisationUsersRequest {
    return new FindOrganisationUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FindOrganisationUsersRequest {
    return new FindOrganisationUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: FindOrganisationUsersRequest | PlainMessage<FindOrganisationUsersRequest> | undefined, b: FindOrganisationUsersRequest | PlainMessage<FindOrganisationUsersRequest> | undefined): boolean {
    return proto3.util.equals(FindOrganisationUsersRequest, a, b);
  }
}

/**
 * @generated from message api.FindProjectUsersRequest
 */
export class FindProjectUsersRequest extends Message<FindProjectUsersRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: api.FindUsersFilters Filter = 2;
   */
  Filter?: FindUsersFilters;

  constructor(data?: PartialMessage<FindProjectUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FindProjectUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "Filter", kind: "message", T: FindUsersFilters },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FindProjectUsersRequest {
    return new FindProjectUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FindProjectUsersRequest {
    return new FindProjectUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FindProjectUsersRequest {
    return new FindProjectUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: FindProjectUsersRequest | PlainMessage<FindProjectUsersRequest> | undefined, b: FindProjectUsersRequest | PlainMessage<FindProjectUsersRequest> | undefined): boolean {
    return proto3.util.equals(FindProjectUsersRequest, a, b);
  }
}

/**
 * @generated from message api.FindPartnerAppUsersRequest
 */
export class FindPartnerAppUsersRequest extends Message<FindPartnerAppUsersRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string PartnerAppID = 2;
   */
  PartnerAppID = "";

  /**
   * @generated from field: api.FindUsersFilters Filter = 3;
   */
  Filter?: FindUsersFilters;

  constructor(data?: PartialMessage<FindPartnerAppUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FindPartnerAppUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "PartnerAppID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Filter", kind: "message", T: FindUsersFilters },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FindPartnerAppUsersRequest {
    return new FindPartnerAppUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FindPartnerAppUsersRequest {
    return new FindPartnerAppUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FindPartnerAppUsersRequest {
    return new FindPartnerAppUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: FindPartnerAppUsersRequest | PlainMessage<FindPartnerAppUsersRequest> | undefined, b: FindPartnerAppUsersRequest | PlainMessage<FindPartnerAppUsersRequest> | undefined): boolean {
    return proto3.util.equals(FindPartnerAppUsersRequest, a, b);
  }
}

/**
 * @generated from message api.FindConnectionUsersRequest
 */
export class FindConnectionUsersRequest extends Message<FindConnectionUsersRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string ConnectionID = 2;
   */
  ConnectionID = "";

  /**
   * @generated from field: api.FindUsersFilters Filter = 3;
   */
  Filter?: FindUsersFilters;

  constructor(data?: PartialMessage<FindConnectionUsersRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FindConnectionUsersRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "ConnectionID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Filter", kind: "message", T: FindUsersFilters },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FindConnectionUsersRequest {
    return new FindConnectionUsersRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FindConnectionUsersRequest {
    return new FindConnectionUsersRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FindConnectionUsersRequest {
    return new FindConnectionUsersRequest().fromJsonString(jsonString, options);
  }

  static equals(a: FindConnectionUsersRequest | PlainMessage<FindConnectionUsersRequest> | undefined, b: FindConnectionUsersRequest | PlainMessage<FindConnectionUsersRequest> | undefined): boolean {
    return proto3.util.equals(FindConnectionUsersRequest, a, b);
  }
}

/**
 * @generated from message api.FindUsersResult
 */
export class FindUsersResult extends Message<FindUsersResult> {
  /**
   * @generated from field: repeated api.User Users = 1;
   */
  Users: User[] = [];

  constructor(data?: PartialMessage<FindUsersResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FindUsersResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Users", kind: "message", T: User, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FindUsersResult {
    return new FindUsersResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FindUsersResult {
    return new FindUsersResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FindUsersResult {
    return new FindUsersResult().fromJsonString(jsonString, options);
  }

  static equals(a: FindUsersResult | PlainMessage<FindUsersResult> | undefined, b: FindUsersResult | PlainMessage<FindUsersResult> | undefined): boolean {
    return proto3.util.equals(FindUsersResult, a, b);
  }
}

/**
 * @generated from message api.ListUsersInPlatformRoleRequest
 */
export class ListUsersInPlatformRoleRequest extends Message<ListUsersInPlatformRoleRequest> {
  /**
   * The roles to filter on (at least one)
   *
   * @generated from field: repeated string Roles = 1;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<ListUsersInPlatformRoleRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUsersInPlatformRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUsersInPlatformRoleRequest {
    return new ListUsersInPlatformRoleRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUsersInPlatformRoleRequest {
    return new ListUsersInPlatformRoleRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUsersInPlatformRoleRequest {
    return new ListUsersInPlatformRoleRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUsersInPlatformRoleRequest | PlainMessage<ListUsersInPlatformRoleRequest> | undefined, b: ListUsersInPlatformRoleRequest | PlainMessage<ListUsersInPlatformRoleRequest> | undefined): boolean {
    return proto3.util.equals(ListUsersInPlatformRoleRequest, a, b);
  }
}

/**
 * @generated from message api.ListUsersInOrganisationRoleRequest
 */
export class ListUsersInOrganisationRoleRequest extends Message<ListUsersInOrganisationRoleRequest> {
  /**
   * @generated from field: api.RequestOrganisationHeader Header = 1;
   */
  Header?: RequestOrganisationHeader;

  /**
   * The roles to filter on (at least one)
   *
   * @generated from field: repeated string Roles = 2;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<ListUsersInOrganisationRoleRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUsersInOrganisationRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestOrganisationHeader },
    { no: 2, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUsersInOrganisationRoleRequest {
    return new ListUsersInOrganisationRoleRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUsersInOrganisationRoleRequest {
    return new ListUsersInOrganisationRoleRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUsersInOrganisationRoleRequest {
    return new ListUsersInOrganisationRoleRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUsersInOrganisationRoleRequest | PlainMessage<ListUsersInOrganisationRoleRequest> | undefined, b: ListUsersInOrganisationRoleRequest | PlainMessage<ListUsersInOrganisationRoleRequest> | undefined): boolean {
    return proto3.util.equals(ListUsersInOrganisationRoleRequest, a, b);
  }
}

/**
 * @generated from message api.ListUsersInProjectRoleRequest
 */
export class ListUsersInProjectRoleRequest extends Message<ListUsersInProjectRoleRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * The roles to filter on (at least one)
   *
   * @generated from field: repeated string Roles = 3;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<ListUsersInProjectRoleRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUsersInProjectRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 3, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUsersInProjectRoleRequest {
    return new ListUsersInProjectRoleRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUsersInProjectRoleRequest {
    return new ListUsersInProjectRoleRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUsersInProjectRoleRequest {
    return new ListUsersInProjectRoleRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUsersInProjectRoleRequest | PlainMessage<ListUsersInProjectRoleRequest> | undefined, b: ListUsersInProjectRoleRequest | PlainMessage<ListUsersInProjectRoleRequest> | undefined): boolean {
    return proto3.util.equals(ListUsersInProjectRoleRequest, a, b);
  }
}

/**
 * @generated from message api.ListUsersInPartnerAppRoleRequest
 */
export class ListUsersInPartnerAppRoleRequest extends Message<ListUsersInPartnerAppRoleRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string PartnerAppID = 2;
   */
  PartnerAppID = "";

  /**
   * The roles to filter on (at least one)
   *
   * @generated from field: repeated string Roles = 3;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<ListUsersInPartnerAppRoleRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUsersInPartnerAppRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "PartnerAppID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUsersInPartnerAppRoleRequest {
    return new ListUsersInPartnerAppRoleRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUsersInPartnerAppRoleRequest {
    return new ListUsersInPartnerAppRoleRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUsersInPartnerAppRoleRequest {
    return new ListUsersInPartnerAppRoleRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUsersInPartnerAppRoleRequest | PlainMessage<ListUsersInPartnerAppRoleRequest> | undefined, b: ListUsersInPartnerAppRoleRequest | PlainMessage<ListUsersInPartnerAppRoleRequest> | undefined): boolean {
    return proto3.util.equals(ListUsersInPartnerAppRoleRequest, a, b);
  }
}

/**
 * @generated from message api.ListUsersInConnectionRoleRequest
 */
export class ListUsersInConnectionRoleRequest extends Message<ListUsersInConnectionRoleRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: string ConnectionID = 2;
   */
  ConnectionID = "";

  /**
   * The roles to filter on (at least one)
   *
   * @generated from field: repeated string Roles = 3;
   */
  Roles: string[] = [];

  constructor(data?: PartialMessage<ListUsersInConnectionRoleRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUsersInConnectionRoleRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 2, name: "ConnectionID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Roles", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUsersInConnectionRoleRequest {
    return new ListUsersInConnectionRoleRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUsersInConnectionRoleRequest {
    return new ListUsersInConnectionRoleRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUsersInConnectionRoleRequest {
    return new ListUsersInConnectionRoleRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListUsersInConnectionRoleRequest | PlainMessage<ListUsersInConnectionRoleRequest> | undefined, b: ListUsersInConnectionRoleRequest | PlainMessage<ListUsersInConnectionRoleRequest> | undefined): boolean {
    return proto3.util.equals(ListUsersInConnectionRoleRequest, a, b);
  }
}

/**
 * @generated from message api.ListUsersInRoleResult
 */
export class ListUsersInRoleResult extends Message<ListUsersInRoleResult> {
  /**
   * @generated from field: repeated api.User Users = 1;
   */
  Users: User[] = [];

  constructor(data?: PartialMessage<ListUsersInRoleResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListUsersInRoleResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Users", kind: "message", T: User, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListUsersInRoleResult {
    return new ListUsersInRoleResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListUsersInRoleResult {
    return new ListUsersInRoleResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListUsersInRoleResult {
    return new ListUsersInRoleResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListUsersInRoleResult | PlainMessage<ListUsersInRoleResult> | undefined, b: ListUsersInRoleResult | PlainMessage<ListUsersInRoleResult> | undefined): boolean {
    return proto3.util.equals(ListUsersInRoleResult, a, b);
  }
}

