kf_protocol_message/kf_code_gen/
create_topics.rs1use serde::{Deserialize, Serialize};
5
6use kf_protocol_api::ErrorCode;
7use kf_protocol_api::Request;
8
9use kf_protocol_derive::Decode;
10use kf_protocol_derive::Encode;
11use kf_protocol_derive::KfDefault;
12
13#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
18pub struct KfCreateTopicsRequest {
19 pub topics: Vec<CreatableTopic>,
21
22 pub timeout_ms: i32,
24
25 #[fluvio_kf(min_version = 1)]
27 pub validate_only: bool,
28}
29
30#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
31pub struct CreatableTopic {
32 pub name: String,
34
35 pub num_partitions: i32,
38
39 pub replication_factor: i16,
42
43 pub assignments: Vec<CreatableReplicaAssignment>,
45
46 pub configs: Vec<CreateableTopicConfig>,
48}
49
50#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
51pub struct CreatableReplicaAssignment {
52 pub partition_index: i32,
54
55 pub broker_ids: Vec<i32>,
57}
58
59#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
60pub struct CreateableTopicConfig {
61 pub name: String,
63
64 pub value: Option<String>,
66}
67
68#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
73pub struct KfCreateTopicsResponse {
74 #[fluvio_kf(min_version = 2, ignorable)]
77 pub throttle_time_ms: i32,
78
79 pub topics: Vec<CreatableTopicResult>,
81}
82
83#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
84pub struct CreatableTopicResult {
85 pub name: String,
87
88 pub error_code: ErrorCode,
90
91 #[fluvio_kf(min_version = 1, ignorable)]
93 pub error_message: Option<String>,
94}
95
96impl Request for KfCreateTopicsRequest {
101 const API_KEY: u16 = 19;
102
103 const MIN_API_VERSION: i16 = 0;
104 const MAX_API_VERSION: i16 = 3;
105 const DEFAULT_API_VERSION: i16 = 3;
106
107 type Response = KfCreateTopicsResponse;
108}