ark-email 0.16.0 → 0.18.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/README.md +1 -1
  4. data/lib/ark_email/client.rb +4 -0
  5. data/lib/ark_email/internal/transport/pooled_net_requester.rb +1 -1
  6. data/lib/ark_email/models/email_retrieve_deliveries_response.rb +80 -5
  7. data/lib/ark_email/models/email_retrieve_response.rb +79 -5
  8. data/lib/ark_email/models/tenant.rb +95 -0
  9. data/lib/ark_email/models/tenant_create_params.rb +57 -0
  10. data/lib/ark_email/models/tenant_create_response.rb +28 -0
  11. data/lib/ark_email/models/tenant_delete_params.rb +14 -0
  12. data/lib/ark_email/models/tenant_delete_response.rb +39 -0
  13. data/lib/ark_email/models/tenant_list_params.rb +50 -0
  14. data/lib/ark_email/models/tenant_retrieve_params.rb +14 -0
  15. data/lib/ark_email/models/tenant_retrieve_response.rb +28 -0
  16. data/lib/ark_email/models/tenant_update_params.rb +77 -0
  17. data/lib/ark_email/models/tenant_update_response.rb +28 -0
  18. data/lib/ark_email/models.rb +12 -0
  19. data/lib/ark_email/resources/tenants.rb +144 -0
  20. data/lib/ark_email/version.rb +1 -1
  21. data/lib/ark_email.rb +11 -0
  22. data/rbi/ark_email/client.rbi +3 -0
  23. data/rbi/ark_email/models/email_retrieve_deliveries_response.rbi +166 -7
  24. data/rbi/ark_email/models/email_retrieve_response.rbi +166 -7
  25. data/rbi/ark_email/models/tenant.rbi +121 -0
  26. data/rbi/ark_email/models/tenant_create_params.rbi +100 -0
  27. data/rbi/ark_email/models/tenant_create_response.rbi +52 -0
  28. data/rbi/ark_email/models/tenant_delete_params.rbi +27 -0
  29. data/rbi/ark_email/models/tenant_delete_response.rbi +75 -0
  30. data/rbi/ark_email/models/tenant_list_params.rbi +92 -0
  31. data/rbi/ark_email/models/tenant_retrieve_params.rbi +27 -0
  32. data/rbi/ark_email/models/tenant_retrieve_response.rbi +52 -0
  33. data/rbi/ark_email/models/tenant_update_params.rbi +140 -0
  34. data/rbi/ark_email/models/tenant_update_response.rbi +52 -0
  35. data/rbi/ark_email/models.rbi +12 -0
  36. data/rbi/ark_email/resources/tenants.rbi +131 -0
  37. data/sig/ark_email/client.rbs +2 -0
  38. data/sig/ark_email/models/email_retrieve_deliveries_response.rbs +58 -3
  39. data/sig/ark_email/models/email_retrieve_response.rbs +58 -3
  40. data/sig/ark_email/models/tenant.rbs +65 -0
  41. data/sig/ark_email/models/tenant_create_params.rbs +39 -0
  42. data/sig/ark_email/models/tenant_create_response.rbs +26 -0
  43. data/sig/ark_email/models/tenant_delete_params.rbs +15 -0
  44. data/sig/ark_email/models/tenant_delete_response.rbs +40 -0
  45. data/sig/ark_email/models/tenant_list_params.rbs +56 -0
  46. data/sig/ark_email/models/tenant_retrieve_params.rbs +15 -0
  47. data/sig/ark_email/models/tenant_retrieve_response.rbs +26 -0
  48. data/sig/ark_email/models/tenant_update_params.rbs +62 -0
  49. data/sig/ark_email/models/tenant_update_response.rbs +26 -0
  50. data/sig/ark_email/models.rbs +12 -0
  51. data/sig/ark_email/resources/tenants.rbs +38 -0
  52. metadata +35 -2
@@ -774,6 +774,25 @@ module ArkEmail
774
774
  sig { returns(Time) }
775
775
  attr_accessor :timestamp_iso
776
776
 
