qismo 0.13.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qismo/api.rb +556 -324
  3. data/lib/qismo/client.rb +31 -19
  4. data/lib/qismo/collection.rb +21 -0
  5. data/lib/qismo/object.rb +21 -0
  6. data/lib/qismo/objectified_hash.rb +30 -0
  7. data/lib/qismo/objects/agent_service.rb +53 -0
  8. data/lib/qismo/objects/broadcast_job.rb +99 -0
  9. data/lib/qismo/objects/broadcast_log.rb +59 -0
  10. data/lib/qismo/objects/custom_channel.rb +35 -0
  11. data/lib/qismo/objects/custom_channel_message_response.rb +19 -0
  12. data/lib/qismo/objects/customer_room.rb +85 -0
  13. data/lib/qismo/objects/fb_channel.rb +31 -0
  14. data/lib/qismo/objects/hsm_template.rb +111 -0
  15. data/lib/qismo/objects/ig_channel.rb +43 -0
  16. data/lib/qismo/objects/line_channel.rb +27 -0
  17. data/lib/qismo/objects/list_channels_response.rb +39 -0
  18. data/lib/qismo/objects/office_hour.rb +67 -0
  19. data/lib/qismo/objects/qiscus_channel.rb +27 -0
  20. data/lib/qismo/objects/room_additional_info.rb +15 -0
  21. data/lib/qismo/objects/tag.rb +27 -0
  22. data/lib/qismo/objects/telegram_channel.rb +31 -0
  23. data/lib/qismo/objects/user.rb +99 -0
  24. data/lib/qismo/objects/wa_channel.rb +111 -0
  25. data/lib/qismo/objects/wa_credit_info.rb +71 -0
  26. data/lib/qismo/objects/waca_channel.rb +55 -0
  27. data/lib/qismo/objects/webhook.rb +15 -0
  28. data/lib/qismo/types.rb +10 -1
  29. data/lib/qismo/version.rb +1 -1
  30. data/lib/qismo/webhook_requests/on_agent_allocation_needed.rb +8 -2
  31. data/lib/qismo/webhook_requests/on_custom_button_clicked.rb +15 -7
  32. data/lib/qismo/webhook_requests/on_custom_channel_message_sent.rb +18 -6
  33. data/lib/qismo/webhook_requests/on_message_for_bot_sent.rb +18 -6
  34. data/lib/qismo/webhook_requests/on_new_session_initiated.rb +30 -10
  35. data/lib/qismo/webhook_requests/on_room_resolved.rb +15 -5
  36. data/lib/qismo.rb +28 -34
  37. data/qismo.gemspec +1 -0
  38. metadata +40 -6
  39. data/lib/qismo/model.rb +0 -102
  40. data/lib/qismo/models/base.rb +0 -13
  41. data/lib/qismo/models/customer_room.rb +0 -6
  42. data/lib/qismo/util.rb +0 -31
data/lib/qismo/client.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Qismo
4
+ # Qismo ruby client
5
+ #
4
6
  class Client
5
7
  include Qismo::Api
6
8
 
@@ -42,9 +44,9 @@ module Qismo
42
44
  #
43
45
  # @param path [String]
44
46
  # @param body [Hash]
45
- # @return [Qismo::SingleObject]
47
+ # @return [Qismo::ObjectifiedHash]
46
48
  def post(path, body = {})
47
- request(:post, path, json: body)
49
+ request(:post, path, json: body.compact)
48
50
  end
49
51
 
50
52
  # Send HTTP request with post method to upload file
@@ -53,25 +55,25 @@ module Qismo
53
55
  # @param body [Hash]
54
56
  # @return [Qismo::SingleObject]
55
57
  def post_upload(path, body = {})
56
- request(:post, form: body)
58
+ request(:post, path, form: body.compact)
57
59
  end
58
60
 
59
61
  # Send HTTP request with get method
60
62
  #
61
63
  # @param path [String]
62
64
  # @param params [Hash]
63
- # @return [Qismo::SingleObject]
65
+ # @return [Qismo::ObjectifiedHash]
64
66
  def get(path, params = {})
65
- request(:get, path, params: params)
67
+ request(:get, path, params: params.compact)
66
68
  end
67
69
 
68
70
  # Send HTTP request with delete method
69
71
  #
70
72
  # @param path [String]
71
73
  # @param params [Hash]
