zavudev 0.9.1 → 0.11.0

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 (111) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +1 -1
  4. data/lib/zavudev/client.rb +8 -0
  5. data/lib/zavudev/models/contact_delete_params.rb +20 -0
  6. data/lib/zavudev/models/function_create_params.rb +104 -0
  7. data/lib/zavudev/models/function_create_response.rb +168 -0
  8. data/lib/zavudev/models/function_delete_params.rb +20 -0
  9. data/lib/zavudev/models/function_delete_response.rb +28 -0
  10. data/lib/zavudev/models/function_deploy_params.rb +37 -0
  11. data/lib/zavudev/models/function_deploy_response.rb +104 -0
  12. data/lib/zavudev/models/function_get_deployment_params.rb +20 -0
  13. data/lib/zavudev/models/function_get_deployment_response.rb +104 -0
  14. data/lib/zavudev/models/function_retrieve_params.rb +20 -0
  15. data/lib/zavudev/models/function_retrieve_response.rb +168 -0
  16. data/lib/zavudev/models/function_tail_logs_params.rb +58 -0
  17. data/lib/zavudev/models/function_tail_logs_response.rb +41 -0
  18. data/lib/zavudev/models/function_update_params.rb +37 -0
  19. data/lib/zavudev/models/function_update_response.rb +168 -0
  20. data/lib/zavudev/models/functions/secret_list_params.rb +22 -0
  21. data/lib/zavudev/models/functions/secret_list_response.rb +59 -0
  22. data/lib/zavudev/models/functions/secret_set_params.rb +34 -0
  23. data/lib/zavudev/models/functions/secret_set_response.rb +10 -0
  24. data/lib/zavudev/models/functions/secret_unset_params.rb +28 -0
  25. data/lib/zavudev/models/me_retrieve_params.rb +14 -0
  26. data/lib/zavudev/models/me_retrieve_response.rb +85 -0
  27. data/lib/zavudev/models/message_show_typing_params.rb +26 -0
  28. data/lib/zavudev/models/message_show_typing_response.rb +16 -0
  29. data/lib/zavudev/models/senders/agent/execution_retrieve_params.rb +30 -0
  30. data/lib/zavudev/models/senders/agent/execution_retrieve_response.rb +20 -0
  31. data/lib/zavudev/models/webhook_event.rb +9 -0
  32. data/lib/zavudev/models.rb +22 -0
  33. data/lib/zavudev/resources/contacts.rb +24 -0
  34. data/lib/zavudev/resources/functions/secrets.rb +98 -0
  35. data/lib/zavudev/resources/functions.rb +220 -0
  36. data/lib/zavudev/resources/me.rb +33 -0
  37. data/lib/zavudev/resources/messages.rb +31 -0
  38. data/lib/zavudev/resources/senders/agent/executions.rb +26 -0
  39. data/lib/zavudev/version.rb +1 -1
  40. data/lib/zavudev.rb +29 -0
  41. data/rbi/zavudev/client.rbi +6 -0
  42. data/rbi/zavudev/models/contact_delete_params.rbi +35 -0
  43. data/rbi/zavudev/models/function_create_params.rbi +177 -0
  44. data/rbi/zavudev/models/function_create_response.rbi +277 -0
  45. data/rbi/zavudev/models/function_delete_params.rbi +35 -0
  46. data/rbi/zavudev/models/function_delete_response.rbi +44 -0
  47. data/rbi/zavudev/models/function_deploy_params.rbi +63 -0
  48. data/rbi/zavudev/models/function_deploy_response.rbi +196 -0
  49. data/rbi/zavudev/models/function_get_deployment_params.rbi +38 -0
  50. data/rbi/zavudev/models/function_get_deployment_response.rbi +201 -0
  51. data/rbi/zavudev/models/function_retrieve_params.rbi +35 -0
  52. data/rbi/zavudev/models/function_retrieve_response.rbi +277 -0
  53. data/rbi/zavudev/models/function_tail_logs_params.rbi +90 -0
  54. data/rbi/zavudev/models/function_tail_logs_response.rbi +75 -0
  55. data/rbi/zavudev/models/function_update_params.rbi +63 -0
  56. data/rbi/zavudev/models/function_update_response.rbi +277 -0
  57. data/rbi/zavudev/models/functions/secret_list_params.rbi +40 -0
  58. data/rbi/zavudev/models/functions/secret_list_response.rbi +118 -0
  59. data/rbi/zavudev/models/functions/secret_set_params.rbi +53 -0
  60. data/rbi/zavudev/models/functions/secret_set_response.rbi +9 -0
  61. data/rbi/zavudev/models/functions/secret_unset_params.rbi +48 -0
  62. data/rbi/zavudev/models/me_retrieve_params.rbi +27 -0
  63. data/rbi/zavudev/models/me_retrieve_response.rbi +151 -0
  64. data/rbi/zavudev/models/message_show_typing_params.rbi +46 -0
  65. data/rbi/zavudev/models/message_show_typing_response.rbi +26 -0
  66. data/rbi/zavudev/models/senders/agent/execution_retrieve_params.rbi +50 -0
  67. data/rbi/zavudev/models/senders/agent/execution_retrieve_response.rbi +41 -0
  68. data/rbi/zavudev/models/webhook_event.rbi +11 -0
  69. data/rbi/zavudev/models.rbi +22 -0
  70. data/rbi/zavudev/resources/contacts.rbi +15 -0
  71. data/rbi/zavudev/resources/functions/secrets.rbi +69 -0
  72. data/rbi/zavudev/resources/functions.rbi +171 -0
  73. data/rbi/zavudev/resources/me.rbi +22 -0
  74. data/rbi/zavudev/resources/messages.rbi +21 -0
  75. data/rbi/zavudev/resources/senders/agent/executions.rbi +14 -0
  76. data/sig/zavudev/client.rbs +4 -0
  77. data/sig/zavudev/models/contact_delete_params.rbs +23 -0
  78. data/sig/zavudev/models/function_create_params.rbs +107 -0
  79. data/sig/zavudev/models/function_create_response.rbs +126 -0
  80. data/sig/zavudev/models/function_delete_params.rbs +23 -0
  81. data/sig/zavudev/models/function_delete_response.rbs +22 -0
  82. data/sig/zavudev/models/function_deploy_params.rbs +40 -0
  83. data/sig/zavudev/models/function_deploy_response.rbs +98 -0
  84. data/sig/zavudev/models/function_get_deployment_params.rbs +23 -0
  85. data/sig/zavudev/models/function_get_deployment_response.rbs +98 -0
  86. data/sig/zavudev/models/function_retrieve_params.rbs +23 -0
  87. data/sig/zavudev/models/function_retrieve_response.rbs +126 -0
  88. data/sig/zavudev/models/function_tail_logs_params.rbs +61 -0
  89. data/sig/zavudev/models/function_tail_logs_response.rbs +37 -0
  90. data/sig/zavudev/models/function_update_params.rbs +40 -0
  91. data/sig/zavudev/models/function_update_response.rbs +126 -0
  92. data/sig/zavudev/models/functions/secret_list_params.rbs +25 -0
  93. data/sig/zavudev/models/functions/secret_list_response.rbs +70 -0
  94. data/sig/zavudev/models/functions/secret_set_params.rbs +34 -0
  95. data/sig/zavudev/models/functions/secret_set_response.rbs +7 -0
  96. data/sig/zavudev/models/functions/secret_unset_params.rbs +30 -0
  97. data/sig/zavudev/models/me_retrieve_params.rbs +14 -0
  98. data/sig/zavudev/models/me_retrieve_response.rbs +75 -0
  99. data/sig/zavudev/models/message_show_typing_params.rbs +30 -0
  100. data/sig/zavudev/models/message_show_typing_response.rbs +13 -0
  101. data/sig/zavudev/models/senders/agent/execution_retrieve_params.rbs +32 -0
  102. data/sig/zavudev/models/senders/agent/execution_retrieve_response.rbs +18 -0
  103. data/sig/zavudev/models/webhook_event.rbs +4 -0
  104. data/sig/zavudev/models.rbs +22 -0
  105. data/sig/zavudev/resources/contacts.rbs +5 -0
  106. data/sig/zavudev/resources/functions/secrets.rbs +27 -0
  107. data/sig/zavudev/resources/functions.rbs +61 -0
  108. data/sig/zavudev/resources/me.rbs +11 -0
  109. data/sig/zavudev/resources/messages.rbs +6 -0
  110. data/sig/zavudev/resources/senders/agent/executions.rbs +6 -0
  111. metadata +89 -2
