// @generated by protoc-gen-es v1.10.0 with parameter "target=ts"
// @generated from file options.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 { EnumValueOptions, FieldOptions, FileOptions, MessageOptions, MethodOptions, ServiceOptions } from "./google/protobuf/descriptor_pb.js";

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

  /**
   * Table fed by a entity stream sink job
   *
   * @generated from enum value: KPIGROUP_TYPE_SINK = 1;
   */
  KPIGROUP_TYPE_SINK = 1,

  /**
   * Table fed by a materialized view on the database
   *
   * @generated from enum value: KPIGROUP_TYPE_MATERIALIZED = 2;
   */
  KPIGROUP_TYPE_MATERIALIZED = 2,

  /**
   * Virtual table, the request is concretely executed on physical table (GroupToQuery)
   *
   * @generated from enum value: KPIGROUP_TYPE_VIEW = 3;
   */
  KPIGROUP_TYPE_VIEW = 3,
}
// Retrieve enum metadata with: proto3.getEnumType(KPIGroupType)
proto3.util.setEnumType(KPIGroupType, "api.KPIGroupType", [
  { no: 0, name: "KPIGROUP_TYPE_UNKNOWN" },
  { no: 1, name: "KPIGROUP_TYPE_SINK" },
  { no: 2, name: "KPIGROUP_TYPE_MATERIALIZED" },
  { no: 3, name: "KPIGROUP_TYPE_VIEW" },
]);

/**
 * Note: Struct to define in protoc-m0 in managers/struct_model
 *
 * @generated from message api.KPIGroups
 */
export class KPIGroups extends Message<KPIGroups> {
  /**
   * @generated from field: repeated api.KPIGroup Groups = 1;
   */
  Groups: KPIGroup[] = [];

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

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

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

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

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

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

/**
 * @generated from message api.KPIGroup
 */
export class KPIGroup extends Message<KPIGroup> {
  /**
   * Name of the KPI group
   *
   * @generated from field: string Name = 1;
   */
  Name = "";

  /**
   * Type of the KPI group
   *
   * @generated from field: api.KPIGroupType Type = 2;
   */
  Type = KPIGroupType.KPIGROUP_TYPE_UNKNOWN;

  /**
   * Some tables are not directly queryable
   *
   * @generated from field: bool Queryable = 3;
   */
  Queryable = false;

  /**
   * For non-queryable group, on which group table the request will be executed
   *
   * @generated from field: string GroupToQuery = 4;
   */
  GroupToQuery = "";

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

  /**
   * Table engine
   *
   * @generated from field: string Engine = 6;
   */
  Engine = "";

  /**
   * Table header columns
   *
   * @generated from field: string HeaderColumns = 7;
   */
  HeaderColumns = "";