72
- # @return [Qismo::SingleObject]
74
+ # @return [Qismo::ObjectifiedHash]
73
75
  def delete(path, params = {})
74
- request(:delete, path, params: params)
76
+ request(:delete, path, params: params.compact)
75
77
  end
76
78
 
77
79
  # Send HTTP request
@@ -81,16 +83,16 @@ module Qismo
81
83
  # @param headers [Hash]
82
84
  # @param params [Hash]
83
85
  # @param json [Hash]
84
- # @return [Qismo::SingleObject]
85
- def request(method, path, headers: {}, params: {}, json: {})
86
- res = connection.request(method, @url + path, {
87
- headers: headers,
88
- params: params,
89
- json: json
90
- })
86
+ # @return [Qismo::ObjectifiedHash]
87
+ def request(method, path, options = {})
88
+ res = connection.request(method, @url + path, options.compact)
91
89
 
92
90
  if res.status.success?
93
- return SingleObject.new(JSON.parse(res.to_s))
91
+ begin
92
+ return JSON.parse(res.to_s, object_class: Qismo::ObjectifiedHash)
93
+ rescue JSON::ParserError
94
+ return res.to_s
95
+ end
94
96
  end
95
97
 
96
98
  if res.status.server_error?
@@ -98,10 +100,10 @@ module Qismo
98
100
  end
99
101
 
100
102
  if res.status.client_error?
101
- body = SingleObject.new(JSON.parse(res.to_s))
103
+ body = JSON.parse(res.to_s, object_class: Qismo::ObjectifiedHash)
102
104
 
103
105
  error = body.errors
104
- error = error.message if error.is_a?(SingleObject)
106
+ error = error.message if error.is_a?(Hash)
105
107
 