@@ -0,0 +1,151 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class MeRetrieveResponse < Zavudev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Zavudev::Models::MeRetrieveResponse, Zavudev::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(Zavudev::Models::MeRetrieveResponse::APIKey) }
12
+ attr_reader :api_key
13
+
14
+ sig do
15
+ params(
16
+ api_key: Zavudev::Models::MeRetrieveResponse::APIKey::OrHash
17
+ ).void
18
+ end
19
+ attr_writer :api_key
20
+
21
+ sig { returns(T::Boolean) }
22
+ attr_accessor :is_test_mode
23
+
24
+ sig { returns(Zavudev::Models::MeRetrieveResponse::Project) }
25
+ attr_reader :project
26
+
27
+ sig do
28
+ params(
29
+ project: Zavudev::Models::MeRetrieveResponse::Project::OrHash
30
+ ).void
31
+ end
32
+ attr_writer :project
33
+
34
+ sig { returns(Zavudev::Models::MeRetrieveResponse::Team) }
35
+ attr_reader :team
36
+
37
+ sig do
38
+ params(team: Zavudev::Models::MeRetrieveResponse::Team::OrHash).void
39
+ end
40
+ attr_writer :team
41
+
42
+ sig do
43
+ params(
44
+ api_key: Zavudev::Models::MeRetrieveResponse::APIKey::OrHash,
45
+ is_test_mode: T::Boolean,
46
+ project: Zavudev::Models::MeRetrieveResponse::Project::OrHash,
47
+ team: Zavudev::Models::MeRetrieveResponse::Team::OrHash
48
+ ).returns(T.attached_class)
49
+ end
50
+ def self.new(api_key:, is_test_mode:, project:, team:)
51
+ end
52
+
53
+ sig do
54
+ override.returns(
55
+ {
56
+ api_key: Zavudev::Models::MeRetrieveResponse::APIKey,
57
+ is_test_mode: T::Boolean,
58
+ project: Zavudev::Models::MeRetrieveResponse::Project,
59
+ team: Zavudev::Models::MeRetrieveResponse::Team
60
+ }
61
+ )
62
+ end
63
+ def to_hash
64
+ end
65
+
66
+ class APIKey < Zavudev::Internal::Type::BaseModel
67
+ OrHash =
68
+ T.type_alias do
69
+ T.any(
70
+ Zavudev::Models::MeRetrieveResponse::APIKey,
71
+ Zavudev::Internal::AnyHash
72
+ )
73
+ end
74
+
75
+ sig { returns(String) }
76
+ attr_accessor :id
77
+
78
+ sig { params(id: String).returns(T.attached_class) }
79
+ def self.new(id:)
80
+ end
81
+
82
+ sig { override.returns({ id: String }) }
83
+ def to_hash
84
+ end
85
+ end
86
+
87
+ class Project < Zavudev::Internal::Type::BaseModel
88
+ OrHash =
89
+ T.type_alias do
90
+ T.any(
91
+ Zavudev::Models::MeRetrieveResponse::Project,
92
+ Zavudev::Internal::AnyHash
93
+ )
94
+ end
95
+
96
+ sig { returns(String) }
97
+ attr_accessor :id
98
+
99
+ sig { returns(T::Boolean) }
100
+ attr_accessor :is_sub_account
101
+
102
+ sig { returns(T.nilable(String)) }
103
+ attr_accessor :name
104
+
105
+ sig do
106
+ params(
107
+ id: String,
108
+ is_sub_account: T::Boolean,
109
+ name: T.nilable(String)
110
+ ).returns(T.attached_class)
111
+ end
112
+ def self.new(id:, is_sub_account:, name:)
113
+ end
114
+
115
+ sig do
116
+ override.returns(
117
+ { id: String, is_sub_account: T::Boolean, name: T.nilable(String) }
118
+ )
119
+ end
120
+ def to_hash
121
+ end
122
+ end
123
+
124
+ class Team < Zavudev::Internal::Type::BaseModel
125
+ OrHash =
126
+ T.type_alias do
127
+ T.any(
128
+ Zavudev::Models::MeRetrieveResponse::Team,
129
+ Zavudev::Internal::AnyHash
130
+ )
131
+ end
132
+
133
+ sig { returns(String) }
134
+ attr_accessor :id
135
+
136
+ sig { returns(T.nilable(String)) }
137
+ attr_accessor :name
138
+
139
+ sig do
140
+ params(id: String, name: T.nilable(String)).returns(T.attached_class)
141
+ end
142
+ def self.new(id:, name:)
143
+ end
144
+
145
+ sig { override.returns({ id: String, name: T.nilable(String) }) }
146
+ def to_hash
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,46 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class MessageShowTypingParams < Zavudev::Internal::Type::BaseModel
6
+ extend Zavudev::Internal::Type::RequestParameters::Converter
7
+ include Zavudev::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Zavudev::MessageShowTypingParams, Zavudev::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :message_id
16
+
17
+ sig { returns(T.nilable(String)) }
18
+ attr_reader :zavu_sender
19
+
20
+ sig { params(zavu_sender: String).void }
21
+ attr_writer :zavu_sender
22
+
23
+ sig do
24
+ params(
25
+ message_id: String,
26
+ zavu_sender: String,
27
+ request_options: Zavudev::RequestOptions::OrHash
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(message_id:, zavu_sender: nil, request_options: {})
31
+ end
32
+
33
+ sig do
34
+ override.returns(
35
+ {
36
+ message_id: String,
37
+ zavu_sender: String,
38
+ request_options: Zavudev::RequestOptions
39
+ }
40
+ )
41
+ end
42
+ def to_hash
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,26 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class MessageShowTypingResponse < Zavudev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Zavudev::Models::MessageShowTypingResponse,
10
+ Zavudev::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(T::Boolean) }
15
+ attr_accessor :success
16
+
17
+ sig { params(success: T::Boolean).returns(T.attached_class) }
18
+ def self.new(success:)
19
+ end
20
+
21
+ sig { override.returns({ success: T::Boolean }) }
22
+ def to_hash
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,50 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ module Senders
6
+ module Agent
7
+ class ExecutionRetrieveParams < Zavudev::Internal::Type::BaseModel
8
+ extend Zavudev::Internal::Type::RequestParameters::Converter
9
+ include Zavudev::Internal::Type::RequestParameters
10
+
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ Zavudev::Senders::Agent::ExecutionRetrieveParams,
15
+ Zavudev::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ sig { returns(String) }
20
+ attr_accessor :sender_id
21
+
22
+ sig { returns(String) }
23
+ attr_accessor :execution_id
24
+
25
+ sig do
26
+ params(
27
+ sender_id: String,
28
+ execution_id: String,
29
+ request_options: Zavudev::RequestOptions::OrHash
30
+ ).returns(T.attached_class)
31
+ end
32
+ def self.new(sender_id:, execution_id:, request_options: {})
33
+ end
34
+
35
+ sig do
36
+ override.returns(
37
+ {
38
+ sender_id: String,
39
+ execution_id: String,
40
+ request_options: Zavudev::RequestOptions
41
+ }
42
+ )
43
+ end
44
+ def to_hash
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,41 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ module Senders
6
+ module Agent
7
+ class ExecutionRetrieveResponse < Zavudev::Internal::Type::BaseModel
8
+ OrHash =
9
+ T.type_alias do
10
+ T.any(
11
+ Zavudev::Models::Senders::Agent::ExecutionRetrieveResponse,
12
+ Zavudev::Internal::AnyHash
13
+ )
14
+ end
15
+
16
+ sig { returns(Zavudev::Senders::AgentExecution) }
17
+ attr_reader :execution
18
+
19
+ sig do
20
+ params(execution: Zavudev::Senders::AgentExecution::OrHash).void
21
+ end
22
+ attr_writer :execution
23
+
24
+ sig do
25
+ params(execution: Zavudev::Senders::AgentExecution::OrHash).returns(
26
+ T.attached_class
27
+ )
28
+ end
29
+ def self.new(execution:)
30
+ end
31
+
32
+ sig do
33
+ override.returns({ execution: Zavudev::Senders::AgentExecution })
34
+ end
35
+ def to_hash
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -35,6 +35,13 @@ module Zavudev
35
35
  #
