1package pipeline
2
3type EntityInfo struct {
4	Type        string      `json:"type"`
5	Description string      `json:"description"`
6	Example     interface{} `json:"example,omitempty"`
7}
8
9var SubscribersRegistry = []EntityInfo{
10	{
11		Type:        SubscriberTypeBuiltin,
12		Description: "apply builtin feature subscribe logic",
13	},
14	{
15		Type:        SubscriberTypeManagedStream,
16		Description: "apply managed stream subscribe logic",
17	},
18}
19
20var FrameOutputsRegistry = []EntityInfo{
21	{
22		Type:        FrameOutputTypeManagedStream,
23		Description: "only send schema when structure changes (note this also requires a matching subscriber)",
24		Example:     ManagedStreamOutputConfig{},
25	},
26	{
27		Type:        FrameOutputTypeConditional,
28		Description: "send to an output depending on frame values",
29		Example:     ConditionalOutputConfig{},
30	},
31	{
32		Type:        FrameOutputTypeRedirect,
33		Description: "redirect for processing by another channel rule",
34	},
35	{
36		Type:        FrameOutputTypeThreshold,
37		Description: "output field threshold boundaries cross into new channel",
38	},
39	{
40		Type:        FrameOutputTypeChangeLog,
41		Description: "output field changes into new channel",
42	},
43	{
44		Type:        FrameOutputTypeRemoteWrite,
45		Description: "output to remote write endpoint",
46	},
47	{
48		Type:        FrameOutputTypeLoki,
49		Description: "output frame as JSON to Loki",
50	},
51}
52
53var ConvertersRegistry = []EntityInfo{
54	{
55		Type:        ConverterTypeJsonAuto,
56		Description: "automatic recursive JSON to Frame conversion",
57	},
58	{
59		Type:        ConverterTypeJsonExact,
60		Description: "JSON to Frame conversion according to exact list of fields",
61	},
62	{
63		Type:        ConverterTypeInfluxAuto,
64		Description: "accept influx line protocol",
65		Example: AutoInfluxConverterConfig{
66			FrameFormat: "labels_column",
67		},
68	},
69	{
70		Type:        ConverterTypeJsonFrame,
71		Description: "JSON-encoded Grafana data frame",
72	},
73}
74
75var FrameProcessorsRegistry = []EntityInfo{
76	{
77		Type:        FrameProcessorTypeKeepFields,
78		Description: "list the fields that should stay",
79		Example:     KeepFieldsFrameProcessorConfig{},
80	},
81	{
82		Type:        FrameProcessorTypeDropFields,
83		Description: "list the fields that should be removed",
84		Example:     DropFieldsFrameProcessorConfig{},
85	},
86}
87
88var DataOutputsRegistry = []EntityInfo{
89	{
90		Type:        DataOutputTypeBuiltin,
91		Description: "use builtin publish handler",
92	},
93	{
94		Type:        DataOutputTypeRedirect,
95		Description: "redirect data processing to another channel rule",
96	},
97	{
98		Type:        DataOutputTypeLoki,
99		Description: "output data to Loki as logs",
100	},
101}
102