777
+ # Bounce classification category (present for failed deliveries). Helps understand
778
+ # why delivery failed for analytics and automated handling.
779
+ sig do
780
+ returns(
781
+ T.nilable(
782
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
783
+ )
784
+ )
785
+ end
786
+ attr_accessor :classification
787
+
788
+ # Numeric bounce classification code for programmatic handling. Codes:
789
+ # 10=invalid_recipient, 11=no_mailbox, 12=not_accepting_mail, 20=mailbox_full,
790
+ # 21=message_too_large, 30=spam_block, 31=policy_violation, 32=tls_required,
791
+ # 40=connection_error, 41=dns_error, 42=temporarily_unavailable,
792
+ # 50=protocol_error, 99=unclassified
793
+ sig { returns(T.nilable(Integer)) }
794
+ attr_accessor :classification_code
795
+
777
796
  # SMTP response code
778
797
  sig { returns(T.nilable(Integer)) }
779
798
  attr_reader :code
@@ -781,20 +800,29 @@ module ArkEmail
781
800
  sig { params(code: Integer).void }
782
801
  attr_writer :code
783
802
 
784
- # Status details
803
+ # Human-readable delivery summary. Format varies by status:
804
+ #
805
+ # - **sent**: `Message for {recipient} accepted by {ip}:{port} ({hostname})`
806
+ # - **softfail/hardfail**:
807
+ # `{code} {classification}: Delivery to {recipient} failed at {ip}:{port} ({hostname})`
785
808
  sig { returns(T.nilable(String)) }
786
809
  attr_reader :details
787
810
 
788
811
  sig { params(details: String).void }
789
812
  attr_writer :details
790
813
 
791
- # SMTP server response from the receiving mail server
814
+ # Raw SMTP response from the receiving mail server
792
815
  sig { returns(T.nilable(String)) }
793
816
  attr_reader :output
794
817
 
795
818
  sig { params(output: String).void }
796
819
  attr_writer :output
797
820
 
821
+ # Hostname of the remote mail server that processed the delivery. Present for all
822
+ # delivery attempts (successful and failed).
823
+ sig { returns(T.nilable(String)) }
824
+ attr_accessor :remote_host
825
+
798
826
  # Whether TLS was used
799
827
  sig { returns(T.nilable(T::Boolean)) }
800
828
  attr_reader :sent_with_ssl
@@ -802,16 +830,29 @@ module ArkEmail
802
830
  sig { params(sent_with_ssl: T::Boolean).void }
803
831
  attr_writer :sent_with_ssl
804
832
 
833
+ # RFC 3463 enhanced status code from SMTP response (e.g., "5.1.1", "4.2.2"). First
834
+ # digit: 2=success, 4=temporary, 5=permanent. Second digit: category (1=address,
835
+ # 2=mailbox, 7=security, etc.).
836
+ sig { returns(T.nilable(String)) }
837
+ attr_accessor :smtp_enhanced_code
838
+
805
839
  sig do
806
840
  params(
807
841
  id: String,
808
842
  status: String,
809
843
  timestamp: Float,
810
844
  timestamp_iso: Time,
845
+ classification:
846
+ T.nilable(
847
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::OrSymbol
848
+ ),
849
+ classification_code: T.nilable(Integer),
811
850
  code: Integer,
812
851
  details: String,
813
852
  output: String,
814
- sent_with_ssl: T::Boolean
853
+ remote_host: T.nilable(String),
854
+ sent_with_ssl: T::Boolean,
855
+ smtp_enhanced_code: T.nilable(String)
815
856
  ).returns(T.attached_class)
816
857
  end
817
858
  def self.new(
@@ -823,14 +864,34 @@ module ArkEmail
823
864
  timestamp:,
824
865
  # ISO 8601 timestamp
825
866
  timestamp_iso:,
867
+ # Bounce classification category (present for failed deliveries). Helps understand
868
+ # why delivery failed for analytics and automated handling.
869
+ classification: nil,
870
+ # Numeric bounce classification code for programmatic handling. Codes:
871
+ # 10=invalid_recipient, 11=no_mailbox, 12=not_accepting_mail, 20=mailbox_full,
872
+ # 21=message_too_large, 30=spam_block, 31=policy_violation, 32=tls_required,
873
+ # 40=connection_error, 41=dns_error, 42=temporarily_unavailable,
874
+ # 50=protocol_error, 99=unclassified
875
+ classification_code: nil,
826
876
  # SMTP response code
827
877
  code: nil,
828
- # Status details
878
+ # Human-readable delivery summary. Format varies by status:
879
+ #
880
+ # - **sent**: `Message for {recipient} accepted by {ip}:{port} ({hostname})`
881
+ # - **softfail/hardfail**:
882
+ # `{code} {classification}: Delivery to {recipient} failed at {ip}:{port} ({hostname})`
829
883
  details: nil,
830
- # SMTP server response from the receiving mail server
884
+ # Raw SMTP response from the receiving mail server
831
885
  output: nil,
886
+ # Hostname of the remote mail server that processed the delivery. Present for all
887
+ # delivery attempts (successful and failed).
888
+ remote_host: nil,
832
889
  # Whether TLS was used
833
- sent_with_ssl: nil
890
+ sent_with_ssl: nil,
891
+ # RFC 3463 enhanced status code from SMTP response (e.g., "5.1.1", "4.2.2"). First
892
+ # digit: 2=success, 4=temporary, 5=permanent. Second digit: category (1=address,
893
+ # 2=mailbox, 7=security, etc.).
894
+ smtp_enhanced_code: nil
834
895
  )