36
36
  # - `invitation.status_changed`: A partner invitation status changed (pending,
37
37
  # in_progress, completed, cancelled)
38
+ #
39
+ # **Custom domain events:**
40
+ #
41
+ # - `domain.verified`: A custom email domain passed verification (DKIM, and
42
+ # SPF/DMARC/MAIL FROM if enhanced records are enabled)
43
+ # - `domain.failed`: A custom email domain failed verification or is partially
44
+ # verified
38
45
  module WebhookEvent
39
46
  extend Zavudev::Internal::Type::Enum
40
47
 
@@ -61,6 +68,10 @@ module Zavudev
61
68
  T.let(:"template.status_changed", Zavudev::WebhookEvent::TaggedSymbol)
62
69
  INVITATION_STATUS_CHANGED =
63
70
  T.let(:"invitation.status_changed", Zavudev::WebhookEvent::TaggedSymbol)
71
+ DOMAIN_VERIFIED =
72
+ T.let(:"domain.verified", Zavudev::WebhookEvent::TaggedSymbol)
73
+ DOMAIN_FAILED =
74
+ T.let(:"domain.failed", Zavudev::WebhookEvent::TaggedSymbol)
64
75
 
65
76
  sig { override.returns(T::Array[Zavudev::WebhookEvent::TaggedSymbol]) }