  /**
   * Table PartitionBy
   *
   * @generated from field: string PartitionBy = 8;
   */
  PartitionBy = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.KPIGroup";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Type", kind: "enum", T: proto3.getEnumType(KPIGroupType) },
    { no: 3, name: "Queryable", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 4, name: "GroupToQuery", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 5, name: "OrderBy", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 6, name: "Engine", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 7, name: "HeaderColumns", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 8, name: "PartitionBy", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.KPIItems
 */
export class KPIItems extends Message<KPIItems> {
  /**
   * @generated from field: repeated api.KPIItem Items = 1;
   */
  Items: KPIItem[] = [];

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

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

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

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

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

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

/**
 * @generated from message api.KPIItem
 */
export class KPIItem extends Message<KPIItem> {
  /**
   * Entity on which the KPI is defined
   *
   * @generated from field: string Context = 1;
   */
  Context = "";

  /**
   * Group on which the KPI is defined
   *
   * @generated from field: string Group = 2;
   */
  Group = "";

  /**
   * Defined if the KPI is queryable (some kpi are only returns on the result because linked to other, ex on stock_extended : Actor_Name depends on ActorID)
   *
   * @generated from field: bool Queryable = 3;
   */
  Queryable = false;

  /**
   * KPI is used to join another KPI group
   *
   * @generated from field: string GroupToJoin = 4;
   */
  GroupToJoin = "";

  /**
   * Type of the field in the table
   *
   * @generated from field: string CustomType = 5;
   */
  CustomType = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.KPIItem";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Context", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Group", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Queryable", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 4, name: "GroupToJoin", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 5, name: "CustomType", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.FieldTypes
 */
export class FieldTypes extends Message<FieldTypes> {
  /**
   * @generated from field: repeated api.FieldType Types = 1;
   */
  Types: FieldType[] = [];

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

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

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

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

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

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

/**
 * @generated from message api.FieldType
 */
export class FieldType extends Message<FieldType> {
  /**
   * Entity on which the KPI is defined
   *
   * @generated from field: string Context = 1;
   */
  Context = "";

  /**
   * Type of the field
   *
   * @generated from field: string Type = 2;
   */
  Type = "";

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

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

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

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

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

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

/**
 * Name of the entity defined into the file
 *
 * @generated from extension: string entityName = 50000;
 */
export const entityName = proto3.makeExtension<FileOptions, string>(
  "api.entityName", 
  FileOptions, 
  { no: 50000, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Entity short name
 *
 * @generated from extension: string entityShortName = 50001;
 */
export const entityShortName = proto3.makeExtension<FileOptions, string>(
  "api.entityShortName", 
  FileOptions, 
  { no: 50001, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Do not parse the file with m0 plugin
 *
 * @generated from extension: bool m0_FileIgnore = 50002;
 */
export const m0_FileIgnore = proto3.makeExtension<FileOptions, boolean>(
  "api.m0_FileIgnore", 
  FileOptions, 
  { no: 50002, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Golang package, still useful ??
 *
 * @generated from extension: string moduleName = 50003;
 */
export const moduleName = proto3.makeExtension<FileOptions, string>(
  "api.moduleName", 
  FileOptions, 
  { no: 50003, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * string kpiGroups = 50004;           // Names of the kpi group of the entity
 *
 * Data restriction can be applied on this entity
 *
 * @generated from extension: bool isDataRestricted = 50005;
 */
export const isDataRestricted = proto3.makeExtension<FileOptions, boolean>(
  "api.isDataRestricted", 
  FileOptions, 
  { no: 50005, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Entity do not have aggregation process
 *
 * @generated from extension: bool noAgg = 50006;
 */
export const noAgg = proto3.makeExtension<FileOptions, boolean>(
  "api.noAgg", 
  FileOptions, 
  { no: 50006, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Referenced entities for enrichment. Comma separated list
 *
 * @generated from extension: string enrichments = 50007;
 */
export const enrichments = proto3.makeExtension<FileOptions, string>(
  "api.enrichments", 
  FileOptions, 
  { no: 50007, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Definition of the kpi group of the entity
 *
 * @generated from extension: api.KPIGroups kpiGroups = 50008;
 */
export const kpiGroups = proto3.makeExtension<FileOptions, KPIGroups>(
  "api.kpiGroups", 
  FileOptions, 
  () => ({ no: 50008, kind: "message", T: KPIGroups }),
);

/**
 * Type of the message (event, request, response)
 *
 * @generated from extension: string messageType = 50100;
 */
export const messageType = proto3.makeExtension<MessageOptions, string>(
  "api.messageType", 
  MessageOptions, 
  { no: 50100, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define if the message is a payload message
 *
 * @generated from extension: bool payload = 50101;
 */
export const payload = proto3.makeExtension<MessageOptions, boolean>(
  "api.payload", 
  MessageOptions, 
  { no: 50101, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Name of the action
 *
 * @generated from extension: string action = 50102;
 */
export const action = proto3.makeExtension<MessageOptions, string>(
  "api.action", 
  MessageOptions, 
  { no: 50102, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Name of the input event
 *
 * @generated from extension: string inputEvent = 50103;
 */
export const inputEvent = proto3.makeExtension<MessageOptions, string>(
  "api.inputEvent", 
  MessageOptions, 
  { no: 50103, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * (domain.)(entity.)event resulting of the action execution
 *
 * @generated from extension: string resultingEvent = 50104;
 */
export const resultingEvent = proto3.makeExtension<MessageOptions, string>(
  "api.resultingEvent", 
  MessageOptions, 
  { no: 50104, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Methods called on post aggregation phase
 *
 * @generated from extension: string postAggMethods = 50105;
 */
export const postAggMethods = proto3.makeExtension<MessageOptions, string>(
  "api.postAggMethods", 
  MessageOptions, 
  { no: 50105, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Additional source for action
 *
 * @generated from extension: string additionalSource = 50106;
 */
export const additionalSource = proto3.makeExtension<MessageOptions, string>(
  "api.additionalSource", 
  MessageOptions, 
  { no: 50106, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Methods called on pre aggregation phase
 *
 * @generated from extension: string preAggMethods = 50107;
 */
export const preAggMethods = proto3.makeExtension<MessageOptions, string>(
  "api.preAggMethods", 
  MessageOptions, 
  { no: 50107, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Method called to generate refID on input server
 *
 * @generated from extension: string idGenMethod = 50108;
 */
export const idGenMethod = proto3.makeExtension<MessageOptions, string>(
  "api.idGenMethod", 
  MessageOptions, 
  { no: 50108, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Defined event filters to trigger the action (comma separated list)
 *
 * @generated from extension: string triggerEventFilters = 50109;
 */
export const triggerEventFilters = proto3.makeExtension<MessageOptions, string>(
  "api.triggerEventFilters", 
  MessageOptions, 
  { no: 50109, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Defined not event filters to trigger the action (comma separated list)
 *
 * @generated from extension: string triggerNotEventFilters = 50111;
 */
export const triggerNotEventFilters = proto3.makeExtension<MessageOptions, string>(
  "api.triggerNotEventFilters", 
  MessageOptions, 
  { no: 50111, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Defined a windowing method before action execution
 *
 * @generated from extension: string windowMethod = 50112;
 */
export const windowMethod = proto3.makeExtension<MessageOptions, string>(
  "api.windowMethod", 
  MessageOptions, 
  { no: 50112, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Defined a keyBy expression before action execution
 *
 * @generated from extension: string keyByExpression = 50113;
 */
export const keyByExpression = proto3.makeExtension<MessageOptions, string>(
  "api.keyByExpression", 
  MessageOptions, 
  { no: 50113, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define if the attribute is a metadata structure
 *
 * @generated from extension: bool metadata = 50200;
 */
export const metadata = proto3.makeExtension<FieldOptions, boolean>(
  "api.metadata", 
  FieldOptions, 
  { no: 50200, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Specify an alternative map path for the input event attribute
 *
 * @generated from extension: string mapPath = 50201;
 */
export const mapPath = proto3.makeExtension<FieldOptions, string>(
  "api.mapPath", 
  FieldOptions, 
  { no: 50201, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * ??
 *
 * @generated from extension: bool language = 50202;
 */
export const language = proto3.makeExtension<FieldOptions, boolean>(
  "api.language", 
  FieldOptions, 
  { no: 50202, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Define the entity referenced by the attribute
 *
 * @generated from extension: string entityRef = 50203;
 */
export const entityRef = proto3.makeExtension<FieldOptions, string>(
  "api.entityRef", 
  FieldOptions, 
  { no: 50203, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * ??
 *
 * @generated from extension: string entityRefFilter = 50204;
 */
export const entityRefFilter = proto3.makeExtension<FieldOptions, string>(
  "api.entityRefFilter", 
  FieldOptions, 
  { no: 50204, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define the key attribute of a repeated structure, to get a kind of map instead of list
 *
 * @generated from extension: string aggKey = 50205;
 */
export const aggKey = proto3.makeExtension<FieldOptions, string>(
  "api.aggKey", 
  FieldOptions, 
  { no: 50205, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define the input events on which attribute aggregation is skipped
 *
 * @generated from extension: string aggSkip = 50206;
 */
export const aggSkip = proto3.makeExtension<FieldOptions, string>(
  "api.aggSkip", 
  FieldOptions, 
  { no: 50206, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define if the attribute is a segmentation keys structure
 *
 * @generated from extension: bool segmentationKeys = 50207;
 */
export const segmentationKeys = proto3.makeExtension<FieldOptions, boolean>(
  "api.segmentationKeys", 
  FieldOptions, 
  { no: 50207, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Define if the attribute is a link to another entity
 *
 * @generated from extension: string transientRef = 50208;
 */
export const transientRef = proto3.makeExtension<FieldOptions, string>(
  "api.transientRef", 
  FieldOptions, 
  { no: 50208, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * ??
 *
 * @generated from extension: bool kpi = 50209;
 */
export const kpi = proto3.makeExtension<FieldOptions, boolean>(
  "api.kpi", 
  FieldOptions, 
  { no: 50209, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * string kpiItem = 50210;           // Define the kpi items based on this attribute
 *
 * Exclude the kpi items behind this attribute
 *
 * @generated from extension: api.KPIItems kpiExclude = 50211;
 */
export const kpiExclude = proto3.makeExtension<FieldOptions, KPIItems>(
  "api.kpiExclude", 
  FieldOptions, 
  () => ({ no: 50211, kind: "message", T: KPIItems }),
);

/**
 * Define if the attribute is a data restriction key
 *
 * @generated from extension: string dataRestrictionKey = 50212;
 */
export const dataRestrictionKey = proto3.makeExtension<FieldOptions, string>(
  "api.dataRestrictionKey", 
  FieldOptions, 
  { no: 50212, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define the parent entity of a metadata structure
 *
 * @generated from extension: string parentEntity = 50213;
 */
export const parentEntity = proto3.makeExtension<FieldOptions, string>(
  "api.parentEntity", 
  FieldOptions, 
  { no: 50213, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define the input events on which list attribute values are appended instead of replaced during aggregation
 *
 * @generated from extension: string aggAppend = 50214;
 */
export const aggAppend = proto3.makeExtension<FieldOptions, string>(
  "api.aggAppend", 
  FieldOptions, 
  { no: 50214, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Allow to generate clear method to the field in getEntityValue
 *
 * @generated from extension: string enrichmentClear = 50215;
 */
export const enrichmentClear = proto3.makeExtension<FieldOptions, string>(
  "api.enrichmentClear", 
  FieldOptions, 
  { no: 50215, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Exclude field for extract reference in enrichment
 *
 * @generated from extension: string extractRefExclude = 50216;
 */
export const extractRefExclude = proto3.makeExtension<FieldOptions, string>(
  "api.extractRefExclude", 
  FieldOptions, 
  { no: 50216, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Specific indexation type : date, text, generatedText, keyword, integrer, boolean, float
 *
 * @generated from extension: api.FieldTypes indexationType = 50217;
 */
export const indexationType = proto3.makeExtension<FieldOptions, FieldTypes>(
  "api.indexationType", 
  FieldOptions, 
  () => ({ no: 50217, kind: "message", T: FieldTypes }),
);

/**
 * Define the kpi items based on this attribute
 *
 * @generated from extension: api.KPIItems kpiItems = 50218;
 */
export const kpiItems = proto3.makeExtension<FieldOptions, KPIItems>(
  "api.kpiItems", 
  FieldOptions, 
  () => ({ no: 50218, kind: "message", T: KPIItems }),
);

/**
 * Specific view type : date, image, user, shortText, text, shortKeyword, enum, float, integer
 *
 * @generated from extension: api.FieldTypes viewType = 50219;
 */
export const viewType = proto3.makeExtension<FieldOptions, FieldTypes>(
  "api.viewType", 
  FieldOptions, 
  () => ({ no: 50219, kind: "message", T: FieldTypes }),
);

/**
 * Either Query or Api for streamed entity services
 *
 * @generated from extension: string serviceType = 50300;
 */
export const serviceType = proto3.makeExtension<ServiceOptions, string>(
  "api.serviceType", 
  ServiceOptions, 
  { no: 50300, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Name of k8s micro-service that will provide the service
 *
 * @generated from extension: string k8sService = 50301;
 */
export const k8sService = proto3.makeExtension<ServiceOptions, string>(
  "api.k8sService", 
  ServiceOptions, 
  { no: 50301, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * string k8sNamespace = 50302;
 * string serviceRoles = 50303;
 *
 * Define if service manage roles
 *
 * @generated from extension: bool roleManager = 50304;
 */
export const roleManager = proto3.makeExtension<ServiceOptions, boolean>(
  "api.roleManager", 
  ServiceOptions, 
  { no: 50304, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Define if service manage resources
 *
 * @generated from extension: bool resourceManager = 50305;
 */
export const resourceManager = proto3.makeExtension<ServiceOptions, boolean>(
  "api.resourceManager", 
  ServiceOptions, 
  { no: 50305, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * OBSOLETE Define if query method implemen,tation is custom (not generated)
 *
 * @generated from extension: bool customQuery = 50400;
 */
export const customQuery = proto3.makeExtension<MethodOptions, boolean>(
  "api.customQuery", 
  MethodOptions, 
  { no: 50400, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Resource type on which acts the methods (platform, organisation, project, ...)
 *
 * @generated from extension: string rscType = 50401;
 */
export const rscType = proto3.makeExtension<MethodOptions, string>(
  "api.rscType", 
  MethodOptions, 
  { no: 50401, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * List of roles which can call api method
 *
 * @generated from extension: string roles = 50402;
 */
export const roles = proto3.makeExtension<MethodOptions, string>(
  "api.roles", 
  MethodOptions, 
  { no: 50402, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * API method reserved for platform internal use
 *
 * @generated from extension: bool platformReserved = 50403;
 */
export const platformReserved = proto3.makeExtension<MethodOptions, boolean>(
  "api.platformReserved", 
  MethodOptions, 
  { no: 50403, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Module ID the method belongs to
 *
 * @generated from extension: string moduleID = 50404;
 */
export const moduleID = proto3.makeExtension<MethodOptions, string>(
  "api.moduleID", 
  MethodOptions, 
  { no: 50404, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define the name of the table used for data query method
 *
 * @generated from extension: string tableName = 50405;
 */
export const tableName = proto3.makeExtension<MethodOptions, string>(
  "api.tableName", 
  MethodOptions, 
  { no: 50405, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

/**
 * Define if input method implementation is custom (not generated)
 *
 * @generated from extension: bool customInput = 50406;
 */
export const customInput = proto3.makeExtension<MethodOptions, boolean>(
  "api.customInput", 
  MethodOptions, 
  { no: 50406, kind: "scalar", T: 8 /* ScalarType.BOOL */ },
);

/**
 * Value of the enum option
 *
 * @generated from extension: string value = 50500;
 */
export const value = proto3.makeExtension<EnumValueOptions, string>(
  "api.value", 
  EnumValueOptions, 
  { no: 50500, kind: "scalar", T: 9 /* ScalarType.STRING */ },
);

