@@ -194,6 +194,40 @@ def get(request_options: {}, **params)
194194 raise error_class . new ( response . body , code : code )
195195 end
196196 end
197+
198+ # Submit up to 1,000 metric events for asynchronous processing.
199+ #
200+ # @param request_options [Hash]
201+ # @param params [Hash]
202+ # @option request_options [String] :base_url
203+ # @option request_options [Hash{String => Object}] :additional_headers
204+ # @option request_options [Hash{String => Object}] :additional_query_parameters
205+ # @option request_options [Hash{String => Object}] :additional_body_parameters
206+ # @option request_options [Integer] :timeout_in_seconds
207+ #
208+ # @return [Trophy::Types::BatchEventsResponse]
209+ def batch_events ( request_options : { } , **params )
210+ params = Trophy ::Internal ::Types ::Utils . normalize_keys ( params )
211+ request = Trophy ::Internal ::JSON ::Request . new (
212+ base_url : request_options [ :base_url ] || @base_url || @environment &.dig ( :admin ) ,
213+ method : "POST" ,
214+ path : "metrics/events" ,
215+ body : params ,
216+ request_options : request_options
217+ )
218+ begin
219+ response = @client . send ( request )
220+ rescue Net ::HTTPRequestTimeout
221+ raise Trophy ::Errors ::TimeoutError
222+ end
223+ code = response . code . to_i
224+ if code . between? ( 200 , 299 )
225+ Trophy ::Types ::BatchEventsResponse . load ( response . body )
226+ else
227+ error_class = Trophy ::Errors ::ResponseError . subclass_for_code ( code )
228+ raise error_class . new ( response . body , code : code )
229+ end
230+ end
197231 end
198232 end
199233 end
0 commit comments