835
896
  end
836
897
 
@@ -841,15 +902,113 @@ module ArkEmail
841
902
  status: String,
842
903
  timestamp: Float,
843
904
  timestamp_iso: Time,
905
+ classification:
906
+ T.nilable(
907
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
908
+ ),
909
+ classification_code: T.nilable(Integer),
844
910
  code: Integer,
845
911
  details: String,
846
912
  output: String,
847
- sent_with_ssl: T::Boolean
913
+ remote_host: T.nilable(String),
914
+ sent_with_ssl: T::Boolean,
915
+ smtp_enhanced_code: T.nilable(String)
848
916
  }
849
917
  )
850
918
  end
851
919
  def to_hash
852
920
  end
921
+
922
+ # Bounce classification category (present for failed deliveries). Helps understand
923
+ # why delivery failed for analytics and automated handling.
924
+ module Classification
925
+ extend ArkEmail::Internal::Type::Enum
926
+
927
+ TaggedSymbol =
928
+ T.type_alias do
929
+ T.all(
930
+ Symbol,
931
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification
932
+ )
933
+ end
934
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
935
+
936
+ INVALID_RECIPIENT =
937
+ T.let(
938
+ :invalid_recipient,
939
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
940
+ )
941
+ MAILBOX_FULL =
942
+ T.let(
943
+ :mailbox_full,
944
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
945
+ )
946
+ MESSAGE_TOO_LARGE =
947
+ T.let(
948
+ :message_too_large,
949
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
950
+ )
951
+ SPAM_BLOCK =
952
+ T.let(
953
+ :spam_block,
954
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
955
+ )
956
+ POLICY_VIOLATION =
957
+ T.let(
958
+ :policy_violation,
959
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
960
+ )
961
+ NO_MAILBOX =
962
+ T.let(
963
+ :no_mailbox,
964
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
965
+ )
966
+ NOT_ACCEPTING_MAIL =
967
+ T.let(
968
+ :not_accepting_mail,
969
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
970
+ )
971
+ TEMPORARILY_UNAVAILABLE =
972
+ T.let(
973
+ :temporarily_unavailable,
974
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
975
+ )
976
+ PROTOCOL_ERROR =
977
+ T.let(
978
+ :protocol_error,
979
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
980
+ )
981
+ TLS_REQUIRED =
982
+ T.let(
983
+ :tls_required,
984
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
985
+ )
986
+ CONNECTION_ERROR =
987
+ T.let(
988
+ :connection_error,
989
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
990
+ )
991
+ DNS_ERROR =
992
+ T.let(
993
+ :dns_error,
994
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
995
+ )
996
+ UNCLASSIFIED =
997
+ T.let(
998
+ :unclassified,
999
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
1000
+ )
1001
+
1002
+ sig do
1003
+ override.returns(
1004
+ T::Array[
1005
+ ArkEmail::Models::EmailRetrieveResponse::Data::Delivery::Classification::TaggedSymbol
1006
+ ]
1007
+ )
1008
+ end
1009
+ def self.values
1010
+ end
1011
+ end
853
1012
  end
854
1013
  end
855
1014
  end