106
108
  error_klass_map = {
107
109
  400 => BadRequestError,
@@ -146,7 +148,7 @@ module Qismo
146
148
  http.headers({
147
149
  "Qiscus-App-Id": @app_id,
148
150
  "Qiscus-Secret-Key": @secret_key,
149
- "User-Agent": user_agent.to_json
151
+ "User-Agent": user_agent
150
152
  })
151
153
  end
152
154
 
@@ -154,13 +156,23 @@ module Qismo
154
156
  #
155
157
  # @return [Hash]
156
158
  def user_agent
157
- {
159
+ format = {
160
+ lib_name: "Qismo Ruby",
158
161
  lib_version: Qismo::VERSION,
159
162
  lang: "ruby",
160
163
  lang_version: RUBY_VERSION,
161
164
  platform: RUBY_PLATFORM,
162
165
  engine: defined?(RUBY_ENGINE) ? RUBY_ENGINE : ""
163
166
  }
167
+
168
+ "#{format[:lib_name]}/#{format[:lib_version]} (#{format[:platform]}; #{format[:lang]}; v#{format[:lang_version]}) app_id:#{@app_id}"
169
+ end
170
+
171
+ # Default broadcast name for using in send broadcast api
172
+ #
173
+ # @return [String]
174
+ def default_broadcast_name
175
+ Time.current.strftime("%d/%m/%Y, %H:%I %z")
164
176
  end
165
177
  end
166
178
  end
@@ -0,0 +1,21 @@
1
+ module Qismo
2
+ # Class to handle paginated response from API
3
+ #
4
+ class Collection < Array
5
+ # Collection object
6
+ #
7
+ # @param data [Array]
8
+ # @param prev_page [String,Integer]
9
+ # @param next_page [String,Integer]
10
+ # @param pagination_type [String]
11
+ def initialize(data, prev_page: nil, next_page: nil)
12
+ super(data)
13
+
14
+ @prev_page = prev_page
15
+ @next_page = next_page
16
+ end
17
+
18
+ attr_reader :next_page
19
+ attr_reader :prev_page
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require "dry-struct"
2
+
3
+ module Qismo
4
+ # Object interface
5
+ #
6
+ class Object < Dry::Struct
7
+ include Qismo::Types
8
+
9
+ transform_keys(&:to_sym)
10
+
11
+ class << self
12
+ # Create object from array of hash
13
+ #
14
+ # @param array [Array<Hash>]
15
+ # @return [Array<Object>]
16
+ def from_array(array)
17
+ array.map { |a| new(a) }
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ module Qismo
2
+ # Objectified hash interface for accesing hash using dot notation
3
+ #
4
+ class ObjectifiedHash < Hash
5
+ # method missing patch
6
+ def method_missing(method, *args, &block)
7
+ return super unless respond_to?(method)
8
+
9
+ fetch(method.to_s)
10
+ end
11
+
12
+ # respond to patch
13
+ def respond_to?(method_name, include_private = false)
14
+ fetch(method_name.to_s)
15
+
16
+ true
17
+ rescue KeyError
18
+ super(method_name, include_private)
19
+ end
20
+
21
+ # respond to missing patch
22
+ def respond_to_missing?(method_name, include_private = false)
23
+ fetch(method_name.to_s)
24
+
25
+ true
26
+ rescue KeyError
27
+ super(method_name, include_private)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,53 @@
1
+ module Qismo
2
+ # Objects module to handle schema for API response
3
+ #
4
+ module Objects
5
+ # Agent service object
6
+ #
7
+ class AgentService < Qismo::Object
8
+ # @!attribute [r] created_at
9
+ # @return [String]
10
+ attribute? :created_at, Types::String.optional
11
+
12
+ # @!attribute [r] first_comment_id
13
+ # @return [String]
14
+ attribute? :first_comment_id, Types::String.optional
15
+
16
+ # @!attribute [r] first_comment_timestamp
17
+ # @return [String]
18
+ attribute? :first_comment_timestamp, Types::String.optional
19
+
20
+ # @!attribute [r] is_resolved
21
+ # @return [TrueClass,FalseClass]
22
+ attribute? :is_resolved, Types::Bool.optional
23
+
24
+ # @!attribute [r] last_comment_id
25
+ # @return [String]
26
+ attribute? :last_comment_id, Types::String.optional
27
+
28
+ # @!attribute [r] notes
29
+ # @return [String]
30
+ attribute? :notes, Types::String.optional
31
+
32
+ # @!attribute [r] resolved_at
33
+ # @return [String]
34
+ attribute? :resolved_at, Types::String.optional
35
+
36
+ # @!attribute [r] retrieved_at
37
+ # @return [String]
38
+ attribute? :retrieved_at, Types::String.optional
39
+
40
+ # @!attribute [r] room_id
41
+ # @return [Integer]
42
+ attribute? :room_id, Types::String.optional
43
+
44
+ # @!attribute [r] updated_at
45
+ # @return [String]
46
+ attribute? :updated_at, Types::String.optional
47
+
48
+ # @!attribute [r] user_id
49
+ # @return [Integer]
50
+ attribute? :user_id, Types::Int.optional
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,99 @@
1
+ module Qismo
2
+ module Objects
3
+ # Broadcast job object
4
+ #
5
+ class BroadcastJob < Qismo::Object
6
+ # Broadcast job user object
7
+ #
8
+ class User < Qismo::Object
9
+ # @!attribute [r] name
10
+ # @return [String]
11
+ attribute? :name, Types::String.optional
12
+ end
13
+
14
+ # @!attribute [r] user
15
+ # @return [Qismo::Objects::BroadcastJob::User]
16
+ attribute? :user, User.optional
17
+
18
+ # @!attribute [r] broadcast_job_id
19
+ # @return [Integer]
20
+ attribute? :broadcast_job_id, Types::Int.optional
21
+
22
+ # @!attribute [r] broadcast_logs
23
+ # @return [Array<Qismo::Objects::BroadcastLog>]
24
+ attribute? :broadcast_logs, Types.Array(Qismo::Objects::BroadcastLog.optional).optional
25
+
26
+ # @!attribute [r] language
27
+ # @return [String]
28
+ attribute? :language, Types::String.optional
29
+
30
+ # @!attribute [r] name
31
+ # @return [String]
32
+ attribute? :name, Types::String.optional
33
+
34
+ # @!attribute [r] namespace
35
+ # @return [String]
36
+ attribute? :namespace, Types::String.optional
37
+
38
+ # @!attribute [r] canceled_at
39
+ # @return [String]
40
+ attribute? :canceled_at, Types::String.optional
41
+
42
+ # @!attribute [r] canceled_by
43
+ # @return [Integer]
44
+ attribute? :canceled_by, Types::Int.optional
45
+
46
+ # @!attribute [r] channel_id
47
+ # @return [Integer]
48
+ attribute? :channel_id, Types::Int.optional
49
+
50
+ # @!attribute [r] channel_name
51
+ # @return [String]
52
+ attribute? :channel_name, Types::String.optional
53
+
54
+ # @!attribute [r] created_at
55
+ # @return [String]
56
+ attribute? :created_at, Types::String.optional
57
+
58
+ # @!attribute [r] id
59
+ # @return [Integer]
60
+ attribute? :id, Types::Int | Types::String
61
+
62
+ # @!attribute [r] started_at
63
+ # @return [String]
64
+ attribute? :started_at, Types::String.optional
65
+
66
+ # @!attribute [r] status
67
+ # @return [String]
68
+ attribute? :status, Types::String.optional
69
+
70
+ # @!attribute [r] template_detail_id
71
+ # @return [Integer]
72
+ attribute? :template_detail_id, Types::Int.optional
73
+
74
+ # @!attribute [r] template_id
75
+ # @return [Integer]
76
+ attribute? :template_id, Types::Int.optional
77
+
78
+ # @!attribute [r] template_name
79
+ # @return [String]
80
+ attribute? :template_name, Types::String.optional
81
+
82
+ # @!attribute [r] total_failed
83
+ # @return [Integer]
84
+ attribute? :total_failed, Types::Int.optional
85
+
86
+ # @!attribute [r] total_read
87
+ # @return [Integer]
88
+ attribute? :total_read, Types::Int.optional
89
+
90
+ # @!attribute [r] total_received
91
+ # @return [Integer]
92
+ attribute? :total_received, Types::Int.optional
93
+
94
+ # @!attribute [r] total_recipient
95
+ # @return [Integer]
96
+ attribute? :total_recipient, Types::Int.optional
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,59 @@
1
+ module Qismo
2
+ module Objects
3
+ # Broadcast log object
4
+ #
5
+ class BroadcastLog < Qismo::Object
6
+ # @!attribute [r] button_params
7
+ # @return [String]
8
+ attribute? :button_params, Types::String.optional
9
+
10
+ # @!attribute [r] customer_name
11
+ # @return [String]
12
+ attribute? :customer_name, Types::String.optional
13
+
14
+ # @!attribute [r] header_value
15
+ # @return [String]
16
+ attribute? :header_value, Types::String.optional
17
+
18
+ # @!attribute [r] id
19
+ # @return [Integer]
20
+ attribute? :id, Types::Int.optional
21
+
22
+ # @!attribute [r] message
23
+ # @return [String]
24
+ attribute? :message, Types::String.optional
25
+
26
+ # @!attribute [r] message_id
27
+ # @return [String]
28
+ attribute? :message_id, Types::String.optional
29
+
30
+ # @!attribute [r] notes
31
+ # @return [String]
32
+ attribute? :notes, Types::String.optional
33
+
34
+ # @!attribute [r] params
35
+ # @return [String]
36
+ attribute? :params, Types::String.optional
37
+
38
+ # @!attribute [r] phone_number
39
+ # @return [String]
40
+ attribute? :phone_number, Types::String.optional
41
+
42
+ # @!attribute [r] sent_at
43
+ # @return [String]
44
+ attribute? :sent_at, Types::String.optional
45
+
46
+ # @!attribute [r] status
47
+ # @return [String]
48
+ attribute? :status, Types::String.optional
49
+
50
+ # @!attribute [r] template_name
51
+ # @return [String]
52
+ attribute? :template_name, Types::String.optional
53
+
54
+ # @!attribute [r] variables
55
+ # @return [String]
56
+ attribute? :variables, Types::String.optional
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,35 @@
1
+ module Qismo
2
+ module Objects
3
+ # Custom channel object
4
+ #
5
+ class CustomChannel < Qismo::Object
6
+ # @!attribute [r] id
7
+ # @return [Integer]
8
+ attribute? :id, Types::Int.optional
9
+
10
+ # @!attribute [r] webhook_url
11
+ # @return [String]
12
+ attribute? :webhook_url, Types::String.optional
13
+
14
+ # @!attribute [r] logo_url
15
+ # @return [String]
16
+ attribute? :logo_url, Types::String.optional
17
+
18
+ # @!attribute [r] identifier_key
19
+ # @return [String]
20
+ attribute? :identifier_key, Types::String.optional
21
+
22
+ # @!attribute [r] name
23
+ # @return [String]
24
+ attribute? :name, Types::String.optional
25
+
26
+ # @!attribute [r] is_active
27
+ # @return [TrueClass,FalseClass]
28
+ attribute? :is_active, Types::Bool.optional
29
+
30
+ # @!attribute [r] use_channel_responder
31
+ # @return [TrueClass,FalseClass]
32
+ attribute? :use_channel_responder, Types::Bool.optional
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,19 @@
1
+ module Qismo
2
+ module Objects
3
+ # Custom channel message response object
4
+ #
5
+ class CustomChannelMessageResponse < Qismo::Object
6
+ # @!attribute [r] agent
7
+ # @return [Qismo::Objects::User]
8
+ attribute? :agent, Qismo::Objects::User.optional
9
+
10
+ # @!attribute [r] agent_service
11
+ # @return [Qismo::Objects::AgentService]
12
+ attribute? :agent_service, Qismo::Objects::AgentService.optional
13
+
14
+ # @!attribute [r] room_log
15
+ # @return [Qismo::Objects::CustomerRoom]
16
+ attribute? :room_log, Qismo::Objects::CustomerRoom
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,85 @@
1
+ require "qismo/object"
2
+
3
+ module Qismo
4
+ module Objects
5
+ # Customer room object
6
+ #
7
+ class CustomerRoom < Qismo::Object
8
+ # @!attribute [r] channel_id
9
+ # @return [Integer]
10
+ attribute? :channel_id, Types::Int.optional
11
+
12
+ # @!attribute [r] contact_id
13
+ # @return [Integer]
14
+ attribute? :contact_id, Types::Int.optional
15
+
16
+ # @!attribute [r] id
17
+ # @return [Integer]
18
+ attribute? :id, Types::Int.optional
19
+
20
+ # @!attribute [r] is_handled_by_bot
21
+ # @return [TrueClass,FalseClass]
22
+ attribute? :is_handled_by_bot, Types::Bool.optional
23
+
24
+ # @!attribute [r] is_resolved
25
+ # @return [String]
26
+ attribute? :is_resolved, Types::Bool
27
+
28
+ # @!attribute [r] is_waiting
29
+ # @return [TrueClass,FalseClass]
30
+ attribute? :is_waiting, Types::Bool
31
+
32
+ # @!attribute [r] last_comment_sender
33
+ # @return [String]
34
+ attribute? :last_comment_sender, String
35
+
36
+ # @!attribute [r] last_comment_sender_type
37
+ # @return [String]
38
+ attribute? :last_comment_sender_type, Types::String.optional
39
+
40
+ # @!attribute [r] last_comment_text
41
+ # @return [String]
42
+ attribute? :last_comment_text, Types::String.optional
43
+
44
+ # @!attribute [r] last_comment_timestamp
45
+ # @return [String]
46
+ attribute? :last_comment_timestamp, Types::String.optional
47
+
48
+ # @!attribute [r] last_customer_comment_text
49
+ # @return [String]
50
+ attribute? :last_customer_comment_text, Types::String.optional
51
+
52
+ # @!attribute [r] last_customer_timestamp
53
+ # @return [String]
54
+ attribute? :last_customer_timestamp, Types::String.optional
55
+
56
+ # @!attribute [r] name
57
+ # @return [String]
58
+ attribute? :name, Types::String.optional
59
+
60
+ # @!attribute [r] room_badge
61
+ # @return [String]
62
+ attribute? :room_badge, Types::String.optional
63
+
64
+ # @!attribute [r] room_id
65
+ # @return [String]
66
+ attribute? :room_id, Types::Int.optional
67
+
68
+ # @!attribute [r] room_type
69
+ # @return [String]
70
+ attribute? :room_type, Types::String.optional
71
+
72
+ # @!attribute [r] source
73
+ # @return [String]
74
+ attribute? :source, Types::String.optional
75
+
76
+ # @!attribute [r] user_avatar_url
77
+ # @return [String]
78
+ attribute? :user_avatar_url, Types::String.optional
79
+
80
+ # @!attribute [r] user_id
81
+ # @return [String]
82
+ attribute? :user_id, Types::String.optional
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,31 @@
1
+ module Qismo
2
+ module Objects
3
+ # Fb channel object
4
+ #
5
+ class FbChannel < Qismo::Object
6
+ # @!attribute [r] id
7
+ # @return [Integer]
8
+ attribute? :id, Types::Int.optional
9
+
10
+ # @!attribute [r] is_active
11
+ # @return [TrueClass,FalseClass]
12
+ attribute? :is_active, Types::Bool.optional
13
+
14
+ # @!attribute [r] profile_name
15
+ # @return [String]
16
+ attribute? :profile_name, Types::String.optional
17
+
18
+ # @!attribute [r] page_id
19
+ # @return [String]
20
+ attribute? :page_id, Types::String.optional
21
+
22
+ # @!attribute [r] badge_url
23
+ # @return [String]
24
+ attribute? :badge_url, Types::String.optional
25
+
26
+ # @!attribute [r] use_channel_responder
27
+ # @return [TrueClass,FalseClass]
28
+ attribute :use_channel_responder, Types::Bool.optional
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,111 @@
1
+ module Qismo
2
+ module Objects
3
+ # HSM template object
4
+ #
5
+ class HsmTemplate < Qismo::Object
6
+ # Hsm detail object
7
+ #
8
+ class HsmDetail < Qismo::Object
9
+ # Hsm detail button object
10
+ #
11
+ class Button < Qismo::Object
12
+ # @!attribute [r] text
13
+ # @return [String]
14
+ attribute? :text, Types::String.optional
15
+
16
+ # @!attribute [r] type
17
+ # @return [String]
18
+ attribute? :type, Types::String.optional
19
+
20
+ # @!attribute [r] url
21
+ # @return [String]
22
+ attribute? :url, Types::String.optional
23
+
24
+ # @!attribute [r] phone_number
25
+ # @return [String]
26
+ attribute? :phone_number, Types::String.optional
27
+ end
28
+
29
+ # @!attribute [r] approval_status
30
+ # @return [Integer]
31
+ attribute? :approval_status, Types::Int.optional
32
+
33
+ # @!attribute [r] buttons
34
+ # @return [Array<Qismo::Objects::HsmInfo::Button>]
35
+ attribute? :buttons, Types.Array(Button.optional).optional
36
+
37
+ # @!attribute [r] content
38
+ # @return [String]
39
+ attribute? :content, Types::String.optional
40
+
41
+ # @!attribute [r] footer
42
+ # @return [String]
43
+ attribute? :footer, Types::String.optional
44
+
45
+ # @!attribute [r] header_content
46
+ # @return [String]
47
+ attribute? :header_content, Types::String.optional
48
+
49
+ # @!attribute [r] header_default_value
50
+ # @return [String]
51
+ attribute? :header_default_value, Types::String.optional
52
+
53
+ # @!attribute [r] header_type
54
+ # @return [String]
55
+ attribute? :header_type, Types::String.optional
56
+
57
+ # @!attribute [r] id
58
+ # @return [Integer]
59
+ attribute? :id, Types::Int.optional
60
+
61
+ # @!attribute [r] language
62
+ # @return [String]
63
+ attribute? :language, Types::String.optional
64
+
65
+ # @!attribute [r] number_of_arguments
66
+ # @return [Integer]
67
+ attribute? :number_of_arguments, Types::Int.optional
68
+
69
+ # @!attribute [r] rejection_reason
70
+ # @return [String]
71
+ attribute? :rejection_reason, Types::String.optional
72
+
73
+ # @!attribute [r] tested
74
+ # @return [TrueClass,FalseClass]
75
+ attribute? :tested, Types::Bool.optional
76
+ end
77
+
78
+ # @!attribute [r] category
79
+ # @return [String]
80
+ attribute? :category, Types::String.optional
81
+
82
+ # @!attribute [r] channel_id
83
+ # @return [Integer]
84
+ attribute? :channel_id, Types::Int.optional
85
+
86
+ # @!attribute [r] channel_name
87
+ # @return [String]
88
+ attribute? :channel_name, Types::String.optional
89
+
90
+ # @!attribute [r] hsm_details
91
+ # @return [Array<Qismo::Objects::HsmInfo::HsmDetail>]
92
+ attribute? :hsm_details, Types.Array(HsmDetail.optional).optional
93
+
94
+ # @!attribute [r] id
95
+ # @return [Integer]
96
+ attribute? :id, Types::Int.optional
97
+
98
+ # @!attribute [r] name
99
+ # @return [String]
100
+ attribute? :name, Types::String.optional
101
+
102
+ # @!attribute [r] namespace
103
+ # @return [String]
104
+ attribute? :namespace, Types::String.optional
105
+
106
+ # @!attribute [r] type
107
+ # @return [Integer]
108
+ attribute? :type, Types::Int.optional
109
+ end
110
+ end
111
+ end