66
77
  def self.values
@@ -65,6 +65,8 @@ module Zavudev
65
65
 
66
66
  ContactCreateParams = Zavudev::Models::ContactCreateParams
67
67
 
68
+ ContactDeleteParams = Zavudev::Models::ContactDeleteParams
69
+
68
70
  ContactDismissMergeSuggestionParams =
69
71
  Zavudev::Models::ContactDismissMergeSuggestionParams
70
72
 
@@ -88,6 +90,22 @@ module Zavudev
88
90
 
89
91
  ExportRetrieveParams = Zavudev::Models::ExportRetrieveParams
90
92
 
93
+ FunctionCreateParams = Zavudev::Models::FunctionCreateParams
94
+
95
+ FunctionDeleteParams = Zavudev::Models::FunctionDeleteParams
96
+
97
+ FunctionDeployParams = Zavudev::Models::FunctionDeployParams
98
+
99
+ FunctionGetDeploymentParams = Zavudev::Models::FunctionGetDeploymentParams
100
+
101
+ FunctionRetrieveParams = Zavudev::Models::FunctionRetrieveParams
102
+
103
+ Functions = Zavudev::Models::Functions
104
+
105
+ FunctionTailLogsParams = Zavudev::Models::FunctionTailLogsParams
106
+
107
+ FunctionUpdateParams = Zavudev::Models::FunctionUpdateParams
108
+
91
109
  IntrospectValidatePhoneParams = Zavudev::Models::IntrospectValidatePhoneParams