@@ -0,0 +1,121 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Models
5
+ class Tenant < ArkEmail::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(ArkEmail::Tenant, ArkEmail::Internal::AnyHash) }
8
+
9
+ # Unique identifier for the tenant
10
+ sig { returns(String) }
11
+ attr_accessor :id
12
+
13
+ # When the tenant was created
14
+ sig { returns(Time) }
15
+ attr_accessor :created_at
16
+
17
+ # Custom key-value pairs for storing additional data
18
+ sig do
19
+ returns(
20
+ T::Hash[Symbol, T.nilable(ArkEmail::Tenant::Metadata::Variants)]
21
+ )
22
+ end
23
+ attr_accessor :metadata
24
+
25
+ # Display name for the tenant
26
+ sig { returns(String) }
27
+ attr_accessor :name
28
+
29
+ # Current status of the tenant:
30
+ #
31
+ # - `active` - Normal operation
32
+ # - `suspended` - Temporarily disabled
33
+ # - `archived` - Soft-deleted
34
+ sig { returns(ArkEmail::Tenant::Status::TaggedSymbol) }
35
+ attr_accessor :status
36
+
37
+ # When the tenant was last updated
38
+ sig { returns(Time) }
39
+ attr_accessor :updated_at
40
+
41
+ sig do
42
+ params(
43
+ id: String,
44
+ created_at: Time,
45
+ metadata:
46
+ T::Hash[Symbol, T.nilable(ArkEmail::Tenant::Metadata::Variants)],
47
+ name: String,
48
+ status: ArkEmail::Tenant::Status::OrSymbol,
49
+ updated_at: Time
50
+ ).returns(T.attached_class)
51
+ end
52
+ def self.new(
53
+ # Unique identifier for the tenant
54
+ id:,
55
+ # When the tenant was created
56
+ created_at:,
57
+ # Custom key-value pairs for storing additional data
58
+ metadata:,
59
+ # Display name for the tenant
60
+ name:,
61
+ # Current status of the tenant:
62
+ #
63
+ # - `active` - Normal operation
64
+ # - `suspended` - Temporarily disabled
65
+ # - `archived` - Soft-deleted
66
+ status:,
67
+ # When the tenant was last updated
68
+ updated_at:
69
+ )
70
+ end
71
+
72
+ sig do
73
+ override.returns(
74
+ {
75
+ id: String,
76
+ created_at: Time,
77
+ metadata:
78
+ T::Hash[Symbol, T.nilable(ArkEmail::Tenant::Metadata::Variants)],
79
+ name: String,
80
+ status: ArkEmail::Tenant::Status::TaggedSymbol,
81
+ updated_at: Time
82
+ }
83
+ )
84
+ end
85
+ def to_hash
86
+ end
87
+
88
+ module Metadata
89
+ extend ArkEmail::Internal::Type::Union
90
+
91
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
92
+
93
+ sig { override.returns(T::Array[ArkEmail::Tenant::Metadata::Variants]) }
94
+ def self.variants
95
+ end
96
+ end
97
+
98
+ # Current status of the tenant:
99
+ #
100
+ # - `active` - Normal operation
101
+ # - `suspended` - Temporarily disabled
102
+ # - `archived` - Soft-deleted
103
+ module Status
104
+ extend ArkEmail::Internal::Type::Enum
105
+
106
+ TaggedSymbol = T.type_alias { T.all(Symbol, ArkEmail::Tenant::Status) }
107
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
108
+
109
+ ACTIVE = T.let(:active, ArkEmail::Tenant::Status::TaggedSymbol)
110
+ SUSPENDED = T.let(:suspended, ArkEmail::Tenant::Status::TaggedSymbol)
111
+ ARCHIVED = T.let(:archived, ArkEmail::Tenant::Status::TaggedSymbol)
112
+
113
+ sig do
114
+ override.returns(T::Array[ArkEmail::Tenant::Status::TaggedSymbol])
115
+ end
116
+ def self.values
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,100 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Models
5
+ class TenantCreateParams < ArkEmail::Internal::Type::BaseModel
6
+ extend ArkEmail::Internal::Type::RequestParameters::Converter
7
+ include ArkEmail::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(ArkEmail::TenantCreateParams, ArkEmail::Internal::AnyHash)
12
+ end
13
+
14
+ # Display name for the tenant (e.g., your customer's company name)
15
+ sig { returns(String) }
16
+ attr_accessor :name
17
+
18
+ # Custom key-value pairs. Useful for storing references to your internal systems.
19
+ #
20
+ # **Limits:**
21
+ #
22
+ # - Max 50 keys
23
+ # - Key names max 40 characters
24
+ # - String values max 500 characters
25
+ # - Total size max 8KB
26
+ sig do
27
+ returns(
28
+ T.nilable(
29
+ T::Hash[
30
+ Symbol,
31
+ T.nilable(ArkEmail::TenantCreateParams::Metadata::Variants)
32
+ ]
33
+ )
34
+ )
35
+ end
36
+ attr_accessor :metadata
37
+
38
+ sig do
39
+ params(
40
+ name: String,
41
+ metadata:
42
+ T.nilable(
43
+ T::Hash[
44
+ Symbol,
45
+ T.nilable(ArkEmail::TenantCreateParams::Metadata::Variants)
46
+ ]
47
+ ),
48
+ request_options: ArkEmail::RequestOptions::OrHash
49
+ ).returns(T.attached_class)
50
+ end
51
+ def self.new(
52
+ # Display name for the tenant (e.g., your customer's company name)
53
+ name:,
54
+ # Custom key-value pairs. Useful for storing references to your internal systems.
55
+ #
56
+ # **Limits:**
57
+ #
58
+ # - Max 50 keys
59
+ # - Key names max 40 characters
60
+ # - String values max 500 characters
61
+ # - Total size max 8KB
62
+ metadata: nil,
63
+ request_options: {}
64
+ )
65
+ end
66
+
67
+ sig do
68
+ override.returns(
69
+ {
70
+ name: String,
71
+ metadata:
72
+ T.nilable(
73
+ T::Hash[
74
+ Symbol,
75
+ T.nilable(ArkEmail::TenantCreateParams::Metadata::Variants)
76
+ ]
77
+ ),
78
+ request_options: ArkEmail::RequestOptions
79
+ }
80
+ )
81
+ end
82
+ def to_hash
83
+ end
84
+
85
+ module Metadata
86
+ extend ArkEmail::Internal::Type::Union
87
+
88
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
89
+
90
+ sig do
91
+ override.returns(
92
+ T::Array[ArkEmail::TenantCreateParams::Metadata::Variants]
93
+ )
94
+ end
95
+ def self.variants
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,52 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Models
5
+ class TenantCreateResponse < ArkEmail::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ ArkEmail::Models::TenantCreateResponse,
10
+ ArkEmail::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(ArkEmail::Tenant) }
15
+ attr_reader :data
16
+
17
+ sig { params(data: ArkEmail::Tenant::OrHash).void }
18
+ attr_writer :data
19
+
20
+ sig { returns(ArkEmail::APIMeta) }
21
+ attr_reader :meta
22
+
23
+ sig { params(meta: ArkEmail::APIMeta::OrHash).void }
24
+ attr_writer :meta
25
+
26
+ sig { returns(T::Boolean) }
27
+ attr_accessor :success
28
+
29
+ sig do
30
+ params(
31
+ data: ArkEmail::Tenant::OrHash,
32
+ meta: ArkEmail::APIMeta::OrHash,
33
+ success: T::Boolean
34
+ ).returns(T.attached_class)
35
+ end
36
+ def self.new(data:, meta:, success: true)
37
+ end
38
+
39
+ sig do
40
+ override.returns(
41
+ {
42
+ data: ArkEmail::Tenant,
43
+ meta: ArkEmail::APIMeta,
44
+ success: T::Boolean
45
+ }
46
+ )
47
+ end
48
+ def to_hash
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Models
5
+ class TenantDeleteParams < ArkEmail::Internal::Type::BaseModel
6
+ extend ArkEmail::Internal::Type::RequestParameters::Converter
7
+ include ArkEmail::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(ArkEmail::TenantDeleteParams, ArkEmail::Internal::AnyHash)
12
+ end
13
+
14
+ sig do
15
+ params(request_options: ArkEmail::RequestOptions::OrHash).returns(
16
+ T.attached_class
17
+ )
18
+ end
19
+ def self.new(request_options: {})
20
+ end
21
+
22
+ sig { override.returns({ request_options: ArkEmail::RequestOptions }) }
23
+ def to_hash
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,75 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Models
5
+ class TenantDeleteResponse < ArkEmail::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ ArkEmail::Models::TenantDeleteResponse,
10
+ ArkEmail::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(ArkEmail::Models::TenantDeleteResponse::Data) }
15
+ attr_reader :data
16
+
17
+ sig do
18
+ params(data: ArkEmail::Models::TenantDeleteResponse::Data::OrHash).void
19
+ end
20
+ attr_writer :data
21
+
22
+ sig { returns(ArkEmail::APIMeta) }
23
+ attr_reader :meta
24
+
25
+ sig { params(meta: ArkEmail::APIMeta::OrHash).void }
26
+ attr_writer :meta
27
+
28
+ sig { returns(T::Boolean) }
29
+ attr_accessor :success
30
+
31
+ sig do
32
+ params(
33
+ data: ArkEmail::Models::TenantDeleteResponse::Data::OrHash,
34
+ meta: ArkEmail::APIMeta::OrHash,
35
+ success: T::Boolean
36
+ ).returns(T.attached_class)
37
+ end
38
+ def self.new(data:, meta:, success: true)
39
+ end
40
+
41
+ sig do
42
+ override.returns(
43
+ {
44
+ data: ArkEmail::Models::TenantDeleteResponse::Data,
45
+ meta: ArkEmail::APIMeta,
46
+ success: T::Boolean
47
+ }
48
+ )
49
+ end
50
+ def to_hash
51
+ end
52
+
53
+ class Data < ArkEmail::Internal::Type::BaseModel
54
+ OrHash =
55
+ T.type_alias do
56
+ T.any(
57
+ ArkEmail::Models::TenantDeleteResponse::Data,
58
+ ArkEmail::Internal::AnyHash
59
+ )
60
+ end
61
+
62
+ sig { returns(T::Boolean) }
63
+ attr_accessor :deleted
64
+
65
+ sig { params(deleted: T::Boolean).returns(T.attached_class) }
66
+ def self.new(deleted: true)
67
+ end
68
+
69
+ sig { override.returns({ deleted: T::Boolean }) }
70
+ def to_hash
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,92 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Models
5
+ class TenantListParams < ArkEmail::Internal::Type::BaseModel
6
+ extend ArkEmail::Internal::Type::RequestParameters::Converter
7
+ include ArkEmail::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(ArkEmail::TenantListParams, ArkEmail::Internal::AnyHash)
12
+ end
13
+
14
+ # Page number (1-indexed)
15
+ sig { returns(T.nilable(Integer)) }
16
+ attr_reader :page
17
+
18
+ sig { params(page: Integer).void }
19
+ attr_writer :page
20
+
21
+ # Number of items per page (max 100)
22
+ sig { returns(T.nilable(Integer)) }
23
+ attr_reader :per_page
24
+
25
+ sig { params(per_page: Integer).void }
26
+ attr_writer :per_page
27
+
28
+ # Filter by tenant status
29
+ sig { returns(T.nilable(ArkEmail::TenantListParams::Status::OrSymbol)) }
30
+ attr_reader :status
31
+
32
+ sig { params(status: ArkEmail::TenantListParams::Status::OrSymbol).void }
33
+ attr_writer :status
34
+
35
+ sig do
36
+ params(
37
+ page: Integer,
38
+ per_page: Integer,
39
+ status: ArkEmail::TenantListParams::Status::OrSymbol,
40
+ request_options: ArkEmail::RequestOptions::OrHash
41
+ ).returns(T.attached_class)
42
+ end
43
+ def self.new(
44
+ # Page number (1-indexed)
45
+ page: nil,
46
+ # Number of items per page (max 100)
47
+ per_page: nil,
48
+ # Filter by tenant status
49
+ status: nil,
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ sig do
55
+ override.returns(
56
+ {
57
+ page: Integer,
58
+ per_page: Integer,
59
+ status: ArkEmail::TenantListParams::Status::OrSymbol,
60
+ request_options: ArkEmail::RequestOptions
61
+ }
62
+ )
63
+ end
64
+ def to_hash
65
+ end
66
+
67
+ # Filter by tenant status
68
+ module Status
69
+ extend ArkEmail::Internal::Type::Enum
70
+
71
+ TaggedSymbol =
72
+ T.type_alias { T.all(Symbol, ArkEmail::TenantListParams::Status) }
73
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
74
+
75
+ ACTIVE =
76
+ T.let(:active, ArkEmail::TenantListParams::Status::TaggedSymbol)
77
+ SUSPENDED =
78
+ T.let(:suspended, ArkEmail::TenantListParams::Status::TaggedSymbol)
79
+ ARCHIVED =
80
+ T.let(:archived, ArkEmail::TenantListParams::Status::TaggedSymbol)
81
+
82
+ sig do
83
+ override.returns(
84
+ T::Array[ArkEmail::TenantListParams::Status::TaggedSymbol]
85
+ )
86
+ end
87
+ def self.values
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end