revox 0.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 (161) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +10 -0
  4. data/README.md +234 -0
  5. data/SECURITY.md +23 -0
  6. data/lib/revox/client.rb +86 -0
  7. data/lib/revox/errors.rb +228 -0
  8. data/lib/revox/file_part.rb +58 -0
  9. data/lib/revox/internal/transport/base_client.rb +570 -0
  10. data/lib/revox/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/revox/internal/type/array_of.rb +168 -0
  12. data/lib/revox/internal/type/base_model.rb +529 -0
  13. data/lib/revox/internal/type/base_page.rb +55 -0
  14. data/lib/revox/internal/type/boolean.rb +77 -0
  15. data/lib/revox/internal/type/converter.rb +327 -0
  16. data/lib/revox/internal/type/enum.rb +131 -0
  17. data/lib/revox/internal/type/file_input.rb +110 -0
  18. data/lib/revox/internal/type/hash_of.rb +188 -0
  19. data/lib/revox/internal/type/request_parameters.rb +42 -0
  20. data/lib/revox/internal/type/union.rb +237 -0
  21. data/lib/revox/internal/type/unknown.rb +81 -0
  22. data/lib/revox/internal/util.rb +920 -0
  23. data/lib/revox/internal.rb +20 -0
  24. data/lib/revox/models/assistant_create_params.rb +467 -0
  25. data/lib/revox/models/assistant_create_response.rb +535 -0
  26. data/lib/revox/models/assistant_delete_params.rb +14 -0
  27. data/lib/revox/models/assistant_delete_response.rb +16 -0
  28. data/lib/revox/models/assistant_list_params.rb +14 -0
  29. data/lib/revox/models/assistant_list_response.rb +533 -0
  30. data/lib/revox/models/assistant_retrieve_params.rb +14 -0
  31. data/lib/revox/models/assistant_retrieve_response.rb +518 -0
  32. data/lib/revox/models/assistant_update_params.rb +467 -0
  33. data/lib/revox/models/assistant_update_response.rb +535 -0
  34. data/lib/revox/models/call_create_params.rb +592 -0
  35. data/lib/revox/models/call_create_response.rb +684 -0
  36. data/lib/revox/models/call_list_params.rb +29 -0
  37. data/lib/revox/models/call_list_response.rb +197 -0
  38. data/lib/revox/models/call_retrieve_params.rb +14 -0
  39. data/lib/revox/models/call_retrieve_response.rb +684 -0
  40. data/lib/revox/models/users/me_retrieve_params.rb +16 -0
  41. data/lib/revox/models/users/me_retrieve_response.rb +89 -0
  42. data/lib/revox/models/users/me_update_params.rb +22 -0
  43. data/lib/revox/models/users/me_update_response.rb +89 -0
  44. data/lib/revox/models/voice_list_params.rb +14 -0
  45. data/lib/revox/models/voice_list_response.rb +91 -0
  46. data/lib/revox/models/voice_preview_params.rb +49 -0
  47. data/lib/revox/models/voice_retrieve_params.rb +30 -0
  48. data/lib/revox/models/voice_retrieve_response.rb +39 -0
  49. data/lib/revox/models.rb +65 -0
  50. data/lib/revox/request_options.rb +77 -0
  51. data/lib/revox/resources/assistants.rb +180 -0
  52. data/lib/revox/resources/call.rb +100 -0
  53. data/lib/revox/resources/users/me.rb +55 -0
  54. data/lib/revox/resources/users.rb +18 -0
  55. data/lib/revox/resources/voices.rb +83 -0
  56. data/lib/revox/version.rb +5 -0
  57. data/lib/revox.rb +85 -0
  58. data/manifest.yaml +17 -0
  59. data/rbi/revox/client.rbi +58 -0
  60. data/rbi/revox/errors.rbi +205 -0
  61. data/rbi/revox/file_part.rbi +37 -0
  62. data/rbi/revox/internal/transport/base_client.rbi +297 -0
  63. data/rbi/revox/internal/transport/pooled_net_requester.rbi +82 -0
  64. data/rbi/revox/internal/type/array_of.rbi +104 -0
  65. data/rbi/revox/internal/type/base_model.rbi +299 -0
  66. data/rbi/revox/internal/type/base_page.rbi +42 -0
  67. data/rbi/revox/internal/type/boolean.rbi +58 -0
  68. data/rbi/revox/internal/type/converter.rbi +204 -0
  69. data/rbi/revox/internal/type/enum.rbi +82 -0
  70. data/rbi/revox/internal/type/file_input.rbi +58 -0
  71. data/rbi/revox/internal/type/hash_of.rbi +104 -0
  72. data/rbi/revox/internal/type/request_parameters.rbi +29 -0
  73. data/rbi/revox/internal/type/union.rbi +126 -0
  74. data/rbi/revox/internal/type/unknown.rbi +58 -0
  75. data/rbi/revox/internal/util.rbi +478 -0
  76. data/rbi/revox/internal.rbi +16 -0
  77. data/rbi/revox/models/assistant_create_params.rbi +929 -0
  78. data/rbi/revox/models/assistant_create_response.rbi +1089 -0
  79. data/rbi/revox/models/assistant_delete_params.rbi +27 -0
  80. data/rbi/revox/models/assistant_delete_response.rbi +26 -0
  81. data/rbi/revox/models/assistant_list_params.rbi +27 -0
  82. data/rbi/revox/models/assistant_list_response.rbi +1079 -0
  83. data/rbi/revox/models/assistant_retrieve_params.rbi +27 -0
  84. data/rbi/revox/models/assistant_retrieve_response.rbi +1024 -0
  85. data/rbi/revox/models/assistant_update_params.rbi +935 -0
  86. data/rbi/revox/models/assistant_update_response.rbi +1089 -0
  87. data/rbi/revox/models/call_create_params.rbi +1147 -0
  88. data/rbi/revox/models/call_create_response.rbi +1335 -0
  89. data/rbi/revox/models/call_list_params.rbi +47 -0
  90. data/rbi/revox/models/call_list_response.rbi +401 -0
  91. data/rbi/revox/models/call_retrieve_params.rbi +27 -0
  92. data/rbi/revox/models/call_retrieve_response.rbi +1346 -0
  93. data/rbi/revox/models/users/me_retrieve_params.rbi +29 -0
  94. data/rbi/revox/models/users/me_retrieve_response.rbi +139 -0
  95. data/rbi/revox/models/users/me_update_params.rbi +43 -0
  96. data/rbi/revox/models/users/me_update_response.rbi +139 -0
  97. data/rbi/revox/models/voice_list_params.rbi +25 -0
  98. data/rbi/revox/models/voice_list_response.rbi +204 -0
  99. data/rbi/revox/models/voice_preview_params.rbi +84 -0
  100. data/rbi/revox/models/voice_retrieve_params.rbi +59 -0
  101. data/rbi/revox/models/voice_retrieve_response.rbi +70 -0
  102. data/rbi/revox/models.rbi +27 -0
  103. data/rbi/revox/request_options.rbi +55 -0
  104. data/rbi/revox/resources/assistants.rbi +206 -0
  105. data/rbi/revox/resources/call.rbi +86 -0
  106. data/rbi/revox/resources/users/me.rbi +33 -0
  107. data/rbi/revox/resources/users.rbi +15 -0
  108. data/rbi/revox/resources/voices.rbi +58 -0
  109. data/rbi/revox/version.rbi +5 -0
  110. data/sig/revox/client.rbs +32 -0
  111. data/sig/revox/errors.rbs +117 -0
  112. data/sig/revox/file_part.rbs +21 -0
  113. data/sig/revox/internal/transport/base_client.rbs +133 -0
  114. data/sig/revox/internal/transport/pooled_net_requester.rbs +48 -0
  115. data/sig/revox/internal/type/array_of.rbs +48 -0
  116. data/sig/revox/internal/type/base_model.rbs +102 -0
  117. data/sig/revox/internal/type/base_page.rbs +24 -0
  118. data/sig/revox/internal/type/boolean.rbs +26 -0
  119. data/sig/revox/internal/type/converter.rbs +79 -0
  120. data/sig/revox/internal/type/enum.rbs +32 -0
  121. data/sig/revox/internal/type/file_input.rbs +25 -0
  122. data/sig/revox/internal/type/hash_of.rbs +48 -0
  123. data/sig/revox/internal/type/request_parameters.rbs +17 -0
  124. data/sig/revox/internal/type/union.rbs +52 -0
  125. data/sig/revox/internal/type/unknown.rbs +26 -0
  126. data/sig/revox/internal/util.rbs +185 -0
  127. data/sig/revox/internal.rbs +9 -0
  128. data/sig/revox/models/assistant_create_params.rbs +413 -0
  129. data/sig/revox/models/assistant_create_response.rbs +461 -0
  130. data/sig/revox/models/assistant_delete_params.rbs +15 -0
  131. data/sig/revox/models/assistant_delete_response.rbs +13 -0
  132. data/sig/revox/models/assistant_list_params.rbs +15 -0
  133. data/sig/revox/models/assistant_list_response.rbs +461 -0
  134. data/sig/revox/models/assistant_retrieve_params.rbs +15 -0
  135. data/sig/revox/models/assistant_retrieve_response.rbs +446 -0
  136. data/sig/revox/models/assistant_update_params.rbs +417 -0
  137. data/sig/revox/models/assistant_update_response.rbs +461 -0
  138. data/sig/revox/models/call_create_params.rbs +507 -0
  139. data/sig/revox/models/call_create_response.rbs +551 -0
  140. data/sig/revox/models/call_list_params.rbs +28 -0
  141. data/sig/revox/models/call_list_response.rbs +171 -0
  142. data/sig/revox/models/call_retrieve_params.rbs +14 -0
  143. data/sig/revox/models/call_retrieve_response.rbs +551 -0
  144. data/sig/revox/models/users/me_retrieve_params.rbs +16 -0
  145. data/sig/revox/models/users/me_retrieve_response.rbs +70 -0
  146. data/sig/revox/models/users/me_update_params.rbs +28 -0
  147. data/sig/revox/models/users/me_update_response.rbs +70 -0
  148. data/sig/revox/models/voice_list_params.rbs +14 -0
  149. data/sig/revox/models/voice_list_response.rbs +83 -0
  150. data/sig/revox/models/voice_preview_params.rbs +49 -0
  151. data/sig/revox/models/voice_retrieve_params.rbs +35 -0
  152. data/sig/revox/models/voice_retrieve_response.rbs +32 -0
  153. data/sig/revox/models.rbs +25 -0
  154. data/sig/revox/request_options.rbs +34 -0
  155. data/sig/revox/resources/assistants.rbs +66 -0
  156. data/sig/revox/resources/call.rbs +31 -0
  157. data/sig/revox/resources/users/me.rbs +18 -0
  158. data/sig/revox/resources/users.rbs +9 -0
  159. data/sig/revox/resources/voices.rbs +24 -0
  160. data/sig/revox/version.rbs +3 -0
  161. metadata +232 -0