92
110
 
93
111
  Invitation = Zavudev::Models::Invitation
@@ -102,6 +120,8 @@ module Zavudev
102
120
 
103
121
  LineType = Zavudev::Models::LineType
104
122
 
123
+ MeRetrieveParams = Zavudev::Models::MeRetrieveParams
124
+
105
125
  Message = Zavudev::Models::Message
106
126
 
107
127
  MessageContent = Zavudev::Models::MessageContent
@@ -116,6 +136,8 @@ module Zavudev
116
136
 
117
137
  MessageSendParams = Zavudev::Models::MessageSendParams
118
138
 
139
+ MessageShowTypingParams = Zavudev::Models::MessageShowTypingParams
140
+
119
141
  MessageStatus = Zavudev::Models::MessageStatus
120
142
 
121
143
  MessageType = Zavudev::Models::MessageType
@@ -67,6 +67,21 @@ module Zavudev
67
67
  def list(cursor: nil, limit: nil, phone_number: nil, request_options: {})
68
68
  end
69
69
 
70
+ # Permanently delete a contact and its communication channels. Implements
71
+ # right-to-erasure obligations under GDPR Art. 17, Ley 19.628 (Chile) Art. 12,
72
+ # CCPA § 1798.105, and LGPD Art. 18.VI. The contact, its channels, and any
73
+ # associated agent flow sessions and conversation threads are removed. Past
74
+ # message records and broadcast delivery logs are retained for billing/audit but
75
+ # no longer reference the deleted contact.
76
+ sig do
77
+ params(
78
+ contact_id: String,
79
+ request_options: Zavudev::RequestOptions::OrHash
80
+ ).void
81
+ end
82
+ def delete(contact_id, request_options: {})
83
+ end
84
+
70
85
  # Dismiss the merge suggestion for a contact.
