apologist 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. checksums.yaml +7 -0
  2. data/.fern/metadata.json +13 -0
  3. data/.fernignore +2 -0
  4. data/.rubocop.yml +108 -0
  5. data/CONTRIBUTING.md +120 -0
  6. data/README.md +169 -0
  7. data/Rakefile +20 -0
  8. data/custom.gemspec.rb +17 -0
  9. data/lib/Apologist/benchmarks/client.rb +160 -0
  10. data/lib/Apologist/benchmarks/types/benchmark_run_request.rb +39 -0
  11. data/lib/Apologist/benchmarks/types/benchmark_run_request_content.rb +16 -0
  12. data/lib/Apologist/benchmarks/types/benchmark_run_request_reasoning_effort.rb +15 -0
  13. data/lib/Apologist/benchmarks/types/benchmark_run_request_verbosity.rb +16 -0
  14. data/lib/Apologist/benchmarks/types/get_benchmark_run_request.rb +13 -0
  15. data/lib/Apologist/benchmarks/types/get_benchmark_run_response.rb +11 -0
  16. data/lib/Apologist/benchmarks/types/list_benchmark_runs_request.rb +33 -0
  17. data/lib/Apologist/benchmarks/types/list_benchmark_runs_response.rb +17 -0
  18. data/lib/Apologist/channels/client.rb +319 -0
  19. data/lib/Apologist/channels/types/get_discord_channel_status_request.rb +11 -0
  20. data/lib/Apologist/channels/types/get_discord_channel_status_response.rb +15 -0
  21. data/lib/Apologist/channels/types/get_instagram_privacy_policy_request.rb +11 -0
  22. data/lib/Apologist/channels/types/receive_discord_interaction_request.rb +17 -0
  23. data/lib/Apologist/channels/types/receive_facebook_message_request.rb +13 -0
  24. data/lib/Apologist/channels/types/receive_telegram_update_request.rb +13 -0
  25. data/lib/Apologist/channels/types/receive_twilio_message_request.rb +15 -0
  26. data/lib/Apologist/channels/types/verify_facebook_webhook_request.rb +17 -0
  27. data/lib/Apologist/channels/types/verify_facebook_webhook_request_hub_mode.rb +13 -0
  28. data/lib/Apologist/chat/client.rb +345 -0
  29. data/lib/Apologist/chat/types/feedback_request.rb +13 -0
  30. data/lib/Apologist/chat/types/flag_request.rb +13 -0
  31. data/lib/Apologist/chat/types/get_chat_completion_request.rb +11 -0
  32. data/lib/Apologist/chat/types/get_chat_completion_response.rb +11 -0
  33. data/lib/Apologist/chat/types/like_request.rb +13 -0
  34. data/lib/Apologist/chat/types/list_chat_completions_request.rb +45 -0
  35. data/lib/Apologist/chat/types/list_chat_completions_response.rb +17 -0
  36. data/lib/Apologist/chat/types/share_request.rb +17 -0
  37. data/lib/Apologist/client.rb +71 -0
  38. data/lib/Apologist/corpus/client.rb +244 -0
  39. data/lib/Apologist/corpus/types/corpus_search_request.rb +17 -0
  40. data/lib/Apologist/corpus/types/corpus_search_request_filters.rb +25 -0
  41. data/lib/Apologist/corpus/types/impression_request.rb +17 -0
  42. data/lib/Apologist/corpus/types/log_corpus_referral_redirect_request.rb +19 -0
  43. data/lib/Apologist/corpus/types/referral_request.rb +17 -0
  44. data/lib/Apologist/corpus/types/search_corpus_response.rb +11 -0
  45. data/lib/Apologist/corpus/types/view_request.rb +17 -0
  46. data/lib/Apologist/ct_as/client.rb +98 -0
  47. data/lib/Apologist/ct_as/types/cta_click_request.rb +13 -0
  48. data/lib/Apologist/ct_as/types/match_ctas_response.rb +11 -0
  49. data/lib/Apologist/environment.rb +7 -0
  50. data/lib/Apologist/errors/api_error.rb +8 -0
  51. data/lib/Apologist/errors/client_error.rb +17 -0
  52. data/lib/Apologist/errors/redirect_error.rb +8 -0
  53. data/lib/Apologist/errors/response_error.rb +42 -0
  54. data/lib/Apologist/errors/server_error.rb +11 -0
  55. data/lib/Apologist/errors/timeout_error.rb +8 -0
  56. data/lib/Apologist/evaluators/client.rb +164 -0
  57. data/lib/Apologist/evaluators/types/evaluate_content_response.rb +11 -0
  58. data/lib/Apologist/evaluators/types/evaluator_request.rb +31 -0
  59. data/lib/Apologist/evaluators/types/evaluator_request_content.rb +15 -0
  60. data/lib/Apologist/evaluators/types/evaluator_request_reasoning_effort.rb +15 -0
  61. data/lib/Apologist/evaluators/types/evaluator_request_verbosity.rb +16 -0
  62. data/lib/Apologist/evaluators/types/get_evaluation_request.rb +13 -0
  63. data/lib/Apologist/evaluators/types/get_evaluation_response.rb +11 -0
  64. data/lib/Apologist/evaluators/types/list_evaluations_request.rb +35 -0
  65. data/lib/Apologist/evaluators/types/list_evaluations_response.rb +17 -0
  66. data/lib/Apologist/internal/errors/constraint_error.rb +10 -0
  67. data/lib/Apologist/internal/errors/type_error.rb +10 -0
  68. data/lib/Apologist/internal/http/base_request.rb +51 -0
  69. data/lib/Apologist/internal/http/raw_client.rb +252 -0
  70. data/lib/Apologist/internal/iterators/cursor_item_iterator.rb +28 -0
  71. data/lib/Apologist/internal/iterators/cursor_page_iterator.rb +63 -0
  72. data/lib/Apologist/internal/iterators/item_iterator.rb +65 -0
  73. data/lib/Apologist/internal/iterators/offset_item_iterator.rb +30 -0
  74. data/lib/Apologist/internal/iterators/offset_page_iterator.rb +103 -0
  75. data/lib/Apologist/internal/json/request.rb +41 -0
  76. data/lib/Apologist/internal/json/serializable.rb +25 -0
  77. data/lib/Apologist/internal/multipart/multipart_encoder.rb +141 -0
  78. data/lib/Apologist/internal/multipart/multipart_form_data.rb +78 -0
  79. data/lib/Apologist/internal/multipart/multipart_form_data_part.rb +51 -0
  80. data/lib/Apologist/internal/multipart/multipart_request.rb +40 -0
  81. data/lib/Apologist/internal/types/array.rb +47 -0
  82. data/lib/Apologist/internal/types/boolean.rb +34 -0
  83. data/lib/Apologist/internal/types/enum.rb +56 -0
  84. data/lib/Apologist/internal/types/hash.rb +36 -0
  85. data/lib/Apologist/internal/types/model/field.rb +38 -0
  86. data/lib/Apologist/internal/types/model.rb +208 -0
  87. data/lib/Apologist/internal/types/type.rb +35 -0
  88. data/lib/Apologist/internal/types/union.rb +161 -0
  89. data/lib/Apologist/internal/types/unknown.rb +15 -0
  90. data/lib/Apologist/internal/types/utils.rb +116 -0
  91. data/lib/Apologist/internal/url_encoded/request.rb +41 -0
  92. data/lib/Apologist/shares/client.rb +52 -0
  93. data/lib/Apologist/shares/types/get_shared_messages_request.rb +11 -0
  94. data/lib/Apologist/shares/types/get_shared_messages_response.rb +11 -0
  95. data/lib/Apologist/types/chat_completion_request.rb +11 -0
  96. data/lib/Apologist/types/chat_completion_request_logprobs.rb +13 -0
  97. data/lib/Apologist/types/chat_completion_request_metadata.rb +29 -0
  98. data/lib/Apologist/types/chat_completion_request_reasoning_effort.rb +13 -0
  99. data/lib/Apologist/types/chat_completion_request_response_format.rb +11 -0
  100. data/lib/Apologist/types/chat_completion_request_response_format_json_schema.rb +17 -0
  101. data/lib/Apologist/types/chat_completion_request_response_format_type.rb +15 -0
  102. data/lib/Apologist/types/chat_completion_request_tool_choice.rb +13 -0
  103. data/lib/Apologist/types/chat_completion_request_tool_choice_zero.rb +13 -0
  104. data/lib/Apologist/types/chat_completion_request_verbosity.rb +14 -0
  105. data/lib/Apologist/types/chat_completion_response.rb +21 -0
  106. data/lib/Apologist/types/chat_completion_response_choices_item.rb +15 -0
  107. data/lib/Apologist/types/chat_completion_response_usage.rb +13 -0
  108. data/lib/Apologist/types/chat_message.rb +11 -0
  109. data/lib/Apologist/types/chat_message_role.rb +13 -0
  110. data/lib/Apologist/types/cta_match_request.rb +11 -0
  111. data/lib/Apologist/types/error.rb +11 -0
  112. data/lib/Apologist/types/success_response.rb +11 -0
  113. data/lib/Apologist/types/tag_ref.rb +11 -0
  114. data/lib/Apologist/types/user.rb +23 -0
  115. data/lib/Apologist/types/user_flag.rb +18 -0
  116. data/lib/Apologist/types/webhook_agent_ref.rb +11 -0
  117. data/lib/Apologist/types/webhook_cta.rb +13 -0
  118. data/lib/Apologist/types/webhook_evaluation.rb +14 -0
  119. data/lib/Apologist/types/webhook_event_info.rb +13 -0
  120. data/lib/Apologist/types/webhook_event_info_key.rb +28 -0
  121. data/lib/Apologist/types/webhook_named_ref.rb +11 -0
  122. data/lib/Apologist/types/webhook_notification_ref.rb +12 -0
  123. data/lib/Apologist/types/webhook_payload.rb +30 -0
  124. data/lib/Apologist/users/client.rb +193 -0
  125. data/lib/Apologist/users/types/get_user_request.rb +11 -0
  126. data/lib/Apologist/users/types/get_user_response.rb +11 -0
  127. data/lib/Apologist/users/types/list_user_flags_request.rb +13 -0
  128. data/lib/Apologist/users/types/list_user_flags_response.rb +17 -0
  129. data/lib/Apologist/users/types/list_users_request.rb +23 -0
  130. data/lib/Apologist/users/types/list_users_response.rb +17 -0
  131. data/lib/Apologist/users/types/update_user_response.rb +11 -0
  132. data/lib/Apologist/users/types/user_update_request.rb +17 -0
  133. data/lib/Apologist/users/types/user_update_request_tags_item.rb +15 -0
  134. data/lib/Apologist/version.rb +5 -0
  135. data/lib/Apologist.rb +131 -0
  136. data/reference.md +2927 -0
  137. metadata +183 -0
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Types
5
+ # The notification configuration that produced this delivery.
6
+ class WebhookNotificationRef < Internal::Types::Model
7
+ field :id, -> { Integer }, optional: false, nullable: false
8
+
9
+ field :name, -> { String }, optional: false, nullable: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Types
5
+ # Canonical JSON body POSTed to a configured webhook URL. `notification`, `event`, and `agent` are always present;
6
+ # the remaining sections appear only when relevant to the event. Treat the payload as additive and ignore
7
+ # unrecognised fields.
8
+ class WebhookPayload < Internal::Types::Model
9
+ field :notification, -> { Apologist::Types::WebhookNotificationRef }, optional: false, nullable: false
10
+
11
+ field :event, -> { Apologist::Types::WebhookEventInfo }, optional: false, nullable: false
12
+
13
+ field :agent, -> { Apologist::Types::WebhookAgentRef }, optional: false, nullable: false
14
+
15
+ field :completion, -> { Internal::Types::Hash[String, Object] }, optional: true, nullable: false
16
+
17
+ field :channel, -> { Apologist::Types::WebhookNamedRef }, optional: true, nullable: false
18
+
19
+ field :platform, -> { Apologist::Types::WebhookNamedRef }, optional: true, nullable: false
20
+
21
+ field :cta, -> { Apologist::Types::WebhookCta }, optional: true, nullable: false
22
+
23
+ field :guardrail, -> { Apologist::Types::WebhookNamedRef }, optional: true, nullable: false
24
+
25
+ field :evaluator, -> { Apologist::Types::WebhookNamedRef }, optional: true, nullable: false
26
+
27
+ field :evaluation, -> { Apologist::Types::WebhookEvaluation }, optional: true, nullable: false
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,193 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ class Client
6
+ # @param client [Apologist::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # Returns a paginated list of users for the agent's team, with applied tags expanded as { id, name } and the
14
+ # persisted responder id.
15
+ #
16
+ # @param request_options [Hash]
17
+ # @param params [Hash]
18
+ # @option request_options [String] :base_url
19
+ # @option request_options [Hash{String => Object}] :additional_headers
20
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
21
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
22
+ # @option request_options [Integer] :timeout_in_seconds
23
+ # @option params [Integer, nil] :page
24
+ # @option params [Integer, nil] :per_page
25
+ # @option params [String, nil] :external_id
26
+ # @option params [String, nil] :tags
27
+ # @option params [String, nil] :responder_id
28
+ # @option params [String, nil] :min_timestamp
29
+ # @option params [String, nil] :max_timestamp
30
+ #
31
+ # @example
32
+ # client.users.list_users
33
+ #
34
+ # @return [Apologist::Users::Types::ListUsersResponse]
35
+ def list_users(request_options: {}, **params)
36
+ params = Apologist::Internal::Types::Utils.normalize_keys(params)
37
+ query_params = {}
38
+ query_params["page"] = params[:page] if params.key?(:page)
39
+ query_params["per_page"] = params[:per_page] if params.key?(:per_page)
40
+ query_params["external_id"] = params[:external_id] if params.key?(:external_id)
41
+ query_params["tags"] = params[:tags] if params.key?(:tags)
42
+ query_params["responder_id"] = params[:responder_id] if params.key?(:responder_id)
43
+ query_params["min_timestamp"] = params[:min_timestamp] if params.key?(:min_timestamp)
44
+ query_params["max_timestamp"] = params[:max_timestamp] if params.key?(:max_timestamp)
45
+
46
+ request = Apologist::Internal::JSON::Request.new(
47
+ base_url: request_options[:base_url],
48
+ method: "GET",
49
+ path: "users",
50
+ query: query_params,
51
+ request_options: request_options
52
+ )
53
+ begin
54
+ response = @client.send(request)
55
+ rescue Net::HTTPRequestTimeout
56
+ raise Apologist::Errors::TimeoutError
57
+ end
58
+ code = response.code.to_i
59
+ if code.between?(200, 299)
60
+ Apologist::Users::Types::ListUsersResponse.load(response.body)
61
+ else
62
+ error_class = Apologist::Errors::ResponseError.subclass_for_code(code)
63
+ raise error_class.new(response.body, code: code)
64
+ end
65
+ end
66
+
67
+ # Returns a paginated list of user flag definitions for the agent's team (all columns from user_flags), ordered by
68
+ # id ascending.
69
+ #
70
+ # @param request_options [Hash]
71
+ # @param params [Hash]
72
+ # @option request_options [String] :base_url
73
+ # @option request_options [Hash{String => Object}] :additional_headers
74
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
75
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
76
+ # @option request_options [Integer] :timeout_in_seconds
77
+ # @option params [Integer, nil] :page
78
+ # @option params [Integer, nil] :per_page
79
+ #
80
+ # @example
81
+ # client.users.list_user_flags
82
+ #
83
+ # @return [Apologist::Users::Types::ListUserFlagsResponse]
84
+ def list_user_flags(request_options: {}, **params)
85
+ params = Apologist::Internal::Types::Utils.normalize_keys(params)
86
+ query_params = {}
87
+ query_params["page"] = params[:page] if params.key?(:page)
88
+ query_params["per_page"] = params[:per_page] if params.key?(:per_page)
89
+
90
+ request = Apologist::Internal::JSON::Request.new(
91
+ base_url: request_options[:base_url],
92
+ method: "GET",
93
+ path: "users/flags",
94
+ query: query_params,
95
+ request_options: request_options
96
+ )
97
+ begin
98
+ response = @client.send(request)
99
+ rescue Net::HTTPRequestTimeout
100
+ raise Apologist::Errors::TimeoutError
101
+ end
102
+ code = response.code.to_i
103
+ if code.between?(200, 299)
104
+ Apologist::Users::Types::ListUserFlagsResponse.load(response.body)
105
+ else
106
+ error_class = Apologist::Errors::ResponseError.subclass_for_code(code)
107
+ raise error_class.new(response.body, code: code)
108
+ end
109
+ end
110
+
111
+ # Returns a single user by external id or internal id, with expanded tags and the persisted responder for the
112
+ # agent.
113
+ #
114
+ # @param request_options [Hash]
115
+ # @param params [Hash]
116
+ # @option request_options [String] :base_url
117
+ # @option request_options [Hash{String => Object}] :additional_headers
118
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
119
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
120
+ # @option request_options [Integer] :timeout_in_seconds
121
+ # @option params [String] :user_id
122
+ #
123
+ # @example
124
+ # client.users.get_user(user_id: "user_id")
125
+ #
126
+ # @return [Apologist::Users::Types::GetUserResponse]
127
+ def get_user(request_options: {}, **params)
128
+ params = Apologist::Internal::Types::Utils.normalize_keys(params)
129
+ request = Apologist::Internal::JSON::Request.new(
130
+ base_url: request_options[:base_url],
131
+ method: "GET",
132
+ path: "users/#{URI.encode_uri_component(params[:user_id].to_s)}",
133
+ request_options: request_options
134
+ )
135
+ begin
136
+ response = @client.send(request)
137
+ rescue Net::HTTPRequestTimeout
138
+ raise Apologist::Errors::TimeoutError
139
+ end
140
+ code = response.code.to_i
141
+ if code.between?(200, 299)
142
+ Apologist::Users::Types::GetUserResponse.load(response.body)
143
+ else
144
+ error_class = Apologist::Errors::ResponseError.subclass_for_code(code)
145
+ raise error_class.new(response.body, code: code)
146
+ end
147
+ end
148
+
149
+ # Updates a user's external_id and/or tags and upserts the persisted responder for the agent. Only provided fields
150
+ # are changed.
151
+ #
152
+ # @param request_options [Hash]
153
+ # @param params [Apologist::Users::Types::UserUpdateRequest]
154
+ # @option request_options [String] :base_url
155
+ # @option request_options [Hash{String => Object}] :additional_headers
156
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
157
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
158
+ # @option request_options [Integer] :timeout_in_seconds
159
+ # @option params [String] :user_id
160
+ #
161
+ # @example
162
+ # client.users.update_user(user_id: "user_id")
163
+ #
164
+ # @return [Apologist::Users::Types::UpdateUserResponse]
165
+ def update_user(request_options: {}, **params)
166
+ params = Apologist::Internal::Types::Utils.normalize_keys(params)
167
+ request_data = Apologist::Users::Types::UserUpdateRequest.new(params).to_h
168
+ non_body_param_names = %w[user_id]
169
+ body = request_data.except(*non_body_param_names)
170
+
171
+ request = Apologist::Internal::JSON::Request.new(
172
+ base_url: request_options[:base_url],
173
+ method: "PATCH",
174
+ path: "users/#{URI.encode_uri_component(params[:user_id].to_s)}",
175
+ body: body,
176
+ request_options: request_options
177
+ )
178
+ begin
179
+ response = @client.send(request)
180
+ rescue Net::HTTPRequestTimeout
181
+ raise Apologist::Errors::TimeoutError
182
+ end
183
+ code = response.code.to_i
184
+ if code.between?(200, 299)
185
+ Apologist::Users::Types::UpdateUserResponse.load(response.body)
186
+ else
187
+ error_class = Apologist::Errors::ResponseError.subclass_for_code(code)
188
+ raise error_class.new(response.body, code: code)
189
+ end
190
+ end
191
+ end
192
+ end
193
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class GetUserRequest < Internal::Types::Model
7
+ field :user_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class GetUserResponse < Internal::Types::Model
7
+ field :data, -> { Apologist::Types::User }, optional: true, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class ListUserFlagsRequest < Internal::Types::Model
7
+ field :page, -> { Integer }, optional: true, nullable: false
8
+
9
+ field :per_page, -> { Integer }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class ListUserFlagsResponse < Internal::Types::Model
7
+ field :data, -> { Internal::Types::Array[Apologist::Types::UserFlag] }, optional: true, nullable: false
8
+
9
+ field :total, -> { Integer }, optional: true, nullable: false
10
+
11
+ field :page, -> { Integer }, optional: true, nullable: false
12
+
13
+ field :per_page, -> { Integer }, optional: true, nullable: false
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class ListUsersRequest < Internal::Types::Model
7
+ field :page, -> { Integer }, optional: true, nullable: false
8
+
9
+ field :per_page, -> { Integer }, optional: true, nullable: false
10
+
11
+ field :external_id, -> { String }, optional: true, nullable: false
12
+
13
+ field :tags, -> { String }, optional: true, nullable: false
14
+
15
+ field :responder_id, -> { String }, optional: true, nullable: false
16
+
17
+ field :min_timestamp, -> { String }, optional: true, nullable: false
18
+
19
+ field :max_timestamp, -> { String }, optional: true, nullable: false
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class ListUsersResponse < Internal::Types::Model
7
+ field :data, -> { Internal::Types::Array[Apologist::Types::User] }, optional: true, nullable: false
8
+
9
+ field :total, -> { Integer }, optional: true, nullable: false
10
+
11
+ field :page, -> { Integer }, optional: true, nullable: false
12
+
13
+ field :per_page, -> { Integer }, optional: true, nullable: false
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class UpdateUserResponse < Internal::Types::Model
7
+ field :data, -> { Apologist::Types::User }, optional: true, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class UserUpdateRequest < Internal::Types::Model
7
+ field :user_id, -> { String }, optional: false, nullable: false
8
+
9
+ field :external_id, -> { String }, optional: true, nullable: false
10
+
11
+ field :tags, -> { Internal::Types::Array[Apologist::Users::Types::UserUpdateRequestTagsItem] }, optional: true, nullable: false
12
+
13
+ field :responder_id, -> { Integer }, optional: true, nullable: false
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ module Users
5
+ module Types
6
+ class UserUpdateRequestTagsItem < Internal::Types::Model
7
+ extend Apologist::Internal::Types::Union
8
+
9
+ member -> { String }
10
+
11
+ member -> { Integer }
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apologist
4
+ VERSION = "1.0.2"
5
+ end
data/lib/Apologist.rb ADDED
@@ -0,0 +1,131 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require "net/http"
5
+ require "securerandom"
6
+
7
+ require_relative "Apologist/internal/json/serializable"
8
+ require_relative "Apologist/internal/types/type"
9
+ require_relative "Apologist/internal/types/utils"
10
+ require_relative "Apologist/internal/types/union"
11
+ require_relative "Apologist/internal/errors/constraint_error"
12
+ require_relative "Apologist/internal/errors/type_error"
13
+ require_relative "Apologist/internal/http/base_request"
14
+ require_relative "Apologist/internal/json/request"
15
+ require_relative "Apologist/internal/http/raw_client"
16
+ require_relative "Apologist/internal/multipart/multipart_encoder"
17
+ require_relative "Apologist/internal/multipart/multipart_form_data_part"
18
+ require_relative "Apologist/internal/multipart/multipart_form_data"
19
+ require_relative "Apologist/internal/multipart/multipart_request"
20
+ require_relative "Apologist/internal/types/model/field"
21
+ require_relative "Apologist/internal/types/model"
22
+ require_relative "Apologist/internal/types/array"
23
+ require_relative "Apologist/internal/types/boolean"
24
+ require_relative "Apologist/internal/types/enum"
25
+ require_relative "Apologist/internal/types/hash"
26
+ require_relative "Apologist/internal/types/unknown"
27
+ require_relative "Apologist/errors/api_error"
28
+ require_relative "Apologist/errors/response_error"
29
+ require_relative "Apologist/errors/client_error"
30
+ require_relative "Apologist/errors/redirect_error"
31
+ require_relative "Apologist/errors/server_error"
32
+ require_relative "Apologist/errors/timeout_error"
33
+ require_relative "Apologist/internal/iterators/item_iterator"
34
+ require_relative "Apologist/internal/iterators/cursor_item_iterator"
35
+ require_relative "Apologist/internal/iterators/offset_item_iterator"
36
+ require_relative "Apologist/internal/iterators/cursor_page_iterator"
37
+ require_relative "Apologist/internal/iterators/offset_page_iterator"
38
+ require_relative "Apologist/internal/url_encoded/request"
39
+ require_relative "Apologist/chat/types/list_chat_completions_response"
40
+ require_relative "Apologist/chat/types/get_chat_completion_response"
41
+ require_relative "Apologist/corpus/types/corpus_search_request_filters"
42
+ require_relative "Apologist/corpus/types/search_corpus_response"
43
+ require_relative "Apologist/evaluators/types/list_evaluations_response"
44
+ require_relative "Apologist/evaluators/types/evaluator_request_content"
45
+ require_relative "Apologist/evaluators/types/evaluator_request_reasoning_effort"
46
+ require_relative "Apologist/evaluators/types/evaluator_request_verbosity"
47
+ require_relative "Apologist/evaluators/types/evaluate_content_response"
48
+ require_relative "Apologist/evaluators/types/get_evaluation_response"
49
+ require_relative "Apologist/ct_as/types/match_ctas_response"
50
+ require_relative "Apologist/types/tag_ref"
51
+ require_relative "Apologist/types/user"
52
+ require_relative "Apologist/users/types/list_users_response"
53
+ require_relative "Apologist/types/user_flag"
54
+ require_relative "Apologist/users/types/list_user_flags_response"
55
+ require_relative "Apologist/users/types/get_user_response"
56
+ require_relative "Apologist/users/types/user_update_request_tags_item"
57
+ require_relative "Apologist/users/types/update_user_response"
58
+ require_relative "Apologist/benchmarks/types/list_benchmark_runs_response"
59
+ require_relative "Apologist/benchmarks/types/benchmark_run_request_content"
60
+ require_relative "Apologist/benchmarks/types/benchmark_run_request_reasoning_effort"
61
+ require_relative "Apologist/benchmarks/types/benchmark_run_request_verbosity"
62
+ require_relative "Apologist/benchmarks/types/get_benchmark_run_response"
63
+ require_relative "Apologist/channels/types/get_discord_channel_status_response"
64
+ require_relative "Apologist/channels/types/verify_facebook_webhook_request_hub_mode"
65
+ require_relative "Apologist/shares/types/get_shared_messages_response"
66
+ require_relative "Apologist/types/error"
67
+ require_relative "Apologist/types/success_response"
68
+ require_relative "Apologist/types/chat_message_role"
69
+ require_relative "Apologist/types/chat_message"
70
+ require_relative "Apologist/types/chat_completion_request_logprobs"
71
+ require_relative "Apologist/types/chat_completion_request_metadata"
72
+ require_relative "Apologist/types/chat_completion_request_reasoning_effort"
73
+ require_relative "Apologist/types/chat_completion_request_verbosity"
74
+ require_relative "Apologist/types/chat_completion_request_response_format_type"
75
+ require_relative "Apologist/types/chat_completion_request_response_format_json_schema"
76
+ require_relative "Apologist/types/chat_completion_request_response_format"
77
+ require_relative "Apologist/types/chat_completion_request_tool_choice_zero"
78
+ require_relative "Apologist/types/chat_completion_request_tool_choice"
79
+ require_relative "Apologist/types/chat_completion_request"
80
+ require_relative "Apologist/types/chat_completion_response_choices_item"
81
+ require_relative "Apologist/types/chat_completion_response_usage"
82
+ require_relative "Apologist/types/chat_completion_response"
83
+ require_relative "Apologist/types/cta_match_request"
84
+ require_relative "Apologist/types/webhook_notification_ref"
85
+ require_relative "Apologist/types/webhook_event_info_key"
86
+ require_relative "Apologist/types/webhook_event_info"
87
+ require_relative "Apologist/types/webhook_agent_ref"
88
+ require_relative "Apologist/types/webhook_named_ref"
89
+ require_relative "Apologist/types/webhook_cta"
90
+ require_relative "Apologist/types/webhook_evaluation"
91
+ require_relative "Apologist/types/webhook_payload"
92
+ require_relative "Apologist/client"
93
+ require_relative "Apologist/chat/client"
94
+ require_relative "Apologist/chat/types/list_chat_completions_request"
95
+ require_relative "Apologist/chat/types/like_request"
96
+ require_relative "Apologist/chat/types/flag_request"
97
+ require_relative "Apologist/chat/types/feedback_request"
98
+ require_relative "Apologist/chat/types/share_request"
99
+ require_relative "Apologist/chat/types/get_chat_completion_request"
100
+ require_relative "Apologist/corpus/client"
101
+ require_relative "Apologist/corpus/types/corpus_search_request"
102
+ require_relative "Apologist/corpus/types/view_request"
103
+ require_relative "Apologist/corpus/types/impression_request"
104
+ require_relative "Apologist/corpus/types/log_corpus_referral_redirect_request"
105
+ require_relative "Apologist/corpus/types/referral_request"
106
+ require_relative "Apologist/evaluators/client"
107
+ require_relative "Apologist/evaluators/types/list_evaluations_request"
108
+ require_relative "Apologist/evaluators/types/evaluator_request"
109
+ require_relative "Apologist/evaluators/types/get_evaluation_request"
110
+ require_relative "Apologist/ct_as/client"
111
+ require_relative "Apologist/ct_as/types/cta_click_request"
112
+ require_relative "Apologist/users/client"
113
+ require_relative "Apologist/users/types/list_users_request"
114
+ require_relative "Apologist/users/types/list_user_flags_request"
115
+ require_relative "Apologist/users/types/get_user_request"
116
+ require_relative "Apologist/users/types/user_update_request"
117
+ require_relative "Apologist/benchmarks/client"
118
+ require_relative "Apologist/benchmarks/types/list_benchmark_runs_request"
119
+ require_relative "Apologist/benchmarks/types/benchmark_run_request"
120
+ require_relative "Apologist/benchmarks/types/get_benchmark_run_request"
121
+ require_relative "Apologist/channels/client"
122
+ require_relative "Apologist/channels/types/get_discord_channel_status_request"
123
+ require_relative "Apologist/channels/types/receive_discord_interaction_request"
124
+ require_relative "Apologist/channels/types/verify_facebook_webhook_request"
125
+ require_relative "Apologist/channels/types/receive_facebook_message_request"
126
+ require_relative "Apologist/channels/types/get_instagram_privacy_policy_request"
127
+ require_relative "Apologist/channels/types/receive_telegram_update_request"
128
+ require_relative "Apologist/channels/types/receive_twilio_message_request"
129
+ require_relative "Apologist/shares/client"
130
+ require_relative "Apologist/shares/types/get_shared_messages_request"
131
+ require_relative "Apologist/environment"