@@ -0,0 +1,180 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Resources
5
+ class Assistants
6
+ # Some parameter documentations has been truncated, see
7
+ # {Revox::Models::AssistantCreateParams} for more details.
8
+ #
9
+ # @overload create(name:, prompt:, background_sound: nil, calendly: nil, call_retry_config: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, max_call_duration_secs: nil, structured_output_config: nil, transfer_phone_number: nil, voice: nil, voicemail_message: nil, webhook_url: nil, request_options: {})
10
+ #
11
+ # @param name [String]
12
+ #
13
+ # @param prompt [String] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
14
+ #
15
+ # @param background_sound [Symbol, Revox::Models::AssistantCreateParams::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
16
+ #
17
+ # @param calendly [Revox::Models::AssistantCreateParams::Calendly, nil]
18
+ #
19
+ # @param call_retry_config [Revox::Models::AssistantCreateParams::CallRetryConfig] Configuration for call retry behavior including time windows, delays, and max it
20
+ #
21
+ # @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
22
+ #
23
+ # @param faq_items [Array<Revox::Models::AssistantCreateParams::FaqItem>] FAQ items to associate with this assistant. When provided, replaces all existing
24
+ #
25
+ # @param first_sentence [String] The first sentence to use for the call. This will be given to the LLM
26
+ #
27
+ # @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
28
+ #
29
+ # @param first_sentence_mode [Symbol, Revox::Models::AssistantCreateParams::FirstSentenceMode] How the first sentence should be handled. "generated" means the LLM will generat
30
+ #
31
+ # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
32
+ #
33
+ # @param llm_model [Revox::Models::AssistantCreateParams::LlmModel::UnionMember0, Revox::Models::AssistantCreateParams::LlmModel::UnionMember1]
34
+ #
35
+ # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
36
+ #
37
+ # @param structured_output_config [Array<Revox::Models::AssistantCreateParams::StructuredOutputConfig>] The structured output config to use for the call. This is used to extract the da
38
+ #
39
+ # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
40
+ #
41
+ # @param voice [Revox::Models::AssistantCreateParams::Voice] The voice to use for the call. You can get the list of voices using the /voices
42
+ #
43
+ # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
44
+ #
45
+ # @param webhook_url [String] The webhook URL to call when the call is completed.
46
+ #
47
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
48
+ #
49
+ # @return [Revox::Models::AssistantCreateResponse]
50
+ #
51
+ # @see Revox::Models::AssistantCreateParams
52
+ def create(params)
53
+ parsed, options = Revox::AssistantCreateParams.dump_request(params)
54
+ @client.request(
55
+ method: :post,
56
+ path: "assistants",
57
+ body: parsed,
58
+ model: Revox::Models::AssistantCreateResponse,
59
+ options: options
60
+ )
61
+ end
62
+
63
+ # @overload retrieve(id, request_options: {})
64
+ #
65
+ # @param id [String]
66
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
67
+ #
68
+ # @return [Revox::Models::AssistantRetrieveResponse]
69
+ #
70
+ # @see Revox::Models::AssistantRetrieveParams
71
+ def retrieve(id, params = {})
72
+ @client.request(
73
+ method: :get,
74
+ path: ["assistants/%1$s", id],
75
+ model: Revox::Models::AssistantRetrieveResponse,
76
+ options: params[:request_options]
77
+ )
78
+ end
79
+
80
+ # Some parameter documentations has been truncated, see
81
+ # {Revox::Models::AssistantUpdateParams} for more details.
82
+ #
83
+ # @overload update(id, background_sound: nil, calendly: nil, call_retry_config: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, max_call_duration_secs: nil, name: nil, prompt: nil, structured_output_config: nil, transfer_phone_number: nil, voice: nil, voicemail_message: nil, webhook_url: nil, request_options: {})
84
+ #
85
+ # @param id [String]
86
+ #
87
+ # @param background_sound [Symbol, Revox::Models::AssistantUpdateParams::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
88
+ #
89
+ # @param calendly [Revox::Models::AssistantUpdateParams::Calendly, nil]
90
+ #
91
+ # @param call_retry_config [Revox::Models::AssistantUpdateParams::CallRetryConfig] Configuration for call retry behavior including time windows, delays, and max it
92
+ #
93
+ # @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
94
+ #
95
+ # @param faq_items [Array<Revox::Models::AssistantUpdateParams::FaqItem>] FAQ items to associate with this assistant. When provided, replaces all existing
96
+ #
97
+ # @param first_sentence [String] The first sentence to use for the call. This will be given to the LLM
98
+ #
99
+ # @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
100
+ #
101
+ # @param first_sentence_mode [Symbol, Revox::Models::AssistantUpdateParams::FirstSentenceMode] How the first sentence should be handled. "generated" means the LLM will generat
102
+ #
103
+ # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
104
+ #
105
+ # @param llm_model [Revox::Models::AssistantUpdateParams::LlmModel::UnionMember0, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember1]
106
+ #
107
+ # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
108
+ #
109
+ # @param name [String]
110
+ #
111
+ # @param prompt [String] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
112
+ #
113
+ # @param structured_output_config [Array<Revox::Models::AssistantUpdateParams::StructuredOutputConfig>] The structured output config to use for the call. This is used to extract the da
114
+ #
115
+ # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
116
+ #
117
+ # @param voice [Revox::Models::AssistantUpdateParams::Voice] The voice to use for the call. You can get the list of voices using the /voices
118
+ #
119
+ # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
120
+ #
121
+ # @param webhook_url [String] The webhook URL to call when the call is completed.
122
+ #
123
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
124
+ #
125
+ # @return [Revox::Models::AssistantUpdateResponse]
126
+ #
127
+ # @see Revox::Models::AssistantUpdateParams
128
+ def update(id, params = {})
129
+ parsed, options = Revox::AssistantUpdateParams.dump_request(params)
130
+ @client.request(
131
+ method: :patch,
132
+ path: ["assistants/%1$s", id],
133
+ body: parsed,
134
+ model: Revox::Models::AssistantUpdateResponse,
135
+ options: options
136
+ )
137
+ end
138
+
139
+ # @overload list(request_options: {})
140
+ #
141
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
142
+ #
143
+ # @return [Revox::Models::AssistantListResponse]
144
+ #
145
+ # @see Revox::Models::AssistantListParams
146
+ def list(params = {})
147
+ @client.request(
148
+ method: :get,
149
+ path: "assistants",
150
+ model: Revox::Models::AssistantListResponse,
151
+ options: params[:request_options]
152
+ )
153
+ end
154
+
155
+ # @overload delete(id, request_options: {})
156
+ #
157
+ # @param id [String]
158
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
159
+ #
160
+ # @return [Revox::Models::AssistantDeleteResponse]
161
+ #
162
+ # @see Revox::Models::AssistantDeleteParams
163
+ def delete(id, params = {})
164
+ @client.request(
165
+ method: :delete,
166
+ path: ["assistants/%1$s", id],
167
+ model: Revox::Models::AssistantDeleteResponse,
168
+ options: params[:request_options]
169
+ )
170
+ end
171
+
172
+ # @api private
173
+ #
174
+ # @param client [Revox::Client]
175
+ def initialize(client:)
176
+ @client = client
177
+ end
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Resources
5
+ class Call
6
+ # Some parameter documentations has been truncated, see
7
+ # {Revox::Models::CallCreateParams} for more details.
8
+ #
9
+ # Place a new call order. A call order can be resolved over multiple call attempts
10
+ # spanning up to a few days.
11
+ #
12
+ # @overload create(phone_number:, assistant: nil, assistant_id: nil, concurrency: nil, force_now: nil, from_phone_number: nil, metadata: nil, prompt_variables: nil, scheduled_at: nil, request_options: {})
13
+ #
14
+ # @param phone_number [String] The phone number to call in the E.164 format. Example: +1234567890
15
+ #
16
+ # @param assistant [Revox::Models::CallCreateParams::Assistant] You can provide a custom assistant configuration here. If you don't provide an a
17
+ #
18
+ # @param assistant_id [String] The ID of the assistant to use for this call.
19
+ #
20
+ # @param concurrency [Revox::Models::CallCreateParams::Concurrency] Limit the number of concurrent calls for a given concurrency key.
21
+ #
22
+ # @param force_now [Boolean] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
23
+ #
24
+ # @param from_phone_number [String] The phone number to use for making the call (e.g., +1234567890). If not provided
25
+ #
26
+ # @param metadata [Hash{Symbol=>String}] Metadata to store with the call.
27
+ #
28
+ # @param prompt_variables [Hash{Symbol=>String}] Variables to interpolate into the prompt. Wether you use an assistant_id or an a
29
+ #
30
+ # @param scheduled_at [Time, Object] Schedule the call to start at a specific date and time (ISO 8601 format). If not
31
+ #
32
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
33
+ #
34
+ # @return [Revox::Models::CallCreateResponse]
35
+ #
36
+ # @see Revox::Models::CallCreateParams
37
+ def create(params)
38
+ parsed, options = Revox::CallCreateParams.dump_request(params)
39
+ @client.request(
40
+ method: :post,
41
+ path: "call",
42
+ body: parsed,
43
+ model: Revox::Models::CallCreateResponse,
44
+ options: options
45
+ )
46
+ end
47
+
48
+ # Get a call order by ID.
49
+ #
50
+ # @overload retrieve(id, request_options: {})
51
+ #
52
+ # @param id [String] The ID of the call to get.
53
+ #
54
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
55
+ #
56
+ # @return [Revox::Models::CallRetrieveResponse]
57
+ #
58
+ # @see Revox::Models::CallRetrieveParams
59
+ def retrieve(id, params = {})
60
+ @client.request(
61
+ method: :get,
62
+ path: ["call/%1$s", id],
63
+ model: Revox::Models::CallRetrieveResponse,
64
+ options: params[:request_options]
65
+ )
66
+ end
67
+
68
+ # Get the list of call orders.
69
+ #
70
+ # @overload list(page:, page_size:, request_options: {})
71
+ #
72
+ # @param page [Float] The page number you want to get. Starting at 0.
73
+ #
74
+ # @param page_size [Float]
75
+ #
76
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
77
+ #
78
+ # @return [Revox::Models::CallListResponse]
79
+ #
80
+ # @see Revox::Models::CallListParams
81
+ def list(params)
82
+ parsed, options = Revox::CallListParams.dump_request(params)
83
+ @client.request(
84
+ method: :get,
85
+ path: "call",
86
+ query: parsed,
87
+ model: Revox::Models::CallListResponse,
88
+ options: options
89
+ )
90
+ end
91
+
92
+ # @api private
93
+ #
94
+ # @param client [Revox::Client]
95
+ def initialize(client:)
96
+ @client = client
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Resources
5
+ class Users
6
+ class Me
7
+ # Get the current authenticated user.
8
+ #
9
+ # @overload retrieve(request_options: {})
10
+ #
11
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
12
+ #
13
+ # @return [Revox::Models::Users::MeRetrieveResponse]
14
+ #
15
+ # @see Revox::Models::Users::MeRetrieveParams
16
+ def retrieve(params = {})
17
+ @client.request(
18
+ method: :get,
19
+ path: "users/me",
20
+ model: Revox::Models::Users::MeRetrieveResponse,
21
+ options: params[:request_options]
22
+ )
23
+ end
24
+
25
+ # Update the current authenticated user.
26
+ #
27
+ # @overload update(has_completed_onboarding: nil, request_options: {})
28
+ #
29
+ # @param has_completed_onboarding [Boolean]
30
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
31
+ #
32
+ # @return [Revox::Models::Users::MeUpdateResponse]
33
+ #
34
+ # @see Revox::Models::Users::MeUpdateParams
35
+ def update(params = {})
36
+ parsed, options = Revox::Users::MeUpdateParams.dump_request(params)
37
+ @client.request(
38
+ method: :patch,
39
+ path: "users/me",
40
+ body: parsed,
41
+ model: Revox::Models::Users::MeUpdateResponse,
42
+ options: options
43
+ )
44
+ end
45
+
46
+ # @api private
47
+ #
48
+ # @param client [Revox::Client]
49
+ def initialize(client:)
50
+ @client = client
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Resources
5
+ class Users
6
+ # @return [Revox::Resources::Users::Me]
7
+ attr_reader :me
8
+
9
+ # @api private
10
+ #
11
+ # @param client [Revox::Client]
12
+ def initialize(client:)
13
+ @client = client
14
+ @me = Revox::Resources::Users::Me.new(client: client)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Resources
5
+ class Voices
6
+ # Get a single voice by ID.
7
+ #
8
+ # @overload retrieve(id, provider:, request_options: {})
9
+ #
10
+ # @param id [String] The voice ID to get.
11
+ #
12
+ # @param provider [Symbol, Revox::Models::VoiceRetrieveParams::Provider]
13
+ #
14
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
15
+ #
16
+ # @return [Revox::Models::VoiceRetrieveResponse]
17
+ #
18
+ # @see Revox::Models::VoiceRetrieveParams
19
+ def retrieve(id, params)
20
+ parsed, options = Revox::VoiceRetrieveParams.dump_request(params)
21
+ @client.request(
22
+ method: :get,
23
+ path: ["voices/%1$s", id],
24
+ query: parsed,
25
+ model: Revox::Models::VoiceRetrieveResponse,
26
+ options: options
27
+ )
28
+ end
29
+
30
+ # Get the list of voices available for the call. Supports Cartesia, ElevenLabs,
31
+ # Inworld voices.
32
+ #
33
+ # @overload list(request_options: {})
34
+ #
35
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
36
+ #
37
+ # @return [Revox::Models::VoiceListResponse]
38
+ #
39
+ # @see Revox::Models::VoiceListParams
40
+ def list(params = {})
41
+ @client.request(
42
+ method: :get,
43
+ path: "voices",
44
+ model: Revox::Models::VoiceListResponse,
45
+ options: params[:request_options]
46
+ )
47
+ end
48
+
49
+ # Generate a voice preview audio sample for a given voice ID.
50
+ #
51
+ # @overload preview(provider:, voice_id:, text: nil, request_options: {})
52
+ #
53
+ # @param provider [Symbol, Revox::Models::VoicePreviewParams::Provider] The provider to use for the preview.
54
+ #
55
+ # @param voice_id [String] The voice ID to generate a preview for.
56
+ #
57
+ # @param text [String] The text to generate a preview for.
58
+ #
59
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
60
+ #
61
+ # @return [nil]
62
+ #
63
+ # @see Revox::Models::VoicePreviewParams
64
+ def preview(params)
65
+ parsed, options = Revox::VoicePreviewParams.dump_request(params)
66
+ @client.request(
67
+ method: :post,
68
+ path: "voices/preview",
69
+ body: parsed,
70
+ model: NilClass,
71
+ options: options
72
+ )
73
+ end
74
+
75
+ # @api private
76
+ #
77
+ # @param client [Revox::Client]
78
+ def initialize(client:)
79
+ @client = client
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ VERSION = "0.0.2"
5
+ end
data/lib/revox.rb ADDED
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Standard libraries.
4
+ # rubocop:disable Lint/RedundantRequireStatement
5
+ require "English"
6
+ require "base64"
7
+ require "cgi"
8
+ require "date"
9
+ require "erb"
10
+ require "etc"
11
+ require "json"
12
+ require "net/http"
13
+ require "openssl"
14
+ require "pathname"
15
+ require "rbconfig"
16
+ require "securerandom"
17
+ require "set"
18
+ require "stringio"
19
+ require "time"
20
+ require "uri"
21
+ # rubocop:enable Lint/RedundantRequireStatement
22
+
23
+ # We already ship the preferred sorbet manifests in the package itself.
24
+ # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
25
+ if Object.const_defined?(:Tapioca) &&
26
+ caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
27
+ ARGV.none?(/dsl/)
28
+ return
29
+ end
30
+
31
+ # Gems.
32
+ require "connection_pool"
33
+
34
+ # Package files.
35
+ require_relative "revox/version"
36
+ require_relative "revox/internal/util"
37
+ require_relative "revox/internal/type/converter"
38
+ require_relative "revox/internal/type/unknown"
39
+ require_relative "revox/internal/type/boolean"
40
+ require_relative "revox/internal/type/file_input"
41
+ require_relative "revox/internal/type/enum"
42
+ require_relative "revox/internal/type/union"
43
+ require_relative "revox/internal/type/array_of"
44
+ require_relative "revox/internal/type/hash_of"
45
+ require_relative "revox/internal/type/base_model"
46
+ require_relative "revox/internal/type/base_page"
47
+ require_relative "revox/internal/type/request_parameters"
48
+ require_relative "revox/internal"
49
+ require_relative "revox/request_options"
50
+ require_relative "revox/file_part"
51
+ require_relative "revox/errors"
52
+ require_relative "revox/internal/transport/base_client"
53
+ require_relative "revox/internal/transport/pooled_net_requester"
54
+ require_relative "revox/client"
55
+ require_relative "revox/models/assistant_create_params"
56
+ require_relative "revox/models/assistant_create_response"
57
+ require_relative "revox/models/assistant_delete_params"
58
+ require_relative "revox/models/assistant_delete_response"
59
+ require_relative "revox/models/assistant_list_params"
60
+ require_relative "revox/models/assistant_list_response"
61
+ require_relative "revox/models/assistant_retrieve_params"
62
+ require_relative "revox/models/assistant_retrieve_response"
63
+ require_relative "revox/models/assistant_update_params"
64
+ require_relative "revox/models/assistant_update_response"
65
+ require_relative "revox/models/call_create_params"
66
+ require_relative "revox/models/call_create_response"
67
+ require_relative "revox/models/call_list_params"
68
+ require_relative "revox/models/call_list_response"
69
+ require_relative "revox/models/call_retrieve_params"
70
+ require_relative "revox/models/call_retrieve_response"
71
+ require_relative "revox/models/users/me_retrieve_params"
72
+ require_relative "revox/models/users/me_retrieve_response"
73
+ require_relative "revox/models/users/me_update_params"
74
+ require_relative "revox/models/users/me_update_response"
75
+ require_relative "revox/models/voice_list_params"
76
+ require_relative "revox/models/voice_list_response"
77
+ require_relative "revox/models/voice_preview_params"
78
+ require_relative "revox/models/voice_retrieve_params"
79
+ require_relative "revox/models/voice_retrieve_response"
80
+ require_relative "revox/models"
81
+ require_relative "revox/resources/assistants"
82
+ require_relative "revox/resources/call"
83
+ require_relative "revox/resources/users"
84
+ require_relative "revox/resources/users/me"
85
+ require_relative "revox/resources/voices"
data/manifest.yaml ADDED
@@ -0,0 +1,17 @@
1
+ dependencies:
2
+ - English
3
+ - base64
4
+ - cgi
5
+ - date
6
+ - erb
7
+ - etc
8
+ - json
9
+ - net/http
10
+ - openssl
11
+ - pathname
12
+ - rbconfig
13
+ - securerandom
14
+ - set
15
+ - stringio
16
+ - time
17
+ - uri
@@ -0,0 +1,58 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ class Client < Revox::Internal::Transport::BaseClient
5
+ DEFAULT_MAX_RETRIES = 2
6
+
7
+ DEFAULT_TIMEOUT_IN_SECONDS = T.let(60.0, Float)
8
+
9
+ DEFAULT_INITIAL_RETRY_DELAY = T.let(0.5, Float)
10
+
11
+ DEFAULT_MAX_RETRY_DELAY = T.let(8.0, Float)
12
+
13
+ sig { returns(String) }
14
+ attr_reader :api_key
15
+
16
+ sig { returns(Revox::Resources::Assistants) }
17
+ attr_reader :assistants
18
+
19
+ sig { returns(Revox::Resources::Call) }
20
+ attr_reader :call
21
+
22
+ sig { returns(Revox::Resources::Voices) }
23
+ attr_reader :voices
24
+
25
+ sig { returns(Revox::Resources::Users) }
26
+ attr_reader :users
27
+
28
+ # @api private
29
+ sig { override.returns(T::Hash[String, String]) }
30
+ private def auth_headers
31
+ end
32
+
33
+ # Creates and returns a new client for interacting with the API.
34
+ sig do
35
+ params(
36
+ api_key: T.nilable(String),
37
+ base_url: T.nilable(String),
38
+ max_retries: Integer,
39
+ timeout: Float,
40
+ initial_retry_delay: Float,
41
+ max_retry_delay: Float
42
+ ).returns(T.attached_class)
43
+ end
44
+ def self.new(
45
+ # Defaults to `ENV["REVOX_API_KEY"]`
46
+ api_key: ENV["REVOX_API_KEY"],
47
+ # Override the default base URL for the API, e.g.,
48
+ # `"https://api.example.com/v2/"`. Defaults to `ENV["REVOX_BASE_URL"]`
49
+ base_url: ENV["REVOX_BASE_URL"],
50
+ # Max number of retries to attempt after a failed retryable request.
51
+ max_retries: Revox::Client::DEFAULT_MAX_RETRIES,
52
+ timeout: Revox::Client::DEFAULT_TIMEOUT_IN_SECONDS,
53
+ initial_retry_delay: Revox::Client::DEFAULT_INITIAL_RETRY_DELAY,
54
+ max_retry_delay: Revox::Client::DEFAULT_MAX_RETRY_DELAY
55
+ )
56
+ end
57
+ end
58
+ end