71
86
  sig do
72
87
  params(
@@ -0,0 +1,69 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Resources
5
+ class Functions
6
+ class Secrets
7
+ # Lists every secret key set on the function. Plaintext is NEVER returned — only
8
+ # the last 4 characters of each value, for visual confirmation.
9
+ sig do
10
+ params(
11
+ function_id: String,
12
+ request_options: Zavudev::RequestOptions::OrHash
13
+ ).returns(Zavudev::Models::Functions::SecretListResponse)
14
+ end
15
+ def list(
16
+ # Zavu Function ID.
17
+ function_id,
18
+ request_options: {}
19
+ )
20
+ end
21
+
22
+ # Create or update a secret on a function. Marks the function out-of-sync; the
23
+ # next `POST /deploy` re-publishes the Lambda with the new env. Keys must match
24
+ # `[A-Z_][A-Z0-9_]*` (uppercase env-var style) and cannot start with reserved
25
+ # prefixes (AWS*, LAMBDA*, etc).
26
+ sig do
27
+ params(
28
+ key: String,
29
+ function_id: String,
30
+ value: String,
31
+ request_options: Zavudev::RequestOptions::OrHash
32
+ ).returns(T.anything)
33
+ end
34
+ def set(
35
+ # Path param
36
+ key,
37
+ # Path param: Zavu Function ID.
38
+ function_id:,
39
+ # Body param
40
+ value:,
41
+ request_options: {}
42
+ )
43
+ end
44
+
45
+ # Remove a secret from a function. Doesn't take effect on the running Lambda until
46
+ # the next deploy.
47
+ sig do
48
+ params(
49
+ key: String,
50
+ function_id: String,
51
+ request_options: Zavudev::RequestOptions::OrHash
52
+ ).void
53
+ end
54
+ def unset(
55
+ key,
56
+ # Zavu Function ID.
57
+ function_id:,
58
+ request_options: {}
59
+ )
60
+ end
61
+
62
+ # @api private
63
+ sig { params(client: Zavudev::Client).returns(T.attached_class) }
64
+ def self.new(client:)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,171 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Resources
5
+ class Functions
6
+ sig { returns(Zavudev::Resources::Functions::Secrets) }
7
+ attr_reader :secrets
8
+
9
+ # Create a new Zavu Function. The function starts in `draft` status. A dedicated
10
+ # API key is auto-provisioned and injected as the `ZAVU_API_KEY` secret so the
11
+ # function can call back into the Zavu API without manual setup.
12
+ #
13
+ # Provide `sourceCode` to seed the draft. Call
14
+ # `POST /v1/functions/{functionId}/deploy` afterwards to publish.
15
+ sig do
16
+ params(
17
+ name: String,
18
+ slug: String,
19
+ dependencies: T::Hash[Symbol, String],
20
+ description: String,
21
+ http_enabled: T::Boolean,
22
+ memory_mb: Zavudev::FunctionCreateParams::MemoryMB::OrInteger,
23
+ runtime: Zavudev::FunctionCreateParams::Runtime::OrSymbol,
24
+ source_code: String,
25
+ timeout_sec: Integer,
26
+ request_options: Zavudev::RequestOptions::OrHash
27
+ ).returns(Zavudev::Models::FunctionCreateResponse)
28
+ end
29
+ def create(
30
+ name:,
31
+ # URL-safe identifier (lowercase, digits, hyphens). Must be unique per project.
32
+ slug:,
33
+ # npm dependencies. Keys are package names, values are semver ranges.
34
+ dependencies: nil,
35
+ description: nil,
36
+ # Whether to expose a public HTTPS URL for this function.
37
+ http_enabled: nil,
38
+ memory_mb: nil,
39
+ # Runtime the function is deployed on.
40
+ runtime: nil,
41
+ # TypeScript source code for the function entry point (max ~900KB).
42
+ source_code: nil,
43
+ timeout_sec: nil,
44
+ request_options: {}
45
+ )
46
+ end
47
+
48
+ # Get function
49
+ sig do
50
+ params(
51
+ function_id: String,
52
+ request_options: Zavudev::RequestOptions::OrHash
53
+ ).returns(Zavudev::Models::FunctionRetrieveResponse)
54
+ end
55
+ def retrieve(
56
+ # Zavu Function ID.
57
+ function_id,
58
+ request_options: {}
59
+ )
60
+ end
61
+
62
+ # Update the draft source code and/or dependency map without triggering a build.
63
+ # Visible in the dashboard immediately, but the live (deployed) function does not
64
+ # change until `POST /v1/functions/{functionId}/deploy` runs.
65
+ sig do
66
+ params(
67
+ function_id: String,
68
+ dependencies: T::Hash[Symbol, String],
69
+ source_code: String,
70
+ request_options: Zavudev::RequestOptions::OrHash
71
+ ).returns(Zavudev::Models::FunctionUpdateResponse)
72
+ end
73
+ def update(
74
+ # Zavu Function ID.
75
+ function_id,
76
+ # New dependency map (replaces existing dependencies).
77
+ dependencies: nil,
78
+ # New source code to publish (replaces the draft).
79
+ source_code: nil,
80
+ request_options: {}
81
+ )
82
+ end
83
+
84
+ # Permanently delete a function and cascade: triggers, secrets, deployment
85
+ # history, managed agents+tools, and revoke the auto-provisioned API key. The AWS
86
+ # Lambda + log group are torn down asynchronously.
87
+ sig do
88
+ params(
89
+ function_id: String,
90
+ request_options: Zavudev::RequestOptions::OrHash
91
+ ).returns(Zavudev::Models::FunctionDeleteResponse)
92
+ end
93
+ def delete(
94
+ # Zavu Function ID.
95
+ function_id,
96
+ request_options: {}
97
+ )
98
+ end
99
+
100
+ # Publish the function. If `sourceCode` or `dependencies` are provided in the
101
+ # body, they replace the current draft before deployment. Returns immediately with
102
+ # a deployment ID — poll `GET /v1/functions/deployments/{deploymentId}` until
103
+ # status is `active` or `failed`.
104
+ sig do
105
+ params(
106
+ function_id: String,
107
+ dependencies: T::Hash[Symbol, String],
108
+ source_code: String,
109
+ request_options: Zavudev::RequestOptions::OrHash
110
+ ).returns(Zavudev::Models::FunctionDeployResponse)
111
+ end
112
+ def deploy(
113
+ # Zavu Function ID.
114
+ function_id,
115
+ # New dependency map (replaces existing dependencies).
116
+ dependencies: nil,
117
+ # New source code to publish (replaces the draft).
118
+ source_code: nil,
119
+ request_options: {}
120
+ )
121
+ end
122
+
123
+ # Fetch a deployment to poll its status during a deploy.
124
+ sig do
125
+ params(
126
+ deployment_id: String,
127
+ request_options: Zavudev::RequestOptions::OrHash
128
+ ).returns(Zavudev::Models::FunctionGetDeploymentResponse)
129
+ end
130
+ def get_deployment(
131
+ # Function deployment ID.
132
+ deployment_id,
133
+ request_options: {}
134
+ )
135
+ end
136
+
137
+ # Fetch invocation logs for a function. Logs are paginated via `nextToken`. Pass
138
+ # `startTime` / `endTime` (Unix epoch milliseconds) to bound the window, or
139
+ # `filterPattern` to filter messages.
140
+ sig do
141
+ params(
142
+ function_id: String,
143
+ end_time: Integer,
144
+ filter_pattern: String,
145
+ limit: Integer,
146
+ next_token: String,
147
+ start_time: Integer,
148
+ request_options: Zavudev::RequestOptions::OrHash
149
+ ).returns(Zavudev::Models::FunctionTailLogsResponse)
150
+ end
151
+ def tail_logs(
152
+ # Zavu Function ID.
153
+ function_id,
154
+ # End of the log window in Unix epoch milliseconds.
155
+ end_time: nil,
156
+ filter_pattern: nil,
157
+ limit: nil,
158
+ next_token: nil,
159
+ # Start of the log window in Unix epoch milliseconds.
160
+ start_time: nil,
161
+ request_options: {}
162
+ )
163
+ end
164
+
165
+ # @api private
166
+ sig { params(client: Zavudev::Client).returns(T.attached_class) }
167
+ def self.new(client:)
168
+ end
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,22 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Resources
5
+ class Me
6
+ # Returns the project, team, and API key metadata bound to the current Bearer
7
+ # token. Used by CLIs and SDKs to confirm which project they will operate on.
8
+ sig do
9
+ params(request_options: Zavudev::RequestOptions::OrHash).returns(
10
+ Zavudev::Models::MeRetrieveResponse
11
+ )
12
+ end
13
+ def retrieve(request_options: {})
14
+ end
15
+
16
+ # @api private
17
+ sig { params(client: Zavudev::Client).returns(T.attached_class) }
18
+ def self.new(client:)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -135,6 +135,27 @@ module Zavudev
135
135
  )
136
136
  end
137
137
 
138
+ # Mark an inbound WhatsApp message as read and display a typing indicator to the
139
+ # user while you prepare a response. The indicator is automatically dismissed when
140
+ # you send a reply, or after 25 seconds — whichever comes first. Only valid for
141
+ # inbound WhatsApp messages. Use this when a reply will take more than a couple of
142
+ # seconds (LLM agent, tool call, lookup) to improve the recipient's experience.
143
+ sig do
144
+ params(
145
+ message_id: String,
146
+ zavu_sender: String,
147
+ request_options: Zavudev::RequestOptions::OrHash
148
+ ).returns(Zavudev::Models::MessageShowTypingResponse)
149
+ end
150
+ def show_typing(
151
+ message_id,
152
+ # Optional sender profile ID. If omitted, the project's default sender will be
153
+ # used.
154
+ zavu_sender: nil,
155
+ request_options: {}
156
+ )
157
+ end
158
+
138
159
  # @api private
139
160
  sig { params(client: Zavudev::Client).returns(T.attached_class) }
140
161
  def self.new(client:)