From e1b45361e3a4e4cfd9de4648def64e2622baea81 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 18:32:58 +0000 Subject: [PATCH 1/8] feat(api): add Credentials endpoint --- .stats.yml | 8 +- lib/ark_email.rb | 11 + lib/ark_email/models.rb | 2 + lib/ark_email/models/domain_create_params.rb | 10 +- .../models/domain_create_response.rb | 18 +- lib/ark_email/models/domain_list_params.rb | 10 +- lib/ark_email/models/domain_list_response.rb | 18 +- .../models/domain_retrieve_response.rb | 18 +- .../models/domain_verify_response.rb | 18 +- .../tenants/credential_create_params.rb | 53 ++++ .../tenants/credential_create_response.rb | 131 ++++++++++ .../tenants/credential_delete_params.rb | 22 ++ .../tenants/credential_delete_response.rb | 41 ++++ .../models/tenants/credential_list_params.rb | 51 ++++ .../tenants/credential_list_response.rb | 90 +++++++ .../tenants/credential_retrieve_params.rb | 31 +++ .../tenants/credential_retrieve_response.rb | 133 ++++++++++ .../tenants/credential_update_params.rb | 43 ++++ .../tenants/credential_update_response.rb | 133 ++++++++++ lib/ark_email/resources/domains.rb | 20 +- lib/ark_email/resources/tenants.rb | 4 + .../resources/tenants/credentials.rb | 194 +++++++++++++++ rbi/ark_email/models.rbi | 2 + rbi/ark_email/models/domain_create_params.rbi | 13 +- .../models/domain_create_response.rbi | 22 ++ rbi/ark_email/models/domain_list_params.rbi | 26 +- rbi/ark_email/models/domain_list_response.rbi | 38 ++- .../models/domain_retrieve_response.rbi | 22 ++ .../models/domain_verify_response.rbi | 22 ++ .../tenants/credential_create_params.rbi | 101 ++++++++ .../tenants/credential_create_response.rbi | 220 +++++++++++++++++ .../tenants/credential_delete_params.rbi | 40 +++ .../tenants/credential_delete_response.rbi | 83 +++++++ .../models/tenants/credential_list_params.rbi | 113 +++++++++ .../tenants/credential_list_response.rbi | 142 +++++++++++ .../tenants/credential_retrieve_params.rbi | 57 +++++ .../tenants/credential_retrieve_response.rbi | 227 ++++++++++++++++++ .../tenants/credential_update_params.rbi | 70 ++++++ .../tenants/credential_update_response.rbi | 227 ++++++++++++++++++ rbi/ark_email/resources/domains.rbi | 24 +- rbi/ark_email/resources/tenants.rbi | 3 + .../resources/tenants/credentials.rbi | 154 ++++++++++++ sig/ark_email/models.rbs | 2 + sig/ark_email/models/domain_create_params.rbs | 7 +- .../models/domain_create_response.rbs | 14 ++ sig/ark_email/models/domain_list_params.rbs | 16 +- sig/ark_email/models/domain_list_response.rbs | 33 ++- .../models/domain_retrieve_response.rbs | 14 ++ .../models/domain_verify_response.rbs | 14 ++ .../tenants/credential_create_params.rbs | 44 ++++ .../tenants/credential_create_response.rbs | 102 ++++++++ .../tenants/credential_delete_params.rbs | 25 ++ .../tenants/credential_delete_response.rbs | 42 ++++ .../models/tenants/credential_list_params.rbs | 57 +++++ .../tenants/credential_list_response.rbs | 63 +++++ .../tenants/credential_retrieve_params.rbs | 32 +++ .../tenants/credential_retrieve_response.rbs | 104 ++++++++ .../tenants/credential_update_params.rbs | 38 +++ .../tenants/credential_update_response.rbs | 104 ++++++++ sig/ark_email/resources/domains.rbs | 2 + sig/ark_email/resources/tenants.rbs | 2 + .../resources/tenants/credentials.rbs | 45 ++++ test/ark_email/resource_namespaces.rb | 2 + test/ark_email/resources/domains_test.rb | 2 +- .../resources/tenants/credentials_test.rb | 96 ++++++++ 65 files changed, 3487 insertions(+), 38 deletions(-) create mode 100644 lib/ark_email/models/tenants/credential_create_params.rb create mode 100644 lib/ark_email/models/tenants/credential_create_response.rb create mode 100644 lib/ark_email/models/tenants/credential_delete_params.rb create mode 100644 lib/ark_email/models/tenants/credential_delete_response.rb create mode 100644 lib/ark_email/models/tenants/credential_list_params.rb create mode 100644 lib/ark_email/models/tenants/credential_list_response.rb create mode 100644 lib/ark_email/models/tenants/credential_retrieve_params.rb create mode 100644 lib/ark_email/models/tenants/credential_retrieve_response.rb create mode 100644 lib/ark_email/models/tenants/credential_update_params.rb create mode 100644 lib/ark_email/models/tenants/credential_update_response.rb create mode 100644 lib/ark_email/resources/tenants/credentials.rb create mode 100644 rbi/ark_email/models/tenants/credential_create_params.rbi create mode 100644 rbi/ark_email/models/tenants/credential_create_response.rbi create mode 100644 rbi/ark_email/models/tenants/credential_delete_params.rbi create mode 100644 rbi/ark_email/models/tenants/credential_delete_response.rbi create mode 100644 rbi/ark_email/models/tenants/credential_list_params.rbi create mode 100644 rbi/ark_email/models/tenants/credential_list_response.rbi create mode 100644 rbi/ark_email/models/tenants/credential_retrieve_params.rbi create mode 100644 rbi/ark_email/models/tenants/credential_retrieve_response.rbi create mode 100644 rbi/ark_email/models/tenants/credential_update_params.rbi create mode 100644 rbi/ark_email/models/tenants/credential_update_response.rbi create mode 100644 rbi/ark_email/resources/tenants/credentials.rbi create mode 100644 sig/ark_email/models/tenants/credential_create_params.rbs create mode 100644 sig/ark_email/models/tenants/credential_create_response.rbs create mode 100644 sig/ark_email/models/tenants/credential_delete_params.rbs create mode 100644 sig/ark_email/models/tenants/credential_delete_response.rbs create mode 100644 sig/ark_email/models/tenants/credential_list_params.rbs create mode 100644 sig/ark_email/models/tenants/credential_list_response.rbs create mode 100644 sig/ark_email/models/tenants/credential_retrieve_params.rbs create mode 100644 sig/ark_email/models/tenants/credential_retrieve_response.rbs create mode 100644 sig/ark_email/models/tenants/credential_update_params.rbs create mode 100644 sig/ark_email/models/tenants/credential_update_response.rbs create mode 100644 sig/ark_email/resources/tenants/credentials.rbs create mode 100644 test/ark_email/resources/tenants/credentials_test.rb diff --git a/.stats.yml b/.stats.yml index 576e5df..27d9c12 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 40 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-628db0b9b7c9da594fa6ad6ce9d95f4ecad92c9e0313f2f1f9977216494dbc5d.yml -openapi_spec_hash: 1773341fbff31b84d2cbcdb37eaad877 -config_hash: b090c2bdd7a719c56c825edddc587737 +configured_endpoints: 45 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-3aa940f5978d27c19f21fd584c87674f7a1e2bf4495fbd9253e60e7b8e9d28ea.yml +openapi_spec_hash: 7354939360962eb34b88189afbe97222 +config_hash: 7b825ebe29bcb14e63e718c041b8398c diff --git a/lib/ark_email.rb b/lib/ark_email.rb index ccca768..ee5443c 100644 --- a/lib/ark_email.rb +++ b/lib/ark_email.rb @@ -102,6 +102,16 @@ require_relative "ark_email/models/tenant_list_params" require_relative "ark_email/models/tenant_retrieve_params" require_relative "ark_email/models/tenant_retrieve_response" +require_relative "ark_email/models/tenants/credential_create_params" +require_relative "ark_email/models/tenants/credential_create_response" +require_relative "ark_email/models/tenants/credential_delete_params" +require_relative "ark_email/models/tenants/credential_delete_response" +require_relative "ark_email/models/tenants/credential_list_params" +require_relative "ark_email/models/tenants/credential_list_response" +require_relative "ark_email/models/tenants/credential_retrieve_params" +require_relative "ark_email/models/tenants/credential_retrieve_response" +require_relative "ark_email/models/tenants/credential_update_params" +require_relative "ark_email/models/tenants/credential_update_response" require_relative "ark_email/models/tenant_update_params" require_relative "ark_email/models/tenant_update_response" require_relative "ark_email/models/track_domain" @@ -143,6 +153,7 @@ require_relative "ark_email/resources/logs" require_relative "ark_email/resources/suppressions" require_relative "ark_email/resources/tenants" +require_relative "ark_email/resources/tenants/credentials" require_relative "ark_email/resources/tracking" require_relative "ark_email/resources/usage" require_relative "ark_email/resources/webhooks" diff --git a/lib/ark_email/models.rb b/lib/ark_email/models.rb index 797998e..7d30915 100644 --- a/lib/ark_email/models.rb +++ b/lib/ark_email/models.rb @@ -95,6 +95,8 @@ module ArkEmail TenantRetrieveParams = ArkEmail::Models::TenantRetrieveParams + Tenants = ArkEmail::Models::Tenants + TenantUpdateParams = ArkEmail::Models::TenantUpdateParams TrackDomain = ArkEmail::Models::TrackDomain diff --git a/lib/ark_email/models/domain_create_params.rb b/lib/ark_email/models/domain_create_params.rb index a46de31..e31df73 100644 --- a/lib/ark_email/models/domain_create_params.rb +++ b/lib/ark_email/models/domain_create_params.rb @@ -13,9 +13,17 @@ class DomainCreateParams < ArkEmail::Internal::Type::BaseModel # @return [String] required :name, String - # @!method initialize(name:, request_options: {}) + # @!attribute tenant_id + # ID of the tenant this domain belongs to + # + # @return [String] + required :tenant_id, String + + # @!method initialize(name:, tenant_id:, request_options: {}) # @param name [String] Domain name (e.g., "mail.example.com") # + # @param tenant_id [String] ID of the tenant this domain belongs to + # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] end end diff --git a/lib/ark_email/models/domain_create_response.rb b/lib/ark_email/models/domain_create_response.rb index ccb2106..f3f8067 100644 --- a/lib/ark_email/models/domain_create_response.rb +++ b/lib/ark_email/models/domain_create_response.rb @@ -77,13 +77,25 @@ class Data < ArkEmail::Internal::Type::BaseModel # @return [Boolean] required :verified, ArkEmail::Internal::Type::Boolean + # @!attribute tenant_id + # ID of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute tenant_name + # Name of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_name, String + # @!attribute verified_at # Timestamp when the domain ownership was verified, or null if not yet verified # # @return [Time, nil] optional :verified_at, Time, api_name: :verifiedAt, nil?: true - # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, verified_at: nil) + # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) # Some parameter documentations has been truncated, see # {ArkEmail::Models::DomainCreateResponse::Data} for more details. # @@ -99,6 +111,10 @@ class Data < ArkEmail::Internal::Type::BaseModel # # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai # + # @param tenant_id [String] ID of the tenant this domain belongs to + # + # @param tenant_name [String] Name of the tenant this domain belongs to + # # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified # @see ArkEmail::Models::DomainCreateResponse::Data#dns_records diff --git a/lib/ark_email/models/domain_list_params.rb b/lib/ark_email/models/domain_list_params.rb index 08afe81..ade0db1 100644 --- a/lib/ark_email/models/domain_list_params.rb +++ b/lib/ark_email/models/domain_list_params.rb @@ -7,7 +7,15 @@ class DomainListParams < ArkEmail::Internal::Type::BaseModel extend ArkEmail::Internal::Type::RequestParameters::Converter include ArkEmail::Internal::Type::RequestParameters - # @!method initialize(request_options: {}) + # @!attribute tenant_id + # Filter domains by tenant ID + # + # @return [String, nil] + optional :tenant_id, String + + # @!method initialize(tenant_id: nil, request_options: {}) + # @param tenant_id [String] Filter domains by tenant ID + # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] end end diff --git a/lib/ark_email/models/domain_list_response.rb b/lib/ark_email/models/domain_list_response.rb index 5a93063..501610d 100644 --- a/lib/ark_email/models/domain_list_response.rb +++ b/lib/ark_email/models/domain_list_response.rb @@ -55,7 +55,19 @@ class Domain < ArkEmail::Internal::Type::BaseModel # @return [Boolean] required :verified, ArkEmail::Internal::Type::Boolean - # @!method initialize(id:, name:, verified:) + # @!attribute tenant_id + # ID of the tenant this domain belongs to (included when filtering by tenant_id) + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute tenant_name + # Name of the tenant this domain belongs to (included when filtering by tenant_id) + # + # @return [String, nil] + optional :tenant_name, String + + # @!method initialize(id:, name:, verified:, tenant_id: nil, tenant_name: nil) # Some parameter documentations has been truncated, see # {ArkEmail::Models::DomainListResponse::Data::Domain} for more details. # @@ -64,6 +76,10 @@ class Domain < ArkEmail::Internal::Type::BaseModel # @param name [String] The domain name used for sending emails # # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai + # + # @param tenant_id [String] ID of the tenant this domain belongs to (included when filtering by tenant_id) + # + # @param tenant_name [String] Name of the tenant this domain belongs to (included when filtering by tenant_id) end end end diff --git a/lib/ark_email/models/domain_retrieve_response.rb b/lib/ark_email/models/domain_retrieve_response.rb index 7a7f614..0d5b01d 100644 --- a/lib/ark_email/models/domain_retrieve_response.rb +++ b/lib/ark_email/models/domain_retrieve_response.rb @@ -77,13 +77,25 @@ class Data < ArkEmail::Internal::Type::BaseModel # @return [Boolean] required :verified, ArkEmail::Internal::Type::Boolean + # @!attribute tenant_id + # ID of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute tenant_name + # Name of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_name, String + # @!attribute verified_at # Timestamp when the domain ownership was verified, or null if not yet verified # # @return [Time, nil] optional :verified_at, Time, api_name: :verifiedAt, nil?: true - # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, verified_at: nil) + # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) # Some parameter documentations has been truncated, see # {ArkEmail::Models::DomainRetrieveResponse::Data} for more details. # @@ -99,6 +111,10 @@ class Data < ArkEmail::Internal::Type::BaseModel # # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai # + # @param tenant_id [String] ID of the tenant this domain belongs to + # + # @param tenant_name [String] Name of the tenant this domain belongs to + # # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified # @see ArkEmail::Models::DomainRetrieveResponse::Data#dns_records diff --git a/lib/ark_email/models/domain_verify_response.rb b/lib/ark_email/models/domain_verify_response.rb index 10ec281..d7661e7 100644 --- a/lib/ark_email/models/domain_verify_response.rb +++ b/lib/ark_email/models/domain_verify_response.rb @@ -77,13 +77,25 @@ class Data < ArkEmail::Internal::Type::BaseModel # @return [Boolean] required :verified, ArkEmail::Internal::Type::Boolean + # @!attribute tenant_id + # ID of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute tenant_name + # Name of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_name, String + # @!attribute verified_at # Timestamp when the domain ownership was verified, or null if not yet verified # # @return [Time, nil] optional :verified_at, Time, api_name: :verifiedAt, nil?: true - # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, verified_at: nil) + # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) # Some parameter documentations has been truncated, see # {ArkEmail::Models::DomainVerifyResponse::Data} for more details. # @@ -99,6 +111,10 @@ class Data < ArkEmail::Internal::Type::BaseModel # # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai # + # @param tenant_id [String] ID of the tenant this domain belongs to + # + # @param tenant_name [String] Name of the tenant this domain belongs to + # # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified # @see ArkEmail::Models::DomainVerifyResponse::Data#dns_records diff --git a/lib/ark_email/models/tenants/credential_create_params.rb b/lib/ark_email/models/tenants/credential_create_params.rb new file mode 100644 index 0000000..6d9d538 --- /dev/null +++ b/lib/ark_email/models/tenants/credential_create_params.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#create + class CredentialCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute name + # Name for the credential. Can only contain letters, numbers, hyphens, and + # underscores. Max 50 characters. + # + # @return [String] + required :name, String + + # @!attribute type + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @return [Symbol, ArkEmail::Models::Tenants::CredentialCreateParams::Type] + required :type, enum: -> { ArkEmail::Tenants::CredentialCreateParams::Type } + + # @!method initialize(name:, type:, request_options: {}) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::CredentialCreateParams} for more details. + # + # @param name [String] Name for the credential. Can only contain letters, numbers, + # + # @param type [Symbol, ArkEmail::Models::Tenants::CredentialCreateParams::Type] Type of credential: + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP = :smtp + API = :api + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_create_response.rb b/lib/ark_email/models/tenants/credential_create_response.rb new file mode 100644 index 0000000..91119da --- /dev/null +++ b/lib/ark_email/models/tenants/credential_create_response.rb @@ -0,0 +1,131 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#create + class CredentialCreateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::CredentialCreateResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::CredentialCreateResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::CredentialCreateResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::CredentialCreateResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique identifier for the credential + # + # @return [Integer] + required :id, Integer + + # @!attribute created_at + # When the credential was created + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute hold + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + # + # @return [Boolean] + required :hold, ArkEmail::Internal::Type::Boolean + + # @!attribute key + # The credential key (secret). **Store this securely** - it will not be shown + # again unless you use the reveal parameter. + # + # @return [String] + required :key, String + + # @!attribute last_used_at + # When the credential was last used to send an email + # + # @return [Time, nil] + required :last_used_at, Time, api_name: :lastUsedAt, nil?: true + + # @!attribute name + # Name of the credential + # + # @return [String] + required :name, String + + # @!attribute type + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @return [Symbol, ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type] + required :type, enum: -> { ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type } + + # @!attribute updated_at + # When the credential was last updated + # + # @return [Time] + required :updated_at, Time, api_name: :updatedAt + + # @!attribute smtp_username + # SMTP username for authentication. Only included for SMTP credentials. Format: + # `{tenantId}/{key}` + # + # @return [String, nil] + optional :smtp_username, String, api_name: :smtpUsername + + # @!method initialize(id:, created_at:, hold:, key:, last_used_at:, name:, type:, updated_at:, smtp_username: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::CredentialCreateResponse::Data} for more details. + # + # @param id [Integer] Unique identifier for the credential + # + # @param created_at [Time] When the credential was created + # + # @param hold [Boolean] Whether the credential is on hold (disabled). + # + # @param key [String] The credential key (secret). **Store this securely** - it will + # + # @param last_used_at [Time, nil] When the credential was last used to send an email + # + # @param name [String] Name of the credential + # + # @param type [Symbol, ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type] Type of credential: + # + # @param updated_at [Time] When the credential was last updated + # + # @param smtp_username [String] SMTP username for authentication. Only included for SMTP credentials. + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @see ArkEmail::Models::Tenants::CredentialCreateResponse::Data#type + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP = :smtp + API = :api + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_delete_params.rb b/lib/ark_email/models/tenants/credential_delete_params.rb new file mode 100644 index 0000000..d83f2da --- /dev/null +++ b/lib/ark_email/models/tenants/credential_delete_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#delete + class CredentialDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_delete_response.rb b/lib/ark_email/models/tenants/credential_delete_response.rb new file mode 100644 index 0000000..3368aad --- /dev/null +++ b/lib/ark_email/models/tenants/credential_delete_response.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#delete + class CredentialDeleteResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::CredentialDeleteResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::CredentialDeleteResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::CredentialDeleteResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::CredentialDeleteResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute deleted + # + # @return [Boolean, true] + required :deleted, const: true + + # @!method initialize(deleted: true) + # @param deleted [Boolean, true] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_list_params.rb b/lib/ark_email/models/tenants/credential_list_params.rb new file mode 100644 index 0000000..869d707 --- /dev/null +++ b/lib/ark_email/models/tenants/credential_list_params.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#list + class CredentialListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute page + # Page number (1-indexed) + # + # @return [Integer, nil] + optional :page, Integer + + # @!attribute per_page + # Number of items per page (max 100) + # + # @return [Integer, nil] + optional :per_page, Integer + + # @!attribute type + # Filter by credential type + # + # @return [Symbol, ArkEmail::Models::Tenants::CredentialListParams::Type, nil] + optional :type, enum: -> { ArkEmail::Tenants::CredentialListParams::Type } + + # @!method initialize(page: nil, per_page: nil, type: nil, request_options: {}) + # @param page [Integer] Page number (1-indexed) + # + # @param per_page [Integer] Number of items per page (max 100) + # + # @param type [Symbol, ArkEmail::Models::Tenants::CredentialListParams::Type] Filter by credential type + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Filter by credential type + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP = :smtp + API = :api + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_list_response.rb b/lib/ark_email/models/tenants/credential_list_response.rb new file mode 100644 index 0000000..3dfeea2 --- /dev/null +++ b/lib/ark_email/models/tenants/credential_list_response.rb @@ -0,0 +1,90 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#list + class CredentialListResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique identifier for the credential + # + # @return [Integer] + required :id, Integer + + # @!attribute created_at + # When the credential was created + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute hold + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + # + # @return [Boolean] + required :hold, ArkEmail::Internal::Type::Boolean + + # @!attribute last_used_at + # When the credential was last used to send an email + # + # @return [Time, nil] + required :last_used_at, Time, api_name: :lastUsedAt, nil?: true + + # @!attribute name + # Name of the credential + # + # @return [String] + required :name, String + + # @!attribute type + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @return [Symbol, ArkEmail::Models::Tenants::CredentialListResponse::Type] + required :type, enum: -> { ArkEmail::Models::Tenants::CredentialListResponse::Type } + + # @!attribute updated_at + # When the credential was last updated + # + # @return [Time] + required :updated_at, Time, api_name: :updatedAt + + # @!method initialize(id:, created_at:, hold:, last_used_at:, name:, type:, updated_at:) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::CredentialListResponse} for more details. + # + # @param id [Integer] Unique identifier for the credential + # + # @param created_at [Time] When the credential was created + # + # @param hold [Boolean] Whether the credential is on hold (disabled). + # + # @param last_used_at [Time, nil] When the credential was last used to send an email + # + # @param name [String] Name of the credential + # + # @param type [Symbol, ArkEmail::Models::Tenants::CredentialListResponse::Type] Type of credential: + # + # @param updated_at [Time] When the credential was last updated + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @see ArkEmail::Models::Tenants::CredentialListResponse#type + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP = :smtp + API = :api + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_retrieve_params.rb b/lib/ark_email/models/tenants/credential_retrieve_params.rb new file mode 100644 index 0000000..9c36ee8 --- /dev/null +++ b/lib/ark_email/models/tenants/credential_retrieve_params.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#retrieve + class CredentialRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!attribute reveal + # Set to `true` to include the credential key in the response + # + # @return [Boolean, nil] + optional :reveal, ArkEmail::Internal::Type::Boolean + + # @!method initialize(tenant_id:, reveal: nil, request_options: {}) + # @param tenant_id [String] + # + # @param reveal [Boolean] Set to `true` to include the credential key in the response + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_retrieve_response.rb b/lib/ark_email/models/tenants/credential_retrieve_response.rb new file mode 100644 index 0000000..d1264f9 --- /dev/null +++ b/lib/ark_email/models/tenants/credential_retrieve_response.rb @@ -0,0 +1,133 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#retrieve + class CredentialRetrieveResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::CredentialRetrieveResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique identifier for the credential + # + # @return [Integer] + required :id, Integer + + # @!attribute created_at + # When the credential was created + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute hold + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + # + # @return [Boolean] + required :hold, ArkEmail::Internal::Type::Boolean + + # @!attribute last_used_at + # When the credential was last used to send an email + # + # @return [Time, nil] + required :last_used_at, Time, api_name: :lastUsedAt, nil?: true + + # @!attribute name + # Name of the credential + # + # @return [String] + required :name, String + + # @!attribute type + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @return [Symbol, ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type] + required :type, enum: -> { ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type } + + # @!attribute updated_at + # When the credential was last updated + # + # @return [Time] + required :updated_at, Time, api_name: :updatedAt + + # @!attribute key + # The credential key (secret). Only included when: + # + # - Creating a new credential (always returned) + # - Retrieving with `reveal=true` + # + # @return [String, nil] + optional :key, String + + # @!attribute smtp_username + # SMTP username for authentication. Only included for SMTP credentials when the + # key is revealed. + # + # @return [String, nil] + optional :smtp_username, String, api_name: :smtpUsername + + # @!method initialize(id:, created_at:, hold:, last_used_at:, name:, type:, updated_at:, key: nil, smtp_username: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data} for more details. + # + # @param id [Integer] Unique identifier for the credential + # + # @param created_at [Time] When the credential was created + # + # @param hold [Boolean] Whether the credential is on hold (disabled). + # + # @param last_used_at [Time, nil] When the credential was last used to send an email + # + # @param name [String] Name of the credential + # + # @param type [Symbol, ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type] Type of credential: + # + # @param updated_at [Time] When the credential was last updated + # + # @param key [String] The credential key (secret). Only included when: + # + # @param smtp_username [String] SMTP username for authentication. Only included for SMTP credentials + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @see ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data#type + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP = :smtp + API = :api + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_update_params.rb b/lib/ark_email/models/tenants/credential_update_params.rb new file mode 100644 index 0000000..a3e7b53 --- /dev/null +++ b/lib/ark_email/models/tenants/credential_update_params.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#update + class CredentialUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!attribute hold + # Set to `true` to disable the credential (put on hold). Set to `false` to enable + # the credential (release from hold). + # + # @return [Boolean, nil] + optional :hold, ArkEmail::Internal::Type::Boolean + + # @!attribute name + # New name for the credential + # + # @return [String, nil] + optional :name, String + + # @!method initialize(tenant_id:, hold: nil, name: nil, request_options: {}) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::CredentialUpdateParams} for more details. + # + # @param tenant_id [String] + # + # @param hold [Boolean] Set to `true` to disable the credential (put on hold). + # + # @param name [String] New name for the credential + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/credential_update_response.rb b/lib/ark_email/models/tenants/credential_update_response.rb new file mode 100644 index 0000000..d851cb5 --- /dev/null +++ b/lib/ark_email/models/tenants/credential_update_response.rb @@ -0,0 +1,133 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Credentials#update + class CredentialUpdateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::CredentialUpdateResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::CredentialUpdateResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::CredentialUpdateResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::CredentialUpdateResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique identifier for the credential + # + # @return [Integer] + required :id, Integer + + # @!attribute created_at + # When the credential was created + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute hold + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + # + # @return [Boolean] + required :hold, ArkEmail::Internal::Type::Boolean + + # @!attribute last_used_at + # When the credential was last used to send an email + # + # @return [Time, nil] + required :last_used_at, Time, api_name: :lastUsedAt, nil?: true + + # @!attribute name + # Name of the credential + # + # @return [String] + required :name, String + + # @!attribute type + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @return [Symbol, ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type] + required :type, enum: -> { ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type } + + # @!attribute updated_at + # When the credential was last updated + # + # @return [Time] + required :updated_at, Time, api_name: :updatedAt + + # @!attribute key + # The credential key (secret). Only included when: + # + # - Creating a new credential (always returned) + # - Retrieving with `reveal=true` + # + # @return [String, nil] + optional :key, String + + # @!attribute smtp_username + # SMTP username for authentication. Only included for SMTP credentials when the + # key is revealed. + # + # @return [String, nil] + optional :smtp_username, String, api_name: :smtpUsername + + # @!method initialize(id:, created_at:, hold:, last_used_at:, name:, type:, updated_at:, key: nil, smtp_username: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::CredentialUpdateResponse::Data} for more details. + # + # @param id [Integer] Unique identifier for the credential + # + # @param created_at [Time] When the credential was created + # + # @param hold [Boolean] Whether the credential is on hold (disabled). + # + # @param last_used_at [Time, nil] When the credential was last used to send an email + # + # @param name [String] Name of the credential + # + # @param type [Symbol, ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type] Type of credential: + # + # @param updated_at [Time] When the credential was last updated + # + # @param key [String] The credential key (secret). Only included when: + # + # @param smtp_username [String] SMTP username for authentication. Only included for SMTP credentials + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + # + # @see ArkEmail::Models::Tenants::CredentialUpdateResponse::Data#type + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP = :smtp + API = :api + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/resources/domains.rb b/lib/ark_email/resources/domains.rb index 40dc8c5..72233a1 100644 --- a/lib/ark_email/resources/domains.rb +++ b/lib/ark_email/resources/domains.rb @@ -6,6 +6,9 @@ class Domains # Add a new domain for sending emails. Returns DNS records that must be configured # before the domain can be verified. # + # **Required:** `tenant_id` to specify which tenant the domain belongs to. Each + # tenant gets their own isolated mail server for domain isolation. + # # **Required DNS records:** # # - **SPF** - TXT record for sender authentication @@ -14,10 +17,12 @@ class Domains # # After adding DNS records, call `POST /domains/{id}/verify` to verify. # - # @overload create(name:, request_options: {}) + # @overload create(name:, tenant_id:, request_options: {}) # # @param name [String] Domain name (e.g., "mail.example.com") # + # @param tenant_id [String] ID of the tenant this domain belongs to + # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] # # @return [ArkEmail::Models::DomainCreateResponse] @@ -54,9 +59,14 @@ def retrieve(domain_id, params = {}) ) end - # Get all sending domains with their verification status + # Get all sending domains with their verification status. + # + # Optionally filter by `tenant_id` to list domains for a specific tenant. When + # filtered, response includes `tenant_id` and `tenant_name` for each domain. # - # @overload list(request_options: {}) + # @overload list(tenant_id: nil, request_options: {}) + # + # @param tenant_id [String] Filter domains by tenant ID # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] # @@ -64,11 +74,13 @@ def retrieve(domain_id, params = {}) # # @see ArkEmail::Models::DomainListParams def list(params = {}) + parsed, options = ArkEmail::DomainListParams.dump_request(params) @client.request( method: :get, path: "domains", + query: parsed, model: ArkEmail::Models::DomainListResponse, - options: params[:request_options] + options: options ) end diff --git a/lib/ark_email/resources/tenants.rb b/lib/ark_email/resources/tenants.rb index 59c38ee..37a09b6 100644 --- a/lib/ark_email/resources/tenants.rb +++ b/lib/ark_email/resources/tenants.rb @@ -3,6 +3,9 @@ module ArkEmail module Resources class Tenants + # @return [ArkEmail::Resources::Tenants::Credentials] + attr_reader :credentials + # Some parameter documentations has been truncated, see # {ArkEmail::Models::TenantCreateParams} for more details. # @@ -138,6 +141,7 @@ def delete(tenant_id, params = {}) # @param client [ArkEmail::Client] def initialize(client:) @client = client + @credentials = ArkEmail::Resources::Tenants::Credentials.new(client: client) end end end diff --git a/lib/ark_email/resources/tenants/credentials.rb b/lib/ark_email/resources/tenants/credentials.rb new file mode 100644 index 0000000..0151c47 --- /dev/null +++ b/lib/ark_email/resources/tenants/credentials.rb @@ -0,0 +1,194 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Tenants + class Credentials + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::CredentialCreateParams} for more details. + # + # Create a new SMTP or API credential for a tenant. The credential can be used to + # send emails through Postal on behalf of the tenant. + # + # **Important:** The credential key is only returned once at creation time. Store + # it securely - you cannot retrieve it again. + # + # **Credential Types:** + # + # - `smtp` - For SMTP-based email sending. Returns both `key` and `smtpUsername`. + # - `api` - For API-based email sending. Returns only `key`. + # + # @overload create(tenant_id, name:, type:, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param name [String] Name for the credential. Can only contain letters, numbers, + # + # @param type [Symbol, ArkEmail::Models::Tenants::CredentialCreateParams::Type] Type of credential: + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::CredentialCreateResponse] + # + # @see ArkEmail::Models::Tenants::CredentialCreateParams + def create(tenant_id, params) + parsed, options = ArkEmail::Tenants::CredentialCreateParams.dump_request(params) + @client.request( + method: :post, + path: ["tenants/%1$s/credentials", tenant_id], + body: parsed, + model: ArkEmail::Models::Tenants::CredentialCreateResponse, + options: options + ) + end + + # Get details of a specific credential. + # + # **Revealing the key:** By default, the credential key is not returned. Pass + # `reveal=true` to include the key in the response. Use this sparingly and only + # when you need to retrieve the key (e.g., for configuration). + # + # @overload retrieve(credential_id, tenant_id:, reveal: nil, request_options: {}) + # + # @param credential_id [Integer] Path param: The credential ID (numeric) + # + # @param tenant_id [String] Path param: The tenant ID + # + # @param reveal [Boolean] Query param: Set to `true` to include the credential key in the response + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::CredentialRetrieveResponse] + # + # @see ArkEmail::Models::Tenants::CredentialRetrieveParams + def retrieve(credential_id, params) + parsed, options = ArkEmail::Tenants::CredentialRetrieveParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :get, + path: ["tenants/%1$s/credentials/%2$s", tenant_id, credential_id], + query: parsed, + model: ArkEmail::Models::Tenants::CredentialRetrieveResponse, + options: options + ) + end + + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::CredentialUpdateParams} for more details. + # + # Update a credential's name or hold status. + # + # **Hold Status:** + # + # - When `hold: true`, the credential is disabled and cannot be used to send + # emails. + # - When `hold: false`, the credential is active and can send emails. + # - Use this to temporarily disable a credential without deleting it. + # + # @overload update(credential_id, tenant_id:, hold: nil, name: nil, request_options: {}) + # + # @param credential_id [Integer] Path param: The credential ID (numeric) + # + # @param tenant_id [String] Path param: The tenant ID + # + # @param hold [Boolean] Body param: Set to `true` to disable the credential (put on hold). + # + # @param name [String] Body param: New name for the credential + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::CredentialUpdateResponse] + # + # @see ArkEmail::Models::Tenants::CredentialUpdateParams + def update(credential_id, params) + parsed, options = ArkEmail::Tenants::CredentialUpdateParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :patch, + path: ["tenants/%1$s/credentials/%2$s", tenant_id, credential_id], + body: parsed, + model: ArkEmail::Models::Tenants::CredentialUpdateResponse, + options: options + ) + end + + # List all SMTP and API credentials for a tenant. Credentials are used to send + # emails through Postal on behalf of the tenant. + # + # **Security:** Credential keys are not returned in the list response. Use the + # retrieve endpoint with `reveal=true` to get the key. + # + # @overload list(tenant_id, page: nil, per_page: nil, type: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param page [Integer] Page number (1-indexed) + # + # @param per_page [Integer] Number of items per page (max 100) + # + # @param type [Symbol, ArkEmail::Models::Tenants::CredentialListParams::Type] Filter by credential type + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Internal::PageNumberPagination] + # + # @see ArkEmail::Models::Tenants::CredentialListParams + def list(tenant_id, params = {}) + parsed, options = ArkEmail::Tenants::CredentialListParams.dump_request(params) + @client.request( + method: :get, + path: ["tenants/%1$s/credentials", tenant_id], + query: parsed.transform_keys(per_page: "perPage"), + page: ArkEmail::Internal::PageNumberPagination, + model: ArkEmail::Models::Tenants::CredentialListResponse, + options: options + ) + end + + # Permanently delete (revoke) a credential. The credential can no longer be used + # to send emails. + # + # **Warning:** This action is irreversible. If you want to temporarily disable a + # credential, use the update endpoint to set `hold: true` instead. + # + # @overload delete(credential_id, tenant_id:, request_options: {}) + # + # @param credential_id [Integer] The credential ID (numeric) + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::CredentialDeleteResponse] + # + # @see ArkEmail::Models::Tenants::CredentialDeleteParams + def delete(credential_id, params) + parsed, options = ArkEmail::Tenants::CredentialDeleteParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :delete, + path: ["tenants/%1$s/credentials/%2$s", tenant_id, credential_id], + model: ArkEmail::Models::Tenants::CredentialDeleteResponse, + options: options + ) + end + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + end + end + end + end +end diff --git a/rbi/ark_email/models.rbi b/rbi/ark_email/models.rbi index 5ff9bd0..3844dfe 100644 --- a/rbi/ark_email/models.rbi +++ b/rbi/ark_email/models.rbi @@ -58,6 +58,8 @@ module ArkEmail TenantRetrieveParams = ArkEmail::Models::TenantRetrieveParams + Tenants = ArkEmail::Models::Tenants + TenantUpdateParams = ArkEmail::Models::TenantUpdateParams TrackDomain = ArkEmail::Models::TrackDomain diff --git a/rbi/ark_email/models/domain_create_params.rbi b/rbi/ark_email/models/domain_create_params.rbi index e0992c2..ceba7e0 100644 --- a/rbi/ark_email/models/domain_create_params.rbi +++ b/rbi/ark_email/models/domain_create_params.rbi @@ -15,22 +15,33 @@ module ArkEmail sig { returns(String) } attr_accessor :name + # ID of the tenant this domain belongs to + sig { returns(String) } + attr_accessor :tenant_id + sig do params( name: String, + tenant_id: String, request_options: ArkEmail::RequestOptions::OrHash ).returns(T.attached_class) end def self.new( # Domain name (e.g., "mail.example.com") name:, + # ID of the tenant this domain belongs to + tenant_id:, request_options: {} ) end sig do override.returns( - { name: String, request_options: ArkEmail::RequestOptions } + { + name: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions + } ) end def to_hash diff --git a/rbi/ark_email/models/domain_create_response.rbi b/rbi/ark_email/models/domain_create_response.rbi index c7f5cea..560242f 100644 --- a/rbi/ark_email/models/domain_create_response.rbi +++ b/rbi/ark_email/models/domain_create_response.rbi @@ -109,6 +109,20 @@ module ArkEmail sig { returns(T::Boolean) } attr_accessor :verified + # ID of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Name of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_name + + sig { params(tenant_name: String).void } + attr_writer :tenant_name + # Timestamp when the domain ownership was verified, or null if not yet verified sig { returns(T.nilable(Time)) } attr_accessor :verified_at @@ -124,6 +138,8 @@ module ArkEmail name: String, uuid: String, verified: T::Boolean, + tenant_id: String, + tenant_name: String, verified_at: T.nilable(Time) ).returns(T.attached_class) end @@ -152,6 +168,10 @@ module ArkEmail # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. # Domain must be verified before sending emails. verified:, + # ID of the tenant this domain belongs to + tenant_id: nil, + # Name of the tenant this domain belongs to + tenant_name: nil, # Timestamp when the domain ownership was verified, or null if not yet verified verified_at: nil ) @@ -169,6 +189,8 @@ module ArkEmail name: String, uuid: String, verified: T::Boolean, + tenant_id: String, + tenant_name: String, verified_at: T.nilable(Time) } ) diff --git a/rbi/ark_email/models/domain_list_params.rbi b/rbi/ark_email/models/domain_list_params.rbi index b410b3a..17905c8 100644 --- a/rbi/ark_email/models/domain_list_params.rbi +++ b/rbi/ark_email/models/domain_list_params.rbi @@ -11,15 +11,31 @@ module ArkEmail T.any(ArkEmail::DomainListParams, ArkEmail::Internal::AnyHash) end + # Filter domains by tenant ID + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) end - def self.new(request_options: {}) + def self.new( + # Filter domains by tenant ID + tenant_id: nil, + request_options: {} + ) end - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end def to_hash end end diff --git a/rbi/ark_email/models/domain_list_response.rbi b/rbi/ark_email/models/domain_list_response.rbi index 2a532fc..3f05df7 100644 --- a/rbi/ark_email/models/domain_list_response.rbi +++ b/rbi/ark_email/models/domain_list_response.rbi @@ -108,10 +108,28 @@ module ArkEmail sig { returns(T::Boolean) } attr_accessor :verified + # ID of the tenant this domain belongs to (included when filtering by tenant_id) + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Name of the tenant this domain belongs to (included when filtering by tenant_id) + sig { returns(T.nilable(String)) } + attr_reader :tenant_name + + sig { params(tenant_name: String).void } + attr_writer :tenant_name + sig do - params(id: Integer, name: String, verified: T::Boolean).returns( - T.attached_class - ) + params( + id: Integer, + name: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String + ).returns(T.attached_class) end def self.new( # Unique domain identifier @@ -120,13 +138,23 @@ module ArkEmail name:, # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. # Domain must be verified before sending emails. - verified: + verified:, + # ID of the tenant this domain belongs to (included when filtering by tenant_id) + tenant_id: nil, + # Name of the tenant this domain belongs to (included when filtering by tenant_id) + tenant_name: nil ) end sig do override.returns( - { id: Integer, name: String, verified: T::Boolean } + { + id: Integer, + name: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String + } ) end def to_hash diff --git a/rbi/ark_email/models/domain_retrieve_response.rbi b/rbi/ark_email/models/domain_retrieve_response.rbi index 0ac4116..82b507b 100644 --- a/rbi/ark_email/models/domain_retrieve_response.rbi +++ b/rbi/ark_email/models/domain_retrieve_response.rbi @@ -113,6 +113,20 @@ module ArkEmail sig { returns(T::Boolean) } attr_accessor :verified + # ID of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Name of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_name + + sig { params(tenant_name: String).void } + attr_writer :tenant_name + # Timestamp when the domain ownership was verified, or null if not yet verified sig { returns(T.nilable(Time)) } attr_accessor :verified_at @@ -128,6 +142,8 @@ module ArkEmail name: String, uuid: String, verified: T::Boolean, + tenant_id: String, + tenant_name: String, verified_at: T.nilable(Time) ).returns(T.attached_class) end @@ -156,6 +172,10 @@ module ArkEmail # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. # Domain must be verified before sending emails. verified:, + # ID of the tenant this domain belongs to + tenant_id: nil, + # Name of the tenant this domain belongs to + tenant_name: nil, # Timestamp when the domain ownership was verified, or null if not yet verified verified_at: nil ) @@ -173,6 +193,8 @@ module ArkEmail name: String, uuid: String, verified: T::Boolean, + tenant_id: String, + tenant_name: String, verified_at: T.nilable(Time) } ) diff --git a/rbi/ark_email/models/domain_verify_response.rbi b/rbi/ark_email/models/domain_verify_response.rbi index b02356f..051345f 100644 --- a/rbi/ark_email/models/domain_verify_response.rbi +++ b/rbi/ark_email/models/domain_verify_response.rbi @@ -109,6 +109,20 @@ module ArkEmail sig { returns(T::Boolean) } attr_accessor :verified + # ID of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Name of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_name + + sig { params(tenant_name: String).void } + attr_writer :tenant_name + # Timestamp when the domain ownership was verified, or null if not yet verified sig { returns(T.nilable(Time)) } attr_accessor :verified_at @@ -124,6 +138,8 @@ module ArkEmail name: String, uuid: String, verified: T::Boolean, + tenant_id: String, + tenant_name: String, verified_at: T.nilable(Time) ).returns(T.attached_class) end @@ -152,6 +168,10 @@ module ArkEmail # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. # Domain must be verified before sending emails. verified:, + # ID of the tenant this domain belongs to + tenant_id: nil, + # Name of the tenant this domain belongs to + tenant_name: nil, # Timestamp when the domain ownership was verified, or null if not yet verified verified_at: nil ) @@ -169,6 +189,8 @@ module ArkEmail name: String, uuid: String, verified: T::Boolean, + tenant_id: String, + tenant_name: String, verified_at: T.nilable(Time) } ) diff --git a/rbi/ark_email/models/tenants/credential_create_params.rbi b/rbi/ark_email/models/tenants/credential_create_params.rbi new file mode 100644 index 0000000..b4d3e2c --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_create_params.rbi @@ -0,0 +1,101 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::CredentialCreateParams, + ArkEmail::Internal::AnyHash + ) + end + + # Name for the credential. Can only contain letters, numbers, hyphens, and + # underscores. Max 50 characters. + sig { returns(String) } + attr_accessor :name + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + sig do + returns(ArkEmail::Tenants::CredentialCreateParams::Type::OrSymbol) + end + attr_accessor :type + + sig do + params( + name: String, + type: ArkEmail::Tenants::CredentialCreateParams::Type::OrSymbol, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Name for the credential. Can only contain letters, numbers, hyphens, and + # underscores. Max 50 characters. + name:, + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + type:, + request_options: {} + ) + end + + sig do + override.returns( + { + name: String, + type: ArkEmail::Tenants::CredentialCreateParams::Type::OrSymbol, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + module Type + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Tenants::CredentialCreateParams::Type) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SMTP = + T.let( + :smtp, + ArkEmail::Tenants::CredentialCreateParams::Type::TaggedSymbol + ) + API = + T.let( + :api, + ArkEmail::Tenants::CredentialCreateParams::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Tenants::CredentialCreateParams::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_create_response.rbi b/rbi/ark_email/models/tenants/credential_create_response.rbi new file mode 100644 index 0000000..4486abf --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_create_response.rbi @@ -0,0 +1,220 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialCreateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialCreateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Tenants::CredentialCreateResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::CredentialCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialCreateResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique identifier for the credential + sig { returns(Integer) } + attr_accessor :id + + # When the credential was created + sig { returns(Time) } + attr_accessor :created_at + + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + sig { returns(T::Boolean) } + attr_accessor :hold + + # The credential key (secret). **Store this securely** - it will not be shown + # again unless you use the reveal parameter. + sig { returns(String) } + attr_accessor :key + + # When the credential was last used to send an email + sig { returns(T.nilable(Time)) } + attr_accessor :last_used_at + + # Name of the credential + sig { returns(String) } + attr_accessor :name + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + sig do + returns( + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type::TaggedSymbol + ) + end + attr_accessor :type + + # When the credential was last updated + sig { returns(Time) } + attr_accessor :updated_at + + # SMTP username for authentication. Only included for SMTP credentials. Format: + # `{tenantId}/{key}` + sig { returns(T.nilable(String)) } + attr_reader :smtp_username + + sig { params(smtp_username: String).void } + attr_writer :smtp_username + + sig do + params( + id: Integer, + created_at: Time, + hold: T::Boolean, + key: String, + last_used_at: T.nilable(Time), + name: String, + type: + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type::OrSymbol, + updated_at: Time, + smtp_username: String + ).returns(T.attached_class) + end + def self.new( + # Unique identifier for the credential + id:, + # When the credential was created + created_at:, + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + hold:, + # The credential key (secret). **Store this securely** - it will not be shown + # again unless you use the reveal parameter. + key:, + # When the credential was last used to send an email + last_used_at:, + # Name of the credential + name:, + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + type:, + # When the credential was last updated + updated_at:, + # SMTP username for authentication. Only included for SMTP credentials. Format: + # `{tenantId}/{key}` + smtp_username: nil + ) + end + + sig do + override.returns( + { + id: Integer, + created_at: Time, + hold: T::Boolean, + key: String, + last_used_at: T.nilable(Time), + name: String, + type: + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type::TaggedSymbol, + updated_at: Time, + smtp_username: String + } + ) + end + def to_hash + end + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + module Type + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SMTP = + T.let( + :smtp, + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type::TaggedSymbol + ) + API = + T.let( + :api, + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::CredentialCreateResponse::Data::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_delete_params.rbi b/rbi/ark_email/models/tenants/credential_delete_params.rbi new file mode 100644 index 0000000..6eb5284 --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_delete_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::CredentialDeleteParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_delete_response.rbi b/rbi/ark_email/models/tenants/credential_delete_response.rbi new file mode 100644 index 0000000..8a90133 --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_delete_response.rbi @@ -0,0 +1,83 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialDeleteResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialDeleteResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Tenants::CredentialDeleteResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::CredentialDeleteResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::CredentialDeleteResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::CredentialDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialDeleteResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(T::Boolean) } + attr_accessor :deleted + + sig { params(deleted: T::Boolean).returns(T.attached_class) } + def self.new(deleted: true) + end + + sig { override.returns({ deleted: T::Boolean }) } + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_list_params.rbi b/rbi/ark_email/models/tenants/credential_list_params.rbi new file mode 100644 index 0000000..d8f1fe1 --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_list_params.rbi @@ -0,0 +1,113 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::CredentialListParams, + ArkEmail::Internal::AnyHash + ) + end + + # Page number (1-indexed) + sig { returns(T.nilable(Integer)) } + attr_reader :page + + sig { params(page: Integer).void } + attr_writer :page + + # Number of items per page (max 100) + sig { returns(T.nilable(Integer)) } + attr_reader :per_page + + sig { params(per_page: Integer).void } + attr_writer :per_page + + # Filter by credential type + sig do + returns( + T.nilable(ArkEmail::Tenants::CredentialListParams::Type::OrSymbol) + ) + end + attr_reader :type + + sig do + params( + type: ArkEmail::Tenants::CredentialListParams::Type::OrSymbol + ).void + end + attr_writer :type + + sig do + params( + page: Integer, + per_page: Integer, + type: ArkEmail::Tenants::CredentialListParams::Type::OrSymbol, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Page number (1-indexed) + page: nil, + # Number of items per page (max 100) + per_page: nil, + # Filter by credential type + type: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + page: Integer, + per_page: Integer, + type: ArkEmail::Tenants::CredentialListParams::Type::OrSymbol, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Filter by credential type + module Type + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Tenants::CredentialListParams::Type) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SMTP = + T.let( + :smtp, + ArkEmail::Tenants::CredentialListParams::Type::TaggedSymbol + ) + API = + T.let( + :api, + ArkEmail::Tenants::CredentialListParams::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Tenants::CredentialListParams::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_list_response.rbi b/rbi/ark_email/models/tenants/credential_list_response.rbi new file mode 100644 index 0000000..97c0d2c --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_list_response.rbi @@ -0,0 +1,142 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialListResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialListResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Unique identifier for the credential + sig { returns(Integer) } + attr_accessor :id + + # When the credential was created + sig { returns(Time) } + attr_accessor :created_at + + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + sig { returns(T::Boolean) } + attr_accessor :hold + + # When the credential was last used to send an email + sig { returns(T.nilable(Time)) } + attr_accessor :last_used_at + + # Name of the credential + sig { returns(String) } + attr_accessor :name + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + sig do + returns( + ArkEmail::Models::Tenants::CredentialListResponse::Type::TaggedSymbol + ) + end + attr_accessor :type + + # When the credential was last updated + sig { returns(Time) } + attr_accessor :updated_at + + sig do + params( + id: Integer, + created_at: Time, + hold: T::Boolean, + last_used_at: T.nilable(Time), + name: String, + type: + ArkEmail::Models::Tenants::CredentialListResponse::Type::OrSymbol, + updated_at: Time + ).returns(T.attached_class) + end + def self.new( + # Unique identifier for the credential + id:, + # When the credential was created + created_at:, + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + hold:, + # When the credential was last used to send an email + last_used_at:, + # Name of the credential + name:, + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + type:, + # When the credential was last updated + updated_at: + ) + end + + sig do + override.returns( + { + id: Integer, + created_at: Time, + hold: T::Boolean, + last_used_at: T.nilable(Time), + name: String, + type: + ArkEmail::Models::Tenants::CredentialListResponse::Type::TaggedSymbol, + updated_at: Time + } + ) + end + def to_hash + end + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + module Type + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::CredentialListResponse::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SMTP = + T.let( + :smtp, + ArkEmail::Models::Tenants::CredentialListResponse::Type::TaggedSymbol + ) + API = + T.let( + :api, + ArkEmail::Models::Tenants::CredentialListResponse::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::CredentialListResponse::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_retrieve_params.rbi b/rbi/ark_email/models/tenants/credential_retrieve_params.rbi new file mode 100644 index 0000000..d4be330 --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_retrieve_params.rbi @@ -0,0 +1,57 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::CredentialRetrieveParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + # Set to `true` to include the credential key in the response + sig { returns(T.nilable(T::Boolean)) } + attr_reader :reveal + + sig { params(reveal: T::Boolean).void } + attr_writer :reveal + + sig do + params( + tenant_id: String, + reveal: T::Boolean, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + tenant_id:, + # Set to `true` to include the credential key in the response + reveal: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + tenant_id: String, + reveal: T::Boolean, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_retrieve_response.rbi b/rbi/ark_email/models/tenants/credential_retrieve_response.rbi new file mode 100644 index 0000000..e8e4f43 --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_retrieve_response.rbi @@ -0,0 +1,227 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialRetrieveResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialRetrieveResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique identifier for the credential + sig { returns(Integer) } + attr_accessor :id + + # When the credential was created + sig { returns(Time) } + attr_accessor :created_at + + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + sig { returns(T::Boolean) } + attr_accessor :hold + + # When the credential was last used to send an email + sig { returns(T.nilable(Time)) } + attr_accessor :last_used_at + + # Name of the credential + sig { returns(String) } + attr_accessor :name + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + sig do + returns( + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type::TaggedSymbol + ) + end + attr_accessor :type + + # When the credential was last updated + sig { returns(Time) } + attr_accessor :updated_at + + # The credential key (secret). Only included when: + # + # - Creating a new credential (always returned) + # - Retrieving with `reveal=true` + sig { returns(T.nilable(String)) } + attr_reader :key + + sig { params(key: String).void } + attr_writer :key + + # SMTP username for authentication. Only included for SMTP credentials when the + # key is revealed. + sig { returns(T.nilable(String)) } + attr_reader :smtp_username + + sig { params(smtp_username: String).void } + attr_writer :smtp_username + + sig do + params( + id: Integer, + created_at: Time, + hold: T::Boolean, + last_used_at: T.nilable(Time), + name: String, + type: + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type::OrSymbol, + updated_at: Time, + key: String, + smtp_username: String + ).returns(T.attached_class) + end + def self.new( + # Unique identifier for the credential + id:, + # When the credential was created + created_at:, + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + hold:, + # When the credential was last used to send an email + last_used_at:, + # Name of the credential + name:, + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + type:, + # When the credential was last updated + updated_at:, + # The credential key (secret). Only included when: + # + # - Creating a new credential (always returned) + # - Retrieving with `reveal=true` + key: nil, + # SMTP username for authentication. Only included for SMTP credentials when the + # key is revealed. + smtp_username: nil + ) + end + + sig do + override.returns( + { + id: Integer, + created_at: Time, + hold: T::Boolean, + last_used_at: T.nilable(Time), + name: String, + type: + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type::TaggedSymbol, + updated_at: Time, + key: String, + smtp_username: String + } + ) + end + def to_hash + end + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + module Type + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SMTP = + T.let( + :smtp, + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type::TaggedSymbol + ) + API = + T.let( + :api, + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_update_params.rbi b/rbi/ark_email/models/tenants/credential_update_params.rbi new file mode 100644 index 0000000..2c63777 --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_update_params.rbi @@ -0,0 +1,70 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::CredentialUpdateParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + # Set to `true` to disable the credential (put on hold). Set to `false` to enable + # the credential (release from hold). + sig { returns(T.nilable(T::Boolean)) } + attr_reader :hold + + sig { params(hold: T::Boolean).void } + attr_writer :hold + + # New name for the credential + sig { returns(T.nilable(String)) } + attr_reader :name + + sig { params(name: String).void } + attr_writer :name + + sig do + params( + tenant_id: String, + hold: T::Boolean, + name: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + tenant_id:, + # Set to `true` to disable the credential (put on hold). Set to `false` to enable + # the credential (release from hold). + hold: nil, + # New name for the credential + name: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + tenant_id: String, + hold: T::Boolean, + name: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/credential_update_response.rbi b/rbi/ark_email/models/tenants/credential_update_response.rbi new file mode 100644 index 0000000..8ed7997 --- /dev/null +++ b/rbi/ark_email/models/tenants/credential_update_response.rbi @@ -0,0 +1,227 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class CredentialUpdateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialUpdateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Tenants::CredentialUpdateResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique identifier for the credential + sig { returns(Integer) } + attr_accessor :id + + # When the credential was created + sig { returns(Time) } + attr_accessor :created_at + + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + sig { returns(T::Boolean) } + attr_accessor :hold + + # When the credential was last used to send an email + sig { returns(T.nilable(Time)) } + attr_accessor :last_used_at + + # Name of the credential + sig { returns(String) } + attr_accessor :name + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + sig do + returns( + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type::TaggedSymbol + ) + end + attr_accessor :type + + # When the credential was last updated + sig { returns(Time) } + attr_accessor :updated_at + + # The credential key (secret). Only included when: + # + # - Creating a new credential (always returned) + # - Retrieving with `reveal=true` + sig { returns(T.nilable(String)) } + attr_reader :key + + sig { params(key: String).void } + attr_writer :key + + # SMTP username for authentication. Only included for SMTP credentials when the + # key is revealed. + sig { returns(T.nilable(String)) } + attr_reader :smtp_username + + sig { params(smtp_username: String).void } + attr_writer :smtp_username + + sig do + params( + id: Integer, + created_at: Time, + hold: T::Boolean, + last_used_at: T.nilable(Time), + name: String, + type: + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type::OrSymbol, + updated_at: Time, + key: String, + smtp_username: String + ).returns(T.attached_class) + end + def self.new( + # Unique identifier for the credential + id:, + # When the credential was created + created_at:, + # Whether the credential is on hold (disabled). When `true`, the credential cannot + # be used to send emails. + hold:, + # When the credential was last used to send an email + last_used_at:, + # Name of the credential + name:, + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + type:, + # When the credential was last updated + updated_at:, + # The credential key (secret). Only included when: + # + # - Creating a new credential (always returned) + # - Retrieving with `reveal=true` + key: nil, + # SMTP username for authentication. Only included for SMTP credentials when the + # key is revealed. + smtp_username: nil + ) + end + + sig do + override.returns( + { + id: Integer, + created_at: Time, + hold: T::Boolean, + last_used_at: T.nilable(Time), + name: String, + type: + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type::TaggedSymbol, + updated_at: Time, + key: String, + smtp_username: String + } + ) + end + def to_hash + end + + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + module Type + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SMTP = + T.let( + :smtp, + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type::TaggedSymbol + ) + API = + T.let( + :api, + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/resources/domains.rbi b/rbi/ark_email/resources/domains.rbi index 251def0..f8b89de 100644 --- a/rbi/ark_email/resources/domains.rbi +++ b/rbi/ark_email/resources/domains.rbi @@ -6,6 +6,9 @@ module ArkEmail # Add a new domain for sending emails. Returns DNS records that must be configured # before the domain can be verified. # + # **Required:** `tenant_id` to specify which tenant the domain belongs to. Each + # tenant gets their own isolated mail server for domain isolation. + # # **Required DNS records:** # # - **SPF** - TXT record for sender authentication @@ -16,12 +19,15 @@ module ArkEmail sig do params( name: String, + tenant_id: String, request_options: ArkEmail::RequestOptions::OrHash ).returns(ArkEmail::Models::DomainCreateResponse) end def create( # Domain name (e.g., "mail.example.com") name:, + # ID of the tenant this domain belongs to + tenant_id:, request_options: {} ) end @@ -40,13 +46,21 @@ module ArkEmail ) end - # Get all sending domains with their verification status + # Get all sending domains with their verification status. + # + # Optionally filter by `tenant_id` to list domains for a specific tenant. When + # filtered, response includes `tenant_id` and `tenant_name` for each domain. sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - ArkEmail::Models::DomainListResponse - ) + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::DomainListResponse) end - def list(request_options: {}) + def list( + # Filter domains by tenant ID + tenant_id: nil, + request_options: {} + ) end # Remove a sending domain. You will no longer be able to send emails from this diff --git a/rbi/ark_email/resources/tenants.rbi b/rbi/ark_email/resources/tenants.rbi index ea5e1dd..da5fbba 100644 --- a/rbi/ark_email/resources/tenants.rbi +++ b/rbi/ark_email/resources/tenants.rbi @@ -3,6 +3,9 @@ module ArkEmail module Resources class Tenants + sig { returns(ArkEmail::Resources::Tenants::Credentials) } + attr_reader :credentials + # Create a new tenant. # # Returns the created tenant with a unique `id`. Store this ID in your database to diff --git a/rbi/ark_email/resources/tenants/credentials.rbi b/rbi/ark_email/resources/tenants/credentials.rbi new file mode 100644 index 0000000..682e7a7 --- /dev/null +++ b/rbi/ark_email/resources/tenants/credentials.rbi @@ -0,0 +1,154 @@ +# typed: strong + +module ArkEmail + module Resources + class Tenants + class Credentials + # Create a new SMTP or API credential for a tenant. The credential can be used to + # send emails through Postal on behalf of the tenant. + # + # **Important:** The credential key is only returned once at creation time. Store + # it securely - you cannot retrieve it again. + # + # **Credential Types:** + # + # - `smtp` - For SMTP-based email sending. Returns both `key` and `smtpUsername`. + # - `api` - For API-based email sending. Returns only `key`. + sig do + params( + tenant_id: String, + name: String, + type: ArkEmail::Tenants::CredentialCreateParams::Type::OrSymbol, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::CredentialCreateResponse) + end + def create( + # The tenant ID + tenant_id, + # Name for the credential. Can only contain letters, numbers, hyphens, and + # underscores. Max 50 characters. + name:, + # Type of credential: + # + # - `smtp` - For SMTP-based email sending + # - `api` - For API-based email sending + type:, + request_options: {} + ) + end + + # Get details of a specific credential. + # + # **Revealing the key:** By default, the credential key is not returned. Pass + # `reveal=true` to include the key in the response. Use this sparingly and only + # when you need to retrieve the key (e.g., for configuration). + sig do + params( + credential_id: Integer, + tenant_id: String, + reveal: T::Boolean, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::CredentialRetrieveResponse) + end + def retrieve( + # Path param: The credential ID (numeric) + credential_id, + # Path param: The tenant ID + tenant_id:, + # Query param: Set to `true` to include the credential key in the response + reveal: nil, + request_options: {} + ) + end + + # Update a credential's name or hold status. + # + # **Hold Status:** + # + # - When `hold: true`, the credential is disabled and cannot be used to send + # emails. + # - When `hold: false`, the credential is active and can send emails. + # - Use this to temporarily disable a credential without deleting it. + sig do + params( + credential_id: Integer, + tenant_id: String, + hold: T::Boolean, + name: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::CredentialUpdateResponse) + end + def update( + # Path param: The credential ID (numeric) + credential_id, + # Path param: The tenant ID + tenant_id:, + # Body param: Set to `true` to disable the credential (put on hold). Set to + # `false` to enable the credential (release from hold). + hold: nil, + # Body param: New name for the credential + name: nil, + request_options: {} + ) + end + + # List all SMTP and API credentials for a tenant. Credentials are used to send + # emails through Postal on behalf of the tenant. + # + # **Security:** Credential keys are not returned in the list response. Use the + # retrieve endpoint with `reveal=true` to get the key. + sig do + params( + tenant_id: String, + page: Integer, + per_page: Integer, + type: ArkEmail::Tenants::CredentialListParams::Type::OrSymbol, + request_options: ArkEmail::RequestOptions::OrHash + ).returns( + ArkEmail::Internal::PageNumberPagination[ + ArkEmail::Models::Tenants::CredentialListResponse + ] + ) + end + def list( + # The tenant ID + tenant_id, + # Page number (1-indexed) + page: nil, + # Number of items per page (max 100) + per_page: nil, + # Filter by credential type + type: nil, + request_options: {} + ) + end + + # Permanently delete (revoke) a credential. The credential can no longer be used + # to send emails. + # + # **Warning:** This action is irreversible. If you want to temporarily disable a + # credential, use the update endpoint to set `hold: true` instead. + sig do + params( + credential_id: Integer, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::CredentialDeleteResponse) + end + def delete( + # The credential ID (numeric) + credential_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end + end +end diff --git a/sig/ark_email/models.rbs b/sig/ark_email/models.rbs index 70f4bff..69dec11 100644 --- a/sig/ark_email/models.rbs +++ b/sig/ark_email/models.rbs @@ -55,6 +55,8 @@ module ArkEmail class TenantRetrieveParams = ArkEmail::Models::TenantRetrieveParams + module Tenants = ArkEmail::Models::Tenants + class TenantUpdateParams = ArkEmail::Models::TenantUpdateParams class TrackDomain = ArkEmail::Models::TrackDomain diff --git a/sig/ark_email/models/domain_create_params.rbs b/sig/ark_email/models/domain_create_params.rbs index 69ffac0..f28f657 100644 --- a/sig/ark_email/models/domain_create_params.rbs +++ b/sig/ark_email/models/domain_create_params.rbs @@ -1,7 +1,8 @@ module ArkEmail module Models type domain_create_params = - { name: String } & ArkEmail::Internal::Type::request_parameters + { name: String, tenant_id: String } + & ArkEmail::Internal::Type::request_parameters class DomainCreateParams < ArkEmail::Internal::Type::BaseModel extend ArkEmail::Internal::Type::RequestParameters::Converter @@ -9,13 +10,17 @@ module ArkEmail attr_accessor name: String + attr_accessor tenant_id: String + def initialize: ( name: String, + tenant_id: String, ?request_options: ArkEmail::request_opts ) -> void def to_hash: -> { name: String, + tenant_id: String, request_options: ArkEmail::RequestOptions } end diff --git a/sig/ark_email/models/domain_create_response.rbs b/sig/ark_email/models/domain_create_response.rbs index a7b1d45..0598d97 100644 --- a/sig/ark_email/models/domain_create_response.rbs +++ b/sig/ark_email/models/domain_create_response.rbs @@ -34,6 +34,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + tenant_id: String, + tenant_name: String, verified_at: Time? } @@ -50,6 +52,14 @@ module ArkEmail attr_accessor verified: bool + attr_reader tenant_id: String? + + def tenant_id=: (String) -> String + + attr_reader tenant_name: String? + + def tenant_name=: (String) -> String + attr_accessor verified_at: Time? def initialize: ( @@ -59,6 +69,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + ?tenant_id: String, + ?tenant_name: String, ?verified_at: Time? ) -> void @@ -69,6 +81,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + tenant_id: String, + tenant_name: String, verified_at: Time? } diff --git a/sig/ark_email/models/domain_list_params.rbs b/sig/ark_email/models/domain_list_params.rbs index d52c60c..0536e30 100644 --- a/sig/ark_email/models/domain_list_params.rbs +++ b/sig/ark_email/models/domain_list_params.rbs @@ -1,15 +1,25 @@ module ArkEmail module Models type domain_list_params = - { } & ArkEmail::Internal::Type::request_parameters + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters class DomainListParams < ArkEmail::Internal::Type::BaseModel extend ArkEmail::Internal::Type::RequestParameters::Converter include ArkEmail::Internal::Type::RequestParameters - def initialize: (?request_options: ArkEmail::request_opts) -> void + attr_reader tenant_id: String? - def to_hash: -> { request_options: ArkEmail::RequestOptions } + def tenant_id=: (String) -> String + + def initialize: ( + ?tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } end end end diff --git a/sig/ark_email/models/domain_list_response.rbs b/sig/ark_email/models/domain_list_response.rbs index ef70834..273cba0 100644 --- a/sig/ark_email/models/domain_list_response.rbs +++ b/sig/ark_email/models/domain_list_response.rbs @@ -40,7 +40,14 @@ module ArkEmail domains: ::Array[ArkEmail::Models::DomainListResponse::Data::Domain] } - type domain = { id: Integer, name: String, verified: bool } + type domain = + { + id: Integer, + name: String, + verified: bool, + tenant_id: String, + tenant_name: String + } class Domain < ArkEmail::Internal::Type::BaseModel attr_accessor id: Integer @@ -49,9 +56,29 @@ module ArkEmail attr_accessor verified: bool - def initialize: (id: Integer, name: String, verified: bool) -> void + attr_reader tenant_id: String? - def to_hash: -> { id: Integer, name: String, verified: bool } + def tenant_id=: (String) -> String + + attr_reader tenant_name: String? + + def tenant_name=: (String) -> String + + def initialize: ( + id: Integer, + name: String, + verified: bool, + ?tenant_id: String, + ?tenant_name: String + ) -> void + + def to_hash: -> { + id: Integer, + name: String, + verified: bool, + tenant_id: String, + tenant_name: String + } end end end diff --git a/sig/ark_email/models/domain_retrieve_response.rbs b/sig/ark_email/models/domain_retrieve_response.rbs index 5d52d9d..1b3c33c 100644 --- a/sig/ark_email/models/domain_retrieve_response.rbs +++ b/sig/ark_email/models/domain_retrieve_response.rbs @@ -34,6 +34,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + tenant_id: String, + tenant_name: String, verified_at: Time? } @@ -50,6 +52,14 @@ module ArkEmail attr_accessor verified: bool + attr_reader tenant_id: String? + + def tenant_id=: (String) -> String + + attr_reader tenant_name: String? + + def tenant_name=: (String) -> String + attr_accessor verified_at: Time? def initialize: ( @@ -59,6 +69,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + ?tenant_id: String, + ?tenant_name: String, ?verified_at: Time? ) -> void @@ -69,6 +81,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + tenant_id: String, + tenant_name: String, verified_at: Time? } diff --git a/sig/ark_email/models/domain_verify_response.rbs b/sig/ark_email/models/domain_verify_response.rbs index 7ce7171..9dacd6b 100644 --- a/sig/ark_email/models/domain_verify_response.rbs +++ b/sig/ark_email/models/domain_verify_response.rbs @@ -34,6 +34,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + tenant_id: String, + tenant_name: String, verified_at: Time? } @@ -50,6 +52,14 @@ module ArkEmail attr_accessor verified: bool + attr_reader tenant_id: String? + + def tenant_id=: (String) -> String + + attr_reader tenant_name: String? + + def tenant_name=: (String) -> String + attr_accessor verified_at: Time? def initialize: ( @@ -59,6 +69,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + ?tenant_id: String, + ?tenant_name: String, ?verified_at: Time? ) -> void @@ -69,6 +81,8 @@ module ArkEmail name: String, uuid: String, verified: bool, + tenant_id: String, + tenant_name: String, verified_at: Time? } diff --git a/sig/ark_email/models/tenants/credential_create_params.rbs b/sig/ark_email/models/tenants/credential_create_params.rbs new file mode 100644 index 0000000..b68715f --- /dev/null +++ b/sig/ark_email/models/tenants/credential_create_params.rbs @@ -0,0 +1,44 @@ +module ArkEmail + module Models + module Tenants + type credential_create_params = + { + name: String, + type: ArkEmail::Models::Tenants::CredentialCreateParams::type_ + } + & ArkEmail::Internal::Type::request_parameters + + class CredentialCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor name: String + + attr_accessor type: ArkEmail::Models::Tenants::CredentialCreateParams::type_ + + def initialize: ( + name: String, + type: ArkEmail::Models::Tenants::CredentialCreateParams::type_, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + name: String, + type: ArkEmail::Models::Tenants::CredentialCreateParams::type_, + request_options: ArkEmail::RequestOptions + } + + type type_ = :smtp | :api + + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP: :smtp + API: :api + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::CredentialCreateParams::type_] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_create_response.rbs b/sig/ark_email/models/tenants/credential_create_response.rbs new file mode 100644 index 0000000..3af5ee7 --- /dev/null +++ b/sig/ark_email/models/tenants/credential_create_response.rbs @@ -0,0 +1,102 @@ +module ArkEmail + module Models + module Tenants + type credential_create_response = + { + data: ArkEmail::Models::Tenants::CredentialCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class CredentialCreateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::CredentialCreateResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::CredentialCreateResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::CredentialCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: Integer, + created_at: Time, + hold: bool, + key: String, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialCreateResponse::Data::type_, + updated_at: Time, + smtp_username: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: Integer + + attr_accessor created_at: Time + + attr_accessor hold: bool + + attr_accessor key: String + + attr_accessor last_used_at: Time? + + attr_accessor name: String + + attr_accessor type: ArkEmail::Models::Tenants::CredentialCreateResponse::Data::type_ + + attr_accessor updated_at: Time + + attr_reader smtp_username: String? + + def smtp_username=: (String) -> String + + def initialize: ( + id: Integer, + created_at: Time, + hold: bool, + key: String, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialCreateResponse::Data::type_, + updated_at: Time, + ?smtp_username: String + ) -> void + + def to_hash: -> { + id: Integer, + created_at: Time, + hold: bool, + key: String, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialCreateResponse::Data::type_, + updated_at: Time, + smtp_username: String + } + + type type_ = :smtp | :api + + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP: :smtp + API: :api + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::CredentialCreateResponse::Data::type_] + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_delete_params.rbs b/sig/ark_email/models/tenants/credential_delete_params.rbs new file mode 100644 index 0000000..cbd4841 --- /dev/null +++ b/sig/ark_email/models/tenants/credential_delete_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type credential_delete_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class CredentialDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_delete_response.rbs b/sig/ark_email/models/tenants/credential_delete_response.rbs new file mode 100644 index 0000000..fe4d4b0 --- /dev/null +++ b/sig/ark_email/models/tenants/credential_delete_response.rbs @@ -0,0 +1,42 @@ +module ArkEmail + module Models + module Tenants + type credential_delete_response = + { + data: ArkEmail::Models::Tenants::CredentialDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class CredentialDeleteResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::CredentialDeleteResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::CredentialDeleteResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::CredentialDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = { deleted: true } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor deleted: true + + def initialize: (?deleted: true) -> void + + def to_hash: -> { deleted: true } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_list_params.rbs b/sig/ark_email/models/tenants/credential_list_params.rbs new file mode 100644 index 0000000..484ecf4 --- /dev/null +++ b/sig/ark_email/models/tenants/credential_list_params.rbs @@ -0,0 +1,57 @@ +module ArkEmail + module Models + module Tenants + type credential_list_params = + { + page: Integer, + per_page: Integer, + type: ArkEmail::Models::Tenants::CredentialListParams::type_ + } + & ArkEmail::Internal::Type::request_parameters + + class CredentialListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader page: Integer? + + def page=: (Integer) -> Integer + + attr_reader per_page: Integer? + + def per_page=: (Integer) -> Integer + + attr_reader type: ArkEmail::Models::Tenants::CredentialListParams::type_? + + def type=: ( + ArkEmail::Models::Tenants::CredentialListParams::type_ + ) -> ArkEmail::Models::Tenants::CredentialListParams::type_ + + def initialize: ( + ?page: Integer, + ?per_page: Integer, + ?type: ArkEmail::Models::Tenants::CredentialListParams::type_, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + page: Integer, + per_page: Integer, + type: ArkEmail::Models::Tenants::CredentialListParams::type_, + request_options: ArkEmail::RequestOptions + } + + type type_ = :smtp | :api + + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP: :smtp + API: :api + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::CredentialListParams::type_] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_list_response.rbs b/sig/ark_email/models/tenants/credential_list_response.rbs new file mode 100644 index 0000000..97bf9d5 --- /dev/null +++ b/sig/ark_email/models/tenants/credential_list_response.rbs @@ -0,0 +1,63 @@ +module ArkEmail + module Models + module Tenants + type credential_list_response = + { + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialListResponse::type_, + updated_at: Time + } + + class CredentialListResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor id: Integer + + attr_accessor created_at: Time + + attr_accessor hold: bool + + attr_accessor last_used_at: Time? + + attr_accessor name: String + + attr_accessor type: ArkEmail::Models::Tenants::CredentialListResponse::type_ + + attr_accessor updated_at: Time + + def initialize: ( + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialListResponse::type_, + updated_at: Time + ) -> void + + def to_hash: -> { + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialListResponse::type_, + updated_at: Time + } + + type type_ = :smtp | :api + + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP: :smtp + API: :api + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::CredentialListResponse::type_] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_retrieve_params.rbs b/sig/ark_email/models/tenants/credential_retrieve_params.rbs new file mode 100644 index 0000000..f9d368c --- /dev/null +++ b/sig/ark_email/models/tenants/credential_retrieve_params.rbs @@ -0,0 +1,32 @@ +module ArkEmail + module Models + module Tenants + type credential_retrieve_params = + { tenant_id: String, reveal: bool } + & ArkEmail::Internal::Type::request_parameters + + class CredentialRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + attr_reader reveal: bool? + + def reveal=: (bool) -> bool + + def initialize: ( + tenant_id: String, + ?reveal: bool, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + reveal: bool, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_retrieve_response.rbs b/sig/ark_email/models/tenants/credential_retrieve_response.rbs new file mode 100644 index 0000000..b426a1e --- /dev/null +++ b/sig/ark_email/models/tenants/credential_retrieve_response.rbs @@ -0,0 +1,104 @@ +module ArkEmail + module Models + module Tenants + type credential_retrieve_response = + { + data: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class CredentialRetrieveResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::type_, + updated_at: Time, + key: String, + smtp_username: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: Integer + + attr_accessor created_at: Time + + attr_accessor hold: bool + + attr_accessor last_used_at: Time? + + attr_accessor name: String + + attr_accessor type: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::type_ + + attr_accessor updated_at: Time + + attr_reader key: String? + + def key=: (String) -> String + + attr_reader smtp_username: String? + + def smtp_username=: (String) -> String + + def initialize: ( + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::type_, + updated_at: Time, + ?key: String, + ?smtp_username: String + ) -> void + + def to_hash: -> { + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::type_, + updated_at: Time, + key: String, + smtp_username: String + } + + type type_ = :smtp | :api + + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP: :smtp + API: :api + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data::type_] + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_update_params.rbs b/sig/ark_email/models/tenants/credential_update_params.rbs new file mode 100644 index 0000000..b704a25 --- /dev/null +++ b/sig/ark_email/models/tenants/credential_update_params.rbs @@ -0,0 +1,38 @@ +module ArkEmail + module Models + module Tenants + type credential_update_params = + { tenant_id: String, hold: bool, name: String } + & ArkEmail::Internal::Type::request_parameters + + class CredentialUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + attr_reader hold: bool? + + def hold=: (bool) -> bool + + attr_reader name: String? + + def name=: (String) -> String + + def initialize: ( + tenant_id: String, + ?hold: bool, + ?name: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + hold: bool, + name: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/credential_update_response.rbs b/sig/ark_email/models/tenants/credential_update_response.rbs new file mode 100644 index 0000000..d7484a6 --- /dev/null +++ b/sig/ark_email/models/tenants/credential_update_response.rbs @@ -0,0 +1,104 @@ +module ArkEmail + module Models + module Tenants + type credential_update_response = + { + data: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class CredentialUpdateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::type_, + updated_at: Time, + key: String, + smtp_username: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: Integer + + attr_accessor created_at: Time + + attr_accessor hold: bool + + attr_accessor last_used_at: Time? + + attr_accessor name: String + + attr_accessor type: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::type_ + + attr_accessor updated_at: Time + + attr_reader key: String? + + def key=: (String) -> String + + attr_reader smtp_username: String? + + def smtp_username=: (String) -> String + + def initialize: ( + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::type_, + updated_at: Time, + ?key: String, + ?smtp_username: String + ) -> void + + def to_hash: -> { + id: Integer, + created_at: Time, + hold: bool, + last_used_at: Time?, + name: String, + type: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::type_, + updated_at: Time, + key: String, + smtp_username: String + } + + type type_ = :smtp | :api + + module Type + extend ArkEmail::Internal::Type::Enum + + SMTP: :smtp + API: :api + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::CredentialUpdateResponse::Data::type_] + end + end + end + end + end +end diff --git a/sig/ark_email/resources/domains.rbs b/sig/ark_email/resources/domains.rbs index b5fed70..bb2c56b 100644 --- a/sig/ark_email/resources/domains.rbs +++ b/sig/ark_email/resources/domains.rbs @@ -3,6 +3,7 @@ module ArkEmail class Domains def create: ( name: String, + tenant_id: String, ?request_options: ArkEmail::request_opts ) -> ArkEmail::Models::DomainCreateResponse @@ -12,6 +13,7 @@ module ArkEmail ) -> ArkEmail::Models::DomainRetrieveResponse def list: ( + ?tenant_id: String, ?request_options: ArkEmail::request_opts ) -> ArkEmail::Models::DomainListResponse diff --git a/sig/ark_email/resources/tenants.rbs b/sig/ark_email/resources/tenants.rbs index 622102e..f8e634a 100644 --- a/sig/ark_email/resources/tenants.rbs +++ b/sig/ark_email/resources/tenants.rbs @@ -1,6 +1,8 @@ module ArkEmail module Resources class Tenants + attr_reader credentials: ArkEmail::Resources::Tenants::Credentials + def create: ( name: String, ?metadata: ::Hash[Symbol, ArkEmail::Models::TenantCreateParams::metadata?]?, diff --git a/sig/ark_email/resources/tenants/credentials.rbs b/sig/ark_email/resources/tenants/credentials.rbs new file mode 100644 index 0000000..f82a9a0 --- /dev/null +++ b/sig/ark_email/resources/tenants/credentials.rbs @@ -0,0 +1,45 @@ +module ArkEmail + module Resources + class Tenants + class Credentials + def create: ( + String tenant_id, + name: String, + type: ArkEmail::Models::Tenants::CredentialCreateParams::type_, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::CredentialCreateResponse + + def retrieve: ( + Integer credential_id, + tenant_id: String, + ?reveal: bool, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::CredentialRetrieveResponse + + def update: ( + Integer credential_id, + tenant_id: String, + ?hold: bool, + ?name: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::CredentialUpdateResponse + + def list: ( + String tenant_id, + ?page: Integer, + ?per_page: Integer, + ?type: ArkEmail::Models::Tenants::CredentialListParams::type_, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Internal::PageNumberPagination[ArkEmail::Models::Tenants::CredentialListResponse] + + def delete: ( + Integer credential_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::CredentialDeleteResponse + + def initialize: (client: ArkEmail::Client) -> void + end + end + end +end diff --git a/test/ark_email/resource_namespaces.rb b/test/ark_email/resource_namespaces.rb index f968c0f..7f22369 100644 --- a/test/ark_email/resource_namespaces.rb +++ b/test/ark_email/resource_namespaces.rb @@ -3,6 +3,8 @@ module ArkEmail module Test module Resources + module Tenants + end end end end diff --git a/test/ark_email/resources/domains_test.rb b/test/ark_email/resources/domains_test.rb index deb84f7..847066e 100644 --- a/test/ark_email/resources/domains_test.rb +++ b/test/ark_email/resources/domains_test.rb @@ -4,7 +4,7 @@ class ArkEmail::Test::Resources::DomainsTest < ArkEmail::Test::ResourceTest def test_create_required_params - response = @ark.domains.create(name: "notifications.myapp.com") + response = @ark.domains.create(name: "notifications.myapp.com", tenant_id: "cm6abc123def456") assert_pattern do response => ArkEmail::Models::DomainCreateResponse diff --git a/test/ark_email/resources/tenants/credentials_test.rb b/test/ark_email/resources/tenants/credentials_test.rb new file mode 100644 index 0000000..a07ee62 --- /dev/null +++ b/test/ark_email/resources/tenants/credentials_test.rb @@ -0,0 +1,96 @@ +# frozen_string_literal: true + +require_relative "../../test_helper" + +class ArkEmail::Test::Resources::Tenants::CredentialsTest < ArkEmail::Test::ResourceTest + def test_create_required_params + response = @ark.tenants.credentials.create("cm6abc123def456", name: "production-smtp", type: :smtp) + + assert_pattern do + response => ArkEmail::Models::Tenants::CredentialCreateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::CredentialCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_required_params + response = @ark.tenants.credentials.retrieve(123, tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::CredentialRetrieveResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::CredentialRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_update_required_params + response = @ark.tenants.credentials.update(123, tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::CredentialUpdateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::CredentialUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_list + response = @ark.tenants.credentials.list("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Internal::PageNumberPagination + end + + row = response.to_enum.first + return if row.nil? + + assert_pattern do + row => ArkEmail::Models::Tenants::CredentialListResponse + end + + assert_pattern do + row => { + id: Integer, + created_at: Time, + hold: ArkEmail::Internal::Type::Boolean, + last_used_at: Time | nil, + name: String, + type: ArkEmail::Models::Tenants::CredentialListResponse::Type, + updated_at: Time + } + end + end + + def test_delete_required_params + response = @ark.tenants.credentials.delete(123, tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::CredentialDeleteResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::CredentialDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end +end From b3aca3dfd1957992552c18d94bba4cd6e1db31f3 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 21:25:34 +0000 Subject: [PATCH 2/8] feat(api): tenant usage --- .stats.yml | 8 +- lib/ark_email.rb | 18 + lib/ark_email/client.rb | 4 + lib/ark_email/internal/offset_pagination.rb | 134 +++++ lib/ark_email/models.rb | 24 + lib/ark_email/models/bulk_tenant_usage.rb | 177 +++++++ lib/ark_email/models/email_counts.rb | 58 +++ lib/ark_email/models/email_rates.rb | 26 + .../email_retrieve_deliveries_response.rb | 4 +- lib/ark_email/models/limit_retrieve_params.rb | 14 + .../models/limit_retrieve_response.rb | 33 ++ lib/ark_email/models/limits_data.rb | 234 +++++++++ lib/ark_email/models/tenant_usage.rb | 58 +++ .../models/tenant_usage_timeseries.rb | 126 +++++ lib/ark_email/models/usage_export_params.rb | 78 +++ lib/ark_email/models/usage_export_response.rb | 123 +++++ .../models/usage_list_by_tenant_params.rb | 102 ++++ lib/ark_email/models/usage_period.rb | 26 + .../models/usage_retrieve_response.rb | 243 +-------- ...usage_retrieve_tenant_timeseries_params.rb | 51 ++ ...age_retrieve_tenant_timeseries_response.rb | 33 ++ .../usage_retrieve_tenant_usage_params.rb | 41 ++ .../usage_retrieve_tenant_usage_response.rb | 33 ++ lib/ark_email/resources/emails.rb | 36 +- lib/ark_email/resources/limits.rb | 48 ++ lib/ark_email/resources/usage.rb | 211 ++++++++ rbi/ark_email/client.rbi | 3 + rbi/ark_email/internal/offset_pagination.rbi | 110 +++++ rbi/ark_email/models.rbi | 26 + rbi/ark_email/models/bulk_tenant_usage.rbi | 302 ++++++++++++ rbi/ark_email/models/email_counts.rbi | 78 +++ rbi/ark_email/models/email_rates.rbi | 38 ++ .../email_retrieve_deliveries_response.rbi | 4 +- .../models/limit_retrieve_params.rbi | 27 + .../models/limit_retrieve_response.rbi | 59 +++ rbi/ark_email/models/limits_data.rbi | 374 ++++++++++++++ rbi/ark_email/models/tenant_usage.rbi | 87 ++++ .../models/tenant_usage_timeseries.rbi | 200 ++++++++ rbi/ark_email/models/usage_export_params.rbi | 137 ++++++ .../models/usage_export_response.rbi | 177 +++++++ .../models/usage_list_by_tenant_params.rbi | 203 ++++++++ rbi/ark_email/models/usage_period.rbi | 34 ++ .../models/usage_retrieve_response.rbi | 460 +----------------- ...sage_retrieve_tenant_timeseries_params.rbi | 129 +++++ ...ge_retrieve_tenant_timeseries_response.rbi | 59 +++ .../usage_retrieve_tenant_usage_params.rbi | 76 +++ .../usage_retrieve_tenant_usage_response.rbi | 59 +++ rbi/ark_email/resources/emails.rbi | 24 +- rbi/ark_email/resources/limits.rbi | 37 ++ rbi/ark_email/resources/usage.rbi | 198 ++++++++ sig/ark_email/client.rbs | 2 + sig/ark_email/internal/offset_pagination.rbs | 70 +++ sig/ark_email/models.rbs | 24 + sig/ark_email/models/bulk_tenant_usage.rbs | 143 ++++++ sig/ark_email/models/email_counts.rbs | 45 ++ sig/ark_email/models/email_rates.rbs | 15 + .../models/limit_retrieve_params.rbs | 15 + .../models/limit_retrieve_response.rbs | 26 + sig/ark_email/models/limits_data.rbs | 185 +++++++ sig/ark_email/models/tenant_usage.rbs | 45 ++ .../models/tenant_usage_timeseries.rbs | 100 ++++ sig/ark_email/models/usage_export_params.rbs | 84 ++++ .../models/usage_export_response.rbs | 92 ++++ .../models/usage_list_by_tenant_params.rbs | 111 +++++ sig/ark_email/models/usage_period.rbs | 15 + .../models/usage_retrieve_response.rbs | 194 +------- ...sage_retrieve_tenant_timeseries_params.rbs | 57 +++ ...ge_retrieve_tenant_timeseries_response.rbs | 30 ++ .../usage_retrieve_tenant_usage_params.rbs | 32 ++ .../usage_retrieve_tenant_usage_response.rbs | 26 + sig/ark_email/resources/emails.rbs | 6 +- sig/ark_email/resources/limits.rbs | 11 + sig/ark_email/resources/usage.rbs | 35 ++ test/ark_email/resources/limits_test.rb | 21 + test/ark_email/resources/usage_test.rb | 68 ++- 75 files changed, 5368 insertions(+), 928 deletions(-) create mode 100644 lib/ark_email/internal/offset_pagination.rb create mode 100644 lib/ark_email/models/bulk_tenant_usage.rb create mode 100644 lib/ark_email/models/email_counts.rb create mode 100644 lib/ark_email/models/email_rates.rb create mode 100644 lib/ark_email/models/limit_retrieve_params.rb create mode 100644 lib/ark_email/models/limit_retrieve_response.rb create mode 100644 lib/ark_email/models/limits_data.rb create mode 100644 lib/ark_email/models/tenant_usage.rb create mode 100644 lib/ark_email/models/tenant_usage_timeseries.rb create mode 100644 lib/ark_email/models/usage_export_params.rb create mode 100644 lib/ark_email/models/usage_export_response.rb create mode 100644 lib/ark_email/models/usage_list_by_tenant_params.rb create mode 100644 lib/ark_email/models/usage_period.rb create mode 100644 lib/ark_email/models/usage_retrieve_tenant_timeseries_params.rb create mode 100644 lib/ark_email/models/usage_retrieve_tenant_timeseries_response.rb create mode 100644 lib/ark_email/models/usage_retrieve_tenant_usage_params.rb create mode 100644 lib/ark_email/models/usage_retrieve_tenant_usage_response.rb create mode 100644 lib/ark_email/resources/limits.rb create mode 100644 rbi/ark_email/internal/offset_pagination.rbi create mode 100644 rbi/ark_email/models/bulk_tenant_usage.rbi create mode 100644 rbi/ark_email/models/email_counts.rbi create mode 100644 rbi/ark_email/models/email_rates.rbi create mode 100644 rbi/ark_email/models/limit_retrieve_params.rbi create mode 100644 rbi/ark_email/models/limit_retrieve_response.rbi create mode 100644 rbi/ark_email/models/limits_data.rbi create mode 100644 rbi/ark_email/models/tenant_usage.rbi create mode 100644 rbi/ark_email/models/tenant_usage_timeseries.rbi create mode 100644 rbi/ark_email/models/usage_export_params.rbi create mode 100644 rbi/ark_email/models/usage_export_response.rbi create mode 100644 rbi/ark_email/models/usage_list_by_tenant_params.rbi create mode 100644 rbi/ark_email/models/usage_period.rbi create mode 100644 rbi/ark_email/models/usage_retrieve_tenant_timeseries_params.rbi create mode 100644 rbi/ark_email/models/usage_retrieve_tenant_timeseries_response.rbi create mode 100644 rbi/ark_email/models/usage_retrieve_tenant_usage_params.rbi create mode 100644 rbi/ark_email/models/usage_retrieve_tenant_usage_response.rbi create mode 100644 rbi/ark_email/resources/limits.rbi create mode 100644 sig/ark_email/internal/offset_pagination.rbs create mode 100644 sig/ark_email/models/bulk_tenant_usage.rbs create mode 100644 sig/ark_email/models/email_counts.rbs create mode 100644 sig/ark_email/models/email_rates.rbs create mode 100644 sig/ark_email/models/limit_retrieve_params.rbs create mode 100644 sig/ark_email/models/limit_retrieve_response.rbs create mode 100644 sig/ark_email/models/limits_data.rbs create mode 100644 sig/ark_email/models/tenant_usage.rbs create mode 100644 sig/ark_email/models/tenant_usage_timeseries.rbs create mode 100644 sig/ark_email/models/usage_export_params.rbs create mode 100644 sig/ark_email/models/usage_export_response.rbs create mode 100644 sig/ark_email/models/usage_list_by_tenant_params.rbs create mode 100644 sig/ark_email/models/usage_period.rbs create mode 100644 sig/ark_email/models/usage_retrieve_tenant_timeseries_params.rbs create mode 100644 sig/ark_email/models/usage_retrieve_tenant_timeseries_response.rbs create mode 100644 sig/ark_email/models/usage_retrieve_tenant_usage_params.rbs create mode 100644 sig/ark_email/models/usage_retrieve_tenant_usage_response.rbs create mode 100644 sig/ark_email/resources/limits.rbs create mode 100644 test/ark_email/resources/limits_test.rb diff --git a/.stats.yml b/.stats.yml index 27d9c12..136030f 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 45 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-3aa940f5978d27c19f21fd584c87674f7a1e2bf4495fbd9253e60e7b8e9d28ea.yml -openapi_spec_hash: 7354939360962eb34b88189afbe97222 -config_hash: 7b825ebe29bcb14e63e718c041b8398c +configured_endpoints: 50 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-80a061ee30021d968068b710420ca250a2a4cd6e9cec16f2ea5144afed2a6e33.yml +openapi_spec_hash: 661c8877c1efd5c25f5ebc634e764a72 +config_hash: 569f48c6e4612e54e4db8a875be71e1a diff --git a/lib/ark_email.rb b/lib/ark_email.rb index ee5443c..e579048 100644 --- a/lib/ark_email.rb +++ b/lib/ark_email.rb @@ -52,9 +52,11 @@ require_relative "ark_email/internal/transport/base_client" require_relative "ark_email/internal/transport/pooled_net_requester" require_relative "ark_email/client" +require_relative "ark_email/internal/offset_pagination" require_relative "ark_email/internal/page_number_pagination" require_relative "ark_email/models/log_entry" require_relative "ark_email/models/api_meta" +require_relative "ark_email/models/bulk_tenant_usage" require_relative "ark_email/models/dns_record" require_relative "ark_email/models/domain_create_params" require_relative "ark_email/models/domain_create_response" @@ -66,8 +68,10 @@ require_relative "ark_email/models/domain_retrieve_response" require_relative "ark_email/models/domain_verify_params" require_relative "ark_email/models/domain_verify_response" +require_relative "ark_email/models/email_counts" require_relative "ark_email/models/email_list_params" require_relative "ark_email/models/email_list_response" +require_relative "ark_email/models/email_rates" require_relative "ark_email/models/email_retrieve_deliveries_params" require_relative "ark_email/models/email_retrieve_deliveries_response" require_relative "ark_email/models/email_retrieve_params" @@ -80,6 +84,9 @@ require_relative "ark_email/models/email_send_raw_params" require_relative "ark_email/models/email_send_raw_response" require_relative "ark_email/models/email_send_response" +require_relative "ark_email/models/limit_retrieve_params" +require_relative "ark_email/models/limit_retrieve_response" +require_relative "ark_email/models/limits_data" require_relative "ark_email/models/log_entry_detail" require_relative "ark_email/models/log_list_params" require_relative "ark_email/models/log_retrieve_params" @@ -114,6 +121,8 @@ require_relative "ark_email/models/tenants/credential_update_response" require_relative "ark_email/models/tenant_update_params" require_relative "ark_email/models/tenant_update_response" +require_relative "ark_email/models/tenant_usage" +require_relative "ark_email/models/tenant_usage_timeseries" require_relative "ark_email/models/track_domain" require_relative "ark_email/models/tracking_create_params" require_relative "ark_email/models/tracking_create_response" @@ -127,8 +136,16 @@ require_relative "ark_email/models/tracking_update_response" require_relative "ark_email/models/tracking_verify_params" require_relative "ark_email/models/tracking_verify_response" +require_relative "ark_email/models/usage_export_params" +require_relative "ark_email/models/usage_export_response" +require_relative "ark_email/models/usage_list_by_tenant_params" +require_relative "ark_email/models/usage_period" require_relative "ark_email/models/usage_retrieve_params" require_relative "ark_email/models/usage_retrieve_response" +require_relative "ark_email/models/usage_retrieve_tenant_timeseries_params" +require_relative "ark_email/models/usage_retrieve_tenant_timeseries_response" +require_relative "ark_email/models/usage_retrieve_tenant_usage_params" +require_relative "ark_email/models/usage_retrieve_tenant_usage_response" require_relative "ark_email/models/webhook_create_params" require_relative "ark_email/models/webhook_create_response" require_relative "ark_email/models/webhook_delete_params" @@ -150,6 +167,7 @@ require_relative "ark_email/models" require_relative "ark_email/resources/domains" require_relative "ark_email/resources/emails" +require_relative "ark_email/resources/limits" require_relative "ark_email/resources/logs" require_relative "ark_email/resources/suppressions" require_relative "ark_email/resources/tenants" diff --git a/lib/ark_email/client.rb b/lib/ark_email/client.rb index 5e55f47..bd136d0 100644 --- a/lib/ark_email/client.rb +++ b/lib/ark_email/client.rb @@ -42,6 +42,9 @@ class Client < ArkEmail::Internal::Transport::BaseClient # @return [ArkEmail::Resources::Logs] attr_reader :logs + # @return [ArkEmail::Resources::Limits] + attr_reader :limits + # @return [ArkEmail::Resources::Usage] attr_reader :usage @@ -107,6 +110,7 @@ def initialize( @webhooks = ArkEmail::Resources::Webhooks.new(client: self) @tracking = ArkEmail::Resources::Tracking.new(client: self) @logs = ArkEmail::Resources::Logs.new(client: self) + @limits = ArkEmail::Resources::Limits.new(client: self) @usage = ArkEmail::Resources::Usage.new(client: self) @tenants = ArkEmail::Resources::Tenants.new(client: self) end diff --git a/lib/ark_email/internal/offset_pagination.rb b/lib/ark_email/internal/offset_pagination.rb new file mode 100644 index 0000000..4b6948f --- /dev/null +++ b/lib/ark_email/internal/offset_pagination.rb @@ -0,0 +1,134 @@ +# frozen_string_literal: true + +module ArkEmail + module Internal + # @generic Elem + # + # @example + # if offset_pagination.has_next? + # offset_pagination = offset_pagination.next_page + # end + # + # @example + # offset_pagination.auto_paging_each do |usage| + # puts(usage) + # end + class OffsetPagination + include ArkEmail::Internal::Type::BasePage + + # @return [Data] + attr_accessor :data + + # @return [Boolean] + def next_page? + !data&.tenants.to_a.empty? && (data&.pagination&.offset.to_i + data&.tenants.to_a.size < data&.pagination&.total.to_i) + end + + # @raise [ArkEmail::HTTP::Error] + # @return [self] + def next_page + unless next_page? + message = "No more pages available. Please check #next_page? before calling ##{__method__}" + raise RuntimeError.new(message) + end + + req = ArkEmail::Internal::Util.deep_merge( + @req, + {query: {offset: data&.pagination&.offset.to_i + data&.tenants.to_a.size}} + ) + @client.request(req) + end + + # @param blk [Proc] + # + # @yieldparam [generic] + def auto_paging_each(&blk) + unless block_given? + raise ArgumentError.new("A block must be given to ##{__method__}") + end + + page = self + loop do + page.data&.tenants&.each(&blk) + + break unless page.next_page? + page = page.next_page + end + end + + # @api private + # + # @param client [ArkEmail::Internal::Transport::BaseClient] + # @param req [Hash{Symbol=>Object}] + # @param headers [Hash{String=>String}] + # @param page_data [Hash{Symbol=>Object}] + def initialize(client:, req:, headers:, page_data:) + super + + case page_data + in {data: Hash | nil => data} + if (tenants = data[:tenants]).is_a?(Array) + data = {**data, tenants: tenants.map { ArkEmail::Internal::Type::Converter.coerce(@model, _1) }} + end + @data = ArkEmail::Internal::Type::Converter.coerce(ArkEmail::Internal::OffsetPagination::Data, data) + else + end + end + + # @api private + # + # @return [String] + def inspect + model = ArkEmail::Internal::Type::Converter.inspect(@model, depth: 1) + + "#<#{self.class}[#{model}]:0x#{object_id.to_s(16)}>" + end + + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute pagination + # + # @return [Data::Pagination, nil] + optional :pagination, -> { Data::Pagination } + + # @!attribute tenants + # + # @return [ArrayObject}>, nil] + optional :tenants, + ArkEmail::Internal::Type::ArrayOf[ArkEmail::Internal::Type::HashOf[ArkEmail::Internal::Type::Unknown]] + + # @!method initialize(pagination: nil, tenants: nil) + # @param pagination [Data::Pagination] + # @param tenants [ArrayObject}>] + + # @see Data#pagination + class Pagination < ArkEmail::Internal::Type::BaseModel + # @!attribute has_more + # + # @return [Boolean, nil] + optional :has_more, ArkEmail::Internal::Type::Boolean + + # @!attribute limit + # + # @return [Integer, nil] + optional :limit, Integer + + # @!attribute offset + # + # @return [Integer, nil] + optional :offset, Integer + + # @!attribute total + # + # @return [Integer, nil] + optional :total, Integer + + # @!method initialize(has_more: nil, limit: nil, offset: nil, total: nil) + # @param has_more [Boolean] + # @param limit [Integer] + # @param offset [Integer] + # @param total [Integer] + end + end + end + end +end diff --git a/lib/ark_email/models.rb b/lib/ark_email/models.rb index 7d30915..1c5646a 100644 --- a/lib/ark_email/models.rb +++ b/lib/ark_email/models.rb @@ -41,6 +41,8 @@ module ArkEmail APIMeta = ArkEmail::Models::APIMeta + BulkTenantUsage = ArkEmail::Models::BulkTenantUsage + DNSRecord = ArkEmail::Models::DNSRecord DomainCreateParams = ArkEmail::Models::DomainCreateParams @@ -53,8 +55,12 @@ module ArkEmail DomainVerifyParams = ArkEmail::Models::DomainVerifyParams + EmailCounts = ArkEmail::Models::EmailCounts + EmailListParams = ArkEmail::Models::EmailListParams + EmailRates = ArkEmail::Models::EmailRates + EmailRetrieveDeliveriesParams = ArkEmail::Models::EmailRetrieveDeliveriesParams EmailRetrieveParams = ArkEmail::Models::EmailRetrieveParams @@ -67,6 +73,10 @@ module ArkEmail EmailSendRawParams = ArkEmail::Models::EmailSendRawParams + LimitRetrieveParams = ArkEmail::Models::LimitRetrieveParams + + LimitsData = ArkEmail::Models::LimitsData + LogEntry = ArkEmail::Models::LogEntry LogEntryDetail = ArkEmail::Models::LogEntryDetail @@ -99,6 +109,10 @@ module ArkEmail TenantUpdateParams = ArkEmail::Models::TenantUpdateParams + TenantUsage = ArkEmail::Models::TenantUsage + + TenantUsageTimeseries = ArkEmail::Models::TenantUsageTimeseries + TrackDomain = ArkEmail::Models::TrackDomain TrackingCreateParams = ArkEmail::Models::TrackingCreateParams @@ -113,8 +127,18 @@ module ArkEmail TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams + UsageExportParams = ArkEmail::Models::UsageExportParams + + UsageListByTenantParams = ArkEmail::Models::UsageListByTenantParams + + UsagePeriod = ArkEmail::Models::UsagePeriod + UsageRetrieveParams = ArkEmail::Models::UsageRetrieveParams + UsageRetrieveTenantTimeseriesParams = ArkEmail::Models::UsageRetrieveTenantTimeseriesParams + + UsageRetrieveTenantUsageParams = ArkEmail::Models::UsageRetrieveTenantUsageParams + WebhookCreateParams = ArkEmail::Models::WebhookCreateParams WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams diff --git a/lib/ark_email/models/bulk_tenant_usage.rb b/lib/ark_email/models/bulk_tenant_usage.rb new file mode 100644 index 0000000..c384d7a --- /dev/null +++ b/lib/ark_email/models/bulk_tenant_usage.rb @@ -0,0 +1,177 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + class BulkTenantUsage < ArkEmail::Internal::Type::BaseModel + # @!attribute pagination + # Pagination information for usage queries + # + # @return [ArkEmail::Models::BulkTenantUsage::Pagination] + required :pagination, -> { ArkEmail::BulkTenantUsage::Pagination } + + # @!attribute period + # Time period for usage data + # + # @return [ArkEmail::Models::UsagePeriod] + required :period, -> { ArkEmail::UsagePeriod } + + # @!attribute summary + # Aggregate summary across all tenants + # + # @return [ArkEmail::Models::BulkTenantUsage::Summary] + required :summary, -> { ArkEmail::BulkTenantUsage::Summary } + + # @!attribute tenants + # Array of tenant usage records + # + # @return [Array] + required :tenants, -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::BulkTenantUsage::Tenant] } + + # @!method initialize(pagination:, period:, summary:, tenants:) + # Bulk tenant usage data with pagination + # + # @param pagination [ArkEmail::Models::BulkTenantUsage::Pagination] Pagination information for usage queries + # + # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data + # + # @param summary [ArkEmail::Models::BulkTenantUsage::Summary] Aggregate summary across all tenants + # + # @param tenants [Array] Array of tenant usage records + + # @see ArkEmail::Models::BulkTenantUsage#pagination + class Pagination < ArkEmail::Internal::Type::BaseModel + # @!attribute has_more + # Whether more pages are available + # + # @return [Boolean] + required :has_more, ArkEmail::Internal::Type::Boolean + + # @!attribute limit + # Maximum items per page + # + # @return [Integer] + required :limit, Integer + + # @!attribute offset + # Number of items skipped + # + # @return [Integer] + required :offset, Integer + + # @!attribute total + # Total number of tenants matching the query + # + # @return [Integer] + required :total, Integer + + # @!method initialize(has_more:, limit:, offset:, total:) + # Pagination information for usage queries + # + # @param has_more [Boolean] Whether more pages are available + # + # @param limit [Integer] Maximum items per page + # + # @param offset [Integer] Number of items skipped + # + # @param total [Integer] Total number of tenants matching the query + end + + # @see ArkEmail::Models::BulkTenantUsage#summary + class Summary < ArkEmail::Internal::Type::BaseModel + # @!attribute total_delivered + # Total emails delivered across all tenants + # + # @return [Integer] + required :total_delivered, Integer + + # @!attribute total_sent + # Total emails sent across all tenants + # + # @return [Integer] + required :total_sent, Integer + + # @!attribute total_tenants + # Total number of tenants in the query + # + # @return [Integer] + required :total_tenants, Integer + + # @!method initialize(total_delivered:, total_sent:, total_tenants:) + # Aggregate summary across all tenants + # + # @param total_delivered [Integer] Total emails delivered across all tenants + # + # @param total_sent [Integer] Total emails sent across all tenants + # + # @param total_tenants [Integer] Total number of tenants in the query + end + + class Tenant < ArkEmail::Internal::Type::BaseModel + # @!attribute emails + # Email delivery counts + # + # @return [ArkEmail::Models::EmailCounts] + required :emails, -> { ArkEmail::EmailCounts } + + # @!attribute rates + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @return [ArkEmail::Models::EmailRates] + required :rates, -> { ArkEmail::EmailRates } + + # @!attribute status + # Current tenant status + # + # @return [Symbol, ArkEmail::Models::BulkTenantUsage::Tenant::Status] + required :status, enum: -> { ArkEmail::BulkTenantUsage::Tenant::Status } + + # @!attribute tenant_id + # Unique tenant identifier + # + # @return [String] + required :tenant_id, String + + # @!attribute tenant_name + # Tenant display name + # + # @return [String] + required :tenant_name, String + + # @!attribute external_id + # Your external ID for this tenant + # + # @return [String, nil] + optional :external_id, String, nil?: true + + # @!method initialize(emails:, rates:, status:, tenant_id:, tenant_name:, external_id: nil) + # Usage record for a single tenant in bulk response + # + # @param emails [ArkEmail::Models::EmailCounts] Email delivery counts + # + # @param rates [ArkEmail::Models::EmailRates] Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @param status [Symbol, ArkEmail::Models::BulkTenantUsage::Tenant::Status] Current tenant status + # + # @param tenant_id [String] Unique tenant identifier + # + # @param tenant_name [String] Tenant display name + # + # @param external_id [String, nil] Your external ID for this tenant + + # Current tenant status + # + # @see ArkEmail::Models::BulkTenantUsage::Tenant#status + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE = :active + SUSPENDED = :suspended + ARCHIVED = :archived + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/email_counts.rb b/lib/ark_email/models/email_counts.rb new file mode 100644 index 0000000..3869ea9 --- /dev/null +++ b/lib/ark_email/models/email_counts.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + class EmailCounts < ArkEmail::Internal::Type::BaseModel + # @!attribute bounced + # Emails that bounced + # + # @return [Integer] + required :bounced, Integer + + # @!attribute delivered + # Emails successfully delivered + # + # @return [Integer] + required :delivered, Integer + + # @!attribute hard_failed + # Emails that hard-failed (permanent failures) + # + # @return [Integer] + required :hard_failed, Integer + + # @!attribute held + # Emails currently held for review + # + # @return [Integer] + required :held, Integer + + # @!attribute sent + # Total emails sent + # + # @return [Integer] + required :sent, Integer + + # @!attribute soft_failed + # Emails that soft-failed (temporary failures, may be retried) + # + # @return [Integer] + required :soft_failed, Integer + + # @!method initialize(bounced:, delivered:, hard_failed:, held:, sent:, soft_failed:) + # Email delivery counts + # + # @param bounced [Integer] Emails that bounced + # + # @param delivered [Integer] Emails successfully delivered + # + # @param hard_failed [Integer] Emails that hard-failed (permanent failures) + # + # @param held [Integer] Emails currently held for review + # + # @param sent [Integer] Total emails sent + # + # @param soft_failed [Integer] Emails that soft-failed (temporary failures, may be retried) + end + end +end diff --git a/lib/ark_email/models/email_rates.rb b/lib/ark_email/models/email_rates.rb new file mode 100644 index 0000000..a80e561 --- /dev/null +++ b/lib/ark_email/models/email_rates.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + class EmailRates < ArkEmail::Internal::Type::BaseModel + # @!attribute bounce_rate + # Percentage of sent emails that bounced (0-1) + # + # @return [Float] + required :bounce_rate, Float + + # @!attribute delivery_rate + # Percentage of sent emails that were delivered (0-1) + # + # @return [Float] + required :delivery_rate, Float + + # @!method initialize(bounce_rate:, delivery_rate:) + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @param bounce_rate [Float] Percentage of sent emails that bounced (0-1) + # + # @param delivery_rate [Float] Percentage of sent emails that were delivered (0-1) + end + end +end diff --git a/lib/ark_email/models/email_retrieve_deliveries_response.rb b/lib/ark_email/models/email_retrieve_deliveries_response.rb index 71535cd..22708a3 100644 --- a/lib/ark_email/models/email_retrieve_deliveries_response.rb +++ b/lib/ark_email/models/email_retrieve_deliveries_response.rb @@ -33,7 +33,7 @@ class Data < ArkEmail::Internal::Type::BaseModel required :id, String # @!attribute can_retry_manually - # Whether the message can be manually retried via `POST /emails/{id}/retry`. + # Whether the message can be manually retried via `POST /emails/{emailId}/retry`. # `true` when the raw message content is still available (not expired). Messages # older than the retention period cannot be retried. # @@ -77,7 +77,7 @@ class Data < ArkEmail::Internal::Type::BaseModel # # @param id [String] Message identifier (token) # - # @param can_retry_manually [Boolean] Whether the message can be manually retried via `POST /emails/{id}/retry`. + # @param can_retry_manually [Boolean] Whether the message can be manually retried via `POST /emails/{emailId}/retry`. # # @param deliveries [Array] Chronological list of delivery attempts for this message. # diff --git a/lib/ark_email/models/limit_retrieve_params.rb b/lib/ark_email/models/limit_retrieve_params.rb new file mode 100644 index 0000000..9280b30 --- /dev/null +++ b/lib/ark_email/models/limit_retrieve_params.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Limits#retrieve + class LimitRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end +end diff --git a/lib/ark_email/models/limit_retrieve_response.rb b/lib/ark_email/models/limit_retrieve_response.rb new file mode 100644 index 0000000..841f46a --- /dev/null +++ b/lib/ark_email/models/limit_retrieve_response.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Limits#retrieve + class LimitRetrieveResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # Current usage and limit information + # + # @return [ArkEmail::Models::LimitsData] + required :data, -> { ArkEmail::LimitsData } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Account rate limits and send limits response + # + # @param data [ArkEmail::Models::LimitsData] Current usage and limit information + # + # @param meta [ArkEmail::Models::APIMeta] + # + # @param success [Boolean, true] + end + end +end diff --git a/lib/ark_email/models/limits_data.rb b/lib/ark_email/models/limits_data.rb new file mode 100644 index 0000000..f465412 --- /dev/null +++ b/lib/ark_email/models/limits_data.rb @@ -0,0 +1,234 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + class LimitsData < ArkEmail::Internal::Type::BaseModel + # @!attribute billing + # Billing and credit information + # + # @return [ArkEmail::Models::LimitsData::Billing, nil] + required :billing, -> { ArkEmail::LimitsData::Billing }, nil?: true + + # @!attribute rate_limit + # API rate limit status + # + # @return [ArkEmail::Models::LimitsData::RateLimit] + required :rate_limit, -> { ArkEmail::LimitsData::RateLimit }, api_name: :rateLimit + + # @!attribute send_limit + # Email send limit status (hourly cap) + # + # @return [ArkEmail::Models::LimitsData::SendLimit, nil] + required :send_limit, -> { ArkEmail::LimitsData::SendLimit }, api_name: :sendLimit, nil?: true + + # @!method initialize(billing:, rate_limit:, send_limit:) + # Current usage and limit information + # + # @param billing [ArkEmail::Models::LimitsData::Billing, nil] Billing and credit information + # + # @param rate_limit [ArkEmail::Models::LimitsData::RateLimit] API rate limit status + # + # @param send_limit [ArkEmail::Models::LimitsData::SendLimit, nil] Email send limit status (hourly cap) + + # @see ArkEmail::Models::LimitsData#billing + class Billing < ArkEmail::Internal::Type::BaseModel + # @!attribute auto_recharge + # Auto-recharge configuration + # + # @return [ArkEmail::Models::LimitsData::Billing::AutoRecharge] + required :auto_recharge, -> { ArkEmail::LimitsData::Billing::AutoRecharge }, api_name: :autoRecharge + + # @!attribute credit_balance + # Current credit balance as formatted string (e.g., "25.50") + # + # @return [String] + required :credit_balance, String, api_name: :creditBalance + + # @!attribute credit_balance_cents + # Current credit balance in cents for precise calculations + # + # @return [Integer] + required :credit_balance_cents, Integer, api_name: :creditBalanceCents + + # @!attribute has_payment_method + # Whether a payment method is configured + # + # @return [Boolean] + required :has_payment_method, ArkEmail::Internal::Type::Boolean, api_name: :hasPaymentMethod + + # @!method initialize(auto_recharge:, credit_balance:, credit_balance_cents:, has_payment_method:) + # Billing and credit information + # + # @param auto_recharge [ArkEmail::Models::LimitsData::Billing::AutoRecharge] Auto-recharge configuration + # + # @param credit_balance [String] Current credit balance as formatted string (e.g., "25.50") + # + # @param credit_balance_cents [Integer] Current credit balance in cents for precise calculations + # + # @param has_payment_method [Boolean] Whether a payment method is configured + + # @see ArkEmail::Models::LimitsData::Billing#auto_recharge + class AutoRecharge < ArkEmail::Internal::Type::BaseModel + # @!attribute amount + # Amount to recharge when triggered + # + # @return [String] + required :amount, String + + # @!attribute enabled + # Whether auto-recharge is enabled + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute threshold + # Balance threshold that triggers recharge + # + # @return [String] + required :threshold, String + + # @!method initialize(amount:, enabled:, threshold:) + # Auto-recharge configuration + # + # @param amount [String] Amount to recharge when triggered + # + # @param enabled [Boolean] Whether auto-recharge is enabled + # + # @param threshold [String] Balance threshold that triggers recharge + end + end + + # @see ArkEmail::Models::LimitsData#rate_limit + class RateLimit < ArkEmail::Internal::Type::BaseModel + # @!attribute limit + # Maximum requests allowed per period + # + # @return [Integer] + required :limit, Integer + + # @!attribute period + # Time period for the limit + # + # @return [Symbol, ArkEmail::Models::LimitsData::RateLimit::Period] + required :period, enum: -> { ArkEmail::LimitsData::RateLimit::Period } + + # @!attribute remaining + # Requests remaining in current window + # + # @return [Integer] + required :remaining, Integer + + # @!attribute reset + # Unix timestamp when the limit resets + # + # @return [Integer] + required :reset, Integer + + # @!method initialize(limit:, period:, remaining:, reset:) + # API rate limit status + # + # @param limit [Integer] Maximum requests allowed per period + # + # @param period [Symbol, ArkEmail::Models::LimitsData::RateLimit::Period] Time period for the limit + # + # @param remaining [Integer] Requests remaining in current window + # + # @param reset [Integer] Unix timestamp when the limit resets + + # Time period for the limit + # + # @see ArkEmail::Models::LimitsData::RateLimit#period + module Period + extend ArkEmail::Internal::Type::Enum + + SECOND = :second + + # @!method self.values + # @return [Array] + end + end + + # @see ArkEmail::Models::LimitsData#send_limit + class SendLimit < ArkEmail::Internal::Type::BaseModel + # @!attribute approaching + # Whether approaching the limit (>90%) + # + # @return [Boolean] + required :approaching, ArkEmail::Internal::Type::Boolean + + # @!attribute exceeded + # Whether the limit has been exceeded + # + # @return [Boolean] + required :exceeded, ArkEmail::Internal::Type::Boolean + + # @!attribute limit + # Maximum emails allowed per hour (null = unlimited) + # + # @return [Integer, nil] + required :limit, Integer, nil?: true + + # @!attribute period + # Time period for the limit + # + # @return [Symbol, ArkEmail::Models::LimitsData::SendLimit::Period] + required :period, enum: -> { ArkEmail::LimitsData::SendLimit::Period } + + # @!attribute remaining + # Emails remaining in current period (null if unlimited) + # + # @return [Integer, nil] + required :remaining, Integer, nil?: true + + # @!attribute resets_at + # ISO timestamp when the limit window resets (top of next hour) + # + # @return [Time] + required :resets_at, Time, api_name: :resetsAt + + # @!attribute usage_percent + # Usage as a percentage (null if unlimited) + # + # @return [Float, nil] + required :usage_percent, Float, api_name: :usagePercent, nil?: true + + # @!attribute used + # Emails sent in current period + # + # @return [Integer] + required :used, Integer + + # @!method initialize(approaching:, exceeded:, limit:, period:, remaining:, resets_at:, usage_percent:, used:) + # Email send limit status (hourly cap) + # + # @param approaching [Boolean] Whether approaching the limit (>90%) + # + # @param exceeded [Boolean] Whether the limit has been exceeded + # + # @param limit [Integer, nil] Maximum emails allowed per hour (null = unlimited) + # + # @param period [Symbol, ArkEmail::Models::LimitsData::SendLimit::Period] Time period for the limit + # + # @param remaining [Integer, nil] Emails remaining in current period (null if unlimited) + # + # @param resets_at [Time] ISO timestamp when the limit window resets (top of next hour) + # + # @param usage_percent [Float, nil] Usage as a percentage (null if unlimited) + # + # @param used [Integer] Emails sent in current period + + # Time period for the limit + # + # @see ArkEmail::Models::LimitsData::SendLimit#period + module Period + extend ArkEmail::Internal::Type::Enum + + HOUR = :hour + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenant_usage.rb b/lib/ark_email/models/tenant_usage.rb new file mode 100644 index 0000000..f1bc8a4 --- /dev/null +++ b/lib/ark_email/models/tenant_usage.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + class TenantUsage < ArkEmail::Internal::Type::BaseModel + # @!attribute emails + # Email delivery counts + # + # @return [ArkEmail::Models::EmailCounts] + required :emails, -> { ArkEmail::EmailCounts } + + # @!attribute period + # Time period for usage data + # + # @return [ArkEmail::Models::UsagePeriod] + required :period, -> { ArkEmail::UsagePeriod } + + # @!attribute rates + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @return [ArkEmail::Models::EmailRates] + required :rates, -> { ArkEmail::EmailRates } + + # @!attribute tenant_id + # Unique tenant identifier + # + # @return [String] + required :tenant_id, String + + # @!attribute tenant_name + # Tenant display name + # + # @return [String] + required :tenant_name, String + + # @!attribute external_id + # Your external ID for this tenant (from metadata) + # + # @return [String, nil] + optional :external_id, String, nil?: true + + # @!method initialize(emails:, period:, rates:, tenant_id:, tenant_name:, external_id: nil) + # Tenant usage statistics + # + # @param emails [ArkEmail::Models::EmailCounts] Email delivery counts + # + # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data + # + # @param rates [ArkEmail::Models::EmailRates] Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @param tenant_id [String] Unique tenant identifier + # + # @param tenant_name [String] Tenant display name + # + # @param external_id [String, nil] Your external ID for this tenant (from metadata) + end + end +end diff --git a/lib/ark_email/models/tenant_usage_timeseries.rb b/lib/ark_email/models/tenant_usage_timeseries.rb new file mode 100644 index 0000000..8b81fca --- /dev/null +++ b/lib/ark_email/models/tenant_usage_timeseries.rb @@ -0,0 +1,126 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # Array of time-bucketed data points + # + # @return [Array] + required :data, -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::TenantUsageTimeseries::Data] } + + # @!attribute granularity + # Time bucket granularity + # + # @return [Symbol, ArkEmail::Models::TenantUsageTimeseries::Granularity] + required :granularity, enum: -> { ArkEmail::TenantUsageTimeseries::Granularity } + + # @!attribute period + # Time period for usage data + # + # @return [ArkEmail::Models::UsagePeriod] + required :period, -> { ArkEmail::UsagePeriod } + + # @!attribute tenant_id + # Unique tenant identifier + # + # @return [String] + required :tenant_id, String + + # @!attribute tenant_name + # Tenant display name + # + # @return [String] + required :tenant_name, String + + # @!method initialize(data:, granularity:, period:, tenant_id:, tenant_name:) + # Timeseries usage statistics + # + # @param data [Array] Array of time-bucketed data points + # + # @param granularity [Symbol, ArkEmail::Models::TenantUsageTimeseries::Granularity] Time bucket granularity + # + # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data + # + # @param tenant_id [String] Unique tenant identifier + # + # @param tenant_name [String] Tenant display name + + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute bounced + # Bounces in this bucket + # + # @return [Integer] + required :bounced, Integer + + # @!attribute delivered + # Emails delivered in this bucket + # + # @return [Integer] + required :delivered, Integer + + # @!attribute hard_failed + # Hard failures in this bucket + # + # @return [Integer] + required :hard_failed, Integer + + # @!attribute held + # Emails held in this bucket + # + # @return [Integer] + required :held, Integer + + # @!attribute sent + # Emails sent in this bucket + # + # @return [Integer] + required :sent, Integer + + # @!attribute soft_failed + # Soft failures in this bucket + # + # @return [Integer] + required :soft_failed, Integer + + # @!attribute timestamp + # Start of time bucket + # + # @return [Time] + required :timestamp, Time + + # @!method initialize(bounced:, delivered:, hard_failed:, held:, sent:, soft_failed:, timestamp:) + # Single timeseries data point + # + # @param bounced [Integer] Bounces in this bucket + # + # @param delivered [Integer] Emails delivered in this bucket + # + # @param hard_failed [Integer] Hard failures in this bucket + # + # @param held [Integer] Emails held in this bucket + # + # @param sent [Integer] Emails sent in this bucket + # + # @param soft_failed [Integer] Soft failures in this bucket + # + # @param timestamp [Time] Start of time bucket + end + + # Time bucket granularity + # + # @see ArkEmail::Models::TenantUsageTimeseries#granularity + module Granularity + extend ArkEmail::Internal::Type::Enum + + HOUR = :hour + DAY = :day + WEEK = :week + MONTH = :month + + # @!method self.values + # @return [Array] + end + end + end +end diff --git a/lib/ark_email/models/usage_export_params.rb b/lib/ark_email/models/usage_export_params.rb new file mode 100644 index 0000000..f667954 --- /dev/null +++ b/lib/ark_email/models/usage_export_params.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Usage#export + class UsageExportParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute format_ + # Export format + # + # @return [Symbol, ArkEmail::Models::UsageExportParams::Format, nil] + optional :format_, enum: -> { ArkEmail::UsageExportParams::Format } + + # @!attribute min_sent + # Only include tenants with at least this many emails sent + # + # @return [Integer, nil] + optional :min_sent, Integer + + # @!attribute period + # Time period for export. Defaults to current month. + # + # @return [String, nil] + optional :period, String + + # @!attribute status + # Filter by tenant status + # + # @return [Symbol, ArkEmail::Models::UsageExportParams::Status, nil] + optional :status, enum: -> { ArkEmail::UsageExportParams::Status } + + # @!attribute timezone + # Timezone for period calculations (IANA format). Defaults to UTC. + # + # @return [String, nil] + optional :timezone, String + + # @!method initialize(format_: nil, min_sent: nil, period: nil, status: nil, timezone: nil, request_options: {}) + # @param format_ [Symbol, ArkEmail::Models::UsageExportParams::Format] Export format + # + # @param min_sent [Integer] Only include tenants with at least this many emails sent + # + # @param period [String] Time period for export. Defaults to current month. + # + # @param status [Symbol, ArkEmail::Models::UsageExportParams::Status] Filter by tenant status + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Export format + module Format + extend ArkEmail::Internal::Type::Enum + + CSV = :csv + JSONL = :jsonl + JSON = :json + + # @!method self.values + # @return [Array] + end + + # Filter by tenant status + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE = :active + SUSPENDED = :suspended + ARCHIVED = :archived + + # @!method self.values + # @return [Array] + end + end + end +end diff --git a/lib/ark_email/models/usage_export_response.rb b/lib/ark_email/models/usage_export_response.rb new file mode 100644 index 0000000..1d2df16 --- /dev/null +++ b/lib/ark_email/models/usage_export_response.rb @@ -0,0 +1,123 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + class UsageExportResponseItem < ArkEmail::Internal::Type::BaseModel + # @!attribute bounce_rate + # Bounce rate (0-1) + # + # @return [Float] + required :bounce_rate, Float + + # @!attribute bounced + # Emails that bounced + # + # @return [Integer] + required :bounced, Integer + + # @!attribute delivered + # Emails successfully delivered + # + # @return [Integer] + required :delivered, Integer + + # @!attribute delivery_rate + # Delivery rate (0-1) + # + # @return [Float] + required :delivery_rate, Float + + # @!attribute hard_failed + # Emails that hard-failed + # + # @return [Integer] + required :hard_failed, Integer + + # @!attribute held + # Emails currently held + # + # @return [Integer] + required :held, Integer + + # @!attribute sent + # Total emails sent + # + # @return [Integer] + required :sent, Integer + + # @!attribute soft_failed + # Emails that soft-failed + # + # @return [Integer] + required :soft_failed, Integer + + # @!attribute status + # Current tenant status + # + # @return [Symbol, ArkEmail::Models::UsageExportResponseItem::Status] + required :status, enum: -> { ArkEmail::Models::UsageExportResponseItem::Status } + + # @!attribute tenant_id + # Unique tenant identifier + # + # @return [String] + required :tenant_id, String + + # @!attribute tenant_name + # Tenant display name + # + # @return [String] + required :tenant_name, String + + # @!attribute external_id + # Your external ID for this tenant + # + # @return [String, nil] + optional :external_id, String, nil?: true + + # @!method initialize(bounce_rate:, bounced:, delivered:, delivery_rate:, hard_failed:, held:, sent:, soft_failed:, status:, tenant_id:, tenant_name:, external_id: nil) + # Single row in usage export (JSON format) + # + # @param bounce_rate [Float] Bounce rate (0-1) + # + # @param bounced [Integer] Emails that bounced + # + # @param delivered [Integer] Emails successfully delivered + # + # @param delivery_rate [Float] Delivery rate (0-1) + # + # @param hard_failed [Integer] Emails that hard-failed + # + # @param held [Integer] Emails currently held + # + # @param sent [Integer] Total emails sent + # + # @param soft_failed [Integer] Emails that soft-failed + # + # @param status [Symbol, ArkEmail::Models::UsageExportResponseItem::Status] Current tenant status + # + # @param tenant_id [String] Unique tenant identifier + # + # @param tenant_name [String] Tenant display name + # + # @param external_id [String, nil] Your external ID for this tenant + + # Current tenant status + # + # @see ArkEmail::Models::UsageExportResponseItem#status + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE = :active + SUSPENDED = :suspended + ARCHIVED = :archived + + # @!method self.values + # @return [Array] + end + end + + # @type [ArkEmail::Internal::Type::Converter] + UsageExportResponse = ArkEmail::Internal::Type::ArrayOf[-> { ArkEmail::Models::UsageExportResponseItem }] + end +end diff --git a/lib/ark_email/models/usage_list_by_tenant_params.rb b/lib/ark_email/models/usage_list_by_tenant_params.rb new file mode 100644 index 0000000..e25c248 --- /dev/null +++ b/lib/ark_email/models/usage_list_by_tenant_params.rb @@ -0,0 +1,102 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Usage#list_by_tenant + class UsageListByTenantParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute limit + # Maximum number of tenants to return (1-100) + # + # @return [Integer, nil] + optional :limit, Integer + + # @!attribute min_sent + # Only include tenants with at least this many emails sent + # + # @return [Integer, nil] + optional :min_sent, Integer + + # @!attribute offset + # Number of tenants to skip for pagination + # + # @return [Integer, nil] + optional :offset, Integer + + # @!attribute period + # Time period for usage data. Defaults to current month. + # + # @return [String, nil] + optional :period, String + + # @!attribute sort + # Sort order for results. Prefix with `-` for descending order. + # + # @return [Symbol, ArkEmail::Models::UsageListByTenantParams::Sort, nil] + optional :sort, enum: -> { ArkEmail::UsageListByTenantParams::Sort } + + # @!attribute status + # Filter by tenant status + # + # @return [Symbol, ArkEmail::Models::UsageListByTenantParams::Status, nil] + optional :status, enum: -> { ArkEmail::UsageListByTenantParams::Status } + + # @!attribute timezone + # Timezone for period calculations (IANA format). Defaults to UTC. + # + # @return [String, nil] + optional :timezone, String + + # @!method initialize(limit: nil, min_sent: nil, offset: nil, period: nil, sort: nil, status: nil, timezone: nil, request_options: {}) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::UsageListByTenantParams} for more details. + # + # @param limit [Integer] Maximum number of tenants to return (1-100) + # + # @param min_sent [Integer] Only include tenants with at least this many emails sent + # + # @param offset [Integer] Number of tenants to skip for pagination + # + # @param period [String] Time period for usage data. Defaults to current month. + # + # @param sort [Symbol, ArkEmail::Models::UsageListByTenantParams::Sort] Sort order for results. Prefix with `-` for descending order. + # + # @param status [Symbol, ArkEmail::Models::UsageListByTenantParams::Status] Filter by tenant status + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Sort order for results. Prefix with `-` for descending order. + module Sort + extend ArkEmail::Internal::Type::Enum + + SENT = :sent + MINUS_SENT = :"-sent" + DELIVERED = :delivered + MINUS_DELIVERED = :"-delivered" + BOUNCE_RATE = :bounce_rate + MINUS_BOUNCE_RATE = :"-bounce_rate" + NAME = :name + MINUS_NAME = :"-name" + + # @!method self.values + # @return [Array] + end + + # Filter by tenant status + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE = :active + SUSPENDED = :suspended + ARCHIVED = :archived + + # @!method self.values + # @return [Array] + end + end + end +end diff --git a/lib/ark_email/models/usage_period.rb b/lib/ark_email/models/usage_period.rb new file mode 100644 index 0000000..b7fdc09 --- /dev/null +++ b/lib/ark_email/models/usage_period.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + class UsagePeriod < ArkEmail::Internal::Type::BaseModel + # @!attribute end_ + # Period end (inclusive) + # + # @return [Time] + required :end_, Time, api_name: :end + + # @!attribute start + # Period start (inclusive) + # + # @return [Time] + required :start, Time + + # @!method initialize(end_:, start:) + # Time period for usage data + # + # @param end_ [Time] Period end (inclusive) + # + # @param start [Time] Period start (inclusive) + end + end +end diff --git a/lib/ark_email/models/usage_retrieve_response.rb b/lib/ark_email/models/usage_retrieve_response.rb index 0d9fd61..e0b1650 100644 --- a/lib/ark_email/models/usage_retrieve_response.rb +++ b/lib/ark_email/models/usage_retrieve_response.rb @@ -7,8 +7,8 @@ class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel # @!attribute data # Current usage and limit information # - # @return [ArkEmail::Models::UsageRetrieveResponse::Data] - required :data, -> { ArkEmail::Models::UsageRetrieveResponse::Data } + # @return [ArkEmail::Models::LimitsData] + required :data, -> { ArkEmail::LimitsData } # @!attribute meta # @@ -23,248 +23,11 @@ class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel # @!method initialize(data:, meta:, success: true) # Account usage and limits response # - # @param data [ArkEmail::Models::UsageRetrieveResponse::Data] Current usage and limit information + # @param data [ArkEmail::Models::LimitsData] Current usage and limit information # # @param meta [ArkEmail::Models::APIMeta] # # @param success [Boolean, true] - - # @see ArkEmail::Models::UsageRetrieveResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute billing - # Billing and credit information - # - # @return [ArkEmail::Models::UsageRetrieveResponse::Data::Billing, nil] - required :billing, -> { ArkEmail::Models::UsageRetrieveResponse::Data::Billing }, nil?: true - - # @!attribute rate_limit - # API rate limit status - # - # @return [ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit] - required :rate_limit, - -> { ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit }, - api_name: :rateLimit - - # @!attribute send_limit - # Email send limit status (hourly cap) - # - # @return [ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit, nil] - required :send_limit, - -> { ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit }, - api_name: :sendLimit, - nil?: true - - # @!method initialize(billing:, rate_limit:, send_limit:) - # Current usage and limit information - # - # @param billing [ArkEmail::Models::UsageRetrieveResponse::Data::Billing, nil] Billing and credit information - # - # @param rate_limit [ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit] API rate limit status - # - # @param send_limit [ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit, nil] Email send limit status (hourly cap) - - # @see ArkEmail::Models::UsageRetrieveResponse::Data#billing - class Billing < ArkEmail::Internal::Type::BaseModel - # @!attribute auto_recharge - # Auto-recharge configuration - # - # @return [ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge] - required :auto_recharge, - -> { ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge }, - api_name: :autoRecharge - - # @!attribute credit_balance - # Current credit balance as formatted string (e.g., "25.50") - # - # @return [String] - required :credit_balance, String, api_name: :creditBalance - - # @!attribute credit_balance_cents - # Current credit balance in cents for precise calculations - # - # @return [Integer] - required :credit_balance_cents, Integer, api_name: :creditBalanceCents - - # @!attribute has_payment_method - # Whether a payment method is configured - # - # @return [Boolean] - required :has_payment_method, ArkEmail::Internal::Type::Boolean, api_name: :hasPaymentMethod - - # @!method initialize(auto_recharge:, credit_balance:, credit_balance_cents:, has_payment_method:) - # Billing and credit information - # - # @param auto_recharge [ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge] Auto-recharge configuration - # - # @param credit_balance [String] Current credit balance as formatted string (e.g., "25.50") - # - # @param credit_balance_cents [Integer] Current credit balance in cents for precise calculations - # - # @param has_payment_method [Boolean] Whether a payment method is configured - - # @see ArkEmail::Models::UsageRetrieveResponse::Data::Billing#auto_recharge - class AutoRecharge < ArkEmail::Internal::Type::BaseModel - # @!attribute amount - # Amount to recharge when triggered - # - # @return [String] - required :amount, String - - # @!attribute enabled - # Whether auto-recharge is enabled - # - # @return [Boolean] - required :enabled, ArkEmail::Internal::Type::Boolean - - # @!attribute threshold - # Balance threshold that triggers recharge - # - # @return [String] - required :threshold, String - - # @!method initialize(amount:, enabled:, threshold:) - # Auto-recharge configuration - # - # @param amount [String] Amount to recharge when triggered - # - # @param enabled [Boolean] Whether auto-recharge is enabled - # - # @param threshold [String] Balance threshold that triggers recharge - end - end - - # @see ArkEmail::Models::UsageRetrieveResponse::Data#rate_limit - class RateLimit < ArkEmail::Internal::Type::BaseModel - # @!attribute limit - # Maximum requests allowed per period - # - # @return [Integer] - required :limit, Integer - - # @!attribute period - # Time period for the limit - # - # @return [Symbol, ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period] - required :period, enum: -> { ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period } - - # @!attribute remaining - # Requests remaining in current window - # - # @return [Integer] - required :remaining, Integer - - # @!attribute reset - # Unix timestamp when the limit resets - # - # @return [Integer] - required :reset, Integer - - # @!method initialize(limit:, period:, remaining:, reset:) - # API rate limit status - # - # @param limit [Integer] Maximum requests allowed per period - # - # @param period [Symbol, ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period] Time period for the limit - # - # @param remaining [Integer] Requests remaining in current window - # - # @param reset [Integer] Unix timestamp when the limit resets - - # Time period for the limit - # - # @see ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit#period - module Period - extend ArkEmail::Internal::Type::Enum - - SECOND = :second - - # @!method self.values - # @return [Array] - end - end - - # @see ArkEmail::Models::UsageRetrieveResponse::Data#send_limit - class SendLimit < ArkEmail::Internal::Type::BaseModel - # @!attribute approaching - # Whether approaching the limit (>90%) - # - # @return [Boolean] - required :approaching, ArkEmail::Internal::Type::Boolean - - # @!attribute exceeded - # Whether the limit has been exceeded - # - # @return [Boolean] - required :exceeded, ArkEmail::Internal::Type::Boolean - - # @!attribute limit - # Maximum emails allowed per hour (null = unlimited) - # - # @return [Integer, nil] - required :limit, Integer, nil?: true - - # @!attribute period - # Time period for the limit - # - # @return [Symbol, ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period] - required :period, enum: -> { ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period } - - # @!attribute remaining - # Emails remaining in current period (null if unlimited) - # - # @return [Integer, nil] - required :remaining, Integer, nil?: true - - # @!attribute resets_at - # ISO timestamp when the limit window resets (top of next hour) - # - # @return [Time] - required :resets_at, Time, api_name: :resetsAt - - # @!attribute usage_percent - # Usage as a percentage (null if unlimited) - # - # @return [Float, nil] - required :usage_percent, Float, api_name: :usagePercent, nil?: true - - # @!attribute used - # Emails sent in current period - # - # @return [Integer] - required :used, Integer - - # @!method initialize(approaching:, exceeded:, limit:, period:, remaining:, resets_at:, usage_percent:, used:) - # Email send limit status (hourly cap) - # - # @param approaching [Boolean] Whether approaching the limit (>90%) - # - # @param exceeded [Boolean] Whether the limit has been exceeded - # - # @param limit [Integer, nil] Maximum emails allowed per hour (null = unlimited) - # - # @param period [Symbol, ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period] Time period for the limit - # - # @param remaining [Integer, nil] Emails remaining in current period (null if unlimited) - # - # @param resets_at [Time] ISO timestamp when the limit window resets (top of next hour) - # - # @param usage_percent [Float, nil] Usage as a percentage (null if unlimited) - # - # @param used [Integer] Emails sent in current period - - # Time period for the limit - # - # @see ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit#period - module Period - extend ArkEmail::Internal::Type::Enum - - HOUR = :hour - - # @!method self.values - # @return [Array] - end - end - end end end end diff --git a/lib/ark_email/models/usage_retrieve_tenant_timeseries_params.rb b/lib/ark_email/models/usage_retrieve_tenant_timeseries_params.rb new file mode 100644 index 0000000..27048ed --- /dev/null +++ b/lib/ark_email/models/usage_retrieve_tenant_timeseries_params.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Usage#retrieve_tenant_timeseries + class UsageRetrieveTenantTimeseriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute granularity + # Time bucket size for data points + # + # @return [Symbol, ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::Granularity, nil] + optional :granularity, enum: -> { ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity } + + # @!attribute period + # Time period for timeseries data. Defaults to current month. + # + # @return [String, nil] + optional :period, String + + # @!attribute timezone + # Timezone for period calculations (IANA format). Defaults to UTC. + # + # @return [String, nil] + optional :timezone, String + + # @!method initialize(granularity: nil, period: nil, timezone: nil, request_options: {}) + # @param granularity [Symbol, ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::Granularity] Time bucket size for data points + # + # @param period [String] Time period for timeseries data. Defaults to current month. + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Time bucket size for data points + module Granularity + extend ArkEmail::Internal::Type::Enum + + HOUR = :hour + DAY = :day + WEEK = :week + MONTH = :month + + # @!method self.values + # @return [Array] + end + end + end +end diff --git a/lib/ark_email/models/usage_retrieve_tenant_timeseries_response.rb b/lib/ark_email/models/usage_retrieve_tenant_timeseries_response.rb new file mode 100644 index 0000000..44c1965 --- /dev/null +++ b/lib/ark_email/models/usage_retrieve_tenant_timeseries_response.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Usage#retrieve_tenant_timeseries + class UsageRetrieveTenantTimeseriesResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # Timeseries usage statistics + # + # @return [ArkEmail::Models::TenantUsageTimeseries] + required :data, -> { ArkEmail::TenantUsageTimeseries } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Timeseries usage data for a tenant + # + # @param data [ArkEmail::Models::TenantUsageTimeseries] Timeseries usage statistics + # + # @param meta [ArkEmail::Models::APIMeta] + # + # @param success [Boolean, true] + end + end +end diff --git a/lib/ark_email/models/usage_retrieve_tenant_usage_params.rb b/lib/ark_email/models/usage_retrieve_tenant_usage_params.rb new file mode 100644 index 0000000..6eb0e90 --- /dev/null +++ b/lib/ark_email/models/usage_retrieve_tenant_usage_params.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Usage#retrieve_tenant_usage + class UsageRetrieveTenantUsageParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute period + # Time period for usage data. Defaults to current month. + # + # **Formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` + # - Range: `2024-01-01..2024-01-31` + # - Day: `2024-01-15` + # + # @return [String, nil] + optional :period, String + + # @!attribute timezone + # Timezone for period calculations (IANA format). Defaults to UTC. + # + # @return [String, nil] + optional :timezone, String + + # @!method initialize(period: nil, timezone: nil, request_options: {}) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::UsageRetrieveTenantUsageParams} for more details. + # + # @param period [String] Time period for usage data. Defaults to current month. + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end +end diff --git a/lib/ark_email/models/usage_retrieve_tenant_usage_response.rb b/lib/ark_email/models/usage_retrieve_tenant_usage_response.rb new file mode 100644 index 0000000..1c32146 --- /dev/null +++ b/lib/ark_email/models/usage_retrieve_tenant_usage_response.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Usage#retrieve_tenant_usage + class UsageRetrieveTenantUsageResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # Tenant usage statistics + # + # @return [ArkEmail::Models::TenantUsage] + required :data, -> { ArkEmail::TenantUsage } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Usage statistics for a single tenant + # + # @param data [ArkEmail::Models::TenantUsage] Tenant usage statistics + # + # @param meta [ArkEmail::Models::APIMeta] + # + # @param success [Boolean, true] + end + end +end diff --git a/lib/ark_email/resources/emails.rb b/lib/ark_email/resources/emails.rb index 6e304e0..4fe64e3 100644 --- a/lib/ark_email/resources/emails.rb +++ b/lib/ark_email/resources/emails.rb @@ -12,9 +12,9 @@ class Emails # Use the `expand` parameter to include additional data like the HTML/text body, # headers, or delivery attempts. # - # @overload retrieve(id, expand: nil, request_options: {}) + # @overload retrieve(email_id, expand: nil, request_options: {}) # - # @param id [String] The email identifier (token returned from send response) + # @param email_id [String] The email identifier (token returned from send response) # # @param expand [String] Comma-separated list of fields to include: # @@ -23,11 +23,11 @@ class Emails # @return [ArkEmail::Models::EmailRetrieveResponse] # # @see ArkEmail::Models::EmailRetrieveParams - def retrieve(id, params = {}) + def retrieve(email_id, params = {}) parsed, options = ArkEmail::EmailRetrieveParams.dump_request(params) @client.request( method: :get, - path: ["emails/%1$s", id], + path: ["emails/%1$s", email_id], query: parsed, model: ArkEmail::Models::EmailRetrieveResponse, options: options @@ -44,7 +44,7 @@ def retrieve(id, params = {}) # # **Related endpoints:** # - # - `GET /emails/{id}` - Get full details of a specific email + # - `GET /emails/{emailId}` - Get full details of a specific email # - `POST /emails` - Send a new email # # @overload list(after: nil, before: nil, from: nil, page: nil, per_page: nil, status: nil, tag: nil, to: nil, request_options: {}) @@ -118,23 +118,23 @@ def list(params = {}) # # ### Can Retry Manually # - # Indicates whether you can call `POST /emails/{id}/retry` to manually retry the - # email. This is `true` when the raw message content is still available (not + # Indicates whether you can call `POST /emails/{emailId}/retry` to manually retry + # the email. This is `true` when the raw message content is still available (not # expired due to retention policy). # - # @overload retrieve_deliveries(id, request_options: {}) + # @overload retrieve_deliveries(email_id, request_options: {}) # - # @param id [String] Email identifier (the token returned when sending an email). + # @param email_id [String] Email identifier (the token returned when sending an email). # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] # # @return [ArkEmail::Models::EmailRetrieveDeliveriesResponse] # # @see ArkEmail::Models::EmailRetrieveDeliveriesParams - def retrieve_deliveries(id, params = {}) + def retrieve_deliveries(email_id, params = {}) @client.request( method: :get, - path: ["emails/%1$s/deliveries", id], + path: ["emails/%1$s/deliveries", email_id], model: ArkEmail::Models::EmailRetrieveDeliveriesResponse, options: params[:request_options] ) @@ -145,19 +145,19 @@ def retrieve_deliveries(id, params = {}) # # Only works for emails that have failed or are in a retryable state. # - # @overload retry_(id, request_options: {}) + # @overload retry_(email_id, request_options: {}) # - # @param id [String] The email identifier (token returned from send response) + # @param email_id [String] The email identifier (token returned from send response) # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] # # @return [ArkEmail::Models::EmailRetryResponse] # # @see ArkEmail::Models::EmailRetryParams - def retry_(id, params = {}) + def retry_(email_id, params = {}) @client.request( method: :post, - path: ["emails/%1$s/retry", id], + path: ["emails/%1$s/retry", email_id], model: ArkEmail::Models::EmailRetryResponse, options: params[:request_options] ) @@ -177,9 +177,9 @@ def retry_(id, params = {}) # # **Related endpoints:** # - # - `GET /emails/{id}` - Track delivery status - # - `GET /emails/{id}/deliveries` - View delivery attempts - # - `POST /emails/{id}/retry` - Retry failed delivery + # - `GET /emails/{emailId}` - Track delivery status + # - `GET /emails/{emailId}/deliveries` - View delivery attempts + # - `POST /emails/{emailId}/retry` - Retry failed delivery # # @overload send_(from:, subject:, to:, attachments: nil, bcc: nil, cc: nil, headers: nil, html: nil, metadata: nil, reply_to: nil, tag: nil, text: nil, idempotency_key: nil, request_options: {}) # diff --git a/lib/ark_email/resources/limits.rb b/lib/ark_email/resources/limits.rb new file mode 100644 index 0000000..de26c50 --- /dev/null +++ b/lib/ark_email/resources/limits.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Limits + # Returns current rate limit and send limit information for your account. + # + # This endpoint is the recommended way to check your account's operational limits. + # Use `/usage` endpoints for historical usage analytics. + # + # **Response includes:** + # + # - `rateLimit` - API request rate limit (requests per second) + # - `sendLimit` - Email sending limit (emails per hour) + # - `billing` - Credit balance and auto-recharge configuration + # + # **Notes:** + # + # - This request counts against your rate limit + # - `sendLimit` may be null if Postal is temporarily unavailable + # - `billing` is null if billing is not configured + # - Send limit resets at the top of each hour + # + # @overload retrieve(request_options: {}) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::LimitRetrieveResponse] + # + # @see ArkEmail::Models::LimitRetrieveParams + def retrieve(params = {}) + @client.request( + method: :get, + path: "limits", + model: ArkEmail::Models::LimitRetrieveResponse, + options: params[:request_options] + ) + end + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + end + end + end +end diff --git a/lib/ark_email/resources/usage.rb b/lib/ark_email/resources/usage.rb index 423854c..8c9a0cf 100644 --- a/lib/ark_email/resources/usage.rb +++ b/lib/ark_email/resources/usage.rb @@ -3,6 +3,11 @@ module ArkEmail module Resources class Usage + # @deprecated + # + # > **Deprecated:** Use `GET /limits` instead for rate limits and send limits. + # > This endpoint will be removed in a future version. + # # Returns current usage and limit information for your account. # # This endpoint is designed for: @@ -24,6 +29,12 @@ class Usage # - `billing` is null if billing is not configured # - Send limit resets at the top of each hour # + # **Migration:** + # + # - For rate limits and send limits, use `GET /limits` + # - For per-tenant usage analytics, use `GET /tenants/{tenantId}/usage` + # - For bulk tenant usage, use `GET /usage/by-tenant` + # # @overload retrieve(request_options: {}) # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] @@ -40,6 +51,206 @@ def retrieve(params = {}) ) end + # Export usage data for all tenants in a format suitable for billing systems. + # + # **Use cases:** + # + # - Import into billing systems (Stripe, Chargebee, etc.) + # - Generate invoices + # - Archive usage data + # + # **Export formats:** + # + # - `csv` - Comma-separated values (default) + # - `jsonl` - JSON Lines (one JSON object per line) + # - `json` - JSON array + # + # **Response headers:** + # + # - `X-Total-Tenants` - Total number of tenants in export + # - `X-Total-Sent` - Total emails sent across all tenants + # - `Content-Disposition` - Suggested filename for download + # + # This endpoint returns up to 10,000 tenants per request. For organizations with + # more tenants, use the `/usage/by-tenant` endpoint with pagination. + # + # @overload export(format_: nil, min_sent: nil, period: nil, status: nil, timezone: nil, request_options: {}) + # + # @param format_ [Symbol, ArkEmail::Models::UsageExportParams::Format] Export format + # + # @param min_sent [Integer] Only include tenants with at least this many emails sent + # + # @param period [String] Time period for export. Defaults to current month. + # + # @param status [Symbol, ArkEmail::Models::UsageExportParams::Status] Filter by tenant status + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [Array] + # + # @see ArkEmail::Models::UsageExportParams + def export(params = {}) + parsed, options = ArkEmail::UsageExportParams.dump_request(params) + @client.request( + method: :get, + path: "usage/export", + query: parsed.transform_keys(format_: "format"), + model: ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::UsageExportResponseItem], + options: options + ) + end + + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::UsageListByTenantParams} for more details. + # + # Returns email usage statistics for all tenants in your organization. + # + # **Use cases:** + # + # - Generate monthly billing reports + # - Build admin dashboards showing all customer usage + # - Identify high-volume or problematic tenants + # + # **Sorting options:** + # + # - `sent`, `-sent` - Sort by emails sent (ascending/descending) + # - `delivered`, `-delivered` - Sort by emails delivered + # - `bounce_rate`, `-bounce_rate` - Sort by bounce rate + # - `name`, `-name` - Sort alphabetically by tenant name + # + # **Filtering:** + # + # - `status` - Filter by tenant status (active, suspended, archived) + # - `min_sent` - Only include tenants with at least N emails sent + # + # Results are paginated. Use `limit` and `offset` for pagination. + # + # @overload list_by_tenant(limit: nil, min_sent: nil, offset: nil, period: nil, sort: nil, status: nil, timezone: nil, request_options: {}) + # + # @param limit [Integer] Maximum number of tenants to return (1-100) + # + # @param min_sent [Integer] Only include tenants with at least this many emails sent + # + # @param offset [Integer] Number of tenants to skip for pagination + # + # @param period [String] Time period for usage data. Defaults to current month. + # + # @param sort [Symbol, ArkEmail::Models::UsageListByTenantParams::Sort] Sort order for results. Prefix with `-` for descending order. + # + # @param status [Symbol, ArkEmail::Models::UsageListByTenantParams::Status] Filter by tenant status + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Internal::OffsetPagination] + # + # @see ArkEmail::Models::UsageListByTenantParams + def list_by_tenant(params = {}) + parsed, options = ArkEmail::UsageListByTenantParams.dump_request(params) + @client.request( + method: :get, + path: "usage/by-tenant", + query: parsed, + page: ArkEmail::Internal::OffsetPagination, + model: ArkEmail::BulkTenantUsage::Tenant, + options: options + ) + end + + # Returns time-bucketed email statistics for a specific tenant. + # + # **Use cases:** + # + # - Build usage charts and graphs + # - Identify sending patterns + # - Detect anomalies in delivery rates + # + # **Granularity options:** + # + # - `hour` - Hourly buckets (best for last 7 days) + # - `day` - Daily buckets (best for last 30-90 days) + # - `week` - Weekly buckets (best for last 6 months) + # - `month` - Monthly buckets (best for year-over-year) + # + # The response includes a data point for each time bucket with all email metrics. + # + # @overload retrieve_tenant_timeseries(tenant_id, granularity: nil, period: nil, timezone: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param granularity [Symbol, ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::Granularity] Time bucket size for data points + # + # @param period [String] Time period for timeseries data. Defaults to current month. + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse] + # + # @see ArkEmail::Models::UsageRetrieveTenantTimeseriesParams + def retrieve_tenant_timeseries(tenant_id, params = {}) + parsed, options = ArkEmail::UsageRetrieveTenantTimeseriesParams.dump_request(params) + @client.request( + method: :get, + path: ["tenants/%1$s/usage/timeseries", tenant_id], + query: parsed, + model: ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse, + options: options + ) + end + + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::UsageRetrieveTenantUsageParams} for more details. + # + # Returns email sending statistics for a specific tenant over a time period. + # + # **Use cases:** + # + # - Display usage dashboard to your customers + # - Calculate per-tenant billing + # - Monitor tenant health and delivery rates + # + # **Period formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` (full month) + # - Date range: `2024-01-01..2024-01-31` + # - Single day: `2024-01-15` + # + # **Response includes:** + # + # - `emails` - Counts for sent, delivered, soft_failed, hard_failed, bounced, held + # - `rates` - Delivery rate and bounce rate as decimals (0.95 = 95%) + # + # @overload retrieve_tenant_usage(tenant_id, period: nil, timezone: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param period [String] Time period for usage data. Defaults to current month. + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::UsageRetrieveTenantUsageResponse] + # + # @see ArkEmail::Models::UsageRetrieveTenantUsageParams + def retrieve_tenant_usage(tenant_id, params = {}) + parsed, options = ArkEmail::UsageRetrieveTenantUsageParams.dump_request(params) + @client.request( + method: :get, + path: ["tenants/%1$s/usage", tenant_id], + query: parsed, + model: ArkEmail::Models::UsageRetrieveTenantUsageResponse, + options: options + ) + end + # @api private # # @param client [ArkEmail::Client] diff --git a/rbi/ark_email/client.rbi b/rbi/ark_email/client.rbi index c5378c5..13ddda0 100644 --- a/rbi/ark_email/client.rbi +++ b/rbi/ark_email/client.rbi @@ -37,6 +37,9 @@ module ArkEmail sig { returns(ArkEmail::Resources::Logs) } attr_reader :logs + sig { returns(ArkEmail::Resources::Limits) } + attr_reader :limits + sig { returns(ArkEmail::Resources::Usage) } attr_reader :usage diff --git a/rbi/ark_email/internal/offset_pagination.rbi b/rbi/ark_email/internal/offset_pagination.rbi new file mode 100644 index 0000000..2a8987b --- /dev/null +++ b/rbi/ark_email/internal/offset_pagination.rbi @@ -0,0 +1,110 @@ +# typed: strong + +module ArkEmail + module Internal + class OffsetPagination + include ArkEmail::Internal::Type::BasePage + + Elem = type_member + + sig { returns(Data) } + attr_accessor :data + + # @api private + sig { returns(String) } + def inspect + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = T.type_alias { T.any(Data, ArkEmail::Internal::AnyHash) } + + sig { returns(T.nilable(Data::Pagination)) } + attr_reader :pagination + + sig { params(pagination: Data::Pagination::OrHash).void } + attr_writer :pagination + + sig { returns(T.nilable(T::Array[T::Hash[Symbol, T.anything]])) } + attr_reader :tenants + + sig { params(tenants: T::Array[T::Hash[Symbol, T.anything]]).void } + attr_writer :tenants + + sig do + params( + pagination: Data::Pagination::OrHash, + tenants: T::Array[T::Hash[Symbol, T.anything]] + ).returns(T.attached_class) + end + def self.new(pagination: nil, tenants: nil) + end + + sig do + override.returns( + { + pagination: Data::Pagination, + tenants: T::Array[T::Hash[Symbol, T.anything]] + } + ) + end + def to_hash + end + + class Pagination < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(Data::Pagination, ArkEmail::Internal::AnyHash) + end + + sig { returns(T.nilable(T::Boolean)) } + attr_reader :has_more + + sig { params(has_more: T::Boolean).void } + attr_writer :has_more + + sig { returns(T.nilable(Integer)) } + attr_reader :limit + + sig { params(limit: Integer).void } + attr_writer :limit + + sig { returns(T.nilable(Integer)) } + attr_reader :offset + + sig { params(offset: Integer).void } + attr_writer :offset + + sig { returns(T.nilable(Integer)) } + attr_reader :total + + sig { params(total: Integer).void } + attr_writer :total + + sig do + params( + has_more: T::Boolean, + limit: Integer, + offset: Integer, + total: Integer + ).returns(T.attached_class) + end + def self.new(has_more: nil, limit: nil, offset: nil, total: nil) + end + + sig do + override.returns( + { + has_more: T::Boolean, + limit: Integer, + offset: Integer, + total: Integer + } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models.rbi b/rbi/ark_email/models.rbi index 3844dfe..10cdb6f 100644 --- a/rbi/ark_email/models.rbi +++ b/rbi/ark_email/models.rbi @@ -3,6 +3,8 @@ module ArkEmail APIMeta = ArkEmail::Models::APIMeta + BulkTenantUsage = ArkEmail::Models::BulkTenantUsage + DNSRecord = ArkEmail::Models::DNSRecord DomainCreateParams = ArkEmail::Models::DomainCreateParams @@ -15,8 +17,12 @@ module ArkEmail DomainVerifyParams = ArkEmail::Models::DomainVerifyParams + EmailCounts = ArkEmail::Models::EmailCounts + EmailListParams = ArkEmail::Models::EmailListParams + EmailRates = ArkEmail::Models::EmailRates + EmailRetrieveDeliveriesParams = ArkEmail::Models::EmailRetrieveDeliveriesParams @@ -30,6 +36,10 @@ module ArkEmail EmailSendRawParams = ArkEmail::Models::EmailSendRawParams + LimitRetrieveParams = ArkEmail::Models::LimitRetrieveParams + + LimitsData = ArkEmail::Models::LimitsData + LogEntry = ArkEmail::Models::LogEntry LogEntryDetail = ArkEmail::Models::LogEntryDetail @@ -62,6 +72,10 @@ module ArkEmail TenantUpdateParams = ArkEmail::Models::TenantUpdateParams + TenantUsage = ArkEmail::Models::TenantUsage + + TenantUsageTimeseries = ArkEmail::Models::TenantUsageTimeseries + TrackDomain = ArkEmail::Models::TrackDomain TrackingCreateParams = ArkEmail::Models::TrackingCreateParams @@ -76,8 +90,20 @@ module ArkEmail TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams + UsageExportParams = ArkEmail::Models::UsageExportParams + + UsageListByTenantParams = ArkEmail::Models::UsageListByTenantParams + + UsagePeriod = ArkEmail::Models::UsagePeriod + UsageRetrieveParams = ArkEmail::Models::UsageRetrieveParams + UsageRetrieveTenantTimeseriesParams = + ArkEmail::Models::UsageRetrieveTenantTimeseriesParams + + UsageRetrieveTenantUsageParams = + ArkEmail::Models::UsageRetrieveTenantUsageParams + WebhookCreateParams = ArkEmail::Models::WebhookCreateParams WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams diff --git a/rbi/ark_email/models/bulk_tenant_usage.rbi b/rbi/ark_email/models/bulk_tenant_usage.rbi new file mode 100644 index 0000000..042b4cd --- /dev/null +++ b/rbi/ark_email/models/bulk_tenant_usage.rbi @@ -0,0 +1,302 @@ +# typed: strong + +module ArkEmail + module Models + class BulkTenantUsage < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::BulkTenantUsage, ArkEmail::Internal::AnyHash) + end + + # Pagination information for usage queries + sig { returns(ArkEmail::BulkTenantUsage::Pagination) } + attr_reader :pagination + + sig do + params(pagination: ArkEmail::BulkTenantUsage::Pagination::OrHash).void + end + attr_writer :pagination + + # Time period for usage data + sig { returns(ArkEmail::UsagePeriod) } + attr_reader :period + + sig { params(period: ArkEmail::UsagePeriod::OrHash).void } + attr_writer :period + + # Aggregate summary across all tenants + sig { returns(ArkEmail::BulkTenantUsage::Summary) } + attr_reader :summary + + sig { params(summary: ArkEmail::BulkTenantUsage::Summary::OrHash).void } + attr_writer :summary + + # Array of tenant usage records + sig { returns(T::Array[ArkEmail::BulkTenantUsage::Tenant]) } + attr_accessor :tenants + + # Bulk tenant usage data with pagination + sig do + params( + pagination: ArkEmail::BulkTenantUsage::Pagination::OrHash, + period: ArkEmail::UsagePeriod::OrHash, + summary: ArkEmail::BulkTenantUsage::Summary::OrHash, + tenants: T::Array[ArkEmail::BulkTenantUsage::Tenant::OrHash] + ).returns(T.attached_class) + end + def self.new( + # Pagination information for usage queries + pagination:, + # Time period for usage data + period:, + # Aggregate summary across all tenants + summary:, + # Array of tenant usage records + tenants: + ) + end + + sig do + override.returns( + { + pagination: ArkEmail::BulkTenantUsage::Pagination, + period: ArkEmail::UsagePeriod, + summary: ArkEmail::BulkTenantUsage::Summary, + tenants: T::Array[ArkEmail::BulkTenantUsage::Tenant] + } + ) + end + def to_hash + end + + class Pagination < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::BulkTenantUsage::Pagination, + ArkEmail::Internal::AnyHash + ) + end + + # Whether more pages are available + sig { returns(T::Boolean) } + attr_accessor :has_more + + # Maximum items per page + sig { returns(Integer) } + attr_accessor :limit + + # Number of items skipped + sig { returns(Integer) } + attr_accessor :offset + + # Total number of tenants matching the query + sig { returns(Integer) } + attr_accessor :total + + # Pagination information for usage queries + sig do + params( + has_more: T::Boolean, + limit: Integer, + offset: Integer, + total: Integer + ).returns(T.attached_class) + end + def self.new( + # Whether more pages are available + has_more:, + # Maximum items per page + limit:, + # Number of items skipped + offset:, + # Total number of tenants matching the query + total: + ) + end + + sig do + override.returns( + { + has_more: T::Boolean, + limit: Integer, + offset: Integer, + total: Integer + } + ) + end + def to_hash + end + end + + class Summary < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::BulkTenantUsage::Summary, + ArkEmail::Internal::AnyHash + ) + end + + # Total emails delivered across all tenants + sig { returns(Integer) } + attr_accessor :total_delivered + + # Total emails sent across all tenants + sig { returns(Integer) } + attr_accessor :total_sent + + # Total number of tenants in the query + sig { returns(Integer) } + attr_accessor :total_tenants + + # Aggregate summary across all tenants + sig do + params( + total_delivered: Integer, + total_sent: Integer, + total_tenants: Integer + ).returns(T.attached_class) + end + def self.new( + # Total emails delivered across all tenants + total_delivered:, + # Total emails sent across all tenants + total_sent:, + # Total number of tenants in the query + total_tenants: + ) + end + + sig do + override.returns( + { + total_delivered: Integer, + total_sent: Integer, + total_tenants: Integer + } + ) + end + def to_hash + end + end + + class Tenant < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::BulkTenantUsage::Tenant, + ArkEmail::Internal::AnyHash + ) + end + + # Email delivery counts + sig { returns(ArkEmail::EmailCounts) } + attr_reader :emails + + sig { params(emails: ArkEmail::EmailCounts::OrHash).void } + attr_writer :emails + + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + sig { returns(ArkEmail::EmailRates) } + attr_reader :rates + + sig { params(rates: ArkEmail::EmailRates::OrHash).void } + attr_writer :rates + + # Current tenant status + sig { returns(ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol) } + attr_accessor :status + + # Unique tenant identifier + sig { returns(String) } + attr_accessor :tenant_id + + # Tenant display name + sig { returns(String) } + attr_accessor :tenant_name + + # Your external ID for this tenant + sig { returns(T.nilable(String)) } + attr_accessor :external_id + + # Usage record for a single tenant in bulk response + sig do + params( + emails: ArkEmail::EmailCounts::OrHash, + rates: ArkEmail::EmailRates::OrHash, + status: ArkEmail::BulkTenantUsage::Tenant::Status::OrSymbol, + tenant_id: String, + tenant_name: String, + external_id: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # Email delivery counts + emails:, + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + rates:, + # Current tenant status + status:, + # Unique tenant identifier + tenant_id:, + # Tenant display name + tenant_name:, + # Your external ID for this tenant + external_id: nil + ) + end + + sig do + override.returns( + { + emails: ArkEmail::EmailCounts, + rates: ArkEmail::EmailRates, + status: ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol, + tenant_id: String, + tenant_name: String, + external_id: T.nilable(String) + } + ) + end + def to_hash + end + + # Current tenant status + module Status + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::BulkTenantUsage::Tenant::Status) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + ACTIVE = + T.let( + :active, + ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol + ) + SUSPENDED = + T.let( + :suspended, + ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol + ) + ARCHIVED = + T.let( + :archived, + ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/email_counts.rbi b/rbi/ark_email/models/email_counts.rbi new file mode 100644 index 0000000..369a401 --- /dev/null +++ b/rbi/ark_email/models/email_counts.rbi @@ -0,0 +1,78 @@ +# typed: strong + +module ArkEmail + module Models + class EmailCounts < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::EmailCounts, ArkEmail::Internal::AnyHash) + end + + # Emails that bounced + sig { returns(Integer) } + attr_accessor :bounced + + # Emails successfully delivered + sig { returns(Integer) } + attr_accessor :delivered + + # Emails that hard-failed (permanent failures) + sig { returns(Integer) } + attr_accessor :hard_failed + + # Emails currently held for review + sig { returns(Integer) } + attr_accessor :held + + # Total emails sent + sig { returns(Integer) } + attr_accessor :sent + + # Emails that soft-failed (temporary failures, may be retried) + sig { returns(Integer) } + attr_accessor :soft_failed + + # Email delivery counts + sig do + params( + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer + ).returns(T.attached_class) + end + def self.new( + # Emails that bounced + bounced:, + # Emails successfully delivered + delivered:, + # Emails that hard-failed (permanent failures) + hard_failed:, + # Emails currently held for review + held:, + # Total emails sent + sent:, + # Emails that soft-failed (temporary failures, may be retried) + soft_failed: + ) + end + + sig do + override.returns( + { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer + } + ) + end + def to_hash + end + end + end +end diff --git a/rbi/ark_email/models/email_rates.rbi b/rbi/ark_email/models/email_rates.rbi new file mode 100644 index 0000000..c4b28f8 --- /dev/null +++ b/rbi/ark_email/models/email_rates.rbi @@ -0,0 +1,38 @@ +# typed: strong + +module ArkEmail + module Models + class EmailRates < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::EmailRates, ArkEmail::Internal::AnyHash) + end + + # Percentage of sent emails that bounced (0-1) + sig { returns(Float) } + attr_accessor :bounce_rate + + # Percentage of sent emails that were delivered (0-1) + sig { returns(Float) } + attr_accessor :delivery_rate + + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + sig do + params(bounce_rate: Float, delivery_rate: Float).returns( + T.attached_class + ) + end + def self.new( + # Percentage of sent emails that bounced (0-1) + bounce_rate:, + # Percentage of sent emails that were delivered (0-1) + delivery_rate: + ) + end + + sig { override.returns({ bounce_rate: Float, delivery_rate: Float }) } + def to_hash + end + end + end +end diff --git a/rbi/ark_email/models/email_retrieve_deliveries_response.rbi b/rbi/ark_email/models/email_retrieve_deliveries_response.rbi index 08bba81..f492ae6 100644 --- a/rbi/ark_email/models/email_retrieve_deliveries_response.rbi +++ b/rbi/ark_email/models/email_retrieve_deliveries_response.rbi @@ -65,7 +65,7 @@ module ArkEmail sig { returns(String) } attr_accessor :id - # Whether the message can be manually retried via `POST /emails/{id}/retry`. + # Whether the message can be manually retried via `POST /emails/{emailId}/retry`. # `true` when the raw message content is still available (not expired). Messages # older than the retention period cannot be retried. sig { returns(T::Boolean) } @@ -137,7 +137,7 @@ module ArkEmail def self.new( # Message identifier (token) id:, - # Whether the message can be manually retried via `POST /emails/{id}/retry`. + # Whether the message can be manually retried via `POST /emails/{emailId}/retry`. # `true` when the raw message content is still available (not expired). Messages # older than the retention period cannot be retried. can_retry_manually:, diff --git a/rbi/ark_email/models/limit_retrieve_params.rbi b/rbi/ark_email/models/limit_retrieve_params.rbi new file mode 100644 index 0000000..ae849bc --- /dev/null +++ b/rbi/ark_email/models/limit_retrieve_params.rbi @@ -0,0 +1,27 @@ +# typed: strong + +module ArkEmail + module Models + class LimitRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any(ArkEmail::LimitRetrieveParams, ArkEmail::Internal::AnyHash) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end +end diff --git a/rbi/ark_email/models/limit_retrieve_response.rbi b/rbi/ark_email/models/limit_retrieve_response.rbi new file mode 100644 index 0000000..9aba0be --- /dev/null +++ b/rbi/ark_email/models/limit_retrieve_response.rbi @@ -0,0 +1,59 @@ +# typed: strong + +module ArkEmail + module Models + class LimitRetrieveResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::LimitRetrieveResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Current usage and limit information + sig { returns(ArkEmail::LimitsData) } + attr_reader :data + + sig { params(data: ArkEmail::LimitsData::OrHash).void } + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Account rate limits and send limits response + sig do + params( + data: ArkEmail::LimitsData::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Current usage and limit information + data:, + meta:, + success: true + ) + end + + sig do + override.returns( + { + data: ArkEmail::LimitsData, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + end + end +end diff --git a/rbi/ark_email/models/limits_data.rbi b/rbi/ark_email/models/limits_data.rbi new file mode 100644 index 0000000..0b4adb6 --- /dev/null +++ b/rbi/ark_email/models/limits_data.rbi @@ -0,0 +1,374 @@ +# typed: strong + +module ArkEmail + module Models + class LimitsData < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::LimitsData, ArkEmail::Internal::AnyHash) + end + + # Billing and credit information + sig { returns(T.nilable(ArkEmail::LimitsData::Billing)) } + attr_reader :billing + + sig do + params(billing: T.nilable(ArkEmail::LimitsData::Billing::OrHash)).void + end + attr_writer :billing + + # API rate limit status + sig { returns(ArkEmail::LimitsData::RateLimit) } + attr_reader :rate_limit + + sig { params(rate_limit: ArkEmail::LimitsData::RateLimit::OrHash).void } + attr_writer :rate_limit + + # Email send limit status (hourly cap) + sig { returns(T.nilable(ArkEmail::LimitsData::SendLimit)) } + attr_reader :send_limit + + sig do + params( + send_limit: T.nilable(ArkEmail::LimitsData::SendLimit::OrHash) + ).void + end + attr_writer :send_limit + + # Current usage and limit information + sig do + params( + billing: T.nilable(ArkEmail::LimitsData::Billing::OrHash), + rate_limit: ArkEmail::LimitsData::RateLimit::OrHash, + send_limit: T.nilable(ArkEmail::LimitsData::SendLimit::OrHash) + ).returns(T.attached_class) + end + def self.new( + # Billing and credit information + billing:, + # API rate limit status + rate_limit:, + # Email send limit status (hourly cap) + send_limit: + ) + end + + sig do + override.returns( + { + billing: T.nilable(ArkEmail::LimitsData::Billing), + rate_limit: ArkEmail::LimitsData::RateLimit, + send_limit: T.nilable(ArkEmail::LimitsData::SendLimit) + } + ) + end + def to_hash + end + + class Billing < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::LimitsData::Billing, ArkEmail::Internal::AnyHash) + end + + # Auto-recharge configuration + sig { returns(ArkEmail::LimitsData::Billing::AutoRecharge) } + attr_reader :auto_recharge + + sig do + params( + auto_recharge: ArkEmail::LimitsData::Billing::AutoRecharge::OrHash + ).void + end + attr_writer :auto_recharge + + # Current credit balance as formatted string (e.g., "25.50") + sig { returns(String) } + attr_accessor :credit_balance + + # Current credit balance in cents for precise calculations + sig { returns(Integer) } + attr_accessor :credit_balance_cents + + # Whether a payment method is configured + sig { returns(T::Boolean) } + attr_accessor :has_payment_method + + # Billing and credit information + sig do + params( + auto_recharge: ArkEmail::LimitsData::Billing::AutoRecharge::OrHash, + credit_balance: String, + credit_balance_cents: Integer, + has_payment_method: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Auto-recharge configuration + auto_recharge:, + # Current credit balance as formatted string (e.g., "25.50") + credit_balance:, + # Current credit balance in cents for precise calculations + credit_balance_cents:, + # Whether a payment method is configured + has_payment_method: + ) + end + + sig do + override.returns( + { + auto_recharge: ArkEmail::LimitsData::Billing::AutoRecharge, + credit_balance: String, + credit_balance_cents: Integer, + has_payment_method: T::Boolean + } + ) + end + def to_hash + end + + class AutoRecharge < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::LimitsData::Billing::AutoRecharge, + ArkEmail::Internal::AnyHash + ) + end + + # Amount to recharge when triggered + sig { returns(String) } + attr_accessor :amount + + # Whether auto-recharge is enabled + sig { returns(T::Boolean) } + attr_accessor :enabled + + # Balance threshold that triggers recharge + sig { returns(String) } + attr_accessor :threshold + + # Auto-recharge configuration + sig do + params( + amount: String, + enabled: T::Boolean, + threshold: String + ).returns(T.attached_class) + end + def self.new( + # Amount to recharge when triggered + amount:, + # Whether auto-recharge is enabled + enabled:, + # Balance threshold that triggers recharge + threshold: + ) + end + + sig do + override.returns( + { amount: String, enabled: T::Boolean, threshold: String } + ) + end + def to_hash + end + end + end + + class RateLimit < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::LimitsData::RateLimit, ArkEmail::Internal::AnyHash) + end + + # Maximum requests allowed per period + sig { returns(Integer) } + attr_accessor :limit + + # Time period for the limit + sig { returns(ArkEmail::LimitsData::RateLimit::Period::TaggedSymbol) } + attr_accessor :period + + # Requests remaining in current window + sig { returns(Integer) } + attr_accessor :remaining + + # Unix timestamp when the limit resets + sig { returns(Integer) } + attr_accessor :reset + + # API rate limit status + sig do + params( + limit: Integer, + period: ArkEmail::LimitsData::RateLimit::Period::OrSymbol, + remaining: Integer, + reset: Integer + ).returns(T.attached_class) + end + def self.new( + # Maximum requests allowed per period + limit:, + # Time period for the limit + period:, + # Requests remaining in current window + remaining:, + # Unix timestamp when the limit resets + reset: + ) + end + + sig do + override.returns( + { + limit: Integer, + period: ArkEmail::LimitsData::RateLimit::Period::TaggedSymbol, + remaining: Integer, + reset: Integer + } + ) + end + def to_hash + end + + # Time period for the limit + module Period + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::LimitsData::RateLimit::Period) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SECOND = + T.let( + :second, + ArkEmail::LimitsData::RateLimit::Period::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ArkEmail::LimitsData::RateLimit::Period::TaggedSymbol] + ) + end + def self.values + end + end + end + + class SendLimit < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::LimitsData::SendLimit, ArkEmail::Internal::AnyHash) + end + + # Whether approaching the limit (>90%) + sig { returns(T::Boolean) } + attr_accessor :approaching + + # Whether the limit has been exceeded + sig { returns(T::Boolean) } + attr_accessor :exceeded + + # Maximum emails allowed per hour (null = unlimited) + sig { returns(T.nilable(Integer)) } + attr_accessor :limit + + # Time period for the limit + sig { returns(ArkEmail::LimitsData::SendLimit::Period::TaggedSymbol) } + attr_accessor :period + + # Emails remaining in current period (null if unlimited) + sig { returns(T.nilable(Integer)) } + attr_accessor :remaining + + # ISO timestamp when the limit window resets (top of next hour) + sig { returns(Time) } + attr_accessor :resets_at + + # Usage as a percentage (null if unlimited) + sig { returns(T.nilable(Float)) } + attr_accessor :usage_percent + + # Emails sent in current period + sig { returns(Integer) } + attr_accessor :used + + # Email send limit status (hourly cap) + sig do + params( + approaching: T::Boolean, + exceeded: T::Boolean, + limit: T.nilable(Integer), + period: ArkEmail::LimitsData::SendLimit::Period::OrSymbol, + remaining: T.nilable(Integer), + resets_at: Time, + usage_percent: T.nilable(Float), + used: Integer + ).returns(T.attached_class) + end + def self.new( + # Whether approaching the limit (>90%) + approaching:, + # Whether the limit has been exceeded + exceeded:, + # Maximum emails allowed per hour (null = unlimited) + limit:, + # Time period for the limit + period:, + # Emails remaining in current period (null if unlimited) + remaining:, + # ISO timestamp when the limit window resets (top of next hour) + resets_at:, + # Usage as a percentage (null if unlimited) + usage_percent:, + # Emails sent in current period + used: + ) + end + + sig do + override.returns( + { + approaching: T::Boolean, + exceeded: T::Boolean, + limit: T.nilable(Integer), + period: ArkEmail::LimitsData::SendLimit::Period::TaggedSymbol, + remaining: T.nilable(Integer), + resets_at: Time, + usage_percent: T.nilable(Float), + used: Integer + } + ) + end + def to_hash + end + + # Time period for the limit + module Period + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::LimitsData::SendLimit::Period) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + HOUR = + T.let(:hour, ArkEmail::LimitsData::SendLimit::Period::TaggedSymbol) + + sig do + override.returns( + T::Array[ArkEmail::LimitsData::SendLimit::Period::TaggedSymbol] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenant_usage.rbi b/rbi/ark_email/models/tenant_usage.rbi new file mode 100644 index 0000000..c2d41c7 --- /dev/null +++ b/rbi/ark_email/models/tenant_usage.rbi @@ -0,0 +1,87 @@ +# typed: strong + +module ArkEmail + module Models + class TenantUsage < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::TenantUsage, ArkEmail::Internal::AnyHash) + end + + # Email delivery counts + sig { returns(ArkEmail::EmailCounts) } + attr_reader :emails + + sig { params(emails: ArkEmail::EmailCounts::OrHash).void } + attr_writer :emails + + # Time period for usage data + sig { returns(ArkEmail::UsagePeriod) } + attr_reader :period + + sig { params(period: ArkEmail::UsagePeriod::OrHash).void } + attr_writer :period + + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + sig { returns(ArkEmail::EmailRates) } + attr_reader :rates + + sig { params(rates: ArkEmail::EmailRates::OrHash).void } + attr_writer :rates + + # Unique tenant identifier + sig { returns(String) } + attr_accessor :tenant_id + + # Tenant display name + sig { returns(String) } + attr_accessor :tenant_name + + # Your external ID for this tenant (from metadata) + sig { returns(T.nilable(String)) } + attr_accessor :external_id + + # Tenant usage statistics + sig do + params( + emails: ArkEmail::EmailCounts::OrHash, + period: ArkEmail::UsagePeriod::OrHash, + rates: ArkEmail::EmailRates::OrHash, + tenant_id: String, + tenant_name: String, + external_id: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # Email delivery counts + emails:, + # Time period for usage data + period:, + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + rates:, + # Unique tenant identifier + tenant_id:, + # Tenant display name + tenant_name:, + # Your external ID for this tenant (from metadata) + external_id: nil + ) + end + + sig do + override.returns( + { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenant_id: String, + tenant_name: String, + external_id: T.nilable(String) + } + ) + end + def to_hash + end + end + end +end diff --git a/rbi/ark_email/models/tenant_usage_timeseries.rbi b/rbi/ark_email/models/tenant_usage_timeseries.rbi new file mode 100644 index 0000000..cfd7462 --- /dev/null +++ b/rbi/ark_email/models/tenant_usage_timeseries.rbi @@ -0,0 +1,200 @@ +# typed: strong + +module ArkEmail + module Models + class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::TenantUsageTimeseries, ArkEmail::Internal::AnyHash) + end + + # Array of time-bucketed data points + sig { returns(T::Array[ArkEmail::TenantUsageTimeseries::Data]) } + attr_accessor :data + + # Time bucket granularity + sig do + returns(ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol) + end + attr_accessor :granularity + + # Time period for usage data + sig { returns(ArkEmail::UsagePeriod) } + attr_reader :period + + sig { params(period: ArkEmail::UsagePeriod::OrHash).void } + attr_writer :period + + # Unique tenant identifier + sig { returns(String) } + attr_accessor :tenant_id + + # Tenant display name + sig { returns(String) } + attr_accessor :tenant_name + + # Timeseries usage statistics + sig do + params( + data: T::Array[ArkEmail::TenantUsageTimeseries::Data::OrHash], + granularity: ArkEmail::TenantUsageTimeseries::Granularity::OrSymbol, + period: ArkEmail::UsagePeriod::OrHash, + tenant_id: String, + tenant_name: String + ).returns(T.attached_class) + end + def self.new( + # Array of time-bucketed data points + data:, + # Time bucket granularity + granularity:, + # Time period for usage data + period:, + # Unique tenant identifier + tenant_id:, + # Tenant display name + tenant_name: + ) + end + + sig do + override.returns( + { + data: T::Array[ArkEmail::TenantUsageTimeseries::Data], + granularity: + ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol, + period: ArkEmail::UsagePeriod, + tenant_id: String, + tenant_name: String + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::TenantUsageTimeseries::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Bounces in this bucket + sig { returns(Integer) } + attr_accessor :bounced + + # Emails delivered in this bucket + sig { returns(Integer) } + attr_accessor :delivered + + # Hard failures in this bucket + sig { returns(Integer) } + attr_accessor :hard_failed + + # Emails held in this bucket + sig { returns(Integer) } + attr_accessor :held + + # Emails sent in this bucket + sig { returns(Integer) } + attr_accessor :sent + + # Soft failures in this bucket + sig { returns(Integer) } + attr_accessor :soft_failed + + # Start of time bucket + sig { returns(Time) } + attr_accessor :timestamp + + # Single timeseries data point + sig do + params( + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + ).returns(T.attached_class) + end + def self.new( + # Bounces in this bucket + bounced:, + # Emails delivered in this bucket + delivered:, + # Hard failures in this bucket + hard_failed:, + # Emails held in this bucket + held:, + # Emails sent in this bucket + sent:, + # Soft failures in this bucket + soft_failed:, + # Start of time bucket + timestamp: + ) + end + + sig do + override.returns( + { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + } + ) + end + def to_hash + end + end + + # Time bucket granularity + module Granularity + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::TenantUsageTimeseries::Granularity) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + HOUR = + T.let( + :hour, + ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + DAY = + T.let( + :day, + ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + WEEK = + T.let( + :week, + ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + MONTH = + T.let( + :month, + ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol] + ) + end + def self.values + end + end + end + end +end diff --git a/rbi/ark_email/models/usage_export_params.rbi b/rbi/ark_email/models/usage_export_params.rbi new file mode 100644 index 0000000..62fec12 --- /dev/null +++ b/rbi/ark_email/models/usage_export_params.rbi @@ -0,0 +1,137 @@ +# typed: strong + +module ArkEmail + module Models + class UsageExportParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any(ArkEmail::UsageExportParams, ArkEmail::Internal::AnyHash) + end + + # Export format + sig { returns(T.nilable(ArkEmail::UsageExportParams::Format::OrSymbol)) } + attr_reader :format_ + + sig do + params(format_: ArkEmail::UsageExportParams::Format::OrSymbol).void + end + attr_writer :format_ + + # Only include tenants with at least this many emails sent + sig { returns(T.nilable(Integer)) } + attr_reader :min_sent + + sig { params(min_sent: Integer).void } + attr_writer :min_sent + + # Time period for export. Defaults to current month. + sig { returns(T.nilable(String)) } + attr_reader :period + + sig { params(period: String).void } + attr_writer :period + + # Filter by tenant status + sig { returns(T.nilable(ArkEmail::UsageExportParams::Status::OrSymbol)) } + attr_reader :status + + sig { params(status: ArkEmail::UsageExportParams::Status::OrSymbol).void } + attr_writer :status + + # Timezone for period calculations (IANA format). Defaults to UTC. + sig { returns(T.nilable(String)) } + attr_reader :timezone + + sig { params(timezone: String).void } + attr_writer :timezone + + sig do + params( + format_: ArkEmail::UsageExportParams::Format::OrSymbol, + min_sent: Integer, + period: String, + status: ArkEmail::UsageExportParams::Status::OrSymbol, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Export format + format_: nil, + # Only include tenants with at least this many emails sent + min_sent: nil, + # Time period for export. Defaults to current month. + period: nil, + # Filter by tenant status + status: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + format_: ArkEmail::UsageExportParams::Format::OrSymbol, + min_sent: Integer, + period: String, + status: ArkEmail::UsageExportParams::Status::OrSymbol, + timezone: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Export format + module Format + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias { T.all(Symbol, ArkEmail::UsageExportParams::Format) } + OrSymbol = T.type_alias { T.any(Symbol, String) } + + CSV = T.let(:csv, ArkEmail::UsageExportParams::Format::TaggedSymbol) + JSONL = T.let(:jsonl, ArkEmail::UsageExportParams::Format::TaggedSymbol) + JSON = T.let(:json, ArkEmail::UsageExportParams::Format::TaggedSymbol) + + sig do + override.returns( + T::Array[ArkEmail::UsageExportParams::Format::TaggedSymbol] + ) + end + def self.values + end + end + + # Filter by tenant status + module Status + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias { T.all(Symbol, ArkEmail::UsageExportParams::Status) } + OrSymbol = T.type_alias { T.any(Symbol, String) } + + ACTIVE = + T.let(:active, ArkEmail::UsageExportParams::Status::TaggedSymbol) + SUSPENDED = + T.let(:suspended, ArkEmail::UsageExportParams::Status::TaggedSymbol) + ARCHIVED = + T.let(:archived, ArkEmail::UsageExportParams::Status::TaggedSymbol) + + sig do + override.returns( + T::Array[ArkEmail::UsageExportParams::Status::TaggedSymbol] + ) + end + def self.values + end + end + end + end +end diff --git a/rbi/ark_email/models/usage_export_response.rbi b/rbi/ark_email/models/usage_export_response.rbi new file mode 100644 index 0000000..391adce --- /dev/null +++ b/rbi/ark_email/models/usage_export_response.rbi @@ -0,0 +1,177 @@ +# typed: strong + +module ArkEmail + module Models + class UsageExportResponseItem < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::UsageExportResponseItem, + ArkEmail::Internal::AnyHash + ) + end + + # Bounce rate (0-1) + sig { returns(Float) } + attr_accessor :bounce_rate + + # Emails that bounced + sig { returns(Integer) } + attr_accessor :bounced + + # Emails successfully delivered + sig { returns(Integer) } + attr_accessor :delivered + + # Delivery rate (0-1) + sig { returns(Float) } + attr_accessor :delivery_rate + + # Emails that hard-failed + sig { returns(Integer) } + attr_accessor :hard_failed + + # Emails currently held + sig { returns(Integer) } + attr_accessor :held + + # Total emails sent + sig { returns(Integer) } + attr_accessor :sent + + # Emails that soft-failed + sig { returns(Integer) } + attr_accessor :soft_failed + + # Current tenant status + sig do + returns(ArkEmail::Models::UsageExportResponseItem::Status::TaggedSymbol) + end + attr_accessor :status + + # Unique tenant identifier + sig { returns(String) } + attr_accessor :tenant_id + + # Tenant display name + sig { returns(String) } + attr_accessor :tenant_name + + # Your external ID for this tenant + sig { returns(T.nilable(String)) } + attr_accessor :external_id + + # Single row in usage export (JSON format) + sig do + params( + bounce_rate: Float, + bounced: Integer, + delivered: Integer, + delivery_rate: Float, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + status: ArkEmail::Models::UsageExportResponseItem::Status::OrSymbol, + tenant_id: String, + tenant_name: String, + external_id: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # Bounce rate (0-1) + bounce_rate:, + # Emails that bounced + bounced:, + # Emails successfully delivered + delivered:, + # Delivery rate (0-1) + delivery_rate:, + # Emails that hard-failed + hard_failed:, + # Emails currently held + held:, + # Total emails sent + sent:, + # Emails that soft-failed + soft_failed:, + # Current tenant status + status:, + # Unique tenant identifier + tenant_id:, + # Tenant display name + tenant_name:, + # Your external ID for this tenant + external_id: nil + ) + end + + sig do + override.returns( + { + bounce_rate: Float, + bounced: Integer, + delivered: Integer, + delivery_rate: Float, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + status: + ArkEmail::Models::UsageExportResponseItem::Status::TaggedSymbol, + tenant_id: String, + tenant_name: String, + external_id: T.nilable(String) + } + ) + end + def to_hash + end + + # Current tenant status + module Status + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Models::UsageExportResponseItem::Status) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + ACTIVE = + T.let( + :active, + ArkEmail::Models::UsageExportResponseItem::Status::TaggedSymbol + ) + SUSPENDED = + T.let( + :suspended, + ArkEmail::Models::UsageExportResponseItem::Status::TaggedSymbol + ) + ARCHIVED = + T.let( + :archived, + ArkEmail::Models::UsageExportResponseItem::Status::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::UsageExportResponseItem::Status::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + UsageExportResponse = + T.let( + ArkEmail::Internal::Type::ArrayOf[ + ArkEmail::Models::UsageExportResponseItem + ], + ArkEmail::Internal::Type::Converter + ) + end +end diff --git a/rbi/ark_email/models/usage_list_by_tenant_params.rbi b/rbi/ark_email/models/usage_list_by_tenant_params.rbi new file mode 100644 index 0000000..f38e099 --- /dev/null +++ b/rbi/ark_email/models/usage_list_by_tenant_params.rbi @@ -0,0 +1,203 @@ +# typed: strong + +module ArkEmail + module Models + class UsageListByTenantParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any(ArkEmail::UsageListByTenantParams, ArkEmail::Internal::AnyHash) + end + + # Maximum number of tenants to return (1-100) + sig { returns(T.nilable(Integer)) } + attr_reader :limit + + sig { params(limit: Integer).void } + attr_writer :limit + + # Only include tenants with at least this many emails sent + sig { returns(T.nilable(Integer)) } + attr_reader :min_sent + + sig { params(min_sent: Integer).void } + attr_writer :min_sent + + # Number of tenants to skip for pagination + sig { returns(T.nilable(Integer)) } + attr_reader :offset + + sig { params(offset: Integer).void } + attr_writer :offset + + # Time period for usage data. Defaults to current month. + sig { returns(T.nilable(String)) } + attr_reader :period + + sig { params(period: String).void } + attr_writer :period + + # Sort order for results. Prefix with `-` for descending order. + sig do + returns(T.nilable(ArkEmail::UsageListByTenantParams::Sort::OrSymbol)) + end + attr_reader :sort + + sig do + params(sort: ArkEmail::UsageListByTenantParams::Sort::OrSymbol).void + end + attr_writer :sort + + # Filter by tenant status + sig do + returns(T.nilable(ArkEmail::UsageListByTenantParams::Status::OrSymbol)) + end + attr_reader :status + + sig do + params(status: ArkEmail::UsageListByTenantParams::Status::OrSymbol).void + end + attr_writer :status + + # Timezone for period calculations (IANA format). Defaults to UTC. + sig { returns(T.nilable(String)) } + attr_reader :timezone + + sig { params(timezone: String).void } + attr_writer :timezone + + sig do + params( + limit: Integer, + min_sent: Integer, + offset: Integer, + period: String, + sort: ArkEmail::UsageListByTenantParams::Sort::OrSymbol, + status: ArkEmail::UsageListByTenantParams::Status::OrSymbol, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Maximum number of tenants to return (1-100) + limit: nil, + # Only include tenants with at least this many emails sent + min_sent: nil, + # Number of tenants to skip for pagination + offset: nil, + # Time period for usage data. Defaults to current month. + period: nil, + # Sort order for results. Prefix with `-` for descending order. + sort: nil, + # Filter by tenant status + status: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + limit: Integer, + min_sent: Integer, + offset: Integer, + period: String, + sort: ArkEmail::UsageListByTenantParams::Sort::OrSymbol, + status: ArkEmail::UsageListByTenantParams::Status::OrSymbol, + timezone: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Sort order for results. Prefix with `-` for descending order. + module Sort + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::UsageListByTenantParams::Sort) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SENT = + T.let(:sent, ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol) + MINUS_SENT = + T.let(:"-sent", ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol) + DELIVERED = + T.let( + :delivered, + ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol + ) + MINUS_DELIVERED = + T.let( + :"-delivered", + ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol + ) + BOUNCE_RATE = + T.let( + :bounce_rate, + ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol + ) + MINUS_BOUNCE_RATE = + T.let( + :"-bounce_rate", + ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol + ) + NAME = + T.let(:name, ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol) + MINUS_NAME = + T.let(:"-name", ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol) + + sig do + override.returns( + T::Array[ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol] + ) + end + def self.values + end + end + + # Filter by tenant status + module Status + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::UsageListByTenantParams::Status) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + ACTIVE = + T.let( + :active, + ArkEmail::UsageListByTenantParams::Status::TaggedSymbol + ) + SUSPENDED = + T.let( + :suspended, + ArkEmail::UsageListByTenantParams::Status::TaggedSymbol + ) + ARCHIVED = + T.let( + :archived, + ArkEmail::UsageListByTenantParams::Status::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ArkEmail::UsageListByTenantParams::Status::TaggedSymbol] + ) + end + def self.values + end + end + end + end +end diff --git a/rbi/ark_email/models/usage_period.rbi b/rbi/ark_email/models/usage_period.rbi new file mode 100644 index 0000000..c5119ba --- /dev/null +++ b/rbi/ark_email/models/usage_period.rbi @@ -0,0 +1,34 @@ +# typed: strong + +module ArkEmail + module Models + class UsagePeriod < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::UsagePeriod, ArkEmail::Internal::AnyHash) + end + + # Period end (inclusive) + sig { returns(Time) } + attr_accessor :end_ + + # Period start (inclusive) + sig { returns(Time) } + attr_accessor :start + + # Time period for usage data + sig { params(end_: Time, start: Time).returns(T.attached_class) } + def self.new( + # Period end (inclusive) + end_:, + # Period start (inclusive) + start: + ) + end + + sig { override.returns({ end_: Time, start: Time }) } + def to_hash + end + end + end +end diff --git a/rbi/ark_email/models/usage_retrieve_response.rbi b/rbi/ark_email/models/usage_retrieve_response.rbi index 5f73d2f..ffbffc5 100644 --- a/rbi/ark_email/models/usage_retrieve_response.rbi +++ b/rbi/ark_email/models/usage_retrieve_response.rbi @@ -12,12 +12,10 @@ module ArkEmail end # Current usage and limit information - sig { returns(ArkEmail::Models::UsageRetrieveResponse::Data) } + sig { returns(ArkEmail::LimitsData) } attr_reader :data - sig do - params(data: ArkEmail::Models::UsageRetrieveResponse::Data::OrHash).void - end + sig { params(data: ArkEmail::LimitsData::OrHash).void } attr_writer :data sig { returns(ArkEmail::APIMeta) } @@ -32,7 +30,7 @@ module ArkEmail # Account usage and limits response sig do params( - data: ArkEmail::Models::UsageRetrieveResponse::Data::OrHash, + data: ArkEmail::LimitsData::OrHash, meta: ArkEmail::APIMeta::OrHash, success: T::Boolean ).returns(T.attached_class) @@ -48,7 +46,7 @@ module ArkEmail sig do override.returns( { - data: ArkEmail::Models::UsageRetrieveResponse::Data, + data: ArkEmail::LimitsData, meta: ArkEmail::APIMeta, success: T::Boolean } @@ -56,456 +54,6 @@ module ArkEmail end def to_hash end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::UsageRetrieveResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Billing and credit information - sig do - returns( - T.nilable(ArkEmail::Models::UsageRetrieveResponse::Data::Billing) - ) - end - attr_reader :billing - - sig do - params( - billing: - T.nilable( - ArkEmail::Models::UsageRetrieveResponse::Data::Billing::OrHash - ) - ).void - end - attr_writer :billing - - # API rate limit status - sig do - returns(ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit) - end - attr_reader :rate_limit - - sig do - params( - rate_limit: - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::OrHash - ).void - end - attr_writer :rate_limit - - # Email send limit status (hourly cap) - sig do - returns( - T.nilable(ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit) - ) - end - attr_reader :send_limit - - sig do - params( - send_limit: - T.nilable( - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::OrHash - ) - ).void - end - attr_writer :send_limit - - # Current usage and limit information - sig do - params( - billing: - T.nilable( - ArkEmail::Models::UsageRetrieveResponse::Data::Billing::OrHash - ), - rate_limit: - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::OrHash, - send_limit: - T.nilable( - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::OrHash - ) - ).returns(T.attached_class) - end - def self.new( - # Billing and credit information - billing:, - # API rate limit status - rate_limit:, - # Email send limit status (hourly cap) - send_limit: - ) - end - - sig do - override.returns( - { - billing: - T.nilable( - ArkEmail::Models::UsageRetrieveResponse::Data::Billing - ), - rate_limit: - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit, - send_limit: - T.nilable( - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit - ) - } - ) - end - def to_hash - end - - class Billing < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::UsageRetrieveResponse::Data::Billing, - ArkEmail::Internal::AnyHash - ) - end - - # Auto-recharge configuration - sig do - returns( - ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge - ) - end - attr_reader :auto_recharge - - sig do - params( - auto_recharge: - ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge::OrHash - ).void - end - attr_writer :auto_recharge - - # Current credit balance as formatted string (e.g., "25.50") - sig { returns(String) } - attr_accessor :credit_balance - - # Current credit balance in cents for precise calculations - sig { returns(Integer) } - attr_accessor :credit_balance_cents - - # Whether a payment method is configured - sig { returns(T::Boolean) } - attr_accessor :has_payment_method - - # Billing and credit information - sig do - params( - auto_recharge: - ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge::OrHash, - credit_balance: String, - credit_balance_cents: Integer, - has_payment_method: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # Auto-recharge configuration - auto_recharge:, - # Current credit balance as formatted string (e.g., "25.50") - credit_balance:, - # Current credit balance in cents for precise calculations - credit_balance_cents:, - # Whether a payment method is configured - has_payment_method: - ) - end - - sig do - override.returns( - { - auto_recharge: - ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge, - credit_balance: String, - credit_balance_cents: Integer, - has_payment_method: T::Boolean - } - ) - end - def to_hash - end - - class AutoRecharge < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge, - ArkEmail::Internal::AnyHash - ) - end - - # Amount to recharge when triggered - sig { returns(String) } - attr_accessor :amount - - # Whether auto-recharge is enabled - sig { returns(T::Boolean) } - attr_accessor :enabled - - # Balance threshold that triggers recharge - sig { returns(String) } - attr_accessor :threshold - - # Auto-recharge configuration - sig do - params( - amount: String, - enabled: T::Boolean, - threshold: String - ).returns(T.attached_class) - end - def self.new( - # Amount to recharge when triggered - amount:, - # Whether auto-recharge is enabled - enabled:, - # Balance threshold that triggers recharge - threshold: - ) - end - - sig do - override.returns( - { amount: String, enabled: T::Boolean, threshold: String } - ) - end - def to_hash - end - end - end - - class RateLimit < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit, - ArkEmail::Internal::AnyHash - ) - end - - # Maximum requests allowed per period - sig { returns(Integer) } - attr_accessor :limit - - # Time period for the limit - sig do - returns( - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::TaggedSymbol - ) - end - attr_accessor :period - - # Requests remaining in current window - sig { returns(Integer) } - attr_accessor :remaining - - # Unix timestamp when the limit resets - sig { returns(Integer) } - attr_accessor :reset - - # API rate limit status - sig do - params( - limit: Integer, - period: - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::OrSymbol, - remaining: Integer, - reset: Integer - ).returns(T.attached_class) - end - def self.new( - # Maximum requests allowed per period - limit:, - # Time period for the limit - period:, - # Requests remaining in current window - remaining:, - # Unix timestamp when the limit resets - reset: - ) - end - - sig do - override.returns( - { - limit: Integer, - period: - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::TaggedSymbol, - remaining: Integer, - reset: Integer - } - ) - end - def to_hash - end - - # Time period for the limit - module Period - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - SECOND = - T.let( - :second, - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::TaggedSymbol - ] - ) - end - def self.values - end - end - end - - class SendLimit < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit, - ArkEmail::Internal::AnyHash - ) - end - - # Whether approaching the limit (>90%) - sig { returns(T::Boolean) } - attr_accessor :approaching - - # Whether the limit has been exceeded - sig { returns(T::Boolean) } - attr_accessor :exceeded - - # Maximum emails allowed per hour (null = unlimited) - sig { returns(T.nilable(Integer)) } - attr_accessor :limit - - # Time period for the limit - sig do - returns( - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::TaggedSymbol - ) - end - attr_accessor :period - - # Emails remaining in current period (null if unlimited) - sig { returns(T.nilable(Integer)) } - attr_accessor :remaining - - # ISO timestamp when the limit window resets (top of next hour) - sig { returns(Time) } - attr_accessor :resets_at - - # Usage as a percentage (null if unlimited) - sig { returns(T.nilable(Float)) } - attr_accessor :usage_percent - - # Emails sent in current period - sig { returns(Integer) } - attr_accessor :used - - # Email send limit status (hourly cap) - sig do - params( - approaching: T::Boolean, - exceeded: T::Boolean, - limit: T.nilable(Integer), - period: - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::OrSymbol, - remaining: T.nilable(Integer), - resets_at: Time, - usage_percent: T.nilable(Float), - used: Integer - ).returns(T.attached_class) - end - def self.new( - # Whether approaching the limit (>90%) - approaching:, - # Whether the limit has been exceeded - exceeded:, - # Maximum emails allowed per hour (null = unlimited) - limit:, - # Time period for the limit - period:, - # Emails remaining in current period (null if unlimited) - remaining:, - # ISO timestamp when the limit window resets (top of next hour) - resets_at:, - # Usage as a percentage (null if unlimited) - usage_percent:, - # Emails sent in current period - used: - ) - end - - sig do - override.returns( - { - approaching: T::Boolean, - exceeded: T::Boolean, - limit: T.nilable(Integer), - period: - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::TaggedSymbol, - remaining: T.nilable(Integer), - resets_at: Time, - usage_percent: T.nilable(Float), - used: Integer - } - ) - end - def to_hash - end - - # Time period for the limit - module Period - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - HOUR = - T.let( - :hour, - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::TaggedSymbol - ] - ) - end - def self.values - end - end - end - end end end end diff --git a/rbi/ark_email/models/usage_retrieve_tenant_timeseries_params.rbi b/rbi/ark_email/models/usage_retrieve_tenant_timeseries_params.rbi new file mode 100644 index 0000000..c358f5e --- /dev/null +++ b/rbi/ark_email/models/usage_retrieve_tenant_timeseries_params.rbi @@ -0,0 +1,129 @@ +# typed: strong + +module ArkEmail + module Models + class UsageRetrieveTenantTimeseriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::UsageRetrieveTenantTimeseriesParams, + ArkEmail::Internal::AnyHash + ) + end + + # Time bucket size for data points + sig do + returns( + T.nilable( + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol + ) + ) + end + attr_reader :granularity + + sig do + params( + granularity: + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol + ).void + end + attr_writer :granularity + + # Time period for timeseries data. Defaults to current month. + sig { returns(T.nilable(String)) } + attr_reader :period + + sig { params(period: String).void } + attr_writer :period + + # Timezone for period calculations (IANA format). Defaults to UTC. + sig { returns(T.nilable(String)) } + attr_reader :timezone + + sig { params(timezone: String).void } + attr_writer :timezone + + sig do + params( + granularity: + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Time bucket size for data points + granularity: nil, + # Time period for timeseries data. Defaults to current month. + period: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + granularity: + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Time bucket size for data points + module Granularity + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + HOUR = + T.let( + :hour, + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol + ) + DAY = + T.let( + :day, + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol + ) + WEEK = + T.let( + :week, + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol + ) + MONTH = + T.let( + :month, + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end +end diff --git a/rbi/ark_email/models/usage_retrieve_tenant_timeseries_response.rbi b/rbi/ark_email/models/usage_retrieve_tenant_timeseries_response.rbi new file mode 100644 index 0000000..d8f70b6 --- /dev/null +++ b/rbi/ark_email/models/usage_retrieve_tenant_timeseries_response.rbi @@ -0,0 +1,59 @@ +# typed: strong + +module ArkEmail + module Models + class UsageRetrieveTenantTimeseriesResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Timeseries usage statistics + sig { returns(ArkEmail::TenantUsageTimeseries) } + attr_reader :data + + sig { params(data: ArkEmail::TenantUsageTimeseries::OrHash).void } + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Timeseries usage data for a tenant + sig do + params( + data: ArkEmail::TenantUsageTimeseries::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Timeseries usage statistics + data:, + meta:, + success: true + ) + end + + sig do + override.returns( + { + data: ArkEmail::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + end + end +end diff --git a/rbi/ark_email/models/usage_retrieve_tenant_usage_params.rbi b/rbi/ark_email/models/usage_retrieve_tenant_usage_params.rbi new file mode 100644 index 0000000..e3aef9b --- /dev/null +++ b/rbi/ark_email/models/usage_retrieve_tenant_usage_params.rbi @@ -0,0 +1,76 @@ +# typed: strong + +module ArkEmail + module Models + class UsageRetrieveTenantUsageParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::UsageRetrieveTenantUsageParams, + ArkEmail::Internal::AnyHash + ) + end + + # Time period for usage data. Defaults to current month. + # + # **Formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` + # - Range: `2024-01-01..2024-01-31` + # - Day: `2024-01-15` + sig { returns(T.nilable(String)) } + attr_reader :period + + sig { params(period: String).void } + attr_writer :period + + # Timezone for period calculations (IANA format). Defaults to UTC. + sig { returns(T.nilable(String)) } + attr_reader :timezone + + sig { params(timezone: String).void } + attr_writer :timezone + + sig do + params( + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Time period for usage data. Defaults to current month. + # + # **Formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` + # - Range: `2024-01-01..2024-01-31` + # - Day: `2024-01-15` + period: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end +end diff --git a/rbi/ark_email/models/usage_retrieve_tenant_usage_response.rbi b/rbi/ark_email/models/usage_retrieve_tenant_usage_response.rbi new file mode 100644 index 0000000..cf3c146 --- /dev/null +++ b/rbi/ark_email/models/usage_retrieve_tenant_usage_response.rbi @@ -0,0 +1,59 @@ +# typed: strong + +module ArkEmail + module Models + class UsageRetrieveTenantUsageResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::UsageRetrieveTenantUsageResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Tenant usage statistics + sig { returns(ArkEmail::TenantUsage) } + attr_reader :data + + sig { params(data: ArkEmail::TenantUsage::OrHash).void } + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Usage statistics for a single tenant + sig do + params( + data: ArkEmail::TenantUsage::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Tenant usage statistics + data:, + meta:, + success: true + ) + end + + sig do + override.returns( + { + data: ArkEmail::TenantUsage, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + end + end +end diff --git a/rbi/ark_email/resources/emails.rbi b/rbi/ark_email/resources/emails.rbi index 81359b3..2d83d7c 100644 --- a/rbi/ark_email/resources/emails.rbi +++ b/rbi/ark_email/resources/emails.rbi @@ -10,14 +10,14 @@ module ArkEmail # headers, or delivery attempts. sig do params( - id: String, + email_id: String, expand: String, request_options: ArkEmail::RequestOptions::OrHash ).returns(ArkEmail::Models::EmailRetrieveResponse) end def retrieve( # The email identifier (token returned from send response) - id, + email_id, # Comma-separated list of fields to include: # # - `full` - Include all expanded fields in a single request @@ -39,7 +39,7 @@ module ArkEmail # # **Related endpoints:** # - # - `GET /emails/{id}` - Get full details of a specific email + # - `GET /emails/{emailId}` - Get full details of a specific email # - `POST /emails` - Send a new email sig do params( @@ -119,18 +119,18 @@ module ArkEmail # # ### Can Retry Manually # - # Indicates whether you can call `POST /emails/{id}/retry` to manually retry the - # email. This is `true` when the raw message content is still available (not + # Indicates whether you can call `POST /emails/{emailId}/retry` to manually retry + # the email. This is `true` when the raw message content is still available (not # expired due to retention policy). sig do params( - id: String, + email_id: String, request_options: ArkEmail::RequestOptions::OrHash ).returns(ArkEmail::Models::EmailRetrieveDeliveriesResponse) end def retrieve_deliveries( # Email identifier (the token returned when sending an email). - id, + email_id, request_options: {} ) end @@ -141,13 +141,13 @@ module ArkEmail # Only works for emails that have failed or are in a retryable state. sig do params( - id: String, + email_id: String, request_options: ArkEmail::RequestOptions::OrHash ).returns(ArkEmail::Models::EmailRetryResponse) end def retry_( # The email identifier (token returned from send response) - id, + email_id, request_options: {} ) end @@ -163,9 +163,9 @@ module ArkEmail # # **Related endpoints:** # - # - `GET /emails/{id}` - Track delivery status - # - `GET /emails/{id}/deliveries` - View delivery attempts - # - `POST /emails/{id}/retry` - Retry failed delivery + # - `GET /emails/{emailId}` - Track delivery status + # - `GET /emails/{emailId}/deliveries` - View delivery attempts + # - `POST /emails/{emailId}/retry` - Retry failed delivery sig do params( from: String, diff --git a/rbi/ark_email/resources/limits.rbi b/rbi/ark_email/resources/limits.rbi new file mode 100644 index 0000000..00884f9 --- /dev/null +++ b/rbi/ark_email/resources/limits.rbi @@ -0,0 +1,37 @@ +# typed: strong + +module ArkEmail + module Resources + class Limits + # Returns current rate limit and send limit information for your account. + # + # This endpoint is the recommended way to check your account's operational limits. + # Use `/usage` endpoints for historical usage analytics. + # + # **Response includes:** + # + # - `rateLimit` - API request rate limit (requests per second) + # - `sendLimit` - Email sending limit (emails per hour) + # - `billing` - Credit balance and auto-recharge configuration + # + # **Notes:** + # + # - This request counts against your rate limit + # - `sendLimit` may be null if Postal is temporarily unavailable + # - `billing` is null if billing is not configured + # - Send limit resets at the top of each hour + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + ArkEmail::Models::LimitRetrieveResponse + ) + end + def retrieve(request_options: {}) + end + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end +end diff --git a/rbi/ark_email/resources/usage.rbi b/rbi/ark_email/resources/usage.rbi index de995a8..4da97e1 100644 --- a/rbi/ark_email/resources/usage.rbi +++ b/rbi/ark_email/resources/usage.rbi @@ -3,6 +3,9 @@ module ArkEmail module Resources class Usage + # > **Deprecated:** Use `GET /limits` instead for rate limits and send limits. + # > This endpoint will be removed in a future version. + # # Returns current usage and limit information for your account. # # This endpoint is designed for: @@ -23,6 +26,12 @@ module ArkEmail # - `sendLimit` may be null if Postal is temporarily unavailable # - `billing` is null if billing is not configured # - Send limit resets at the top of each hour + # + # **Migration:** + # + # - For rate limits and send limits, use `GET /limits` + # - For per-tenant usage analytics, use `GET /tenants/{tenantId}/usage` + # - For bulk tenant usage, use `GET /usage/by-tenant` sig do params(request_options: ArkEmail::RequestOptions::OrHash).returns( ArkEmail::Models::UsageRetrieveResponse @@ -31,6 +40,195 @@ module ArkEmail def retrieve(request_options: {}) end + # Export usage data for all tenants in a format suitable for billing systems. + # + # **Use cases:** + # + # - Import into billing systems (Stripe, Chargebee, etc.) + # - Generate invoices + # - Archive usage data + # + # **Export formats:** + # + # - `csv` - Comma-separated values (default) + # - `jsonl` - JSON Lines (one JSON object per line) + # - `json` - JSON array + # + # **Response headers:** + # + # - `X-Total-Tenants` - Total number of tenants in export + # - `X-Total-Sent` - Total emails sent across all tenants + # - `Content-Disposition` - Suggested filename for download + # + # This endpoint returns up to 10,000 tenants per request. For organizations with + # more tenants, use the `/usage/by-tenant` endpoint with pagination. + sig do + params( + format_: ArkEmail::UsageExportParams::Format::OrSymbol, + min_sent: Integer, + period: String, + status: ArkEmail::UsageExportParams::Status::OrSymbol, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T::Array[ArkEmail::Models::UsageExportResponseItem]) + end + def export( + # Export format + format_: nil, + # Only include tenants with at least this many emails sent + min_sent: nil, + # Time period for export. Defaults to current month. + period: nil, + # Filter by tenant status + status: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + # Returns email usage statistics for all tenants in your organization. + # + # **Use cases:** + # + # - Generate monthly billing reports + # - Build admin dashboards showing all customer usage + # - Identify high-volume or problematic tenants + # + # **Sorting options:** + # + # - `sent`, `-sent` - Sort by emails sent (ascending/descending) + # - `delivered`, `-delivered` - Sort by emails delivered + # - `bounce_rate`, `-bounce_rate` - Sort by bounce rate + # - `name`, `-name` - Sort alphabetically by tenant name + # + # **Filtering:** + # + # - `status` - Filter by tenant status (active, suspended, archived) + # - `min_sent` - Only include tenants with at least N emails sent + # + # Results are paginated. Use `limit` and `offset` for pagination. + sig do + params( + limit: Integer, + min_sent: Integer, + offset: Integer, + period: String, + sort: ArkEmail::UsageListByTenantParams::Sort::OrSymbol, + status: ArkEmail::UsageListByTenantParams::Status::OrSymbol, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns( + ArkEmail::Internal::OffsetPagination[ + ArkEmail::BulkTenantUsage::Tenant + ] + ) + end + def list_by_tenant( + # Maximum number of tenants to return (1-100) + limit: nil, + # Only include tenants with at least this many emails sent + min_sent: nil, + # Number of tenants to skip for pagination + offset: nil, + # Time period for usage data. Defaults to current month. + period: nil, + # Sort order for results. Prefix with `-` for descending order. + sort: nil, + # Filter by tenant status + status: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + # Returns time-bucketed email statistics for a specific tenant. + # + # **Use cases:** + # + # - Build usage charts and graphs + # - Identify sending patterns + # - Detect anomalies in delivery rates + # + # **Granularity options:** + # + # - `hour` - Hourly buckets (best for last 7 days) + # - `day` - Daily buckets (best for last 30-90 days) + # - `week` - Weekly buckets (best for last 6 months) + # - `month` - Monthly buckets (best for year-over-year) + # + # The response includes a data point for each time bucket with all email metrics. + sig do + params( + tenant_id: String, + granularity: + ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse) + end + def retrieve_tenant_timeseries( + # The tenant ID + tenant_id, + # Time bucket size for data points + granularity: nil, + # Time period for timeseries data. Defaults to current month. + period: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + # Returns email sending statistics for a specific tenant over a time period. + # + # **Use cases:** + # + # - Display usage dashboard to your customers + # - Calculate per-tenant billing + # - Monitor tenant health and delivery rates + # + # **Period formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` (full month) + # - Date range: `2024-01-01..2024-01-31` + # - Single day: `2024-01-15` + # + # **Response includes:** + # + # - `emails` - Counts for sent, delivered, soft_failed, hard_failed, bounced, held + # - `rates` - Delivery rate and bounce rate as decimals (0.95 = 95%) + sig do + params( + tenant_id: String, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::UsageRetrieveTenantUsageResponse) + end + def retrieve_tenant_usage( + # The tenant ID + tenant_id, + # Time period for usage data. Defaults to current month. + # + # **Formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` + # - Range: `2024-01-01..2024-01-31` + # - Day: `2024-01-15` + period: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + # @api private sig { params(client: ArkEmail::Client).returns(T.attached_class) } def self.new(client:) diff --git a/sig/ark_email/client.rbs b/sig/ark_email/client.rbs index df4ee49..78209fc 100644 --- a/sig/ark_email/client.rbs +++ b/sig/ark_email/client.rbs @@ -22,6 +22,8 @@ module ArkEmail attr_reader logs: ArkEmail::Resources::Logs + attr_reader limits: ArkEmail::Resources::Limits + attr_reader usage: ArkEmail::Resources::Usage attr_reader tenants: ArkEmail::Resources::Tenants diff --git a/sig/ark_email/internal/offset_pagination.rbs b/sig/ark_email/internal/offset_pagination.rbs new file mode 100644 index 0000000..602322b --- /dev/null +++ b/sig/ark_email/internal/offset_pagination.rbs @@ -0,0 +1,70 @@ +module ArkEmail + module Internal + class OffsetPagination[Elem] + include ArkEmail::Internal::Type::BasePage[Elem] + + attr_accessor data: Data + + def inspect: -> String + + type data = + { pagination: Data::Pagination, tenants: ::Array[::Hash[Symbol, top]] } + class Data < ArkEmail::Internal::Type::BaseModel + attr_reader pagination: Data::Pagination? + + def pagination=: (Data::Pagination) -> Data::Pagination + + attr_reader tenants: ::Array[::Hash[Symbol, top]]? + + def tenants=: ( + ::Array[::Hash[Symbol, top]] + ) -> ::Array[::Hash[Symbol, top]] + + def initialize: ( + ?pagination: Data::Pagination, + ?tenants: ::Array[::Hash[Symbol, top]] + ) -> void + + def to_hash: -> { + pagination: Data::Pagination, + tenants: ::Array[::Hash[Symbol, top]] + } + + type pagination = + { has_more: bool, limit: Integer, offset: Integer, total: Integer } + + class Pagination < ArkEmail::Internal::Type::BaseModel + attr_reader has_more: bool? + + def has_more=: (bool) -> bool + + attr_reader limit: Integer? + + def limit=: (Integer) -> Integer + + attr_reader offset: Integer? + + def offset=: (Integer) -> Integer + + attr_reader total: Integer? + + def total=: (Integer) -> Integer + + def initialize: ( + ?has_more: bool, + ?limit: Integer, + ?offset: Integer, + ?total: Integer + ) -> void + + def to_hash: -> { + has_more: bool, + limit: Integer, + offset: Integer, + total: Integer + } + end + end + end + end +end diff --git a/sig/ark_email/models.rbs b/sig/ark_email/models.rbs index 69dec11..ec069fe 100644 --- a/sig/ark_email/models.rbs +++ b/sig/ark_email/models.rbs @@ -1,6 +1,8 @@ module ArkEmail class APIMeta = ArkEmail::Models::APIMeta + class BulkTenantUsage = ArkEmail::Models::BulkTenantUsage + class DNSRecord = ArkEmail::Models::DNSRecord class DomainCreateParams = ArkEmail::Models::DomainCreateParams @@ -13,8 +15,12 @@ module ArkEmail class DomainVerifyParams = ArkEmail::Models::DomainVerifyParams + class EmailCounts = ArkEmail::Models::EmailCounts + class EmailListParams = ArkEmail::Models::EmailListParams + class EmailRates = ArkEmail::Models::EmailRates + class EmailRetrieveDeliveriesParams = ArkEmail::Models::EmailRetrieveDeliveriesParams class EmailRetrieveParams = ArkEmail::Models::EmailRetrieveParams @@ -27,6 +33,10 @@ module ArkEmail class EmailSendRawParams = ArkEmail::Models::EmailSendRawParams + class LimitRetrieveParams = ArkEmail::Models::LimitRetrieveParams + + class LimitsData = ArkEmail::Models::LimitsData + class LogEntry = ArkEmail::Models::LogEntry class LogEntryDetail = ArkEmail::Models::LogEntryDetail @@ -59,6 +69,10 @@ module ArkEmail class TenantUpdateParams = ArkEmail::Models::TenantUpdateParams + class TenantUsage = ArkEmail::Models::TenantUsage + + class TenantUsageTimeseries = ArkEmail::Models::TenantUsageTimeseries + class TrackDomain = ArkEmail::Models::TrackDomain class TrackingCreateParams = ArkEmail::Models::TrackingCreateParams @@ -73,8 +87,18 @@ module ArkEmail class TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams + class UsageExportParams = ArkEmail::Models::UsageExportParams + + class UsageListByTenantParams = ArkEmail::Models::UsageListByTenantParams + + class UsagePeriod = ArkEmail::Models::UsagePeriod + class UsageRetrieveParams = ArkEmail::Models::UsageRetrieveParams + class UsageRetrieveTenantTimeseriesParams = ArkEmail::Models::UsageRetrieveTenantTimeseriesParams + + class UsageRetrieveTenantUsageParams = ArkEmail::Models::UsageRetrieveTenantUsageParams + class WebhookCreateParams = ArkEmail::Models::WebhookCreateParams class WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams diff --git a/sig/ark_email/models/bulk_tenant_usage.rbs b/sig/ark_email/models/bulk_tenant_usage.rbs new file mode 100644 index 0000000..8c2be07 --- /dev/null +++ b/sig/ark_email/models/bulk_tenant_usage.rbs @@ -0,0 +1,143 @@ +module ArkEmail + module Models + type bulk_tenant_usage = + { + pagination: ArkEmail::BulkTenantUsage::Pagination, + period: ArkEmail::UsagePeriod, + summary: ArkEmail::BulkTenantUsage::Summary, + tenants: ::Array[ArkEmail::BulkTenantUsage::Tenant] + } + + class BulkTenantUsage < ArkEmail::Internal::Type::BaseModel + attr_accessor pagination: ArkEmail::BulkTenantUsage::Pagination + + attr_accessor period: ArkEmail::UsagePeriod + + attr_accessor summary: ArkEmail::BulkTenantUsage::Summary + + attr_accessor tenants: ::Array[ArkEmail::BulkTenantUsage::Tenant] + + def initialize: ( + pagination: ArkEmail::BulkTenantUsage::Pagination, + period: ArkEmail::UsagePeriod, + summary: ArkEmail::BulkTenantUsage::Summary, + tenants: ::Array[ArkEmail::BulkTenantUsage::Tenant] + ) -> void + + def to_hash: -> { + pagination: ArkEmail::BulkTenantUsage::Pagination, + period: ArkEmail::UsagePeriod, + summary: ArkEmail::BulkTenantUsage::Summary, + tenants: ::Array[ArkEmail::BulkTenantUsage::Tenant] + } + + type pagination = + { has_more: bool, limit: Integer, offset: Integer, total: Integer } + + class Pagination < ArkEmail::Internal::Type::BaseModel + attr_accessor has_more: bool + + attr_accessor limit: Integer + + attr_accessor offset: Integer + + attr_accessor total: Integer + + def initialize: ( + has_more: bool, + limit: Integer, + offset: Integer, + total: Integer + ) -> void + + def to_hash: -> { + has_more: bool, + limit: Integer, + offset: Integer, + total: Integer + } + end + + type summary = + { + total_delivered: Integer, + total_sent: Integer, + total_tenants: Integer + } + + class Summary < ArkEmail::Internal::Type::BaseModel + attr_accessor total_delivered: Integer + + attr_accessor total_sent: Integer + + attr_accessor total_tenants: Integer + + def initialize: ( + total_delivered: Integer, + total_sent: Integer, + total_tenants: Integer + ) -> void + + def to_hash: -> { + total_delivered: Integer, + total_sent: Integer, + total_tenants: Integer + } + end + + type tenant = + { + emails: ArkEmail::EmailCounts, + rates: ArkEmail::EmailRates, + status: ArkEmail::Models::BulkTenantUsage::Tenant::status, + tenant_id: String, + tenant_name: String, + external_id: String? + } + + class Tenant < ArkEmail::Internal::Type::BaseModel + attr_accessor emails: ArkEmail::EmailCounts + + attr_accessor rates: ArkEmail::EmailRates + + attr_accessor status: ArkEmail::Models::BulkTenantUsage::Tenant::status + + attr_accessor tenant_id: String + + attr_accessor tenant_name: String + + attr_accessor external_id: String? + + def initialize: ( + emails: ArkEmail::EmailCounts, + rates: ArkEmail::EmailRates, + status: ArkEmail::Models::BulkTenantUsage::Tenant::status, + tenant_id: String, + tenant_name: String, + ?external_id: String? + ) -> void + + def to_hash: -> { + emails: ArkEmail::EmailCounts, + rates: ArkEmail::EmailRates, + status: ArkEmail::Models::BulkTenantUsage::Tenant::status, + tenant_id: String, + tenant_name: String, + external_id: String? + } + + type status = :active | :suspended | :archived + + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE: :active + SUSPENDED: :suspended + ARCHIVED: :archived + + def self?.values: -> ::Array[ArkEmail::Models::BulkTenantUsage::Tenant::status] + end + end + end + end +end diff --git a/sig/ark_email/models/email_counts.rbs b/sig/ark_email/models/email_counts.rbs new file mode 100644 index 0000000..073d3f2 --- /dev/null +++ b/sig/ark_email/models/email_counts.rbs @@ -0,0 +1,45 @@ +module ArkEmail + module Models + type email_counts = + { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer + } + + class EmailCounts < ArkEmail::Internal::Type::BaseModel + attr_accessor bounced: Integer + + attr_accessor delivered: Integer + + attr_accessor hard_failed: Integer + + attr_accessor held: Integer + + attr_accessor sent: Integer + + attr_accessor soft_failed: Integer + + def initialize: ( + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer + ) -> void + + def to_hash: -> { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer + } + end + end +end diff --git a/sig/ark_email/models/email_rates.rbs b/sig/ark_email/models/email_rates.rbs new file mode 100644 index 0000000..26e1768 --- /dev/null +++ b/sig/ark_email/models/email_rates.rbs @@ -0,0 +1,15 @@ +module ArkEmail + module Models + type email_rates = { bounce_rate: Float, delivery_rate: Float } + + class EmailRates < ArkEmail::Internal::Type::BaseModel + attr_accessor bounce_rate: Float + + attr_accessor delivery_rate: Float + + def initialize: (bounce_rate: Float, delivery_rate: Float) -> void + + def to_hash: -> { bounce_rate: Float, delivery_rate: Float } + end + end +end diff --git a/sig/ark_email/models/limit_retrieve_params.rbs b/sig/ark_email/models/limit_retrieve_params.rbs new file mode 100644 index 0000000..0e66c99 --- /dev/null +++ b/sig/ark_email/models/limit_retrieve_params.rbs @@ -0,0 +1,15 @@ +module ArkEmail + module Models + type limit_retrieve_params = + { } & ArkEmail::Internal::Type::request_parameters + + class LimitRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end +end diff --git a/sig/ark_email/models/limit_retrieve_response.rbs b/sig/ark_email/models/limit_retrieve_response.rbs new file mode 100644 index 0000000..527eee1 --- /dev/null +++ b/sig/ark_email/models/limit_retrieve_response.rbs @@ -0,0 +1,26 @@ +module ArkEmail + module Models + type limit_retrieve_response = + { data: ArkEmail::LimitsData, meta: ArkEmail::APIMeta, success: true } + + class LimitRetrieveResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::LimitsData + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::LimitsData, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::LimitsData, + meta: ArkEmail::APIMeta, + success: true + } + end + end +end diff --git a/sig/ark_email/models/limits_data.rbs b/sig/ark_email/models/limits_data.rbs new file mode 100644 index 0000000..ce4529e --- /dev/null +++ b/sig/ark_email/models/limits_data.rbs @@ -0,0 +1,185 @@ +module ArkEmail + module Models + type limits_data = + { + billing: ArkEmail::LimitsData::Billing?, + rate_limit: ArkEmail::LimitsData::RateLimit, + send_limit: ArkEmail::LimitsData::SendLimit? + } + + class LimitsData < ArkEmail::Internal::Type::BaseModel + attr_accessor billing: ArkEmail::LimitsData::Billing? + + attr_accessor rate_limit: ArkEmail::LimitsData::RateLimit + + attr_accessor send_limit: ArkEmail::LimitsData::SendLimit? + + def initialize: ( + billing: ArkEmail::LimitsData::Billing?, + rate_limit: ArkEmail::LimitsData::RateLimit, + send_limit: ArkEmail::LimitsData::SendLimit? + ) -> void + + def to_hash: -> { + billing: ArkEmail::LimitsData::Billing?, + rate_limit: ArkEmail::LimitsData::RateLimit, + send_limit: ArkEmail::LimitsData::SendLimit? + } + + type billing = + { + auto_recharge: ArkEmail::LimitsData::Billing::AutoRecharge, + credit_balance: String, + credit_balance_cents: Integer, + has_payment_method: bool + } + + class Billing < ArkEmail::Internal::Type::BaseModel + attr_accessor auto_recharge: ArkEmail::LimitsData::Billing::AutoRecharge + + attr_accessor credit_balance: String + + attr_accessor credit_balance_cents: Integer + + attr_accessor has_payment_method: bool + + def initialize: ( + auto_recharge: ArkEmail::LimitsData::Billing::AutoRecharge, + credit_balance: String, + credit_balance_cents: Integer, + has_payment_method: bool + ) -> void + + def to_hash: -> { + auto_recharge: ArkEmail::LimitsData::Billing::AutoRecharge, + credit_balance: String, + credit_balance_cents: Integer, + has_payment_method: bool + } + + type auto_recharge = + { amount: String, enabled: bool, threshold: String } + + class AutoRecharge < ArkEmail::Internal::Type::BaseModel + attr_accessor amount: String + + attr_accessor enabled: bool + + attr_accessor threshold: String + + def initialize: ( + amount: String, + enabled: bool, + threshold: String + ) -> void + + def to_hash: -> { amount: String, enabled: bool, threshold: String } + end + end + + type rate_limit = + { + limit: Integer, + period: ArkEmail::Models::LimitsData::RateLimit::period, + remaining: Integer, + reset: Integer + } + + class RateLimit < ArkEmail::Internal::Type::BaseModel + attr_accessor limit: Integer + + attr_accessor period: ArkEmail::Models::LimitsData::RateLimit::period + + attr_accessor remaining: Integer + + attr_accessor reset: Integer + + def initialize: ( + limit: Integer, + period: ArkEmail::Models::LimitsData::RateLimit::period, + remaining: Integer, + reset: Integer + ) -> void + + def to_hash: -> { + limit: Integer, + period: ArkEmail::Models::LimitsData::RateLimit::period, + remaining: Integer, + reset: Integer + } + + type period = :second + + module Period + extend ArkEmail::Internal::Type::Enum + + SECOND: :second + + def self?.values: -> ::Array[ArkEmail::Models::LimitsData::RateLimit::period] + end + end + + type send_limit = + { + approaching: bool, + exceeded: bool, + limit: Integer?, + period: ArkEmail::Models::LimitsData::SendLimit::period, + remaining: Integer?, + resets_at: Time, + usage_percent: Float?, + used: Integer + } + + class SendLimit < ArkEmail::Internal::Type::BaseModel + attr_accessor approaching: bool + + attr_accessor exceeded: bool + + attr_accessor limit: Integer? + + attr_accessor period: ArkEmail::Models::LimitsData::SendLimit::period + + attr_accessor remaining: Integer? + + attr_accessor resets_at: Time + + attr_accessor usage_percent: Float? + + attr_accessor used: Integer + + def initialize: ( + approaching: bool, + exceeded: bool, + limit: Integer?, + period: ArkEmail::Models::LimitsData::SendLimit::period, + remaining: Integer?, + resets_at: Time, + usage_percent: Float?, + used: Integer + ) -> void + + def to_hash: -> { + approaching: bool, + exceeded: bool, + limit: Integer?, + period: ArkEmail::Models::LimitsData::SendLimit::period, + remaining: Integer?, + resets_at: Time, + usage_percent: Float?, + used: Integer + } + + type period = :hour + + module Period + extend ArkEmail::Internal::Type::Enum + + HOUR: :hour + + def self?.values: -> ::Array[ArkEmail::Models::LimitsData::SendLimit::period] + end + end + end + end +end diff --git a/sig/ark_email/models/tenant_usage.rbs b/sig/ark_email/models/tenant_usage.rbs new file mode 100644 index 0000000..6c2fb5e --- /dev/null +++ b/sig/ark_email/models/tenant_usage.rbs @@ -0,0 +1,45 @@ +module ArkEmail + module Models + type tenant_usage = + { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenant_id: String, + tenant_name: String, + external_id: String? + } + + class TenantUsage < ArkEmail::Internal::Type::BaseModel + attr_accessor emails: ArkEmail::EmailCounts + + attr_accessor period: ArkEmail::UsagePeriod + + attr_accessor rates: ArkEmail::EmailRates + + attr_accessor tenant_id: String + + attr_accessor tenant_name: String + + attr_accessor external_id: String? + + def initialize: ( + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenant_id: String, + tenant_name: String, + ?external_id: String? + ) -> void + + def to_hash: -> { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenant_id: String, + tenant_name: String, + external_id: String? + } + end + end +end diff --git a/sig/ark_email/models/tenant_usage_timeseries.rbs b/sig/ark_email/models/tenant_usage_timeseries.rbs new file mode 100644 index 0000000..7c2c01d --- /dev/null +++ b/sig/ark_email/models/tenant_usage_timeseries.rbs @@ -0,0 +1,100 @@ +module ArkEmail + module Models + type tenant_usage_timeseries = + { + data: ::Array[ArkEmail::TenantUsageTimeseries::Data], + granularity: ArkEmail::Models::TenantUsageTimeseries::granularity, + period: ArkEmail::UsagePeriod, + tenant_id: String, + tenant_name: String + } + + class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ::Array[ArkEmail::TenantUsageTimeseries::Data] + + attr_accessor granularity: ArkEmail::Models::TenantUsageTimeseries::granularity + + attr_accessor period: ArkEmail::UsagePeriod + + attr_accessor tenant_id: String + + attr_accessor tenant_name: String + + def initialize: ( + data: ::Array[ArkEmail::TenantUsageTimeseries::Data], + granularity: ArkEmail::Models::TenantUsageTimeseries::granularity, + period: ArkEmail::UsagePeriod, + tenant_id: String, + tenant_name: String + ) -> void + + def to_hash: -> { + data: ::Array[ArkEmail::TenantUsageTimeseries::Data], + granularity: ArkEmail::Models::TenantUsageTimeseries::granularity, + period: ArkEmail::UsagePeriod, + tenant_id: String, + tenant_name: String + } + + type data = + { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor bounced: Integer + + attr_accessor delivered: Integer + + attr_accessor hard_failed: Integer + + attr_accessor held: Integer + + attr_accessor sent: Integer + + attr_accessor soft_failed: Integer + + attr_accessor timestamp: Time + + def initialize: ( + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + ) -> void + + def to_hash: -> { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + } + end + + type granularity = :hour | :day | :week | :month + + module Granularity + extend ArkEmail::Internal::Type::Enum + + HOUR: :hour + DAY: :day + WEEK: :week + MONTH: :month + + def self?.values: -> ::Array[ArkEmail::Models::TenantUsageTimeseries::granularity] + end + end + end +end diff --git a/sig/ark_email/models/usage_export_params.rbs b/sig/ark_email/models/usage_export_params.rbs new file mode 100644 index 0000000..ca379ba --- /dev/null +++ b/sig/ark_email/models/usage_export_params.rbs @@ -0,0 +1,84 @@ +module ArkEmail + module Models + type usage_export_params = + { + format_: ArkEmail::Models::UsageExportParams::format_, + min_sent: Integer, + period: String, + status: ArkEmail::Models::UsageExportParams::status, + timezone: String + } + & ArkEmail::Internal::Type::request_parameters + + class UsageExportParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader format_: ArkEmail::Models::UsageExportParams::format_? + + def format_=: ( + ArkEmail::Models::UsageExportParams::format_ + ) -> ArkEmail::Models::UsageExportParams::format_ + + attr_reader min_sent: Integer? + + def min_sent=: (Integer) -> Integer + + attr_reader period: String? + + def period=: (String) -> String + + attr_reader status: ArkEmail::Models::UsageExportParams::status? + + def status=: ( + ArkEmail::Models::UsageExportParams::status + ) -> ArkEmail::Models::UsageExportParams::status + + attr_reader timezone: String? + + def timezone=: (String) -> String + + def initialize: ( + ?format_: ArkEmail::Models::UsageExportParams::format_, + ?min_sent: Integer, + ?period: String, + ?status: ArkEmail::Models::UsageExportParams::status, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + format_: ArkEmail::Models::UsageExportParams::format_, + min_sent: Integer, + period: String, + status: ArkEmail::Models::UsageExportParams::status, + timezone: String, + request_options: ArkEmail::RequestOptions + } + + type format_ = :csv | :jsonl | :json + + module Format + extend ArkEmail::Internal::Type::Enum + + CSV: :csv + JSONL: :jsonl + JSON: :json + + def self?.values: -> ::Array[ArkEmail::Models::UsageExportParams::format_] + end + + type status = :active | :suspended | :archived + + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE: :active + SUSPENDED: :suspended + ARCHIVED: :archived + + def self?.values: -> ::Array[ArkEmail::Models::UsageExportParams::status] + end + end + end +end diff --git a/sig/ark_email/models/usage_export_response.rbs b/sig/ark_email/models/usage_export_response.rbs new file mode 100644 index 0000000..5d6107a --- /dev/null +++ b/sig/ark_email/models/usage_export_response.rbs @@ -0,0 +1,92 @@ +module ArkEmail + module Models + type usage_export_response_item = + { + bounce_rate: Float, + bounced: Integer, + delivered: Integer, + delivery_rate: Float, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + status: ArkEmail::Models::UsageExportResponseItem::status, + tenant_id: String, + tenant_name: String, + external_id: String? + } + + class UsageExportResponseItem < ArkEmail::Internal::Type::BaseModel + attr_accessor bounce_rate: Float + + attr_accessor bounced: Integer + + attr_accessor delivered: Integer + + attr_accessor delivery_rate: Float + + attr_accessor hard_failed: Integer + + attr_accessor held: Integer + + attr_accessor sent: Integer + + attr_accessor soft_failed: Integer + + attr_accessor status: ArkEmail::Models::UsageExportResponseItem::status + + attr_accessor tenant_id: String + + attr_accessor tenant_name: String + + attr_accessor external_id: String? + + def initialize: ( + bounce_rate: Float, + bounced: Integer, + delivered: Integer, + delivery_rate: Float, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + status: ArkEmail::Models::UsageExportResponseItem::status, + tenant_id: String, + tenant_name: String, + ?external_id: String? + ) -> void + + def to_hash: -> { + bounce_rate: Float, + bounced: Integer, + delivered: Integer, + delivery_rate: Float, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + status: ArkEmail::Models::UsageExportResponseItem::status, + tenant_id: String, + tenant_name: String, + external_id: String? + } + + type status = :active | :suspended | :archived + + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE: :active + SUSPENDED: :suspended + ARCHIVED: :archived + + def self?.values: -> ::Array[ArkEmail::Models::UsageExportResponseItem::status] + end + end + + type usage_export_response = + ::Array[ArkEmail::Models::UsageExportResponseItem] + + UsageExportResponse: ArkEmail::Internal::Type::Converter + end +end diff --git a/sig/ark_email/models/usage_list_by_tenant_params.rbs b/sig/ark_email/models/usage_list_by_tenant_params.rbs new file mode 100644 index 0000000..069467b --- /dev/null +++ b/sig/ark_email/models/usage_list_by_tenant_params.rbs @@ -0,0 +1,111 @@ +module ArkEmail + module Models + type usage_list_by_tenant_params = + { + limit: Integer, + min_sent: Integer, + offset: Integer, + period: String, + sort: ArkEmail::Models::UsageListByTenantParams::sort, + status: ArkEmail::Models::UsageListByTenantParams::status, + timezone: String + } + & ArkEmail::Internal::Type::request_parameters + + class UsageListByTenantParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader limit: Integer? + + def limit=: (Integer) -> Integer + + attr_reader min_sent: Integer? + + def min_sent=: (Integer) -> Integer + + attr_reader offset: Integer? + + def offset=: (Integer) -> Integer + + attr_reader period: String? + + def period=: (String) -> String + + attr_reader sort: ArkEmail::Models::UsageListByTenantParams::sort? + + def sort=: ( + ArkEmail::Models::UsageListByTenantParams::sort + ) -> ArkEmail::Models::UsageListByTenantParams::sort + + attr_reader status: ArkEmail::Models::UsageListByTenantParams::status? + + def status=: ( + ArkEmail::Models::UsageListByTenantParams::status + ) -> ArkEmail::Models::UsageListByTenantParams::status + + attr_reader timezone: String? + + def timezone=: (String) -> String + + def initialize: ( + ?limit: Integer, + ?min_sent: Integer, + ?offset: Integer, + ?period: String, + ?sort: ArkEmail::Models::UsageListByTenantParams::sort, + ?status: ArkEmail::Models::UsageListByTenantParams::status, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + limit: Integer, + min_sent: Integer, + offset: Integer, + period: String, + sort: ArkEmail::Models::UsageListByTenantParams::sort, + status: ArkEmail::Models::UsageListByTenantParams::status, + timezone: String, + request_options: ArkEmail::RequestOptions + } + + type sort = + :sent + | :"-sent" + | :delivered + | :"-delivered" + | :bounce_rate + | :"-bounce_rate" + | :name + | :"-name" + + module Sort + extend ArkEmail::Internal::Type::Enum + + SENT: :sent + MINUS_SENT: :"-sent" + DELIVERED: :delivered + MINUS_DELIVERED: :"-delivered" + BOUNCE_RATE: :bounce_rate + MINUS_BOUNCE_RATE: :"-bounce_rate" + NAME: :name + MINUS_NAME: :"-name" + + def self?.values: -> ::Array[ArkEmail::Models::UsageListByTenantParams::sort] + end + + type status = :active | :suspended | :archived + + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE: :active + SUSPENDED: :suspended + ARCHIVED: :archived + + def self?.values: -> ::Array[ArkEmail::Models::UsageListByTenantParams::status] + end + end + end +end diff --git a/sig/ark_email/models/usage_period.rbs b/sig/ark_email/models/usage_period.rbs new file mode 100644 index 0000000..c43a5df --- /dev/null +++ b/sig/ark_email/models/usage_period.rbs @@ -0,0 +1,15 @@ +module ArkEmail + module Models + type usage_period = { end_: Time, start: Time } + + class UsagePeriod < ArkEmail::Internal::Type::BaseModel + attr_accessor end_: Time + + attr_accessor start: Time + + def initialize: (end_: Time, start: Time) -> void + + def to_hash: -> { end_: Time, start: Time } + end + end +end diff --git a/sig/ark_email/models/usage_retrieve_response.rbs b/sig/ark_email/models/usage_retrieve_response.rbs index 40fc6a2..3791e02 100644 --- a/sig/ark_email/models/usage_retrieve_response.rbs +++ b/sig/ark_email/models/usage_retrieve_response.rbs @@ -1,212 +1,26 @@ module ArkEmail module Models type usage_retrieve_response = - { - data: ArkEmail::Models::UsageRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } + { data: ArkEmail::LimitsData, meta: ArkEmail::APIMeta, success: true } class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::UsageRetrieveResponse::Data + attr_accessor data: ArkEmail::LimitsData attr_accessor meta: ArkEmail::APIMeta attr_accessor success: true def initialize: ( - data: ArkEmail::Models::UsageRetrieveResponse::Data, + data: ArkEmail::LimitsData, meta: ArkEmail::APIMeta, ?success: true ) -> void def to_hash: -> { - data: ArkEmail::Models::UsageRetrieveResponse::Data, + data: ArkEmail::LimitsData, meta: ArkEmail::APIMeta, success: true } - - type data = - { - billing: ArkEmail::Models::UsageRetrieveResponse::Data::Billing?, - rate_limit: ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit, - send_limit: ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit? - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor billing: ArkEmail::Models::UsageRetrieveResponse::Data::Billing? - - attr_accessor rate_limit: ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit - - attr_accessor send_limit: ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit? - - def initialize: ( - billing: ArkEmail::Models::UsageRetrieveResponse::Data::Billing?, - rate_limit: ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit, - send_limit: ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit? - ) -> void - - def to_hash: -> { - billing: ArkEmail::Models::UsageRetrieveResponse::Data::Billing?, - rate_limit: ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit, - send_limit: ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit? - } - - type billing = - { - auto_recharge: ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge, - credit_balance: String, - credit_balance_cents: Integer, - has_payment_method: bool - } - - class Billing < ArkEmail::Internal::Type::BaseModel - attr_accessor auto_recharge: ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge - - attr_accessor credit_balance: String - - attr_accessor credit_balance_cents: Integer - - attr_accessor has_payment_method: bool - - def initialize: ( - auto_recharge: ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge, - credit_balance: String, - credit_balance_cents: Integer, - has_payment_method: bool - ) -> void - - def to_hash: -> { - auto_recharge: ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge, - credit_balance: String, - credit_balance_cents: Integer, - has_payment_method: bool - } - - type auto_recharge = - { amount: String, enabled: bool, threshold: String } - - class AutoRecharge < ArkEmail::Internal::Type::BaseModel - attr_accessor amount: String - - attr_accessor enabled: bool - - attr_accessor threshold: String - - def initialize: ( - amount: String, - enabled: bool, - threshold: String - ) -> void - - def to_hash: -> { amount: String, enabled: bool, threshold: String } - end - end - - type rate_limit = - { - limit: Integer, - period: ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::period, - remaining: Integer, - reset: Integer - } - - class RateLimit < ArkEmail::Internal::Type::BaseModel - attr_accessor limit: Integer - - attr_accessor period: ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::period - - attr_accessor remaining: Integer - - attr_accessor reset: Integer - - def initialize: ( - limit: Integer, - period: ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::period, - remaining: Integer, - reset: Integer - ) -> void - - def to_hash: -> { - limit: Integer, - period: ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::period, - remaining: Integer, - reset: Integer - } - - type period = :second - - module Period - extend ArkEmail::Internal::Type::Enum - - SECOND: :second - - def self?.values: -> ::Array[ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::period] - end - end - - type send_limit = - { - approaching: bool, - exceeded: bool, - limit: Integer?, - period: ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::period, - remaining: Integer?, - resets_at: Time, - usage_percent: Float?, - used: Integer - } - - class SendLimit < ArkEmail::Internal::Type::BaseModel - attr_accessor approaching: bool - - attr_accessor exceeded: bool - - attr_accessor limit: Integer? - - attr_accessor period: ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::period - - attr_accessor remaining: Integer? - - attr_accessor resets_at: Time - - attr_accessor usage_percent: Float? - - attr_accessor used: Integer - - def initialize: ( - approaching: bool, - exceeded: bool, - limit: Integer?, - period: ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::period, - remaining: Integer?, - resets_at: Time, - usage_percent: Float?, - used: Integer - ) -> void - - def to_hash: -> { - approaching: bool, - exceeded: bool, - limit: Integer?, - period: ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::period, - remaining: Integer?, - resets_at: Time, - usage_percent: Float?, - used: Integer - } - - type period = :hour - - module Period - extend ArkEmail::Internal::Type::Enum - - HOUR: :hour - - def self?.values: -> ::Array[ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::period] - end - end - end end end end diff --git a/sig/ark_email/models/usage_retrieve_tenant_timeseries_params.rbs b/sig/ark_email/models/usage_retrieve_tenant_timeseries_params.rbs new file mode 100644 index 0000000..92c9b87 --- /dev/null +++ b/sig/ark_email/models/usage_retrieve_tenant_timeseries_params.rbs @@ -0,0 +1,57 @@ +module ArkEmail + module Models + type usage_retrieve_tenant_timeseries_params = + { + granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity, + period: String, + timezone: String + } + & ArkEmail::Internal::Type::request_parameters + + class UsageRetrieveTenantTimeseriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity? + + def granularity=: ( + ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity + ) -> ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity + + attr_reader period: String? + + def period=: (String) -> String + + attr_reader timezone: String? + + def timezone=: (String) -> String + + def initialize: ( + ?granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity, + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + + type granularity = :hour | :day | :week | :month + + module Granularity + extend ArkEmail::Internal::Type::Enum + + HOUR: :hour + DAY: :day + WEEK: :week + MONTH: :month + + def self?.values: -> ::Array[ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity] + end + end + end +end diff --git a/sig/ark_email/models/usage_retrieve_tenant_timeseries_response.rbs b/sig/ark_email/models/usage_retrieve_tenant_timeseries_response.rbs new file mode 100644 index 0000000..a1578fc --- /dev/null +++ b/sig/ark_email/models/usage_retrieve_tenant_timeseries_response.rbs @@ -0,0 +1,30 @@ +module ArkEmail + module Models + type usage_retrieve_tenant_timeseries_response = + { + data: ArkEmail::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + success: true + } + + class UsageRetrieveTenantTimeseriesResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::TenantUsageTimeseries + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + success: true + } + end + end +end diff --git a/sig/ark_email/models/usage_retrieve_tenant_usage_params.rbs b/sig/ark_email/models/usage_retrieve_tenant_usage_params.rbs new file mode 100644 index 0000000..43e1a12 --- /dev/null +++ b/sig/ark_email/models/usage_retrieve_tenant_usage_params.rbs @@ -0,0 +1,32 @@ +module ArkEmail + module Models + type usage_retrieve_tenant_usage_params = + { period: String, timezone: String } + & ArkEmail::Internal::Type::request_parameters + + class UsageRetrieveTenantUsageParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader period: String? + + def period=: (String) -> String + + attr_reader timezone: String? + + def timezone=: (String) -> String + + def initialize: ( + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + end + end +end diff --git a/sig/ark_email/models/usage_retrieve_tenant_usage_response.rbs b/sig/ark_email/models/usage_retrieve_tenant_usage_response.rbs new file mode 100644 index 0000000..d043420 --- /dev/null +++ b/sig/ark_email/models/usage_retrieve_tenant_usage_response.rbs @@ -0,0 +1,26 @@ +module ArkEmail + module Models + type usage_retrieve_tenant_usage_response = + { data: ArkEmail::TenantUsage, meta: ArkEmail::APIMeta, success: true } + + class UsageRetrieveTenantUsageResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::TenantUsage + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::TenantUsage, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::TenantUsage, + meta: ArkEmail::APIMeta, + success: true + } + end + end +end diff --git a/sig/ark_email/resources/emails.rbs b/sig/ark_email/resources/emails.rbs index 80a0116..bb68cad 100644 --- a/sig/ark_email/resources/emails.rbs +++ b/sig/ark_email/resources/emails.rbs @@ -2,7 +2,7 @@ module ArkEmail module Resources class Emails def retrieve: ( - String id, + String email_id, ?expand: String, ?request_options: ArkEmail::request_opts ) -> ArkEmail::Models::EmailRetrieveResponse @@ -20,12 +20,12 @@ module ArkEmail ) -> ArkEmail::Internal::PageNumberPagination[ArkEmail::Models::EmailListResponse] def retrieve_deliveries: ( - String id, + String email_id, ?request_options: ArkEmail::request_opts ) -> ArkEmail::Models::EmailRetrieveDeliveriesResponse def retry_: ( - String id, + String email_id, ?request_options: ArkEmail::request_opts ) -> ArkEmail::Models::EmailRetryResponse diff --git a/sig/ark_email/resources/limits.rbs b/sig/ark_email/resources/limits.rbs new file mode 100644 index 0000000..eb1186b --- /dev/null +++ b/sig/ark_email/resources/limits.rbs @@ -0,0 +1,11 @@ +module ArkEmail + module Resources + class Limits + def retrieve: ( + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::LimitRetrieveResponse + + def initialize: (client: ArkEmail::Client) -> void + end + end +end diff --git a/sig/ark_email/resources/usage.rbs b/sig/ark_email/resources/usage.rbs index 41e4dad..50afcdc 100644 --- a/sig/ark_email/resources/usage.rbs +++ b/sig/ark_email/resources/usage.rbs @@ -5,6 +5,41 @@ module ArkEmail ?request_options: ArkEmail::request_opts ) -> ArkEmail::Models::UsageRetrieveResponse + def export: ( + ?format_: ArkEmail::Models::UsageExportParams::format_, + ?min_sent: Integer, + ?period: String, + ?status: ArkEmail::Models::UsageExportParams::status, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::usage_export_response + + def list_by_tenant: ( + ?limit: Integer, + ?min_sent: Integer, + ?offset: Integer, + ?period: String, + ?sort: ArkEmail::Models::UsageListByTenantParams::sort, + ?status: ArkEmail::Models::UsageListByTenantParams::status, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Internal::OffsetPagination[ArkEmail::BulkTenantUsage::Tenant] + + def retrieve_tenant_timeseries: ( + String tenant_id, + ?granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity, + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse + + def retrieve_tenant_usage: ( + String tenant_id, + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::UsageRetrieveTenantUsageResponse + def initialize: (client: ArkEmail::Client) -> void end end diff --git a/test/ark_email/resources/limits_test.rb b/test/ark_email/resources/limits_test.rb new file mode 100644 index 0000000..8b3d20f --- /dev/null +++ b/test/ark_email/resources/limits_test.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require_relative "../test_helper" + +class ArkEmail::Test::Resources::LimitsTest < ArkEmail::Test::ResourceTest + def test_retrieve + response = @ark.limits.retrieve + + assert_pattern do + response => ArkEmail::Models::LimitRetrieveResponse + end + + assert_pattern do + response => { + data: ArkEmail::LimitsData, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end +end diff --git a/test/ark_email/resources/usage_test.rb b/test/ark_email/resources/usage_test.rb index 4aaf60f..98e800e 100644 --- a/test/ark_email/resources/usage_test.rb +++ b/test/ark_email/resources/usage_test.rb @@ -12,7 +12,73 @@ def test_retrieve assert_pattern do response => { - data: ArkEmail::Models::UsageRetrieveResponse::Data, + data: ArkEmail::LimitsData, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_export + response = @ark.usage.export + + assert_pattern do + response => ^(ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::UsageExportResponseItem]) + end + end + + def test_list_by_tenant + response = @ark.usage.list_by_tenant + + assert_pattern do + response => ArkEmail::Internal::OffsetPagination + end + + row = response.to_enum.first + return if row.nil? + + assert_pattern do + row => ArkEmail::BulkTenantUsage::Tenant + end + + assert_pattern do + row => { + emails: ArkEmail::EmailCounts, + rates: ArkEmail::EmailRates, + status: ArkEmail::BulkTenantUsage::Tenant::Status, + tenant_id: String, + tenant_name: String, + external_id: String | nil + } + end + end + + def test_retrieve_tenant_timeseries + response = @ark.usage.retrieve_tenant_timeseries("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse + end + + assert_pattern do + response => { + data: ArkEmail::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_tenant_usage + response = @ark.usage.retrieve_tenant_usage("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::UsageRetrieveTenantUsageResponse + end + + assert_pattern do + response => { + data: ArkEmail::TenantUsage, meta: ArkEmail::APIMeta, success: true | false } From 80b201fff6de57f5d2496f488e137ac1535304ef Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 4 Feb 2026 06:54:18 +0000 Subject: [PATCH 3/8] chore(docs): remove www prefix --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5a7d030..eae9fa6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,13 +43,13 @@ If you’d like to use the repository from source, you can either install from g To install via git in your `Gemfile`: ```ruby -gem "ark-email", git: "https://www.github.com/ArkHQ-io/ark-ruby" +gem "ark-email", git: "https://github.com/ArkHQ-io/ark-ruby" ``` Alternatively, reference local copy of the repo: ```bash -$ git clone -- 'https://www.github.com/ArkHQ-io/ark-ruby' '' +$ git clone -- 'https://github.com/ArkHQ-io/ark-ruby' '' ``` ```ruby From b187d9b397de264ac9dbf6d7b882b28e6850ddf6 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 4 Feb 2026 14:44:12 +0000 Subject: [PATCH 4/8] feat(api): standardization improvements --- .stats.yml | 4 ++-- lib/ark_email/models/tenant.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index 136030f..0de1e74 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 50 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-80a061ee30021d968068b710420ca250a2a4cd6e9cec16f2ea5144afed2a6e33.yml -openapi_spec_hash: 661c8877c1efd5c25f5ebc634e764a72 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-4f8eeb0b9933313def1a9a4184201cb83a96fc2f6de340e7ad52bd216e01adf7.yml +openapi_spec_hash: af08acc45080ae78054e82214014d34c config_hash: 569f48c6e4612e54e4db8a875be71e1a diff --git a/lib/ark_email/models/tenant.rb b/lib/ark_email/models/tenant.rb index f9b8db1..ff68cdd 100644 --- a/lib/ark_email/models/tenant.rb +++ b/lib/ark_email/models/tenant.rb @@ -14,7 +14,7 @@ class Tenant < ArkEmail::Internal::Type::BaseModel # When the tenant was created # # @return [Time] - required :created_at, Time + required :created_at, Time, api_name: :createdAt # @!attribute metadata # Custom key-value pairs for storing additional data @@ -42,7 +42,7 @@ class Tenant < ArkEmail::Internal::Type::BaseModel # When the tenant was last updated # # @return [Time] - required :updated_at, Time + required :updated_at, Time, api_name: :updatedAt # @!method initialize(id:, created_at:, metadata:, name:, status:, updated_at:) # Some parameter documentations has been truncated, see {ArkEmail::Models::Tenant} From f492b2e39082aed03ef6d104a1e3d9695e3d66b6 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:41:26 +0000 Subject: [PATCH 5/8] feat(api): endpoint updates Update endpoints for v2 --- .stats.yml | 8 +- README.md | 16 +- lib/ark_email.rb | 130 +++--- lib/ark_email/client.rb | 24 +- lib/ark_email/internal/offset_pagination.rb | 134 ------ lib/ark_email/models.rb | 66 +-- lib/ark_email/models/bulk_tenant_usage.rb | 177 -------- lib/ark_email/models/dns_record.rb | 111 ----- lib/ark_email/models/domain_create_params.rb | 30 -- .../models/domain_create_response.rb | 218 ---------- lib/ark_email/models/domain_delete_params.rb | 14 - .../models/domain_delete_response.rb | 39 -- lib/ark_email/models/domain_list_params.rb | 22 - lib/ark_email/models/domain_list_response.rb | 87 ---- .../models/domain_retrieve_params.rb | 14 - .../models/domain_retrieve_response.rb | 218 ---------- lib/ark_email/models/domain_verify_params.rb | 14 - .../models/domain_verify_response.rb | 218 ---------- lib/ark_email/models/org_usage_summary.rb | 93 +++++ .../models/suppression_bulk_create_params.rb | 39 -- .../suppression_bulk_create_response.rb | 64 --- .../models/suppression_create_params.rb | 30 -- .../models/suppression_create_response.rb | 62 --- .../models/suppression_delete_params.rb | 14 - .../models/suppression_delete_response.rb | 39 -- .../models/suppression_list_params.rb | 26 -- .../models/suppression_list_response.rb | 38 -- .../models/suppression_retrieve_params.rb | 14 - .../models/suppression_retrieve_response.rb | 64 --- .../{tenant_usage.rb => tenant_usage_item.rb} | 47 ++- .../models/tenant_usage_timeseries.rb | 126 ------ lib/ark_email/models/tenants/dns_record.rb | 113 +++++ .../models/tenants/domain_create_params.rb | 24 ++ .../models/tenants/domain_create_response.rb | 221 ++++++++++ .../models/tenants/domain_delete_params.rb | 22 + .../models/tenants/domain_delete_response.rb | 41 ++ .../models/tenants/domain_list_params.rb | 16 + .../models/tenants/domain_list_response.rb | 89 ++++ .../models/tenants/domain_retrieve_params.rb | 22 + .../tenants/domain_retrieve_response.rb | 221 ++++++++++ .../models/tenants/domain_verify_params.rb | 22 + .../models/tenants/domain_verify_response.rb | 221 ++++++++++ .../tenants/suppression_create_params.rb | 32 ++ .../tenants/suppression_create_response.rb | 64 +++ .../tenants/suppression_delete_params.rb | 22 + .../tenants/suppression_delete_response.rb | 41 ++ .../models/tenants/suppression_list_params.rb | 28 ++ .../tenants/suppression_list_response.rb | 40 ++ .../tenants/suppression_retrieve_params.rb | 22 + .../tenants/suppression_retrieve_response.rb | 66 +++ lib/ark_email/models/tenants/tenant_usage.rb | 62 +++ .../models/tenants/tenant_usage_timeseries.rb | 130 ++++++ lib/ark_email/models/tenants/track_domain.rb | 186 +++++++++ .../models/tenants/tracking_create_params.rb | 56 +++ .../tenants/tracking_create_response.rb | 30 ++ .../models/tenants/tracking_delete_params.rb | 22 + .../tenants/tracking_delete_response.rb | 41 ++ .../models/tenants/tracking_list_params.rb | 16 + .../models/tenants/tracking_list_response.rb | 43 ++ .../tenants/tracking_retrieve_params.rb | 22 + .../tenants/tracking_retrieve_response.rb | 30 ++ .../models/tenants/tracking_update_params.rb | 55 +++ .../tenants/tracking_update_response.rb | 30 ++ .../models/tenants/tracking_verify_params.rb | 22 + .../tenants/tracking_verify_response.rb | 135 ++++++ .../models/tenants/usage_retrieve_params.rb | 43 ++ .../models/tenants/usage_retrieve_response.rb | 35 ++ .../usage_retrieve_timeseries_params.rb | 53 +++ .../usage_retrieve_timeseries_response.rb | 35 ++ .../models/tenants/webhook_create_params.rb | 88 ++++ .../models/tenants/webhook_create_response.rb | 113 +++++ .../models/tenants/webhook_delete_params.rb | 22 + .../models/tenants/webhook_delete_response.rb | 41 ++ .../tenants/webhook_list_deliveries_params.rb | 88 ++++ .../webhook_list_deliveries_response.rb | 156 +++++++ .../models/tenants/webhook_list_params.rb | 16 + .../models/tenants/webhook_list_response.rb | 81 ++++ .../tenants/webhook_replay_delivery_params.rb | 28 ++ .../webhook_replay_delivery_response.rb | 84 ++++ .../webhook_retrieve_delivery_params.rb | 28 ++ .../webhook_retrieve_delivery_response.rb | 200 +++++++++ .../models/tenants/webhook_retrieve_params.rb | 22 + .../tenants/webhook_retrieve_response.rb | 113 +++++ .../models/tenants/webhook_test_params.rb | 48 +++ .../models/tenants/webhook_test_response.rb | 82 ++++ .../models/tenants/webhook_update_params.rb | 52 +++ .../models/tenants/webhook_update_response.rb | 113 +++++ lib/ark_email/models/track_domain.rb | 176 -------- .../models/tracking_create_params.rb | 54 --- .../models/tracking_create_response.rb | 28 -- .../models/tracking_delete_params.rb | 14 - .../models/tracking_delete_response.rb | 39 -- lib/ark_email/models/tracking_list_params.rb | 14 - .../models/tracking_list_response.rb | 41 -- .../models/tracking_retrieve_params.rb | 14 - .../models/tracking_retrieve_response.rb | 28 -- .../models/tracking_update_params.rb | 46 --- .../models/tracking_update_response.rb | 28 -- .../models/tracking_verify_params.rb | 14 - .../models/tracking_verify_response.rb | 133 ------ lib/ark_email/models/usage_export_params.rb | 18 +- ...params.rb => usage_list_tenants_params.rb} | 57 +-- lib/ark_email/models/usage_retrieve_params.rb | 28 +- .../models/usage_retrieve_response.rb | 33 -- ...usage_retrieve_tenant_timeseries_params.rb | 51 --- ...age_retrieve_tenant_timeseries_response.rb | 33 -- .../usage_retrieve_tenant_usage_params.rb | 41 -- .../usage_retrieve_tenant_usage_response.rb | 33 -- lib/ark_email/models/webhook_create_params.rb | 84 ---- .../models/webhook_create_response.rb | 111 ----- lib/ark_email/models/webhook_delete_params.rb | 14 - .../models/webhook_delete_response.rb | 39 -- .../models/webhook_list_deliveries_params.rb | 79 ---- .../webhook_list_deliveries_response.rb | 154 ------- lib/ark_email/models/webhook_list_params.rb | 14 - lib/ark_email/models/webhook_list_response.rb | 79 ---- .../models/webhook_replay_delivery_params.rb | 20 - .../webhook_replay_delivery_response.rb | 82 ---- .../webhook_retrieve_delivery_params.rb | 20 - .../webhook_retrieve_delivery_response.rb | 198 --------- .../models/webhook_retrieve_params.rb | 14 - .../models/webhook_retrieve_response.rb | 111 ----- lib/ark_email/models/webhook_test_params.rb | 39 -- lib/ark_email/models/webhook_test_response.rb | 80 ---- lib/ark_email/models/webhook_update_params.rb | 44 -- .../models/webhook_update_response.rb | 111 ----- lib/ark_email/resources/domains.rb | 139 ------- lib/ark_email/resources/limits.rb | 2 +- lib/ark_email/resources/suppressions.rb | 124 ------ lib/ark_email/resources/tenants.rb | 20 + .../resources/tenants/credentials.rb | 4 +- lib/ark_email/resources/tenants/domains.rb | 159 +++++++ .../resources/tenants/suppressions.rb | 126 ++++++ lib/ark_email/resources/tenants/tracking.rb | 203 +++++++++ lib/ark_email/resources/tenants/usage.rb | 107 +++++ lib/ark_email/resources/tenants/webhooks.rb | 363 ++++++++++++++++ lib/ark_email/resources/tracking.rb | 167 -------- lib/ark_email/resources/usage.rb | 220 +++------- lib/ark_email/resources/webhooks.rb | 302 -------------- rbi/ark_email/client.rbi | 18 +- rbi/ark_email/internal/offset_pagination.rbi | 110 ----- rbi/ark_email/models.rbi | 69 +--- rbi/ark_email/models/bulk_tenant_usage.rbi | 302 -------------- rbi/ark_email/models/dns_record.rbi | 146 ------- rbi/ark_email/models/domain_create_params.rbi | 51 --- .../models/domain_create_response.rbi | 376 ----------------- rbi/ark_email/models/domain_delete_params.rbi | 27 -- .../models/domain_delete_response.rbi | 75 ---- rbi/ark_email/models/domain_list_params.rbi | 43 -- rbi/ark_email/models/domain_list_response.rbi | 166 -------- .../models/domain_retrieve_params.rbi | 27 -- .../models/domain_retrieve_response.rbi | 380 ----------------- rbi/ark_email/models/domain_verify_params.rbi | 27 -- .../models/domain_verify_response.rbi | 376 ----------------- rbi/ark_email/models/org_usage_summary.rbi | 165 ++++++++ .../models/suppression_bulk_create_params.rbi | 80 ---- .../suppression_bulk_create_response.rbi | 115 ------ .../models/suppression_create_params.rbi | 51 --- .../models/suppression_create_response.rbi | 109 ----- .../models/suppression_delete_params.rbi | 27 -- .../models/suppression_delete_response.rbi | 77 ---- .../models/suppression_list_params.rbi | 49 --- .../models/suppression_list_response.rbi | 56 --- .../models/suppression_retrieve_params.rbi | 30 -- .../models/suppression_retrieve_response.rbi | 115 ------ ...tenant_usage.rbi => tenant_usage_item.rbi} | 52 ++- .../models/tenant_usage_timeseries.rbi | 200 --------- rbi/ark_email/models/tenants/dns_record.rbi | 161 ++++++++ .../models/tenants/domain_create_params.rbi | 45 ++ .../models/tenants/domain_create_response.rbi | 388 +++++++++++++++++ .../models/tenants/domain_delete_params.rbi | 40 ++ .../models/tenants/domain_delete_response.rbi | 79 ++++ .../models/tenants/domain_list_params.rbi | 32 ++ .../models/tenants/domain_list_response.rbi | 176 ++++++++ .../models/tenants/domain_retrieve_params.rbi | 40 ++ .../tenants/domain_retrieve_response.rbi | 390 ++++++++++++++++++ .../models/tenants/domain_verify_params.rbi | 40 ++ .../models/tenants/domain_verify_response.rbi | 388 +++++++++++++++++ .../tenants/suppression_create_params.rbi | 56 +++ .../tenants/suppression_create_response.rbi | 115 ++++++ .../tenants/suppression_delete_params.rbi | 40 ++ .../tenants/suppression_delete_response.rbi | 83 ++++ .../tenants/suppression_list_params.rbi | 54 +++ .../tenants/suppression_list_response.rbi | 58 +++ .../tenants/suppression_retrieve_params.rbi | 40 ++ .../tenants/suppression_retrieve_response.rbi | 122 ++++++ rbi/ark_email/models/tenants/tenant_usage.rbi | 91 ++++ .../tenants/tenant_usage_timeseries.rbi | 218 ++++++++++ rbi/ark_email/models/tenants/track_domain.rbi | 255 ++++++++++++ .../models/tenants/tracking_create_params.rbi | 80 ++++ .../tenants/tracking_create_response.rbi | 54 +++ .../models/tenants/tracking_delete_params.rbi | 40 ++ .../tenants/tracking_delete_response.rbi | 81 ++++ .../models/tenants/tracking_list_params.rbi | 32 ++ .../models/tenants/tracking_list_response.rbi | 87 ++++ .../tenants/tracking_retrieve_params.rbi | 40 ++ .../tenants/tracking_retrieve_response.rbi | 54 +++ .../models/tenants/tracking_update_params.rbi | 78 ++++ .../tenants/tracking_update_response.rbi | 54 +++ .../models/tenants/tracking_verify_params.rbi | 40 ++ .../tenants/tracking_verify_response.rbi | 260 ++++++++++++ .../models/tenants/usage_retrieve_params.rbi | 78 ++++ .../tenants/usage_retrieve_response.rbi | 61 +++ .../usage_retrieve_timeseries_params.rbi | 131 ++++++ .../usage_retrieve_timeseries_response.rbi | 63 +++ .../models/tenants/webhook_create_params.rbi | 175 ++++++++ .../tenants/webhook_create_response.rbi | 222 ++++++++++ .../models/tenants/webhook_delete_params.rbi | 40 ++ .../tenants/webhook_delete_response.rbi | 80 ++++ .../webhook_list_deliveries_params.rbi | 190 +++++++++ .../webhook_list_deliveries_response.rbi | 265 ++++++++++++ .../models/tenants/webhook_list_params.rbi | 32 ++ .../models/tenants/webhook_list_response.rbi | 160 +++++++ .../webhook_replay_delivery_params.rbi | 48 +++ .../webhook_replay_delivery_response.rbi | 141 +++++++ .../webhook_retrieve_delivery_params.rbi | 48 +++ .../webhook_retrieve_delivery_response.rbi | 380 +++++++++++++++++ .../tenants/webhook_retrieve_params.rbi | 40 ++ .../tenants/webhook_retrieve_response.rbi | 225 ++++++++++ .../models/tenants/webhook_test_params.rbi | 116 ++++++ .../models/tenants/webhook_test_response.rbi | 133 ++++++ .../models/tenants/webhook_update_params.rbi | 76 ++++ .../tenants/webhook_update_response.rbi | 222 ++++++++++ rbi/ark_email/models/track_domain.rbi | 230 ----------- .../models/tracking_create_params.rbi | 75 ---- .../models/tracking_create_response.rbi | 52 --- .../models/tracking_delete_params.rbi | 27 -- .../models/tracking_delete_response.rbi | 77 ---- rbi/ark_email/models/tracking_list_params.rbi | 27 -- .../models/tracking_list_response.rbi | 81 ---- .../models/tracking_retrieve_params.rbi | 27 -- .../models/tracking_retrieve_response.rbi | 52 --- .../models/tracking_update_params.rbi | 67 --- .../models/tracking_update_response.rbi | 52 --- .../models/tracking_verify_params.rbi | 27 -- .../models/tracking_verify_response.rbi | 254 ------------ rbi/ark_email/models/usage_export_params.rbi | 21 +- ...rams.rbi => usage_list_tenants_params.rbi} | 127 +++--- .../models/usage_retrieve_params.rbi | 54 ++- .../models/usage_retrieve_response.rbi | 59 --- ...sage_retrieve_tenant_timeseries_params.rbi | 129 ------ ...ge_retrieve_tenant_timeseries_response.rbi | 59 --- .../usage_retrieve_tenant_usage_params.rbi | 76 ---- .../usage_retrieve_tenant_usage_response.rbi | 59 --- .../models/webhook_create_params.rbi | 158 ------- .../models/webhook_create_response.rbi | 217 ---------- .../models/webhook_delete_params.rbi | 27 -- .../models/webhook_delete_response.rbi | 75 ---- .../models/webhook_list_deliveries_params.rbi | 172 -------- .../webhook_list_deliveries_response.rbi | 257 ------------ rbi/ark_email/models/webhook_list_params.rbi | 27 -- .../models/webhook_list_response.rbi | 152 ------- .../models/webhook_replay_delivery_params.rbi | 38 -- .../webhook_replay_delivery_response.rbi | 132 ------ .../webhook_retrieve_delivery_params.rbi | 38 -- .../webhook_retrieve_delivery_response.rbi | 371 ----------------- .../models/webhook_retrieve_params.rbi | 27 -- .../models/webhook_retrieve_response.rbi | 219 ---------- rbi/ark_email/models/webhook_test_params.rbi | 95 ----- .../models/webhook_test_response.rbi | 129 ------ .../models/webhook_update_params.rbi | 65 --- .../models/webhook_update_response.rbi | 217 ---------- rbi/ark_email/resources/domains.rbi | 98 ----- rbi/ark_email/resources/limits.rbi | 2 +- rbi/ark_email/resources/suppressions.rbi | 84 ---- rbi/ark_email/resources/tenants.rbi | 15 + .../resources/tenants/credentials.rbi | 4 +- rbi/ark_email/resources/tenants/domains.rbi | 114 +++++ .../resources/tenants/suppressions.rbi | 93 +++++ rbi/ark_email/resources/tenants/tracking.rbi | 153 +++++++ rbi/ark_email/resources/tenants/usage.rbi | 100 +++++ rbi/ark_email/resources/tenants/webhooks.rbi | 295 +++++++++++++ rbi/ark_email/resources/tracking.rbi | 130 ------ rbi/ark_email/resources/usage.rbi | 227 ++++------ rbi/ark_email/resources/webhooks.rbi | 244 ----------- sig/ark_email/client.rbs | 12 +- sig/ark_email/internal/offset_pagination.rbs | 70 ---- sig/ark_email/models.rbs | 66 +-- sig/ark_email/models/bulk_tenant_usage.rbs | 143 ------- sig/ark_email/models/dns_record.rbs | 64 --- sig/ark_email/models/domain_create_params.rbs | 28 -- .../models/domain_create_response.rbs | 125 ------ sig/ark_email/models/domain_delete_params.rbs | 15 - .../models/domain_delete_response.rbs | 40 -- sig/ark_email/models/domain_list_params.rbs | 25 -- sig/ark_email/models/domain_list_response.rbs | 86 ---- .../models/domain_retrieve_params.rbs | 15 - .../models/domain_retrieve_response.rbs | 125 ------ sig/ark_email/models/domain_verify_params.rbs | 15 - .../models/domain_verify_response.rbs | 125 ------ sig/ark_email/models/org_usage_summary.rbs | 85 ++++ .../models/suppression_bulk_create_params.rbs | 38 -- .../suppression_bulk_create_response.rbs | 62 --- .../models/suppression_create_params.rbs | 28 -- .../models/suppression_create_response.rbs | 59 --- .../models/suppression_delete_params.rbs | 15 - .../models/suppression_delete_response.rbs | 40 -- .../models/suppression_list_params.rbs | 32 -- .../models/suppression_list_response.rbs | 32 -- .../models/suppression_retrieve_params.rbs | 15 - .../models/suppression_retrieve_response.rbs | 62 --- ...tenant_usage.rbs => tenant_usage_item.rbs} | 26 +- .../models/tenant_usage_timeseries.rbs | 100 ----- sig/ark_email/models/tenants/dns_record.rbs | 66 +++ .../models/tenants/domain_create_params.rbs | 25 ++ .../models/tenants/domain_create_response.rbs | 127 ++++++ .../models/tenants/domain_delete_params.rbs | 25 ++ .../models/tenants/domain_delete_response.rbs | 42 ++ .../models/tenants/domain_list_params.rbs | 17 + .../models/tenants/domain_list_response.rbs | 90 ++++ .../models/tenants/domain_retrieve_params.rbs | 25 ++ .../tenants/domain_retrieve_response.rbs | 127 ++++++ .../models/tenants/domain_verify_params.rbs | 25 ++ .../models/tenants/domain_verify_response.rbs | 127 ++++++ .../tenants/suppression_create_params.rbs | 30 ++ .../tenants/suppression_create_response.rbs | 61 +++ .../tenants/suppression_delete_params.rbs | 25 ++ .../tenants/suppression_delete_response.rbs | 42 ++ .../tenants/suppression_list_params.rbs | 34 ++ .../tenants/suppression_list_response.rbs | 34 ++ .../tenants/suppression_retrieve_params.rbs | 25 ++ .../tenants/suppression_retrieve_response.rbs | 64 +++ sig/ark_email/models/tenants/tenant_usage.rbs | 49 +++ .../tenants/tenant_usage_timeseries.rbs | 104 +++++ sig/ark_email/models/tenants/track_domain.rbs | 124 ++++++ .../models/tenants/tracking_create_params.rbs | 48 +++ .../tenants/tracking_create_response.rbs | 32 ++ .../models/tenants/tracking_delete_params.rbs | 25 ++ .../tenants/tracking_delete_response.rbs | 42 ++ .../models/tenants/tracking_list_params.rbs | 17 + .../models/tenants/tracking_list_response.rbs | 46 +++ .../tenants/tracking_retrieve_params.rbs | 25 ++ .../tenants/tracking_retrieve_response.rbs | 32 ++ .../models/tenants/tracking_update_params.rbs | 48 +++ .../tenants/tracking_update_response.rbs | 32 ++ .../models/tenants/tracking_verify_params.rbs | 25 ++ .../tenants/tracking_verify_response.rbs | 115 ++++++ .../models/tenants/usage_retrieve_params.rbs | 34 ++ .../tenants/usage_retrieve_response.rbs | 32 ++ .../usage_retrieve_timeseries_params.rbs | 59 +++ .../usage_retrieve_timeseries_response.rbs | 32 ++ .../models/tenants/webhook_create_params.rbs | 73 ++++ .../tenants/webhook_create_response.rbs | 109 +++++ .../models/tenants/webhook_delete_params.rbs | 25 ++ .../tenants/webhook_delete_response.rbs | 42 ++ .../webhook_list_deliveries_params.rbs | 97 +++++ .../webhook_list_deliveries_response.rbs | 129 ++++++ .../models/tenants/webhook_list_params.rbs | 17 + .../models/tenants/webhook_list_response.rbs | 86 ++++ .../webhook_replay_delivery_params.rbs | 30 ++ .../webhook_replay_delivery_response.rbs | 74 ++++ .../webhook_retrieve_delivery_params.rbs | 30 ++ .../webhook_retrieve_delivery_response.rbs | 160 +++++++ .../tenants/webhook_retrieve_params.rbs | 25 ++ .../tenants/webhook_retrieve_response.rbs | 109 +++++ .../models/tenants/webhook_test_params.rbs | 58 +++ .../models/tenants/webhook_test_response.rbs | 74 ++++ .../models/tenants/webhook_update_params.rbs | 53 +++ .../tenants/webhook_update_response.rbs | 109 +++++ sig/ark_email/models/track_domain.rbs | 122 ------ .../models/tracking_create_params.rbs | 46 --- .../models/tracking_create_response.rbs | 26 -- .../models/tracking_delete_params.rbs | 15 - .../models/tracking_delete_response.rbs | 40 -- sig/ark_email/models/tracking_list_params.rbs | 15 - .../models/tracking_list_response.rbs | 40 -- .../models/tracking_retrieve_params.rbs | 15 - .../models/tracking_retrieve_response.rbs | 26 -- .../models/tracking_update_params.rbs | 41 -- .../models/tracking_update_response.rbs | 26 -- .../models/tracking_verify_params.rbs | 15 - .../models/tracking_verify_response.rbs | 109 ----- sig/ark_email/models/usage_export_params.rbs | 3 +- ...rams.rbs => usage_list_tenants_params.rbs} | 68 +-- .../models/usage_retrieve_params.rbs | 23 +- .../models/usage_retrieve_response.rbs | 26 -- ...sage_retrieve_tenant_timeseries_params.rbs | 57 --- ...ge_retrieve_tenant_timeseries_response.rbs | 30 -- .../usage_retrieve_tenant_usage_params.rbs | 32 -- .../usage_retrieve_tenant_usage_response.rbs | 26 -- .../models/webhook_create_params.rbs | 71 ---- .../models/webhook_create_response.rbs | 107 ----- .../models/webhook_delete_params.rbs | 15 - .../models/webhook_delete_response.rbs | 40 -- .../models/webhook_list_deliveries_params.rbs | 90 ---- .../webhook_list_deliveries_response.rbs | 127 ------ sig/ark_email/models/webhook_list_params.rbs | 15 - .../models/webhook_list_response.rbs | 84 ---- .../models/webhook_replay_delivery_params.rbs | 23 -- .../webhook_replay_delivery_response.rbs | 72 ---- .../webhook_retrieve_delivery_params.rbs | 23 -- .../webhook_retrieve_delivery_response.rbs | 158 ------- .../models/webhook_retrieve_params.rbs | 15 - .../models/webhook_retrieve_response.rbs | 107 ----- sig/ark_email/models/webhook_test_params.rbs | 49 --- .../models/webhook_test_response.rbs | 72 ---- .../models/webhook_update_params.rbs | 46 --- .../models/webhook_update_response.rbs | 107 ----- sig/ark_email/resources/domains.rbs | 33 -- sig/ark_email/resources/suppressions.rbs | 34 -- sig/ark_email/resources/tenants.rbs | 10 + sig/ark_email/resources/tenants/domains.rbs | 38 ++ .../resources/tenants/suppressions.rbs | 35 ++ sig/ark_email/resources/tenants/tracking.rbs | 52 +++ sig/ark_email/resources/tenants/usage.rbs | 24 ++ sig/ark_email/resources/tenants/webhooks.rbs | 80 ++++ sig/ark_email/resources/tracking.rbs | 44 -- sig/ark_email/resources/usage.rbs | 31 +- sig/ark_email/resources/webhooks.rbs | 69 ---- test/ark_email/resources/domains_test.rb | 85 ---- test/ark_email/resources/suppressions_test.rb | 93 ----- .../resources/tenants/domains_test.rb | 85 ++++ .../resources/tenants/suppressions_test.rb | 77 ++++ .../resources/tenants/tracking_test.rb | 101 +++++ .../ark_email/resources/tenants/usage_test.rb | 37 ++ .../resources/tenants/webhooks_test.rb | 167 ++++++++ test/ark_email/resources/tracking_test.rb | 101 ----- test/ark_email/resources/usage_test.rb | 46 +-- test/ark_email/resources/webhooks_test.rb | 152 ------- 419 files changed, 17135 insertions(+), 16820 deletions(-) delete mode 100644 lib/ark_email/internal/offset_pagination.rb delete mode 100644 lib/ark_email/models/bulk_tenant_usage.rb delete mode 100644 lib/ark_email/models/dns_record.rb delete mode 100644 lib/ark_email/models/domain_create_params.rb delete mode 100644 lib/ark_email/models/domain_create_response.rb delete mode 100644 lib/ark_email/models/domain_delete_params.rb delete mode 100644 lib/ark_email/models/domain_delete_response.rb delete mode 100644 lib/ark_email/models/domain_list_params.rb delete mode 100644 lib/ark_email/models/domain_list_response.rb delete mode 100644 lib/ark_email/models/domain_retrieve_params.rb delete mode 100644 lib/ark_email/models/domain_retrieve_response.rb delete mode 100644 lib/ark_email/models/domain_verify_params.rb delete mode 100644 lib/ark_email/models/domain_verify_response.rb create mode 100644 lib/ark_email/models/org_usage_summary.rb delete mode 100644 lib/ark_email/models/suppression_bulk_create_params.rb delete mode 100644 lib/ark_email/models/suppression_bulk_create_response.rb delete mode 100644 lib/ark_email/models/suppression_create_params.rb delete mode 100644 lib/ark_email/models/suppression_create_response.rb delete mode 100644 lib/ark_email/models/suppression_delete_params.rb delete mode 100644 lib/ark_email/models/suppression_delete_response.rb delete mode 100644 lib/ark_email/models/suppression_list_params.rb delete mode 100644 lib/ark_email/models/suppression_list_response.rb delete mode 100644 lib/ark_email/models/suppression_retrieve_params.rb delete mode 100644 lib/ark_email/models/suppression_retrieve_response.rb rename lib/ark_email/models/{tenant_usage.rb => tenant_usage_item.rb} (51%) delete mode 100644 lib/ark_email/models/tenant_usage_timeseries.rb create mode 100644 lib/ark_email/models/tenants/dns_record.rb create mode 100644 lib/ark_email/models/tenants/domain_create_params.rb create mode 100644 lib/ark_email/models/tenants/domain_create_response.rb create mode 100644 lib/ark_email/models/tenants/domain_delete_params.rb create mode 100644 lib/ark_email/models/tenants/domain_delete_response.rb create mode 100644 lib/ark_email/models/tenants/domain_list_params.rb create mode 100644 lib/ark_email/models/tenants/domain_list_response.rb create mode 100644 lib/ark_email/models/tenants/domain_retrieve_params.rb create mode 100644 lib/ark_email/models/tenants/domain_retrieve_response.rb create mode 100644 lib/ark_email/models/tenants/domain_verify_params.rb create mode 100644 lib/ark_email/models/tenants/domain_verify_response.rb create mode 100644 lib/ark_email/models/tenants/suppression_create_params.rb create mode 100644 lib/ark_email/models/tenants/suppression_create_response.rb create mode 100644 lib/ark_email/models/tenants/suppression_delete_params.rb create mode 100644 lib/ark_email/models/tenants/suppression_delete_response.rb create mode 100644 lib/ark_email/models/tenants/suppression_list_params.rb create mode 100644 lib/ark_email/models/tenants/suppression_list_response.rb create mode 100644 lib/ark_email/models/tenants/suppression_retrieve_params.rb create mode 100644 lib/ark_email/models/tenants/suppression_retrieve_response.rb create mode 100644 lib/ark_email/models/tenants/tenant_usage.rb create mode 100644 lib/ark_email/models/tenants/tenant_usage_timeseries.rb create mode 100644 lib/ark_email/models/tenants/track_domain.rb create mode 100644 lib/ark_email/models/tenants/tracking_create_params.rb create mode 100644 lib/ark_email/models/tenants/tracking_create_response.rb create mode 100644 lib/ark_email/models/tenants/tracking_delete_params.rb create mode 100644 lib/ark_email/models/tenants/tracking_delete_response.rb create mode 100644 lib/ark_email/models/tenants/tracking_list_params.rb create mode 100644 lib/ark_email/models/tenants/tracking_list_response.rb create mode 100644 lib/ark_email/models/tenants/tracking_retrieve_params.rb create mode 100644 lib/ark_email/models/tenants/tracking_retrieve_response.rb create mode 100644 lib/ark_email/models/tenants/tracking_update_params.rb create mode 100644 lib/ark_email/models/tenants/tracking_update_response.rb create mode 100644 lib/ark_email/models/tenants/tracking_verify_params.rb create mode 100644 lib/ark_email/models/tenants/tracking_verify_response.rb create mode 100644 lib/ark_email/models/tenants/usage_retrieve_params.rb create mode 100644 lib/ark_email/models/tenants/usage_retrieve_response.rb create mode 100644 lib/ark_email/models/tenants/usage_retrieve_timeseries_params.rb create mode 100644 lib/ark_email/models/tenants/usage_retrieve_timeseries_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_create_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_create_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_delete_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_delete_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_list_deliveries_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_list_deliveries_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_list_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_list_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_replay_delivery_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_replay_delivery_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_retrieve_delivery_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_retrieve_delivery_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_retrieve_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_retrieve_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_test_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_test_response.rb create mode 100644 lib/ark_email/models/tenants/webhook_update_params.rb create mode 100644 lib/ark_email/models/tenants/webhook_update_response.rb delete mode 100644 lib/ark_email/models/track_domain.rb delete mode 100644 lib/ark_email/models/tracking_create_params.rb delete mode 100644 lib/ark_email/models/tracking_create_response.rb delete mode 100644 lib/ark_email/models/tracking_delete_params.rb delete mode 100644 lib/ark_email/models/tracking_delete_response.rb delete mode 100644 lib/ark_email/models/tracking_list_params.rb delete mode 100644 lib/ark_email/models/tracking_list_response.rb delete mode 100644 lib/ark_email/models/tracking_retrieve_params.rb delete mode 100644 lib/ark_email/models/tracking_retrieve_response.rb delete mode 100644 lib/ark_email/models/tracking_update_params.rb delete mode 100644 lib/ark_email/models/tracking_update_response.rb delete mode 100644 lib/ark_email/models/tracking_verify_params.rb delete mode 100644 lib/ark_email/models/tracking_verify_response.rb rename lib/ark_email/models/{usage_list_by_tenant_params.rb => usage_list_tenants_params.rb} (56%) delete mode 100644 lib/ark_email/models/usage_retrieve_response.rb delete mode 100644 lib/ark_email/models/usage_retrieve_tenant_timeseries_params.rb delete mode 100644 lib/ark_email/models/usage_retrieve_tenant_timeseries_response.rb delete mode 100644 lib/ark_email/models/usage_retrieve_tenant_usage_params.rb delete mode 100644 lib/ark_email/models/usage_retrieve_tenant_usage_response.rb delete mode 100644 lib/ark_email/models/webhook_create_params.rb delete mode 100644 lib/ark_email/models/webhook_create_response.rb delete mode 100644 lib/ark_email/models/webhook_delete_params.rb delete mode 100644 lib/ark_email/models/webhook_delete_response.rb delete mode 100644 lib/ark_email/models/webhook_list_deliveries_params.rb delete mode 100644 lib/ark_email/models/webhook_list_deliveries_response.rb delete mode 100644 lib/ark_email/models/webhook_list_params.rb delete mode 100644 lib/ark_email/models/webhook_list_response.rb delete mode 100644 lib/ark_email/models/webhook_replay_delivery_params.rb delete mode 100644 lib/ark_email/models/webhook_replay_delivery_response.rb delete mode 100644 lib/ark_email/models/webhook_retrieve_delivery_params.rb delete mode 100644 lib/ark_email/models/webhook_retrieve_delivery_response.rb delete mode 100644 lib/ark_email/models/webhook_retrieve_params.rb delete mode 100644 lib/ark_email/models/webhook_retrieve_response.rb delete mode 100644 lib/ark_email/models/webhook_test_params.rb delete mode 100644 lib/ark_email/models/webhook_test_response.rb delete mode 100644 lib/ark_email/models/webhook_update_params.rb delete mode 100644 lib/ark_email/models/webhook_update_response.rb delete mode 100644 lib/ark_email/resources/domains.rb delete mode 100644 lib/ark_email/resources/suppressions.rb create mode 100644 lib/ark_email/resources/tenants/domains.rb create mode 100644 lib/ark_email/resources/tenants/suppressions.rb create mode 100644 lib/ark_email/resources/tenants/tracking.rb create mode 100644 lib/ark_email/resources/tenants/usage.rb create mode 100644 lib/ark_email/resources/tenants/webhooks.rb delete mode 100644 lib/ark_email/resources/tracking.rb delete mode 100644 lib/ark_email/resources/webhooks.rb delete mode 100644 rbi/ark_email/internal/offset_pagination.rbi delete mode 100644 rbi/ark_email/models/bulk_tenant_usage.rbi delete mode 100644 rbi/ark_email/models/dns_record.rbi delete mode 100644 rbi/ark_email/models/domain_create_params.rbi delete mode 100644 rbi/ark_email/models/domain_create_response.rbi delete mode 100644 rbi/ark_email/models/domain_delete_params.rbi delete mode 100644 rbi/ark_email/models/domain_delete_response.rbi delete mode 100644 rbi/ark_email/models/domain_list_params.rbi delete mode 100644 rbi/ark_email/models/domain_list_response.rbi delete mode 100644 rbi/ark_email/models/domain_retrieve_params.rbi delete mode 100644 rbi/ark_email/models/domain_retrieve_response.rbi delete mode 100644 rbi/ark_email/models/domain_verify_params.rbi delete mode 100644 rbi/ark_email/models/domain_verify_response.rbi create mode 100644 rbi/ark_email/models/org_usage_summary.rbi delete mode 100644 rbi/ark_email/models/suppression_bulk_create_params.rbi delete mode 100644 rbi/ark_email/models/suppression_bulk_create_response.rbi delete mode 100644 rbi/ark_email/models/suppression_create_params.rbi delete mode 100644 rbi/ark_email/models/suppression_create_response.rbi delete mode 100644 rbi/ark_email/models/suppression_delete_params.rbi delete mode 100644 rbi/ark_email/models/suppression_delete_response.rbi delete mode 100644 rbi/ark_email/models/suppression_list_params.rbi delete mode 100644 rbi/ark_email/models/suppression_list_response.rbi delete mode 100644 rbi/ark_email/models/suppression_retrieve_params.rbi delete mode 100644 rbi/ark_email/models/suppression_retrieve_response.rbi rename rbi/ark_email/models/{tenant_usage.rbi => tenant_usage_item.rbi} (56%) delete mode 100644 rbi/ark_email/models/tenant_usage_timeseries.rbi create mode 100644 rbi/ark_email/models/tenants/dns_record.rbi create mode 100644 rbi/ark_email/models/tenants/domain_create_params.rbi create mode 100644 rbi/ark_email/models/tenants/domain_create_response.rbi create mode 100644 rbi/ark_email/models/tenants/domain_delete_params.rbi create mode 100644 rbi/ark_email/models/tenants/domain_delete_response.rbi create mode 100644 rbi/ark_email/models/tenants/domain_list_params.rbi create mode 100644 rbi/ark_email/models/tenants/domain_list_response.rbi create mode 100644 rbi/ark_email/models/tenants/domain_retrieve_params.rbi create mode 100644 rbi/ark_email/models/tenants/domain_retrieve_response.rbi create mode 100644 rbi/ark_email/models/tenants/domain_verify_params.rbi create mode 100644 rbi/ark_email/models/tenants/domain_verify_response.rbi create mode 100644 rbi/ark_email/models/tenants/suppression_create_params.rbi create mode 100644 rbi/ark_email/models/tenants/suppression_create_response.rbi create mode 100644 rbi/ark_email/models/tenants/suppression_delete_params.rbi create mode 100644 rbi/ark_email/models/tenants/suppression_delete_response.rbi create mode 100644 rbi/ark_email/models/tenants/suppression_list_params.rbi create mode 100644 rbi/ark_email/models/tenants/suppression_list_response.rbi create mode 100644 rbi/ark_email/models/tenants/suppression_retrieve_params.rbi create mode 100644 rbi/ark_email/models/tenants/suppression_retrieve_response.rbi create mode 100644 rbi/ark_email/models/tenants/tenant_usage.rbi create mode 100644 rbi/ark_email/models/tenants/tenant_usage_timeseries.rbi create mode 100644 rbi/ark_email/models/tenants/track_domain.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_create_params.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_create_response.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_delete_params.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_delete_response.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_list_params.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_list_response.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_retrieve_params.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_retrieve_response.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_update_params.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_update_response.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_verify_params.rbi create mode 100644 rbi/ark_email/models/tenants/tracking_verify_response.rbi create mode 100644 rbi/ark_email/models/tenants/usage_retrieve_params.rbi create mode 100644 rbi/ark_email/models/tenants/usage_retrieve_response.rbi create mode 100644 rbi/ark_email/models/tenants/usage_retrieve_timeseries_params.rbi create mode 100644 rbi/ark_email/models/tenants/usage_retrieve_timeseries_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_create_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_create_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_delete_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_delete_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_list_deliveries_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_list_deliveries_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_list_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_list_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_replay_delivery_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_replay_delivery_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_retrieve_delivery_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_retrieve_delivery_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_retrieve_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_retrieve_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_test_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_test_response.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_update_params.rbi create mode 100644 rbi/ark_email/models/tenants/webhook_update_response.rbi delete mode 100644 rbi/ark_email/models/track_domain.rbi delete mode 100644 rbi/ark_email/models/tracking_create_params.rbi delete mode 100644 rbi/ark_email/models/tracking_create_response.rbi delete mode 100644 rbi/ark_email/models/tracking_delete_params.rbi delete mode 100644 rbi/ark_email/models/tracking_delete_response.rbi delete mode 100644 rbi/ark_email/models/tracking_list_params.rbi delete mode 100644 rbi/ark_email/models/tracking_list_response.rbi delete mode 100644 rbi/ark_email/models/tracking_retrieve_params.rbi delete mode 100644 rbi/ark_email/models/tracking_retrieve_response.rbi delete mode 100644 rbi/ark_email/models/tracking_update_params.rbi delete mode 100644 rbi/ark_email/models/tracking_update_response.rbi delete mode 100644 rbi/ark_email/models/tracking_verify_params.rbi delete mode 100644 rbi/ark_email/models/tracking_verify_response.rbi rename rbi/ark_email/models/{usage_list_by_tenant_params.rbi => usage_list_tenants_params.rbi} (51%) delete mode 100644 rbi/ark_email/models/usage_retrieve_response.rbi delete mode 100644 rbi/ark_email/models/usage_retrieve_tenant_timeseries_params.rbi delete mode 100644 rbi/ark_email/models/usage_retrieve_tenant_timeseries_response.rbi delete mode 100644 rbi/ark_email/models/usage_retrieve_tenant_usage_params.rbi delete mode 100644 rbi/ark_email/models/usage_retrieve_tenant_usage_response.rbi delete mode 100644 rbi/ark_email/models/webhook_create_params.rbi delete mode 100644 rbi/ark_email/models/webhook_create_response.rbi delete mode 100644 rbi/ark_email/models/webhook_delete_params.rbi delete mode 100644 rbi/ark_email/models/webhook_delete_response.rbi delete mode 100644 rbi/ark_email/models/webhook_list_deliveries_params.rbi delete mode 100644 rbi/ark_email/models/webhook_list_deliveries_response.rbi delete mode 100644 rbi/ark_email/models/webhook_list_params.rbi delete mode 100644 rbi/ark_email/models/webhook_list_response.rbi delete mode 100644 rbi/ark_email/models/webhook_replay_delivery_params.rbi delete mode 100644 rbi/ark_email/models/webhook_replay_delivery_response.rbi delete mode 100644 rbi/ark_email/models/webhook_retrieve_delivery_params.rbi delete mode 100644 rbi/ark_email/models/webhook_retrieve_delivery_response.rbi delete mode 100644 rbi/ark_email/models/webhook_retrieve_params.rbi delete mode 100644 rbi/ark_email/models/webhook_retrieve_response.rbi delete mode 100644 rbi/ark_email/models/webhook_test_params.rbi delete mode 100644 rbi/ark_email/models/webhook_test_response.rbi delete mode 100644 rbi/ark_email/models/webhook_update_params.rbi delete mode 100644 rbi/ark_email/models/webhook_update_response.rbi delete mode 100644 rbi/ark_email/resources/domains.rbi delete mode 100644 rbi/ark_email/resources/suppressions.rbi create mode 100644 rbi/ark_email/resources/tenants/domains.rbi create mode 100644 rbi/ark_email/resources/tenants/suppressions.rbi create mode 100644 rbi/ark_email/resources/tenants/tracking.rbi create mode 100644 rbi/ark_email/resources/tenants/usage.rbi create mode 100644 rbi/ark_email/resources/tenants/webhooks.rbi delete mode 100644 rbi/ark_email/resources/tracking.rbi delete mode 100644 rbi/ark_email/resources/webhooks.rbi delete mode 100644 sig/ark_email/internal/offset_pagination.rbs delete mode 100644 sig/ark_email/models/bulk_tenant_usage.rbs delete mode 100644 sig/ark_email/models/dns_record.rbs delete mode 100644 sig/ark_email/models/domain_create_params.rbs delete mode 100644 sig/ark_email/models/domain_create_response.rbs delete mode 100644 sig/ark_email/models/domain_delete_params.rbs delete mode 100644 sig/ark_email/models/domain_delete_response.rbs delete mode 100644 sig/ark_email/models/domain_list_params.rbs delete mode 100644 sig/ark_email/models/domain_list_response.rbs delete mode 100644 sig/ark_email/models/domain_retrieve_params.rbs delete mode 100644 sig/ark_email/models/domain_retrieve_response.rbs delete mode 100644 sig/ark_email/models/domain_verify_params.rbs delete mode 100644 sig/ark_email/models/domain_verify_response.rbs create mode 100644 sig/ark_email/models/org_usage_summary.rbs delete mode 100644 sig/ark_email/models/suppression_bulk_create_params.rbs delete mode 100644 sig/ark_email/models/suppression_bulk_create_response.rbs delete mode 100644 sig/ark_email/models/suppression_create_params.rbs delete mode 100644 sig/ark_email/models/suppression_create_response.rbs delete mode 100644 sig/ark_email/models/suppression_delete_params.rbs delete mode 100644 sig/ark_email/models/suppression_delete_response.rbs delete mode 100644 sig/ark_email/models/suppression_list_params.rbs delete mode 100644 sig/ark_email/models/suppression_list_response.rbs delete mode 100644 sig/ark_email/models/suppression_retrieve_params.rbs delete mode 100644 sig/ark_email/models/suppression_retrieve_response.rbs rename sig/ark_email/models/{tenant_usage.rbs => tenant_usage_item.rbs} (57%) delete mode 100644 sig/ark_email/models/tenant_usage_timeseries.rbs create mode 100644 sig/ark_email/models/tenants/dns_record.rbs create mode 100644 sig/ark_email/models/tenants/domain_create_params.rbs create mode 100644 sig/ark_email/models/tenants/domain_create_response.rbs create mode 100644 sig/ark_email/models/tenants/domain_delete_params.rbs create mode 100644 sig/ark_email/models/tenants/domain_delete_response.rbs create mode 100644 sig/ark_email/models/tenants/domain_list_params.rbs create mode 100644 sig/ark_email/models/tenants/domain_list_response.rbs create mode 100644 sig/ark_email/models/tenants/domain_retrieve_params.rbs create mode 100644 sig/ark_email/models/tenants/domain_retrieve_response.rbs create mode 100644 sig/ark_email/models/tenants/domain_verify_params.rbs create mode 100644 sig/ark_email/models/tenants/domain_verify_response.rbs create mode 100644 sig/ark_email/models/tenants/suppression_create_params.rbs create mode 100644 sig/ark_email/models/tenants/suppression_create_response.rbs create mode 100644 sig/ark_email/models/tenants/suppression_delete_params.rbs create mode 100644 sig/ark_email/models/tenants/suppression_delete_response.rbs create mode 100644 sig/ark_email/models/tenants/suppression_list_params.rbs create mode 100644 sig/ark_email/models/tenants/suppression_list_response.rbs create mode 100644 sig/ark_email/models/tenants/suppression_retrieve_params.rbs create mode 100644 sig/ark_email/models/tenants/suppression_retrieve_response.rbs create mode 100644 sig/ark_email/models/tenants/tenant_usage.rbs create mode 100644 sig/ark_email/models/tenants/tenant_usage_timeseries.rbs create mode 100644 sig/ark_email/models/tenants/track_domain.rbs create mode 100644 sig/ark_email/models/tenants/tracking_create_params.rbs create mode 100644 sig/ark_email/models/tenants/tracking_create_response.rbs create mode 100644 sig/ark_email/models/tenants/tracking_delete_params.rbs create mode 100644 sig/ark_email/models/tenants/tracking_delete_response.rbs create mode 100644 sig/ark_email/models/tenants/tracking_list_params.rbs create mode 100644 sig/ark_email/models/tenants/tracking_list_response.rbs create mode 100644 sig/ark_email/models/tenants/tracking_retrieve_params.rbs create mode 100644 sig/ark_email/models/tenants/tracking_retrieve_response.rbs create mode 100644 sig/ark_email/models/tenants/tracking_update_params.rbs create mode 100644 sig/ark_email/models/tenants/tracking_update_response.rbs create mode 100644 sig/ark_email/models/tenants/tracking_verify_params.rbs create mode 100644 sig/ark_email/models/tenants/tracking_verify_response.rbs create mode 100644 sig/ark_email/models/tenants/usage_retrieve_params.rbs create mode 100644 sig/ark_email/models/tenants/usage_retrieve_response.rbs create mode 100644 sig/ark_email/models/tenants/usage_retrieve_timeseries_params.rbs create mode 100644 sig/ark_email/models/tenants/usage_retrieve_timeseries_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_create_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_create_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_delete_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_delete_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_list_deliveries_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_list_deliveries_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_list_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_list_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_replay_delivery_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_replay_delivery_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_retrieve_delivery_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_retrieve_delivery_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_retrieve_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_retrieve_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_test_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_test_response.rbs create mode 100644 sig/ark_email/models/tenants/webhook_update_params.rbs create mode 100644 sig/ark_email/models/tenants/webhook_update_response.rbs delete mode 100644 sig/ark_email/models/track_domain.rbs delete mode 100644 sig/ark_email/models/tracking_create_params.rbs delete mode 100644 sig/ark_email/models/tracking_create_response.rbs delete mode 100644 sig/ark_email/models/tracking_delete_params.rbs delete mode 100644 sig/ark_email/models/tracking_delete_response.rbs delete mode 100644 sig/ark_email/models/tracking_list_params.rbs delete mode 100644 sig/ark_email/models/tracking_list_response.rbs delete mode 100644 sig/ark_email/models/tracking_retrieve_params.rbs delete mode 100644 sig/ark_email/models/tracking_retrieve_response.rbs delete mode 100644 sig/ark_email/models/tracking_update_params.rbs delete mode 100644 sig/ark_email/models/tracking_update_response.rbs delete mode 100644 sig/ark_email/models/tracking_verify_params.rbs delete mode 100644 sig/ark_email/models/tracking_verify_response.rbs rename sig/ark_email/models/{usage_list_by_tenant_params.rbs => usage_list_tenants_params.rbs} (53%) delete mode 100644 sig/ark_email/models/usage_retrieve_response.rbs delete mode 100644 sig/ark_email/models/usage_retrieve_tenant_timeseries_params.rbs delete mode 100644 sig/ark_email/models/usage_retrieve_tenant_timeseries_response.rbs delete mode 100644 sig/ark_email/models/usage_retrieve_tenant_usage_params.rbs delete mode 100644 sig/ark_email/models/usage_retrieve_tenant_usage_response.rbs delete mode 100644 sig/ark_email/models/webhook_create_params.rbs delete mode 100644 sig/ark_email/models/webhook_create_response.rbs delete mode 100644 sig/ark_email/models/webhook_delete_params.rbs delete mode 100644 sig/ark_email/models/webhook_delete_response.rbs delete mode 100644 sig/ark_email/models/webhook_list_deliveries_params.rbs delete mode 100644 sig/ark_email/models/webhook_list_deliveries_response.rbs delete mode 100644 sig/ark_email/models/webhook_list_params.rbs delete mode 100644 sig/ark_email/models/webhook_list_response.rbs delete mode 100644 sig/ark_email/models/webhook_replay_delivery_params.rbs delete mode 100644 sig/ark_email/models/webhook_replay_delivery_response.rbs delete mode 100644 sig/ark_email/models/webhook_retrieve_delivery_params.rbs delete mode 100644 sig/ark_email/models/webhook_retrieve_delivery_response.rbs delete mode 100644 sig/ark_email/models/webhook_retrieve_params.rbs delete mode 100644 sig/ark_email/models/webhook_retrieve_response.rbs delete mode 100644 sig/ark_email/models/webhook_test_params.rbs delete mode 100644 sig/ark_email/models/webhook_test_response.rbs delete mode 100644 sig/ark_email/models/webhook_update_params.rbs delete mode 100644 sig/ark_email/models/webhook_update_response.rbs delete mode 100644 sig/ark_email/resources/domains.rbs delete mode 100644 sig/ark_email/resources/suppressions.rbs create mode 100644 sig/ark_email/resources/tenants/domains.rbs create mode 100644 sig/ark_email/resources/tenants/suppressions.rbs create mode 100644 sig/ark_email/resources/tenants/tracking.rbs create mode 100644 sig/ark_email/resources/tenants/usage.rbs create mode 100644 sig/ark_email/resources/tenants/webhooks.rbs delete mode 100644 sig/ark_email/resources/tracking.rbs delete mode 100644 sig/ark_email/resources/webhooks.rbs delete mode 100644 test/ark_email/resources/domains_test.rb delete mode 100644 test/ark_email/resources/suppressions_test.rb create mode 100644 test/ark_email/resources/tenants/domains_test.rb create mode 100644 test/ark_email/resources/tenants/suppressions_test.rb create mode 100644 test/ark_email/resources/tenants/tracking_test.rb create mode 100644 test/ark_email/resources/tenants/usage_test.rb create mode 100644 test/ark_email/resources/tenants/webhooks_test.rb delete mode 100644 test/ark_email/resources/tracking_test.rb delete mode 100644 test/ark_email/resources/webhooks_test.rb diff --git a/.stats.yml b/.stats.yml index 0de1e74..8c774e8 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 50 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-4f8eeb0b9933313def1a9a4184201cb83a96fc2f6de340e7ad52bd216e01adf7.yml -openapi_spec_hash: af08acc45080ae78054e82214014d34c -config_hash: 569f48c6e4612e54e4db8a875be71e1a +configured_endpoints: 49 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-37bce0c9a4d738ca0eed70eb9c19cd4528a79eec733c2b4366217fb2c31abd78.yml +openapi_spec_hash: 7dbd1f812cf95dfa8ba631ced146e255 +config_hash: 1c0067ab4449e3fb20b923cd64edc829 diff --git a/README.md b/README.md index 33a15ba..bad80e4 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ response = ark.emails.send_( subject: "Hello World", to: ["user@example.com"], html: "

Welcome!

", - metadata: {user_id: "usr_123", campaign: "onboarding"}, + metadata: {user_id: "usr_123456", campaign: "onboarding"}, tag: "welcome" ) @@ -92,7 +92,7 @@ begin subject: "Hello World", to: ["user@example.com"], html: "

Welcome!

", - metadata: {user_id: "usr_123", campaign: "onboarding"}, + metadata: {user_id: "usr_123456", campaign: "onboarding"}, tag: "welcome" ) rescue ArkEmail::Errors::APIConnectionError => e @@ -142,7 +142,7 @@ ark.emails.send_( subject: "Hello World", to: ["user@example.com"], html: "

Welcome!

", - metadata: {user_id: "usr_123", campaign: "onboarding"}, + metadata: {user_id: "usr_123456", campaign: "onboarding"}, tag: "welcome", request_options: {max_retries: 5} ) @@ -164,7 +164,7 @@ ark.emails.send_( subject: "Hello World", to: ["user@example.com"], html: "

Welcome!

", - metadata: {user_id: "usr_123", campaign: "onboarding"}, + metadata: {user_id: "usr_123456", campaign: "onboarding"}, tag: "welcome", request_options: {timeout: 5} ) @@ -203,7 +203,7 @@ response = subject: "Hello World", to: ["user@example.com"], html: "

Welcome!

", - metadata: {user_id: "usr_123", campaign: "onboarding"}, + metadata: {user_id: "usr_123456", campaign: "onboarding"}, tag: "welcome", request_options: { extra_query: {my_query_parameter: value}, @@ -255,7 +255,7 @@ ark.emails.send_( subject: "Hello World", to: ["user@example.com"], html: "

Welcome!

", - metadata: {user_id: "usr_123", campaign: "onboarding"}, + metadata: {user_id: "usr_123456", campaign: "onboarding"}, tag: "welcome" ) ``` @@ -269,7 +269,7 @@ ark.emails.send_( subject: "Hello World", to: ["user@example.com"], html: "

Welcome!

", - metadata: {user_id: "usr_123", campaign: "onboarding"}, + metadata: {user_id: "usr_123456", campaign: "onboarding"}, tag: "welcome" ) @@ -279,7 +279,7 @@ params = ArkEmail::EmailSendParams.new( subject: "Hello World", to: ["user@example.com"], html: "

Welcome!

", - metadata: {user_id: "usr_123", campaign: "onboarding"}, + metadata: {user_id: "usr_123456", campaign: "onboarding"}, tag: "welcome" ) ark.emails.send_(**params) diff --git a/lib/ark_email.rb b/lib/ark_email.rb index e579048..7d2aa97 100644 --- a/lib/ark_email.rb +++ b/lib/ark_email.rb @@ -52,22 +52,9 @@ require_relative "ark_email/internal/transport/base_client" require_relative "ark_email/internal/transport/pooled_net_requester" require_relative "ark_email/client" -require_relative "ark_email/internal/offset_pagination" require_relative "ark_email/internal/page_number_pagination" require_relative "ark_email/models/log_entry" require_relative "ark_email/models/api_meta" -require_relative "ark_email/models/bulk_tenant_usage" -require_relative "ark_email/models/dns_record" -require_relative "ark_email/models/domain_create_params" -require_relative "ark_email/models/domain_create_response" -require_relative "ark_email/models/domain_delete_params" -require_relative "ark_email/models/domain_delete_response" -require_relative "ark_email/models/domain_list_params" -require_relative "ark_email/models/domain_list_response" -require_relative "ark_email/models/domain_retrieve_params" -require_relative "ark_email/models/domain_retrieve_response" -require_relative "ark_email/models/domain_verify_params" -require_relative "ark_email/models/domain_verify_response" require_relative "ark_email/models/email_counts" require_relative "ark_email/models/email_list_params" require_relative "ark_email/models/email_list_response" @@ -91,16 +78,7 @@ require_relative "ark_email/models/log_list_params" require_relative "ark_email/models/log_retrieve_params" require_relative "ark_email/models/log_retrieve_response" -require_relative "ark_email/models/suppression_bulk_create_params" -require_relative "ark_email/models/suppression_bulk_create_response" -require_relative "ark_email/models/suppression_create_params" -require_relative "ark_email/models/suppression_create_response" -require_relative "ark_email/models/suppression_delete_params" -require_relative "ark_email/models/suppression_delete_response" -require_relative "ark_email/models/suppression_list_params" -require_relative "ark_email/models/suppression_list_response" -require_relative "ark_email/models/suppression_retrieve_params" -require_relative "ark_email/models/suppression_retrieve_response" +require_relative "ark_email/models/org_usage_summary" require_relative "ark_email/models/tenant" require_relative "ark_email/models/tenant_create_params" require_relative "ark_email/models/tenant_create_response" @@ -119,59 +97,79 @@ require_relative "ark_email/models/tenants/credential_retrieve_response" require_relative "ark_email/models/tenants/credential_update_params" require_relative "ark_email/models/tenants/credential_update_response" +require_relative "ark_email/models/tenants/dns_record" +require_relative "ark_email/models/tenants/domain_create_params" +require_relative "ark_email/models/tenants/domain_create_response" +require_relative "ark_email/models/tenants/domain_delete_params" +require_relative "ark_email/models/tenants/domain_delete_response" +require_relative "ark_email/models/tenants/domain_list_params" +require_relative "ark_email/models/tenants/domain_list_response" +require_relative "ark_email/models/tenants/domain_retrieve_params" +require_relative "ark_email/models/tenants/domain_retrieve_response" +require_relative "ark_email/models/tenants/domain_verify_params" +require_relative "ark_email/models/tenants/domain_verify_response" +require_relative "ark_email/models/tenants/suppression_create_params" +require_relative "ark_email/models/tenants/suppression_create_response" +require_relative "ark_email/models/tenants/suppression_delete_params" +require_relative "ark_email/models/tenants/suppression_delete_response" +require_relative "ark_email/models/tenants/suppression_list_params" +require_relative "ark_email/models/tenants/suppression_list_response" +require_relative "ark_email/models/tenants/suppression_retrieve_params" +require_relative "ark_email/models/tenants/suppression_retrieve_response" +require_relative "ark_email/models/tenants/tenant_usage" +require_relative "ark_email/models/tenants/tenant_usage_timeseries" +require_relative "ark_email/models/tenants/track_domain" +require_relative "ark_email/models/tenants/tracking_create_params" +require_relative "ark_email/models/tenants/tracking_create_response" +require_relative "ark_email/models/tenants/tracking_delete_params" +require_relative "ark_email/models/tenants/tracking_delete_response" +require_relative "ark_email/models/tenants/tracking_list_params" +require_relative "ark_email/models/tenants/tracking_list_response" +require_relative "ark_email/models/tenants/tracking_retrieve_params" +require_relative "ark_email/models/tenants/tracking_retrieve_response" +require_relative "ark_email/models/tenants/tracking_update_params" +require_relative "ark_email/models/tenants/tracking_update_response" +require_relative "ark_email/models/tenants/tracking_verify_params" +require_relative "ark_email/models/tenants/tracking_verify_response" +require_relative "ark_email/models/tenants/usage_retrieve_params" +require_relative "ark_email/models/tenants/usage_retrieve_response" +require_relative "ark_email/models/tenants/usage_retrieve_timeseries_params" +require_relative "ark_email/models/tenants/usage_retrieve_timeseries_response" +require_relative "ark_email/models/tenants/webhook_create_params" +require_relative "ark_email/models/tenants/webhook_create_response" +require_relative "ark_email/models/tenants/webhook_delete_params" +require_relative "ark_email/models/tenants/webhook_delete_response" +require_relative "ark_email/models/tenants/webhook_list_deliveries_params" +require_relative "ark_email/models/tenants/webhook_list_deliveries_response" +require_relative "ark_email/models/tenants/webhook_list_params" +require_relative "ark_email/models/tenants/webhook_list_response" +require_relative "ark_email/models/tenants/webhook_replay_delivery_params" +require_relative "ark_email/models/tenants/webhook_replay_delivery_response" +require_relative "ark_email/models/tenants/webhook_retrieve_delivery_params" +require_relative "ark_email/models/tenants/webhook_retrieve_delivery_response" +require_relative "ark_email/models/tenants/webhook_retrieve_params" +require_relative "ark_email/models/tenants/webhook_retrieve_response" +require_relative "ark_email/models/tenants/webhook_test_params" +require_relative "ark_email/models/tenants/webhook_test_response" +require_relative "ark_email/models/tenants/webhook_update_params" +require_relative "ark_email/models/tenants/webhook_update_response" require_relative "ark_email/models/tenant_update_params" require_relative "ark_email/models/tenant_update_response" -require_relative "ark_email/models/tenant_usage" -require_relative "ark_email/models/tenant_usage_timeseries" -require_relative "ark_email/models/track_domain" -require_relative "ark_email/models/tracking_create_params" -require_relative "ark_email/models/tracking_create_response" -require_relative "ark_email/models/tracking_delete_params" -require_relative "ark_email/models/tracking_delete_response" -require_relative "ark_email/models/tracking_list_params" -require_relative "ark_email/models/tracking_list_response" -require_relative "ark_email/models/tracking_retrieve_params" -require_relative "ark_email/models/tracking_retrieve_response" -require_relative "ark_email/models/tracking_update_params" -require_relative "ark_email/models/tracking_update_response" -require_relative "ark_email/models/tracking_verify_params" -require_relative "ark_email/models/tracking_verify_response" +require_relative "ark_email/models/tenant_usage_item" require_relative "ark_email/models/usage_export_params" require_relative "ark_email/models/usage_export_response" -require_relative "ark_email/models/usage_list_by_tenant_params" +require_relative "ark_email/models/usage_list_tenants_params" require_relative "ark_email/models/usage_period" require_relative "ark_email/models/usage_retrieve_params" -require_relative "ark_email/models/usage_retrieve_response" -require_relative "ark_email/models/usage_retrieve_tenant_timeseries_params" -require_relative "ark_email/models/usage_retrieve_tenant_timeseries_response" -require_relative "ark_email/models/usage_retrieve_tenant_usage_params" -require_relative "ark_email/models/usage_retrieve_tenant_usage_response" -require_relative "ark_email/models/webhook_create_params" -require_relative "ark_email/models/webhook_create_response" -require_relative "ark_email/models/webhook_delete_params" -require_relative "ark_email/models/webhook_delete_response" -require_relative "ark_email/models/webhook_list_deliveries_params" -require_relative "ark_email/models/webhook_list_deliveries_response" -require_relative "ark_email/models/webhook_list_params" -require_relative "ark_email/models/webhook_list_response" -require_relative "ark_email/models/webhook_replay_delivery_params" -require_relative "ark_email/models/webhook_replay_delivery_response" -require_relative "ark_email/models/webhook_retrieve_delivery_params" -require_relative "ark_email/models/webhook_retrieve_delivery_response" -require_relative "ark_email/models/webhook_retrieve_params" -require_relative "ark_email/models/webhook_retrieve_response" -require_relative "ark_email/models/webhook_test_params" -require_relative "ark_email/models/webhook_test_response" -require_relative "ark_email/models/webhook_update_params" -require_relative "ark_email/models/webhook_update_response" require_relative "ark_email/models" -require_relative "ark_email/resources/domains" require_relative "ark_email/resources/emails" require_relative "ark_email/resources/limits" require_relative "ark_email/resources/logs" -require_relative "ark_email/resources/suppressions" require_relative "ark_email/resources/tenants" require_relative "ark_email/resources/tenants/credentials" -require_relative "ark_email/resources/tracking" +require_relative "ark_email/resources/tenants/domains" +require_relative "ark_email/resources/tenants/suppressions" +require_relative "ark_email/resources/tenants/tracking" +require_relative "ark_email/resources/tenants/usage" +require_relative "ark_email/resources/tenants/webhooks" require_relative "ark_email/resources/usage" -require_relative "ark_email/resources/webhooks" diff --git a/lib/ark_email/client.rb b/lib/ark_email/client.rb index bd136d0..39c2f67 100644 --- a/lib/ark_email/client.rb +++ b/lib/ark_email/client.rb @@ -27,27 +27,15 @@ class Client < ArkEmail::Internal::Transport::BaseClient # @return [ArkEmail::Resources::Emails] attr_reader :emails - # @return [ArkEmail::Resources::Domains] - attr_reader :domains - - # @return [ArkEmail::Resources::Suppressions] - attr_reader :suppressions - - # @return [ArkEmail::Resources::Webhooks] - attr_reader :webhooks - - # @return [ArkEmail::Resources::Tracking] - attr_reader :tracking - # @return [ArkEmail::Resources::Logs] attr_reader :logs - # @return [ArkEmail::Resources::Limits] - attr_reader :limits - # @return [ArkEmail::Resources::Usage] attr_reader :usage + # @return [ArkEmail::Resources::Limits] + attr_reader :limits + # @return [ArkEmail::Resources::Tenants] attr_reader :tenants @@ -105,13 +93,9 @@ def initialize( ) @emails = ArkEmail::Resources::Emails.new(client: self) - @domains = ArkEmail::Resources::Domains.new(client: self) - @suppressions = ArkEmail::Resources::Suppressions.new(client: self) - @webhooks = ArkEmail::Resources::Webhooks.new(client: self) - @tracking = ArkEmail::Resources::Tracking.new(client: self) @logs = ArkEmail::Resources::Logs.new(client: self) - @limits = ArkEmail::Resources::Limits.new(client: self) @usage = ArkEmail::Resources::Usage.new(client: self) + @limits = ArkEmail::Resources::Limits.new(client: self) @tenants = ArkEmail::Resources::Tenants.new(client: self) end end diff --git a/lib/ark_email/internal/offset_pagination.rb b/lib/ark_email/internal/offset_pagination.rb deleted file mode 100644 index 4b6948f..0000000 --- a/lib/ark_email/internal/offset_pagination.rb +++ /dev/null @@ -1,134 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Internal - # @generic Elem - # - # @example - # if offset_pagination.has_next? - # offset_pagination = offset_pagination.next_page - # end - # - # @example - # offset_pagination.auto_paging_each do |usage| - # puts(usage) - # end - class OffsetPagination - include ArkEmail::Internal::Type::BasePage - - # @return [Data] - attr_accessor :data - - # @return [Boolean] - def next_page? - !data&.tenants.to_a.empty? && (data&.pagination&.offset.to_i + data&.tenants.to_a.size < data&.pagination&.total.to_i) - end - - # @raise [ArkEmail::HTTP::Error] - # @return [self] - def next_page - unless next_page? - message = "No more pages available. Please check #next_page? before calling ##{__method__}" - raise RuntimeError.new(message) - end - - req = ArkEmail::Internal::Util.deep_merge( - @req, - {query: {offset: data&.pagination&.offset.to_i + data&.tenants.to_a.size}} - ) - @client.request(req) - end - - # @param blk [Proc] - # - # @yieldparam [generic] - def auto_paging_each(&blk) - unless block_given? - raise ArgumentError.new("A block must be given to ##{__method__}") - end - - page = self - loop do - page.data&.tenants&.each(&blk) - - break unless page.next_page? - page = page.next_page - end - end - - # @api private - # - # @param client [ArkEmail::Internal::Transport::BaseClient] - # @param req [Hash{Symbol=>Object}] - # @param headers [Hash{String=>String}] - # @param page_data [Hash{Symbol=>Object}] - def initialize(client:, req:, headers:, page_data:) - super - - case page_data - in {data: Hash | nil => data} - if (tenants = data[:tenants]).is_a?(Array) - data = {**data, tenants: tenants.map { ArkEmail::Internal::Type::Converter.coerce(@model, _1) }} - end - @data = ArkEmail::Internal::Type::Converter.coerce(ArkEmail::Internal::OffsetPagination::Data, data) - else - end - end - - # @api private - # - # @return [String] - def inspect - model = ArkEmail::Internal::Type::Converter.inspect(@model, depth: 1) - - "#<#{self.class}[#{model}]:0x#{object_id.to_s(16)}>" - end - - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute pagination - # - # @return [Data::Pagination, nil] - optional :pagination, -> { Data::Pagination } - - # @!attribute tenants - # - # @return [ArrayObject}>, nil] - optional :tenants, - ArkEmail::Internal::Type::ArrayOf[ArkEmail::Internal::Type::HashOf[ArkEmail::Internal::Type::Unknown]] - - # @!method initialize(pagination: nil, tenants: nil) - # @param pagination [Data::Pagination] - # @param tenants [ArrayObject}>] - - # @see Data#pagination - class Pagination < ArkEmail::Internal::Type::BaseModel - # @!attribute has_more - # - # @return [Boolean, nil] - optional :has_more, ArkEmail::Internal::Type::Boolean - - # @!attribute limit - # - # @return [Integer, nil] - optional :limit, Integer - - # @!attribute offset - # - # @return [Integer, nil] - optional :offset, Integer - - # @!attribute total - # - # @return [Integer, nil] - optional :total, Integer - - # @!method initialize(has_more: nil, limit: nil, offset: nil, total: nil) - # @param has_more [Boolean] - # @param limit [Integer] - # @param offset [Integer] - # @param total [Integer] - end - end - end - end -end diff --git a/lib/ark_email/models.rb b/lib/ark_email/models.rb index 1c5646a..dbe20be 100644 --- a/lib/ark_email/models.rb +++ b/lib/ark_email/models.rb @@ -41,20 +41,6 @@ module ArkEmail APIMeta = ArkEmail::Models::APIMeta - BulkTenantUsage = ArkEmail::Models::BulkTenantUsage - - DNSRecord = ArkEmail::Models::DNSRecord - - DomainCreateParams = ArkEmail::Models::DomainCreateParams - - DomainDeleteParams = ArkEmail::Models::DomainDeleteParams - - DomainListParams = ArkEmail::Models::DomainListParams - - DomainRetrieveParams = ArkEmail::Models::DomainRetrieveParams - - DomainVerifyParams = ArkEmail::Models::DomainVerifyParams - EmailCounts = ArkEmail::Models::EmailCounts EmailListParams = ArkEmail::Models::EmailListParams @@ -85,15 +71,7 @@ module ArkEmail LogRetrieveParams = ArkEmail::Models::LogRetrieveParams - SuppressionBulkCreateParams = ArkEmail::Models::SuppressionBulkCreateParams - - SuppressionCreateParams = ArkEmail::Models::SuppressionCreateParams - - SuppressionDeleteParams = ArkEmail::Models::SuppressionDeleteParams - - SuppressionListParams = ArkEmail::Models::SuppressionListParams - - SuppressionRetrieveParams = ArkEmail::Models::SuppressionRetrieveParams + OrgUsageSummary = ArkEmail::Models::OrgUsageSummary Tenant = ArkEmail::Models::Tenant @@ -109,51 +87,13 @@ module ArkEmail TenantUpdateParams = ArkEmail::Models::TenantUpdateParams - TenantUsage = ArkEmail::Models::TenantUsage - - TenantUsageTimeseries = ArkEmail::Models::TenantUsageTimeseries - - TrackDomain = ArkEmail::Models::TrackDomain - - TrackingCreateParams = ArkEmail::Models::TrackingCreateParams - - TrackingDeleteParams = ArkEmail::Models::TrackingDeleteParams - - TrackingListParams = ArkEmail::Models::TrackingListParams - - TrackingRetrieveParams = ArkEmail::Models::TrackingRetrieveParams - - TrackingUpdateParams = ArkEmail::Models::TrackingUpdateParams - - TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams + TenantUsageItem = ArkEmail::Models::TenantUsageItem UsageExportParams = ArkEmail::Models::UsageExportParams - UsageListByTenantParams = ArkEmail::Models::UsageListByTenantParams + UsageListTenantsParams = ArkEmail::Models::UsageListTenantsParams UsagePeriod = ArkEmail::Models::UsagePeriod UsageRetrieveParams = ArkEmail::Models::UsageRetrieveParams - - UsageRetrieveTenantTimeseriesParams = ArkEmail::Models::UsageRetrieveTenantTimeseriesParams - - UsageRetrieveTenantUsageParams = ArkEmail::Models::UsageRetrieveTenantUsageParams - - WebhookCreateParams = ArkEmail::Models::WebhookCreateParams - - WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams - - WebhookListDeliveriesParams = ArkEmail::Models::WebhookListDeliveriesParams - - WebhookListParams = ArkEmail::Models::WebhookListParams - - WebhookReplayDeliveryParams = ArkEmail::Models::WebhookReplayDeliveryParams - - WebhookRetrieveDeliveryParams = ArkEmail::Models::WebhookRetrieveDeliveryParams - - WebhookRetrieveParams = ArkEmail::Models::WebhookRetrieveParams - - WebhookTestParams = ArkEmail::Models::WebhookTestParams - - WebhookUpdateParams = ArkEmail::Models::WebhookUpdateParams end diff --git a/lib/ark_email/models/bulk_tenant_usage.rb b/lib/ark_email/models/bulk_tenant_usage.rb deleted file mode 100644 index c384d7a..0000000 --- a/lib/ark_email/models/bulk_tenant_usage.rb +++ /dev/null @@ -1,177 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - class BulkTenantUsage < ArkEmail::Internal::Type::BaseModel - # @!attribute pagination - # Pagination information for usage queries - # - # @return [ArkEmail::Models::BulkTenantUsage::Pagination] - required :pagination, -> { ArkEmail::BulkTenantUsage::Pagination } - - # @!attribute period - # Time period for usage data - # - # @return [ArkEmail::Models::UsagePeriod] - required :period, -> { ArkEmail::UsagePeriod } - - # @!attribute summary - # Aggregate summary across all tenants - # - # @return [ArkEmail::Models::BulkTenantUsage::Summary] - required :summary, -> { ArkEmail::BulkTenantUsage::Summary } - - # @!attribute tenants - # Array of tenant usage records - # - # @return [Array] - required :tenants, -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::BulkTenantUsage::Tenant] } - - # @!method initialize(pagination:, period:, summary:, tenants:) - # Bulk tenant usage data with pagination - # - # @param pagination [ArkEmail::Models::BulkTenantUsage::Pagination] Pagination information for usage queries - # - # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data - # - # @param summary [ArkEmail::Models::BulkTenantUsage::Summary] Aggregate summary across all tenants - # - # @param tenants [Array] Array of tenant usage records - - # @see ArkEmail::Models::BulkTenantUsage#pagination - class Pagination < ArkEmail::Internal::Type::BaseModel - # @!attribute has_more - # Whether more pages are available - # - # @return [Boolean] - required :has_more, ArkEmail::Internal::Type::Boolean - - # @!attribute limit - # Maximum items per page - # - # @return [Integer] - required :limit, Integer - - # @!attribute offset - # Number of items skipped - # - # @return [Integer] - required :offset, Integer - - # @!attribute total - # Total number of tenants matching the query - # - # @return [Integer] - required :total, Integer - - # @!method initialize(has_more:, limit:, offset:, total:) - # Pagination information for usage queries - # - # @param has_more [Boolean] Whether more pages are available - # - # @param limit [Integer] Maximum items per page - # - # @param offset [Integer] Number of items skipped - # - # @param total [Integer] Total number of tenants matching the query - end - - # @see ArkEmail::Models::BulkTenantUsage#summary - class Summary < ArkEmail::Internal::Type::BaseModel - # @!attribute total_delivered - # Total emails delivered across all tenants - # - # @return [Integer] - required :total_delivered, Integer - - # @!attribute total_sent - # Total emails sent across all tenants - # - # @return [Integer] - required :total_sent, Integer - - # @!attribute total_tenants - # Total number of tenants in the query - # - # @return [Integer] - required :total_tenants, Integer - - # @!method initialize(total_delivered:, total_sent:, total_tenants:) - # Aggregate summary across all tenants - # - # @param total_delivered [Integer] Total emails delivered across all tenants - # - # @param total_sent [Integer] Total emails sent across all tenants - # - # @param total_tenants [Integer] Total number of tenants in the query - end - - class Tenant < ArkEmail::Internal::Type::BaseModel - # @!attribute emails - # Email delivery counts - # - # @return [ArkEmail::Models::EmailCounts] - required :emails, -> { ArkEmail::EmailCounts } - - # @!attribute rates - # Email delivery rates (as decimals, e.g., 0.95 = 95%) - # - # @return [ArkEmail::Models::EmailRates] - required :rates, -> { ArkEmail::EmailRates } - - # @!attribute status - # Current tenant status - # - # @return [Symbol, ArkEmail::Models::BulkTenantUsage::Tenant::Status] - required :status, enum: -> { ArkEmail::BulkTenantUsage::Tenant::Status } - - # @!attribute tenant_id - # Unique tenant identifier - # - # @return [String] - required :tenant_id, String - - # @!attribute tenant_name - # Tenant display name - # - # @return [String] - required :tenant_name, String - - # @!attribute external_id - # Your external ID for this tenant - # - # @return [String, nil] - optional :external_id, String, nil?: true - - # @!method initialize(emails:, rates:, status:, tenant_id:, tenant_name:, external_id: nil) - # Usage record for a single tenant in bulk response - # - # @param emails [ArkEmail::Models::EmailCounts] Email delivery counts - # - # @param rates [ArkEmail::Models::EmailRates] Email delivery rates (as decimals, e.g., 0.95 = 95%) - # - # @param status [Symbol, ArkEmail::Models::BulkTenantUsage::Tenant::Status] Current tenant status - # - # @param tenant_id [String] Unique tenant identifier - # - # @param tenant_name [String] Tenant display name - # - # @param external_id [String, nil] Your external ID for this tenant - - # Current tenant status - # - # @see ArkEmail::Models::BulkTenantUsage::Tenant#status - module Status - extend ArkEmail::Internal::Type::Enum - - ACTIVE = :active - SUSPENDED = :suspended - ARCHIVED = :archived - - # @!method self.values - # @return [Array] - end - end - end - end -end diff --git a/lib/ark_email/models/dns_record.rb b/lib/ark_email/models/dns_record.rb deleted file mode 100644 index 0ab841f..0000000 --- a/lib/ark_email/models/dns_record.rb +++ /dev/null @@ -1,111 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - class DNSRecord < ArkEmail::Internal::Type::BaseModel - # @!attribute full_name - # The complete fully-qualified domain name (FQDN). Use this as a reference to - # verify the record is configured correctly. - # - # @return [String] - required :full_name, String, api_name: :fullName - - # @!attribute name - # The relative hostname to enter in your DNS provider. Most DNS providers - # auto-append the zone name, so you only need to enter this relative part. - # - # - `"@"` means the apex/root of the zone (for root domains) - # - `"mail"` for a subdomain like `mail.example.com` - # - `"ark-xyz._domainkey.mail"` for DKIM on a subdomain - # - # @return [String] - required :name, String - - # @!attribute type - # The DNS record type to create - # - # @return [Symbol, ArkEmail::Models::DNSRecord::Type] - required :type, enum: -> { ArkEmail::DNSRecord::Type } - - # @!attribute value - # The value to set for the DNS record - # - # @return [String] - required :value, String - - # @!attribute status - # Current verification status of this DNS record: - # - # - `OK` - Record is correctly configured and verified - # - `Missing` - Record was not found in your DNS - # - `Invalid` - Record exists but has an incorrect value - # - `null` - Record has not been checked yet - # - # @return [Symbol, ArkEmail::Models::DNSRecord::Status, nil] - optional :status, enum: -> { ArkEmail::DNSRecord::Status }, nil?: true - - # @!method initialize(full_name:, name:, type:, value:, status: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::DNSRecord} for more details. - # - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @param full_name [String] The complete fully-qualified domain name (FQDN). - # - # @param name [String] The relative hostname to enter in your DNS provider. - # - # @param type [Symbol, ArkEmail::Models::DNSRecord::Type] The DNS record type to create - # - # @param value [String] The value to set for the DNS record - # - # @param status [Symbol, ArkEmail::Models::DNSRecord::Status, nil] Current verification status of this DNS record: - - # The DNS record type to create - # - # @see ArkEmail::Models::DNSRecord#type - module Type - extend ArkEmail::Internal::Type::Enum - - TXT = :TXT - CNAME = :CNAME - MX = :MX - - # @!method self.values - # @return [Array] - end - - # Current verification status of this DNS record: - # - # - `OK` - Record is correctly configured and verified - # - `Missing` - Record was not found in your DNS - # - `Invalid` - Record exists but has an incorrect value - # - `null` - Record has not been checked yet - # - # @see ArkEmail::Models::DNSRecord#status - module Status - extend ArkEmail::Internal::Type::Enum - - OK = :OK - MISSING = :Missing - INVALID = :Invalid - - # @!method self.values - # @return [Array] - end - end - end -end diff --git a/lib/ark_email/models/domain_create_params.rb b/lib/ark_email/models/domain_create_params.rb deleted file mode 100644 index e31df73..0000000 --- a/lib/ark_email/models/domain_create_params.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#create - class DomainCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute name - # Domain name (e.g., "mail.example.com") - # - # @return [String] - required :name, String - - # @!attribute tenant_id - # ID of the tenant this domain belongs to - # - # @return [String] - required :tenant_id, String - - # @!method initialize(name:, tenant_id:, request_options: {}) - # @param name [String] Domain name (e.g., "mail.example.com") - # - # @param tenant_id [String] ID of the tenant this domain belongs to - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/domain_create_response.rb b/lib/ark_email/models/domain_create_response.rb deleted file mode 100644 index f3f8067..0000000 --- a/lib/ark_email/models/domain_create_response.rb +++ /dev/null @@ -1,218 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#create - class DomainCreateResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::DomainCreateResponse::Data] - required :data, -> { ArkEmail::Models::DomainCreateResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::DomainCreateResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::DomainCreateResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Unique domain identifier - # - # @return [Integer] - required :id, Integer - - # @!attribute created_at - # Timestamp when the domain was added - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute dns_records - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - # - # @return [ArkEmail::Models::DomainCreateResponse::Data::DNSRecords, nil] - required :dns_records, - -> { ArkEmail::Models::DomainCreateResponse::Data::DNSRecords }, - api_name: :dnsRecords, - nil?: true - - # @!attribute name - # The domain name used for sending emails - # - # @return [String] - required :name, String - - # @!attribute uuid - # UUID of the domain - # - # @return [String] - required :uuid, String - - # @!attribute verified - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - # - # @return [Boolean] - required :verified, ArkEmail::Internal::Type::Boolean - - # @!attribute tenant_id - # ID of the tenant this domain belongs to - # - # @return [String, nil] - optional :tenant_id, String - - # @!attribute tenant_name - # Name of the tenant this domain belongs to - # - # @return [String, nil] - optional :tenant_name, String - - # @!attribute verified_at - # Timestamp when the domain ownership was verified, or null if not yet verified - # - # @return [Time, nil] - optional :verified_at, Time, api_name: :verifiedAt, nil?: true - - # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::DomainCreateResponse::Data} for more details. - # - # @param id [Integer] Unique domain identifier - # - # @param created_at [Time] Timestamp when the domain was added - # - # @param dns_records [ArkEmail::Models::DomainCreateResponse::Data::DNSRecords, nil] DNS records that must be added to your domain's DNS settings. Null if records ar - # - # @param name [String] The domain name used for sending emails - # - # @param uuid [String] UUID of the domain - # - # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai - # - # @param tenant_id [String] ID of the tenant this domain belongs to - # - # @param tenant_name [String] Name of the tenant this domain belongs to - # - # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified - - # @see ArkEmail::Models::DomainCreateResponse::Data#dns_records - class DNSRecords < ArkEmail::Internal::Type::BaseModel - # @!attribute dkim - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :dkim, -> { ArkEmail::DNSRecord }, nil?: true - - # @!attribute return_path - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :return_path, -> { ArkEmail::DNSRecord }, api_name: :returnPath, nil?: true - - # @!attribute spf - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :spf, -> { ArkEmail::DNSRecord }, nil?: true - - # @!attribute zone - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - # - # @return [String, nil] - optional :zone, String - - # @!method initialize(dkim: nil, return_path: nil, spf: nil, zone: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::DomainCreateResponse::Data::DNSRecords} for more details. - # - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - # - # @param dkim [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param return_path [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param spf [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param zone [String] The DNS zone (registrable domain) where records should be added. - end - end - end - end -end diff --git a/lib/ark_email/models/domain_delete_params.rb b/lib/ark_email/models/domain_delete_params.rb deleted file mode 100644 index 8f7127d..0000000 --- a/lib/ark_email/models/domain_delete_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#delete - class DomainDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/domain_delete_response.rb b/lib/ark_email/models/domain_delete_response.rb deleted file mode 100644 index 7d27ca0..0000000 --- a/lib/ark_email/models/domain_delete_response.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#delete - class DomainDeleteResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::DomainDeleteResponse::Data] - required :data, -> { ArkEmail::Models::DomainDeleteResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::DomainDeleteResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::DomainDeleteResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute message - # - # @return [String] - required :message, String - - # @!method initialize(message:) - # @param message [String] - end - end - end -end diff --git a/lib/ark_email/models/domain_list_params.rb b/lib/ark_email/models/domain_list_params.rb deleted file mode 100644 index ade0db1..0000000 --- a/lib/ark_email/models/domain_list_params.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#list - class DomainListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute tenant_id - # Filter domains by tenant ID - # - # @return [String, nil] - optional :tenant_id, String - - # @!method initialize(tenant_id: nil, request_options: {}) - # @param tenant_id [String] Filter domains by tenant ID - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/domain_list_response.rb b/lib/ark_email/models/domain_list_response.rb deleted file mode 100644 index 501610d..0000000 --- a/lib/ark_email/models/domain_list_response.rb +++ /dev/null @@ -1,87 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#list - class DomainListResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::DomainListResponse::Data] - required :data, -> { ArkEmail::Models::DomainListResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::DomainListResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::DomainListResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute domains - # - # @return [Array] - required :domains, - -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::DomainListResponse::Data::Domain] } - - # @!method initialize(domains:) - # @param domains [Array] - - class Domain < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Unique domain identifier - # - # @return [Integer] - required :id, Integer - - # @!attribute name - # The domain name used for sending emails - # - # @return [String] - required :name, String - - # @!attribute verified - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - # - # @return [Boolean] - required :verified, ArkEmail::Internal::Type::Boolean - - # @!attribute tenant_id - # ID of the tenant this domain belongs to (included when filtering by tenant_id) - # - # @return [String, nil] - optional :tenant_id, String - - # @!attribute tenant_name - # Name of the tenant this domain belongs to (included when filtering by tenant_id) - # - # @return [String, nil] - optional :tenant_name, String - - # @!method initialize(id:, name:, verified:, tenant_id: nil, tenant_name: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::DomainListResponse::Data::Domain} for more details. - # - # @param id [Integer] Unique domain identifier - # - # @param name [String] The domain name used for sending emails - # - # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai - # - # @param tenant_id [String] ID of the tenant this domain belongs to (included when filtering by tenant_id) - # - # @param tenant_name [String] Name of the tenant this domain belongs to (included when filtering by tenant_id) - end - end - end - end -end diff --git a/lib/ark_email/models/domain_retrieve_params.rb b/lib/ark_email/models/domain_retrieve_params.rb deleted file mode 100644 index 544051d..0000000 --- a/lib/ark_email/models/domain_retrieve_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#retrieve - class DomainRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/domain_retrieve_response.rb b/lib/ark_email/models/domain_retrieve_response.rb deleted file mode 100644 index 0d5b01d..0000000 --- a/lib/ark_email/models/domain_retrieve_response.rb +++ /dev/null @@ -1,218 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#retrieve - class DomainRetrieveResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::DomainRetrieveResponse::Data] - required :data, -> { ArkEmail::Models::DomainRetrieveResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::DomainRetrieveResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::DomainRetrieveResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Unique domain identifier - # - # @return [Integer] - required :id, Integer - - # @!attribute created_at - # Timestamp when the domain was added - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute dns_records - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - # - # @return [ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords, nil] - required :dns_records, - -> { ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords }, - api_name: :dnsRecords, - nil?: true - - # @!attribute name - # The domain name used for sending emails - # - # @return [String] - required :name, String - - # @!attribute uuid - # UUID of the domain - # - # @return [String] - required :uuid, String - - # @!attribute verified - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - # - # @return [Boolean] - required :verified, ArkEmail::Internal::Type::Boolean - - # @!attribute tenant_id - # ID of the tenant this domain belongs to - # - # @return [String, nil] - optional :tenant_id, String - - # @!attribute tenant_name - # Name of the tenant this domain belongs to - # - # @return [String, nil] - optional :tenant_name, String - - # @!attribute verified_at - # Timestamp when the domain ownership was verified, or null if not yet verified - # - # @return [Time, nil] - optional :verified_at, Time, api_name: :verifiedAt, nil?: true - - # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::DomainRetrieveResponse::Data} for more details. - # - # @param id [Integer] Unique domain identifier - # - # @param created_at [Time] Timestamp when the domain was added - # - # @param dns_records [ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords, nil] DNS records that must be added to your domain's DNS settings. Null if records ar - # - # @param name [String] The domain name used for sending emails - # - # @param uuid [String] UUID of the domain - # - # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai - # - # @param tenant_id [String] ID of the tenant this domain belongs to - # - # @param tenant_name [String] Name of the tenant this domain belongs to - # - # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified - - # @see ArkEmail::Models::DomainRetrieveResponse::Data#dns_records - class DNSRecords < ArkEmail::Internal::Type::BaseModel - # @!attribute dkim - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :dkim, -> { ArkEmail::DNSRecord }, nil?: true - - # @!attribute return_path - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :return_path, -> { ArkEmail::DNSRecord }, api_name: :returnPath, nil?: true - - # @!attribute spf - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :spf, -> { ArkEmail::DNSRecord }, nil?: true - - # @!attribute zone - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - # - # @return [String, nil] - optional :zone, String - - # @!method initialize(dkim: nil, return_path: nil, spf: nil, zone: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords} for more details. - # - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - # - # @param dkim [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param return_path [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param spf [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param zone [String] The DNS zone (registrable domain) where records should be added. - end - end - end - end -end diff --git a/lib/ark_email/models/domain_verify_params.rb b/lib/ark_email/models/domain_verify_params.rb deleted file mode 100644 index 9c2c01a..0000000 --- a/lib/ark_email/models/domain_verify_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#verify - class DomainVerifyParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/domain_verify_response.rb b/lib/ark_email/models/domain_verify_response.rb deleted file mode 100644 index d7661e7..0000000 --- a/lib/ark_email/models/domain_verify_response.rb +++ /dev/null @@ -1,218 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Domains#verify - class DomainVerifyResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::DomainVerifyResponse::Data] - required :data, -> { ArkEmail::Models::DomainVerifyResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::DomainVerifyResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::DomainVerifyResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Unique domain identifier - # - # @return [Integer] - required :id, Integer - - # @!attribute created_at - # Timestamp when the domain was added - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute dns_records - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - # - # @return [ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords, nil] - required :dns_records, - -> { ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords }, - api_name: :dnsRecords, - nil?: true - - # @!attribute name - # The domain name used for sending emails - # - # @return [String] - required :name, String - - # @!attribute uuid - # UUID of the domain - # - # @return [String] - required :uuid, String - - # @!attribute verified - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - # - # @return [Boolean] - required :verified, ArkEmail::Internal::Type::Boolean - - # @!attribute tenant_id - # ID of the tenant this domain belongs to - # - # @return [String, nil] - optional :tenant_id, String - - # @!attribute tenant_name - # Name of the tenant this domain belongs to - # - # @return [String, nil] - optional :tenant_name, String - - # @!attribute verified_at - # Timestamp when the domain ownership was verified, or null if not yet verified - # - # @return [Time, nil] - optional :verified_at, Time, api_name: :verifiedAt, nil?: true - - # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::DomainVerifyResponse::Data} for more details. - # - # @param id [Integer] Unique domain identifier - # - # @param created_at [Time] Timestamp when the domain was added - # - # @param dns_records [ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords, nil] DNS records that must be added to your domain's DNS settings. Null if records ar - # - # @param name [String] The domain name used for sending emails - # - # @param uuid [String] UUID of the domain - # - # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai - # - # @param tenant_id [String] ID of the tenant this domain belongs to - # - # @param tenant_name [String] Name of the tenant this domain belongs to - # - # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified - - # @see ArkEmail::Models::DomainVerifyResponse::Data#dns_records - class DNSRecords < ArkEmail::Internal::Type::BaseModel - # @!attribute dkim - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :dkim, -> { ArkEmail::DNSRecord }, nil?: true - - # @!attribute return_path - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :return_path, -> { ArkEmail::DNSRecord }, api_name: :returnPath, nil?: true - - # @!attribute spf - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - # - # @return [ArkEmail::Models::DNSRecord, nil] - optional :spf, -> { ArkEmail::DNSRecord }, nil?: true - - # @!attribute zone - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - # - # @return [String, nil] - optional :zone, String - - # @!method initialize(dkim: nil, return_path: nil, spf: nil, zone: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords} for more details. - # - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - # - # @param dkim [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param return_path [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param spf [ArkEmail::Models::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. - # - # @param zone [String] The DNS zone (registrable domain) where records should be added. - end - end - end - end -end diff --git a/lib/ark_email/models/org_usage_summary.rb b/lib/ark_email/models/org_usage_summary.rb new file mode 100644 index 0000000..0faf33c --- /dev/null +++ b/lib/ark_email/models/org_usage_summary.rb @@ -0,0 +1,93 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + # @see ArkEmail::Resources::Usage#retrieve + class OrgUsageSummary < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::OrgUsageSummary::Data] + required :data, -> { ArkEmail::OrgUsageSummary::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Org-wide usage summary response + # + # @param data [ArkEmail::Models::OrgUsageSummary::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::OrgUsageSummary#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute emails + # Email delivery counts + # + # @return [ArkEmail::Models::EmailCounts] + required :emails, -> { ArkEmail::EmailCounts } + + # @!attribute period + # Time period for usage data + # + # @return [ArkEmail::Models::UsagePeriod] + required :period, -> { ArkEmail::UsagePeriod } + + # @!attribute rates + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @return [ArkEmail::Models::EmailRates] + required :rates, -> { ArkEmail::EmailRates } + + # @!attribute tenants + # + # @return [ArkEmail::Models::OrgUsageSummary::Data::Tenants] + required :tenants, -> { ArkEmail::OrgUsageSummary::Data::Tenants } + + # @!method initialize(emails:, period:, rates:, tenants:) + # @param emails [ArkEmail::Models::EmailCounts] Email delivery counts + # + # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data + # + # @param rates [ArkEmail::Models::EmailRates] Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @param tenants [ArkEmail::Models::OrgUsageSummary::Data::Tenants] + + # @see ArkEmail::Models::OrgUsageSummary::Data#tenants + class Tenants < ArkEmail::Internal::Type::BaseModel + # @!attribute active + # Number of active tenants + # + # @return [Integer] + required :active, Integer + + # @!attribute total + # Total number of tenants + # + # @return [Integer] + required :total, Integer + + # @!attribute with_activity + # Number of tenants with sending activity + # + # @return [Integer] + required :with_activity, Integer, api_name: :withActivity + + # @!method initialize(active:, total:, with_activity:) + # @param active [Integer] Number of active tenants + # + # @param total [Integer] Total number of tenants + # + # @param with_activity [Integer] Number of tenants with sending activity + end + end + end + end +end diff --git a/lib/ark_email/models/suppression_bulk_create_params.rb b/lib/ark_email/models/suppression_bulk_create_params.rb deleted file mode 100644 index 96072b1..0000000 --- a/lib/ark_email/models/suppression_bulk_create_params.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#bulk_create - class SuppressionBulkCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute suppressions - # - # @return [Array] - required :suppressions, - -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::SuppressionBulkCreateParams::Suppression] } - - # @!method initialize(suppressions:, request_options: {}) - # @param suppressions [Array] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - - class Suppression < ArkEmail::Internal::Type::BaseModel - # @!attribute address - # - # @return [String] - required :address, String - - # @!attribute reason - # Reason for suppression (accepts null) - # - # @return [String, nil] - optional :reason, String, nil?: true - - # @!method initialize(address:, reason: nil) - # @param address [String] - # - # @param reason [String, nil] Reason for suppression (accepts null) - end - end - end -end diff --git a/lib/ark_email/models/suppression_bulk_create_response.rb b/lib/ark_email/models/suppression_bulk_create_response.rb deleted file mode 100644 index 9139bc1..0000000 --- a/lib/ark_email/models/suppression_bulk_create_response.rb +++ /dev/null @@ -1,64 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#bulk_create - class SuppressionBulkCreateResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::SuppressionBulkCreateResponse::Data] - required :data, -> { ArkEmail::Models::SuppressionBulkCreateResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::SuppressionBulkCreateResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::SuppressionBulkCreateResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute added - # Newly suppressed addresses - # - # @return [Integer] - required :added, Integer - - # @!attribute failed - # Invalid addresses skipped - # - # @return [Integer] - required :failed, Integer - - # @!attribute total_requested - # Total addresses in request - # - # @return [Integer] - required :total_requested, Integer, api_name: :totalRequested - - # @!attribute updated - # Already suppressed addresses (updated reason) - # - # @return [Integer] - required :updated, Integer - - # @!method initialize(added:, failed:, total_requested:, updated:) - # @param added [Integer] Newly suppressed addresses - # - # @param failed [Integer] Invalid addresses skipped - # - # @param total_requested [Integer] Total addresses in request - # - # @param updated [Integer] Already suppressed addresses (updated reason) - end - end - end -end diff --git a/lib/ark_email/models/suppression_create_params.rb b/lib/ark_email/models/suppression_create_params.rb deleted file mode 100644 index ba7c5e4..0000000 --- a/lib/ark_email/models/suppression_create_params.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#create - class SuppressionCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute address - # Email address to suppress - # - # @return [String] - required :address, String - - # @!attribute reason - # Reason for suppression (accepts null) - # - # @return [String, nil] - optional :reason, String, nil?: true - - # @!method initialize(address:, reason: nil, request_options: {}) - # @param address [String] Email address to suppress - # - # @param reason [String, nil] Reason for suppression (accepts null) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/suppression_create_response.rb b/lib/ark_email/models/suppression_create_response.rb deleted file mode 100644 index 73ed11b..0000000 --- a/lib/ark_email/models/suppression_create_response.rb +++ /dev/null @@ -1,62 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#create - class SuppressionCreateResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::SuppressionCreateResponse::Data] - required :data, -> { ArkEmail::Models::SuppressionCreateResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::SuppressionCreateResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::SuppressionCreateResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Suppression ID - # - # @return [String] - required :id, String - - # @!attribute address - # - # @return [String] - required :address, String - - # @!attribute created_at - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute reason - # Reason for suppression - # - # @return [String, nil] - optional :reason, String - - # @!method initialize(id:, address:, created_at:, reason: nil) - # @param id [String] Suppression ID - # - # @param address [String] - # - # @param created_at [Time] - # - # @param reason [String] Reason for suppression - end - end - end -end diff --git a/lib/ark_email/models/suppression_delete_params.rb b/lib/ark_email/models/suppression_delete_params.rb deleted file mode 100644 index ac9fce7..0000000 --- a/lib/ark_email/models/suppression_delete_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#delete - class SuppressionDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/suppression_delete_response.rb b/lib/ark_email/models/suppression_delete_response.rb deleted file mode 100644 index dad6243..0000000 --- a/lib/ark_email/models/suppression_delete_response.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#delete - class SuppressionDeleteResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::SuppressionDeleteResponse::Data] - required :data, -> { ArkEmail::Models::SuppressionDeleteResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::SuppressionDeleteResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::SuppressionDeleteResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute message - # - # @return [String] - required :message, String - - # @!method initialize(message:) - # @param message [String] - end - end - end -end diff --git a/lib/ark_email/models/suppression_list_params.rb b/lib/ark_email/models/suppression_list_params.rb deleted file mode 100644 index 835955f..0000000 --- a/lib/ark_email/models/suppression_list_params.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#list - class SuppressionListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute page - # - # @return [Integer, nil] - optional :page, Integer - - # @!attribute per_page - # - # @return [Integer, nil] - optional :per_page, Integer - - # @!method initialize(page: nil, per_page: nil, request_options: {}) - # @param page [Integer] - # @param per_page [Integer] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/suppression_list_response.rb b/lib/ark_email/models/suppression_list_response.rb deleted file mode 100644 index af3d3b6..0000000 --- a/lib/ark_email/models/suppression_list_response.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#list - class SuppressionListResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Suppression ID - # - # @return [String] - required :id, String - - # @!attribute address - # - # @return [String] - required :address, String - - # @!attribute created_at - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute reason - # - # @return [String, nil] - optional :reason, String - - # @!method initialize(id:, address:, created_at:, reason: nil) - # @param id [String] Suppression ID - # - # @param address [String] - # - # @param created_at [Time] - # - # @param reason [String] - end - end -end diff --git a/lib/ark_email/models/suppression_retrieve_params.rb b/lib/ark_email/models/suppression_retrieve_params.rb deleted file mode 100644 index fdd5a07..0000000 --- a/lib/ark_email/models/suppression_retrieve_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#retrieve - class SuppressionRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/suppression_retrieve_response.rb b/lib/ark_email/models/suppression_retrieve_response.rb deleted file mode 100644 index 7f9abec..0000000 --- a/lib/ark_email/models/suppression_retrieve_response.rb +++ /dev/null @@ -1,64 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Suppressions#retrieve - class SuppressionRetrieveResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::SuppressionRetrieveResponse::Data] - required :data, -> { ArkEmail::Models::SuppressionRetrieveResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::SuppressionRetrieveResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::SuppressionRetrieveResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute address - # The email address that was checked - # - # @return [String] - required :address, String - - # @!attribute suppressed - # Whether the address is currently suppressed - # - # @return [Boolean] - required :suppressed, ArkEmail::Internal::Type::Boolean - - # @!attribute created_at - # When the suppression was created (if suppressed) - # - # @return [Time, nil] - optional :created_at, Time, api_name: :createdAt, nil?: true - - # @!attribute reason - # Reason for suppression (if suppressed) - # - # @return [String, nil] - optional :reason, String, nil?: true - - # @!method initialize(address:, suppressed:, created_at: nil, reason: nil) - # @param address [String] The email address that was checked - # - # @param suppressed [Boolean] Whether the address is currently suppressed - # - # @param created_at [Time, nil] When the suppression was created (if suppressed) - # - # @param reason [String, nil] Reason for suppression (if suppressed) - end - end - end -end diff --git a/lib/ark_email/models/tenant_usage.rb b/lib/ark_email/models/tenant_usage_item.rb similarity index 51% rename from lib/ark_email/models/tenant_usage.rb rename to lib/ark_email/models/tenant_usage_item.rb index f1bc8a4..829ce42 100644 --- a/lib/ark_email/models/tenant_usage.rb +++ b/lib/ark_email/models/tenant_usage_item.rb @@ -2,57 +2,72 @@ module ArkEmail module Models - class TenantUsage < ArkEmail::Internal::Type::BaseModel + # @see ArkEmail::Resources::Usage#list_tenants + class TenantUsageItem < ArkEmail::Internal::Type::BaseModel # @!attribute emails # Email delivery counts # # @return [ArkEmail::Models::EmailCounts] required :emails, -> { ArkEmail::EmailCounts } - # @!attribute period - # Time period for usage data - # - # @return [ArkEmail::Models::UsagePeriod] - required :period, -> { ArkEmail::UsagePeriod } - # @!attribute rates # Email delivery rates (as decimals, e.g., 0.95 = 95%) # # @return [ArkEmail::Models::EmailRates] required :rates, -> { ArkEmail::EmailRates } + # @!attribute status + # Current tenant status + # + # @return [Symbol, ArkEmail::Models::TenantUsageItem::Status] + required :status, enum: -> { ArkEmail::TenantUsageItem::Status } + # @!attribute tenant_id # Unique tenant identifier # # @return [String] - required :tenant_id, String + required :tenant_id, String, api_name: :tenantId # @!attribute tenant_name # Tenant display name # # @return [String] - required :tenant_name, String + required :tenant_name, String, api_name: :tenantName # @!attribute external_id - # Your external ID for this tenant (from metadata) + # Your external ID for this tenant # # @return [String, nil] - optional :external_id, String, nil?: true + optional :external_id, String, api_name: :externalId, nil?: true - # @!method initialize(emails:, period:, rates:, tenant_id:, tenant_name:, external_id: nil) - # Tenant usage statistics + # @!method initialize(emails:, rates:, status:, tenant_id:, tenant_name:, external_id: nil) + # Usage record for a single tenant (camelCase for SDK) # # @param emails [ArkEmail::Models::EmailCounts] Email delivery counts # - # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data - # # @param rates [ArkEmail::Models::EmailRates] Email delivery rates (as decimals, e.g., 0.95 = 95%) # + # @param status [Symbol, ArkEmail::Models::TenantUsageItem::Status] Current tenant status + # # @param tenant_id [String] Unique tenant identifier # # @param tenant_name [String] Tenant display name # - # @param external_id [String, nil] Your external ID for this tenant (from metadata) + # @param external_id [String, nil] Your external ID for this tenant + + # Current tenant status + # + # @see ArkEmail::Models::TenantUsageItem#status + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE = :active + SUSPENDED = :suspended + ARCHIVED = :archived + + # @!method self.values + # @return [Array] + end end end end diff --git a/lib/ark_email/models/tenant_usage_timeseries.rb b/lib/ark_email/models/tenant_usage_timeseries.rb deleted file mode 100644 index 8b81fca..0000000 --- a/lib/ark_email/models/tenant_usage_timeseries.rb +++ /dev/null @@ -1,126 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # Array of time-bucketed data points - # - # @return [Array] - required :data, -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::TenantUsageTimeseries::Data] } - - # @!attribute granularity - # Time bucket granularity - # - # @return [Symbol, ArkEmail::Models::TenantUsageTimeseries::Granularity] - required :granularity, enum: -> { ArkEmail::TenantUsageTimeseries::Granularity } - - # @!attribute period - # Time period for usage data - # - # @return [ArkEmail::Models::UsagePeriod] - required :period, -> { ArkEmail::UsagePeriod } - - # @!attribute tenant_id - # Unique tenant identifier - # - # @return [String] - required :tenant_id, String - - # @!attribute tenant_name - # Tenant display name - # - # @return [String] - required :tenant_name, String - - # @!method initialize(data:, granularity:, period:, tenant_id:, tenant_name:) - # Timeseries usage statistics - # - # @param data [Array] Array of time-bucketed data points - # - # @param granularity [Symbol, ArkEmail::Models::TenantUsageTimeseries::Granularity] Time bucket granularity - # - # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data - # - # @param tenant_id [String] Unique tenant identifier - # - # @param tenant_name [String] Tenant display name - - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute bounced - # Bounces in this bucket - # - # @return [Integer] - required :bounced, Integer - - # @!attribute delivered - # Emails delivered in this bucket - # - # @return [Integer] - required :delivered, Integer - - # @!attribute hard_failed - # Hard failures in this bucket - # - # @return [Integer] - required :hard_failed, Integer - - # @!attribute held - # Emails held in this bucket - # - # @return [Integer] - required :held, Integer - - # @!attribute sent - # Emails sent in this bucket - # - # @return [Integer] - required :sent, Integer - - # @!attribute soft_failed - # Soft failures in this bucket - # - # @return [Integer] - required :soft_failed, Integer - - # @!attribute timestamp - # Start of time bucket - # - # @return [Time] - required :timestamp, Time - - # @!method initialize(bounced:, delivered:, hard_failed:, held:, sent:, soft_failed:, timestamp:) - # Single timeseries data point - # - # @param bounced [Integer] Bounces in this bucket - # - # @param delivered [Integer] Emails delivered in this bucket - # - # @param hard_failed [Integer] Hard failures in this bucket - # - # @param held [Integer] Emails held in this bucket - # - # @param sent [Integer] Emails sent in this bucket - # - # @param soft_failed [Integer] Soft failures in this bucket - # - # @param timestamp [Time] Start of time bucket - end - - # Time bucket granularity - # - # @see ArkEmail::Models::TenantUsageTimeseries#granularity - module Granularity - extend ArkEmail::Internal::Type::Enum - - HOUR = :hour - DAY = :day - WEEK = :week - MONTH = :month - - # @!method self.values - # @return [Array] - end - end - end -end diff --git a/lib/ark_email/models/tenants/dns_record.rb b/lib/ark_email/models/tenants/dns_record.rb new file mode 100644 index 0000000..899528b --- /dev/null +++ b/lib/ark_email/models/tenants/dns_record.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + class DNSRecord < ArkEmail::Internal::Type::BaseModel + # @!attribute full_name + # The complete fully-qualified domain name (FQDN). Use this as a reference to + # verify the record is configured correctly. + # + # @return [String] + required :full_name, String, api_name: :fullName + + # @!attribute name + # The relative hostname to enter in your DNS provider. Most DNS providers + # auto-append the zone name, so you only need to enter this relative part. + # + # - `"@"` means the apex/root of the zone (for root domains) + # - `"mail"` for a subdomain like `mail.example.com` + # - `"ark-xyz._domainkey.mail"` for DKIM on a subdomain + # + # @return [String] + required :name, String + + # @!attribute type + # The DNS record type to create + # + # @return [Symbol, ArkEmail::Models::Tenants::DNSRecord::Type] + required :type, enum: -> { ArkEmail::Tenants::DNSRecord::Type } + + # @!attribute value + # The value to set for the DNS record + # + # @return [String] + required :value, String + + # @!attribute status + # Current verification status of this DNS record: + # + # - `OK` - Record is correctly configured and verified + # - `Missing` - Record was not found in your DNS + # - `Invalid` - Record exists but has an incorrect value + # - `null` - Record has not been checked yet + # + # @return [Symbol, ArkEmail::Models::Tenants::DNSRecord::Status, nil] + optional :status, enum: -> { ArkEmail::Tenants::DNSRecord::Status }, nil?: true + + # @!method initialize(full_name:, name:, type:, value:, status: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::DNSRecord} for more details. + # + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @param full_name [String] The complete fully-qualified domain name (FQDN). + # + # @param name [String] The relative hostname to enter in your DNS provider. + # + # @param type [Symbol, ArkEmail::Models::Tenants::DNSRecord::Type] The DNS record type to create + # + # @param value [String] The value to set for the DNS record + # + # @param status [Symbol, ArkEmail::Models::Tenants::DNSRecord::Status, nil] Current verification status of this DNS record: + + # The DNS record type to create + # + # @see ArkEmail::Models::Tenants::DNSRecord#type + module Type + extend ArkEmail::Internal::Type::Enum + + TXT = :TXT + CNAME = :CNAME + MX = :MX + + # @!method self.values + # @return [Array] + end + + # Current verification status of this DNS record: + # + # - `OK` - Record is correctly configured and verified + # - `Missing` - Record was not found in your DNS + # - `Invalid` - Record exists but has an incorrect value + # - `null` - Record has not been checked yet + # + # @see ArkEmail::Models::Tenants::DNSRecord#status + module Status + extend ArkEmail::Internal::Type::Enum + + OK = :OK + MISSING = :Missing + INVALID = :Invalid + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_create_params.rb b/lib/ark_email/models/tenants/domain_create_params.rb new file mode 100644 index 0000000..2c5f869 --- /dev/null +++ b/lib/ark_email/models/tenants/domain_create_params.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#create + class DomainCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute name + # Domain name (e.g., "mail.example.com") + # + # @return [String] + required :name, String + + # @!method initialize(name:, request_options: {}) + # @param name [String] Domain name (e.g., "mail.example.com") + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_create_response.rb b/lib/ark_email/models/tenants/domain_create_response.rb new file mode 100644 index 0000000..29604d9 --- /dev/null +++ b/lib/ark_email/models/tenants/domain_create_response.rb @@ -0,0 +1,221 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#create + class DomainCreateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::DomainCreateResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::DomainCreateResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::DomainCreateResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::DomainCreateResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique domain identifier + # + # @return [Integer] + required :id, Integer + + # @!attribute created_at + # Timestamp when the domain was added + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute dns_records + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + # + # @return [ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords, nil] + required :dns_records, + -> { ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords }, + api_name: :dnsRecords, + nil?: true + + # @!attribute name + # The domain name used for sending emails + # + # @return [String] + required :name, String + + # @!attribute uuid + # UUID of the domain + # + # @return [String] + required :uuid, String + + # @!attribute verified + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + # + # @return [Boolean] + required :verified, ArkEmail::Internal::Type::Boolean + + # @!attribute tenant_id + # ID of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute tenant_name + # Name of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_name, String + + # @!attribute verified_at + # Timestamp when the domain ownership was verified, or null if not yet verified + # + # @return [Time, nil] + optional :verified_at, Time, api_name: :verifiedAt, nil?: true + + # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::DomainCreateResponse::Data} for more details. + # + # @param id [Integer] Unique domain identifier + # + # @param created_at [Time] Timestamp when the domain was added + # + # @param dns_records [ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords, nil] DNS records that must be added to your domain's DNS settings. Null if records ar + # + # @param name [String] The domain name used for sending emails + # + # @param uuid [String] UUID of the domain + # + # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai + # + # @param tenant_id [String] ID of the tenant this domain belongs to + # + # @param tenant_name [String] Name of the tenant this domain belongs to + # + # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified + + # @see ArkEmail::Models::Tenants::DomainCreateResponse::Data#dns_records + class DNSRecords < ArkEmail::Internal::Type::BaseModel + # @!attribute dkim + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :dkim, -> { ArkEmail::Tenants::DNSRecord }, nil?: true + + # @!attribute return_path + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :return_path, -> { ArkEmail::Tenants::DNSRecord }, api_name: :returnPath, nil?: true + + # @!attribute spf + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :spf, -> { ArkEmail::Tenants::DNSRecord }, nil?: true + + # @!attribute zone + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + # + # @return [String, nil] + optional :zone, String + + # @!method initialize(dkim: nil, return_path: nil, spf: nil, zone: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords} for more + # details. + # + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + # + # @param dkim [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param return_path [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param spf [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param zone [String] The DNS zone (registrable domain) where records should be added. + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_delete_params.rb b/lib/ark_email/models/tenants/domain_delete_params.rb new file mode 100644 index 0000000..6a5a9c9 --- /dev/null +++ b/lib/ark_email/models/tenants/domain_delete_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#delete + class DomainDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_delete_response.rb b/lib/ark_email/models/tenants/domain_delete_response.rb new file mode 100644 index 0000000..a08c5eb --- /dev/null +++ b/lib/ark_email/models/tenants/domain_delete_response.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#delete + class DomainDeleteResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::DomainDeleteResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::DomainDeleteResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::DomainDeleteResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::DomainDeleteResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute message + # + # @return [String] + required :message, String + + # @!method initialize(message:) + # @param message [String] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_list_params.rb b/lib/ark_email/models/tenants/domain_list_params.rb new file mode 100644 index 0000000..1b5f731 --- /dev/null +++ b/lib/ark_email/models/tenants/domain_list_params.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#list + class DomainListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_list_response.rb b/lib/ark_email/models/tenants/domain_list_response.rb new file mode 100644 index 0000000..26e66b6 --- /dev/null +++ b/lib/ark_email/models/tenants/domain_list_response.rb @@ -0,0 +1,89 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#list + class DomainListResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::DomainListResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::DomainListResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::DomainListResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::DomainListResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute domains + # + # @return [Array] + required :domains, + -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::Tenants::DomainListResponse::Data::Domain] } + + # @!method initialize(domains:) + # @param domains [Array] + + class Domain < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique domain identifier + # + # @return [Integer] + required :id, Integer + + # @!attribute name + # The domain name used for sending emails + # + # @return [String] + required :name, String + + # @!attribute verified + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + # + # @return [Boolean] + required :verified, ArkEmail::Internal::Type::Boolean + + # @!attribute tenant_id + # ID of the tenant this domain belongs to (included when filtering by tenant_id) + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute tenant_name + # Name of the tenant this domain belongs to (included when filtering by tenant_id) + # + # @return [String, nil] + optional :tenant_name, String + + # @!method initialize(id:, name:, verified:, tenant_id: nil, tenant_name: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::DomainListResponse::Data::Domain} for more details. + # + # @param id [Integer] Unique domain identifier + # + # @param name [String] The domain name used for sending emails + # + # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai + # + # @param tenant_id [String] ID of the tenant this domain belongs to (included when filtering by tenant_id) + # + # @param tenant_name [String] Name of the tenant this domain belongs to (included when filtering by tenant_id) + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_retrieve_params.rb b/lib/ark_email/models/tenants/domain_retrieve_params.rb new file mode 100644 index 0000000..547f5c6 --- /dev/null +++ b/lib/ark_email/models/tenants/domain_retrieve_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#retrieve + class DomainRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_retrieve_response.rb b/lib/ark_email/models/tenants/domain_retrieve_response.rb new file mode 100644 index 0000000..498652a --- /dev/null +++ b/lib/ark_email/models/tenants/domain_retrieve_response.rb @@ -0,0 +1,221 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#retrieve + class DomainRetrieveResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::DomainRetrieveResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::DomainRetrieveResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::DomainRetrieveResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::DomainRetrieveResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique domain identifier + # + # @return [Integer] + required :id, Integer + + # @!attribute created_at + # Timestamp when the domain was added + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute dns_records + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + # + # @return [ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords, nil] + required :dns_records, + -> { ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords }, + api_name: :dnsRecords, + nil?: true + + # @!attribute name + # The domain name used for sending emails + # + # @return [String] + required :name, String + + # @!attribute uuid + # UUID of the domain + # + # @return [String] + required :uuid, String + + # @!attribute verified + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + # + # @return [Boolean] + required :verified, ArkEmail::Internal::Type::Boolean + + # @!attribute tenant_id + # ID of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute tenant_name + # Name of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_name, String + + # @!attribute verified_at + # Timestamp when the domain ownership was verified, or null if not yet verified + # + # @return [Time, nil] + optional :verified_at, Time, api_name: :verifiedAt, nil?: true + + # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::DomainRetrieveResponse::Data} for more details. + # + # @param id [Integer] Unique domain identifier + # + # @param created_at [Time] Timestamp when the domain was added + # + # @param dns_records [ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords, nil] DNS records that must be added to your domain's DNS settings. Null if records ar + # + # @param name [String] The domain name used for sending emails + # + # @param uuid [String] UUID of the domain + # + # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai + # + # @param tenant_id [String] ID of the tenant this domain belongs to + # + # @param tenant_name [String] Name of the tenant this domain belongs to + # + # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified + + # @see ArkEmail::Models::Tenants::DomainRetrieveResponse::Data#dns_records + class DNSRecords < ArkEmail::Internal::Type::BaseModel + # @!attribute dkim + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :dkim, -> { ArkEmail::Tenants::DNSRecord }, nil?: true + + # @!attribute return_path + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :return_path, -> { ArkEmail::Tenants::DNSRecord }, api_name: :returnPath, nil?: true + + # @!attribute spf + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :spf, -> { ArkEmail::Tenants::DNSRecord }, nil?: true + + # @!attribute zone + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + # + # @return [String, nil] + optional :zone, String + + # @!method initialize(dkim: nil, return_path: nil, spf: nil, zone: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords} for more + # details. + # + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + # + # @param dkim [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param return_path [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param spf [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param zone [String] The DNS zone (registrable domain) where records should be added. + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_verify_params.rb b/lib/ark_email/models/tenants/domain_verify_params.rb new file mode 100644 index 0000000..d91fa80 --- /dev/null +++ b/lib/ark_email/models/tenants/domain_verify_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#verify + class DomainVerifyParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/domain_verify_response.rb b/lib/ark_email/models/tenants/domain_verify_response.rb new file mode 100644 index 0000000..ac380bf --- /dev/null +++ b/lib/ark_email/models/tenants/domain_verify_response.rb @@ -0,0 +1,221 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Domains#verify + class DomainVerifyResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::DomainVerifyResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::DomainVerifyResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::DomainVerifyResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::DomainVerifyResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique domain identifier + # + # @return [Integer] + required :id, Integer + + # @!attribute created_at + # Timestamp when the domain was added + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute dns_records + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + # + # @return [ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords, nil] + required :dns_records, + -> { ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords }, + api_name: :dnsRecords, + nil?: true + + # @!attribute name + # The domain name used for sending emails + # + # @return [String] + required :name, String + + # @!attribute uuid + # UUID of the domain + # + # @return [String] + required :uuid, String + + # @!attribute verified + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + # + # @return [Boolean] + required :verified, ArkEmail::Internal::Type::Boolean + + # @!attribute tenant_id + # ID of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute tenant_name + # Name of the tenant this domain belongs to + # + # @return [String, nil] + optional :tenant_name, String + + # @!attribute verified_at + # Timestamp when the domain ownership was verified, or null if not yet verified + # + # @return [Time, nil] + optional :verified_at, Time, api_name: :verifiedAt, nil?: true + + # @!method initialize(id:, created_at:, dns_records:, name:, uuid:, verified:, tenant_id: nil, tenant_name: nil, verified_at: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::DomainVerifyResponse::Data} for more details. + # + # @param id [Integer] Unique domain identifier + # + # @param created_at [Time] Timestamp when the domain was added + # + # @param dns_records [ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords, nil] DNS records that must be added to your domain's DNS settings. Null if records ar + # + # @param name [String] The domain name used for sending emails + # + # @param uuid [String] UUID of the domain + # + # @param verified [Boolean] Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. Domai + # + # @param tenant_id [String] ID of the tenant this domain belongs to + # + # @param tenant_name [String] Name of the tenant this domain belongs to + # + # @param verified_at [Time, nil] Timestamp when the domain ownership was verified, or null if not yet verified + + # @see ArkEmail::Models::Tenants::DomainVerifyResponse::Data#dns_records + class DNSRecords < ArkEmail::Internal::Type::BaseModel + # @!attribute dkim + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :dkim, -> { ArkEmail::Tenants::DNSRecord }, nil?: true + + # @!attribute return_path + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :return_path, -> { ArkEmail::Tenants::DNSRecord }, api_name: :returnPath, nil?: true + + # @!attribute spf + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + # + # @return [ArkEmail::Models::Tenants::DNSRecord, nil] + optional :spf, -> { ArkEmail::Tenants::DNSRecord }, nil?: true + + # @!attribute zone + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + # + # @return [String, nil] + optional :zone, String + + # @!method initialize(dkim: nil, return_path: nil, spf: nil, zone: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords} for more + # details. + # + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + # + # @param dkim [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param return_path [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param spf [ArkEmail::Models::Tenants::DNSRecord, nil] A DNS record that needs to be configured in your domain's DNS settings. + # + # @param zone [String] The DNS zone (registrable domain) where records should be added. + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/suppression_create_params.rb b/lib/ark_email/models/tenants/suppression_create_params.rb new file mode 100644 index 0000000..bb6c3fe --- /dev/null +++ b/lib/ark_email/models/tenants/suppression_create_params.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Suppressions#create + class SuppressionCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute address + # Email address to suppress + # + # @return [String] + required :address, String + + # @!attribute reason + # Reason for suppression (accepts null) + # + # @return [String, nil] + optional :reason, String, nil?: true + + # @!method initialize(address:, reason: nil, request_options: {}) + # @param address [String] Email address to suppress + # + # @param reason [String, nil] Reason for suppression (accepts null) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/suppression_create_response.rb b/lib/ark_email/models/tenants/suppression_create_response.rb new file mode 100644 index 0000000..19db0fa --- /dev/null +++ b/lib/ark_email/models/tenants/suppression_create_response.rb @@ -0,0 +1,64 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Suppressions#create + class SuppressionCreateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::SuppressionCreateResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::SuppressionCreateResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::SuppressionCreateResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::SuppressionCreateResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Suppression ID + # + # @return [String] + required :id, String + + # @!attribute address + # + # @return [String] + required :address, String + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute reason + # Reason for suppression + # + # @return [String, nil] + optional :reason, String + + # @!method initialize(id:, address:, created_at:, reason: nil) + # @param id [String] Suppression ID + # + # @param address [String] + # + # @param created_at [Time] + # + # @param reason [String] Reason for suppression + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/suppression_delete_params.rb b/lib/ark_email/models/tenants/suppression_delete_params.rb new file mode 100644 index 0000000..fbf287b --- /dev/null +++ b/lib/ark_email/models/tenants/suppression_delete_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Suppressions#delete + class SuppressionDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/suppression_delete_response.rb b/lib/ark_email/models/tenants/suppression_delete_response.rb new file mode 100644 index 0000000..b4283dc --- /dev/null +++ b/lib/ark_email/models/tenants/suppression_delete_response.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Suppressions#delete + class SuppressionDeleteResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::SuppressionDeleteResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute message + # + # @return [String] + required :message, String + + # @!method initialize(message:) + # @param message [String] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/suppression_list_params.rb b/lib/ark_email/models/tenants/suppression_list_params.rb new file mode 100644 index 0000000..640497a --- /dev/null +++ b/lib/ark_email/models/tenants/suppression_list_params.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Suppressions#list + class SuppressionListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute page + # + # @return [Integer, nil] + optional :page, Integer + + # @!attribute per_page + # + # @return [Integer, nil] + optional :per_page, Integer + + # @!method initialize(page: nil, per_page: nil, request_options: {}) + # @param page [Integer] + # @param per_page [Integer] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/suppression_list_response.rb b/lib/ark_email/models/tenants/suppression_list_response.rb new file mode 100644 index 0000000..3a46d4a --- /dev/null +++ b/lib/ark_email/models/tenants/suppression_list_response.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Suppressions#list + class SuppressionListResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Suppression ID + # + # @return [String] + required :id, String + + # @!attribute address + # + # @return [String] + required :address, String + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute reason + # + # @return [String, nil] + optional :reason, String + + # @!method initialize(id:, address:, created_at:, reason: nil) + # @param id [String] Suppression ID + # + # @param address [String] + # + # @param created_at [Time] + # + # @param reason [String] + end + end + end +end diff --git a/lib/ark_email/models/tenants/suppression_retrieve_params.rb b/lib/ark_email/models/tenants/suppression_retrieve_params.rb new file mode 100644 index 0000000..20418d8 --- /dev/null +++ b/lib/ark_email/models/tenants/suppression_retrieve_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Suppressions#retrieve + class SuppressionRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/suppression_retrieve_response.rb b/lib/ark_email/models/tenants/suppression_retrieve_response.rb new file mode 100644 index 0000000..11b7fd1 --- /dev/null +++ b/lib/ark_email/models/tenants/suppression_retrieve_response.rb @@ -0,0 +1,66 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Suppressions#retrieve + class SuppressionRetrieveResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::SuppressionRetrieveResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute address + # The email address that was checked + # + # @return [String] + required :address, String + + # @!attribute suppressed + # Whether the address is currently suppressed + # + # @return [Boolean] + required :suppressed, ArkEmail::Internal::Type::Boolean + + # @!attribute created_at + # When the suppression was created (if suppressed) + # + # @return [Time, nil] + optional :created_at, Time, api_name: :createdAt, nil?: true + + # @!attribute reason + # Reason for suppression (if suppressed) + # + # @return [String, nil] + optional :reason, String, nil?: true + + # @!method initialize(address:, suppressed:, created_at: nil, reason: nil) + # @param address [String] The email address that was checked + # + # @param suppressed [Boolean] Whether the address is currently suppressed + # + # @param created_at [Time, nil] When the suppression was created (if suppressed) + # + # @param reason [String, nil] Reason for suppression (if suppressed) + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/tenant_usage.rb b/lib/ark_email/models/tenants/tenant_usage.rb new file mode 100644 index 0000000..1bdd799 --- /dev/null +++ b/lib/ark_email/models/tenants/tenant_usage.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + class TenantUsage < ArkEmail::Internal::Type::BaseModel + # @!attribute emails + # Email delivery counts + # + # @return [ArkEmail::Models::EmailCounts] + required :emails, -> { ArkEmail::EmailCounts } + + # @!attribute period + # Time period for usage data + # + # @return [ArkEmail::Models::UsagePeriod] + required :period, -> { ArkEmail::UsagePeriod } + + # @!attribute rates + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @return [ArkEmail::Models::EmailRates] + required :rates, -> { ArkEmail::EmailRates } + + # @!attribute tenant_id + # Unique tenant identifier + # + # @return [String] + required :tenant_id, String + + # @!attribute tenant_name + # Tenant display name + # + # @return [String] + required :tenant_name, String + + # @!attribute external_id + # Your external ID for this tenant (from metadata) + # + # @return [String, nil] + optional :external_id, String, nil?: true + + # @!method initialize(emails:, period:, rates:, tenant_id:, tenant_name:, external_id: nil) + # Tenant usage statistics + # + # @param emails [ArkEmail::Models::EmailCounts] Email delivery counts + # + # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data + # + # @param rates [ArkEmail::Models::EmailRates] Email delivery rates (as decimals, e.g., 0.95 = 95%) + # + # @param tenant_id [String] Unique tenant identifier + # + # @param tenant_name [String] Tenant display name + # + # @param external_id [String, nil] Your external ID for this tenant (from metadata) + end + end + + TenantUsage = Tenants::TenantUsage + end +end diff --git a/lib/ark_email/models/tenants/tenant_usage_timeseries.rb b/lib/ark_email/models/tenants/tenant_usage_timeseries.rb new file mode 100644 index 0000000..a319f70 --- /dev/null +++ b/lib/ark_email/models/tenants/tenant_usage_timeseries.rb @@ -0,0 +1,130 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # Array of time-bucketed data points + # + # @return [Array] + required :data, -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Tenants::TenantUsageTimeseries::Data] } + + # @!attribute granularity + # Time bucket granularity + # + # @return [Symbol, ArkEmail::Models::Tenants::TenantUsageTimeseries::Granularity] + required :granularity, enum: -> { ArkEmail::Tenants::TenantUsageTimeseries::Granularity } + + # @!attribute period + # Time period for usage data + # + # @return [ArkEmail::Models::UsagePeriod] + required :period, -> { ArkEmail::UsagePeriod } + + # @!attribute tenant_id + # Unique tenant identifier + # + # @return [String] + required :tenant_id, String + + # @!attribute tenant_name + # Tenant display name + # + # @return [String] + required :tenant_name, String + + # @!method initialize(data:, granularity:, period:, tenant_id:, tenant_name:) + # Timeseries usage statistics + # + # @param data [Array] Array of time-bucketed data points + # + # @param granularity [Symbol, ArkEmail::Models::Tenants::TenantUsageTimeseries::Granularity] Time bucket granularity + # + # @param period [ArkEmail::Models::UsagePeriod] Time period for usage data + # + # @param tenant_id [String] Unique tenant identifier + # + # @param tenant_name [String] Tenant display name + + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute bounced + # Bounces in this bucket + # + # @return [Integer] + required :bounced, Integer + + # @!attribute delivered + # Emails delivered in this bucket + # + # @return [Integer] + required :delivered, Integer + + # @!attribute hard_failed + # Hard failures in this bucket + # + # @return [Integer] + required :hard_failed, Integer + + # @!attribute held + # Emails held in this bucket + # + # @return [Integer] + required :held, Integer + + # @!attribute sent + # Emails sent in this bucket + # + # @return [Integer] + required :sent, Integer + + # @!attribute soft_failed + # Soft failures in this bucket + # + # @return [Integer] + required :soft_failed, Integer + + # @!attribute timestamp + # Start of time bucket + # + # @return [Time] + required :timestamp, Time + + # @!method initialize(bounced:, delivered:, hard_failed:, held:, sent:, soft_failed:, timestamp:) + # Single timeseries data point + # + # @param bounced [Integer] Bounces in this bucket + # + # @param delivered [Integer] Emails delivered in this bucket + # + # @param hard_failed [Integer] Hard failures in this bucket + # + # @param held [Integer] Emails held in this bucket + # + # @param sent [Integer] Emails sent in this bucket + # + # @param soft_failed [Integer] Soft failures in this bucket + # + # @param timestamp [Time] Start of time bucket + end + + # Time bucket granularity + # + # @see ArkEmail::Models::Tenants::TenantUsageTimeseries#granularity + module Granularity + extend ArkEmail::Internal::Type::Enum + + HOUR = :hour + DAY = :day + WEEK = :week + MONTH = :month + + # @!method self.values + # @return [Array] + end + end + end + + TenantUsageTimeseries = Tenants::TenantUsageTimeseries + end +end diff --git a/lib/ark_email/models/tenants/track_domain.rb b/lib/ark_email/models/tenants/track_domain.rb new file mode 100644 index 0000000..eb13e10 --- /dev/null +++ b/lib/ark_email/models/tenants/track_domain.rb @@ -0,0 +1,186 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + class TrackDomain < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Track domain ID + # + # @return [String] + required :id, String + + # @!attribute created_at + # When the track domain was created + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute dns_ok + # Whether the tracking CNAME record is correctly configured. Must be true to use + # tracking features. + # + # @return [Boolean] + required :dns_ok, ArkEmail::Internal::Type::Boolean, api_name: :dnsOk + + # @!attribute domain_id + # ID of the parent sending domain + # + # @return [String] + required :domain_id, String, api_name: :domainId + + # @!attribute full_name + # Full domain name + # + # @return [String] + required :full_name, String, api_name: :fullName + + # @!attribute name + # Subdomain name + # + # @return [String] + required :name, String + + # @!attribute ssl_enabled + # Whether SSL is enabled for tracking URLs + # + # @return [Boolean] + required :ssl_enabled, ArkEmail::Internal::Type::Boolean, api_name: :sslEnabled + + # @!attribute track_clicks + # Whether click tracking is enabled + # + # @return [Boolean] + required :track_clicks, ArkEmail::Internal::Type::Boolean, api_name: :trackClicks + + # @!attribute track_opens + # Whether open tracking is enabled + # + # @return [Boolean] + required :track_opens, ArkEmail::Internal::Type::Boolean, api_name: :trackOpens + + # @!attribute dns_checked_at + # When DNS was last checked + # + # @return [Time, nil] + optional :dns_checked_at, Time, api_name: :dnsCheckedAt, nil?: true + + # @!attribute dns_error + # DNS error message if verification failed + # + # @return [String, nil] + optional :dns_error, String, api_name: :dnsError, nil?: true + + # @!attribute dns_record + # Required DNS record configuration + # + # @return [ArkEmail::Models::Tenants::TrackDomain::DNSRecord, nil] + optional :dns_record, + -> { + ArkEmail::Tenants::TrackDomain::DNSRecord + }, + api_name: :dnsRecord, + nil?: true + + # @!attribute dns_status + # Current DNS verification status + # + # @return [Symbol, ArkEmail::Models::Tenants::TrackDomain::DNSStatus, nil] + optional :dns_status, + enum: -> { ArkEmail::Tenants::TrackDomain::DNSStatus }, + api_name: :dnsStatus, + nil?: true + + # @!attribute excluded_click_domains + # Domains excluded from click tracking + # + # @return [String, nil] + optional :excluded_click_domains, String, api_name: :excludedClickDomains, nil?: true + + # @!attribute updated_at + # When the track domain was last updated + # + # @return [Time, nil] + optional :updated_at, Time, api_name: :updatedAt, nil?: true + + # @!method initialize(id:, created_at:, dns_ok:, domain_id:, full_name:, name:, ssl_enabled:, track_clicks:, track_opens:, dns_checked_at: nil, dns_error: nil, dns_record: nil, dns_status: nil, excluded_click_domains: nil, updated_at: nil) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::TrackDomain} for more details. + # + # @param id [String] Track domain ID + # + # @param created_at [Time] When the track domain was created + # + # @param dns_ok [Boolean] Whether the tracking CNAME record is correctly configured. Must be true to use t + # + # @param domain_id [String] ID of the parent sending domain + # + # @param full_name [String] Full domain name + # + # @param name [String] Subdomain name + # + # @param ssl_enabled [Boolean] Whether SSL is enabled for tracking URLs + # + # @param track_clicks [Boolean] Whether click tracking is enabled + # + # @param track_opens [Boolean] Whether open tracking is enabled + # + # @param dns_checked_at [Time, nil] When DNS was last checked + # + # @param dns_error [String, nil] DNS error message if verification failed + # + # @param dns_record [ArkEmail::Models::Tenants::TrackDomain::DNSRecord, nil] Required DNS record configuration + # + # @param dns_status [Symbol, ArkEmail::Models::Tenants::TrackDomain::DNSStatus, nil] Current DNS verification status + # + # @param excluded_click_domains [String, nil] Domains excluded from click tracking + # + # @param updated_at [Time, nil] When the track domain was last updated + + # @see ArkEmail::Models::Tenants::TrackDomain#dns_record + class DNSRecord < ArkEmail::Internal::Type::BaseModel + # @!attribute name + # DNS record name + # + # @return [String, nil] + optional :name, String + + # @!attribute type + # DNS record type + # + # @return [String, nil] + optional :type, String + + # @!attribute value + # DNS record value (target) + # + # @return [String, nil] + optional :value, String + + # @!method initialize(name: nil, type: nil, value: nil) + # Required DNS record configuration + # + # @param name [String] DNS record name + # + # @param type [String] DNS record type + # + # @param value [String] DNS record value (target) + end + + # Current DNS verification status + # + # @see ArkEmail::Models::Tenants::TrackDomain#dns_status + module DNSStatus + extend ArkEmail::Internal::Type::Enum + + OK = :ok + MISSING = :missing + INVALID = :invalid + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_create_params.rb b/lib/ark_email/models/tenants/tracking_create_params.rb new file mode 100644 index 0000000..24954d5 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_create_params.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#create + class TrackingCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute domain_id + # ID of the sending domain to attach this track domain to + # + # @return [Integer] + required :domain_id, Integer, api_name: :domainId + + # @!attribute name + # Subdomain name (e.g., 'track' for track.yourdomain.com) + # + # @return [String] + required :name, String + + # @!attribute ssl_enabled + # Enable SSL for tracking URLs (accepts null, defaults to true) + # + # @return [Boolean, nil] + optional :ssl_enabled, ArkEmail::Internal::Type::Boolean, api_name: :sslEnabled, nil?: true + + # @!attribute track_clicks + # Enable click tracking (accepts null, defaults to true) + # + # @return [Boolean, nil] + optional :track_clicks, ArkEmail::Internal::Type::Boolean, api_name: :trackClicks, nil?: true + + # @!attribute track_opens + # Enable open tracking (tracking pixel, accepts null, defaults to true) + # + # @return [Boolean, nil] + optional :track_opens, ArkEmail::Internal::Type::Boolean, api_name: :trackOpens, nil?: true + + # @!method initialize(domain_id:, name:, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {}) + # @param domain_id [Integer] ID of the sending domain to attach this track domain to + # + # @param name [String] Subdomain name (e.g., 'track' for track.yourdomain.com) + # + # @param ssl_enabled [Boolean, nil] Enable SSL for tracking URLs (accepts null, defaults to true) + # + # @param track_clicks [Boolean, nil] Enable click tracking (accepts null, defaults to true) + # + # @param track_opens [Boolean, nil] Enable open tracking (tracking pixel, accepts null, defaults to true) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_create_response.rb b/lib/ark_email/models/tenants/tracking_create_response.rb new file mode 100644 index 0000000..4df75fa --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_create_response.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#create + class TrackingCreateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::TrackDomain] + required :data, -> { ArkEmail::Tenants::TrackDomain } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::TrackDomain] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_delete_params.rb b/lib/ark_email/models/tenants/tracking_delete_params.rb new file mode 100644 index 0000000..883ba4f --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_delete_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#delete + class TrackingDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_delete_response.rb b/lib/ark_email/models/tenants/tracking_delete_response.rb new file mode 100644 index 0000000..8c34d74 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_delete_response.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#delete + class TrackingDeleteResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::TrackingDeleteResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::TrackingDeleteResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::TrackingDeleteResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::TrackingDeleteResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute message + # + # @return [String] + required :message, String + + # @!method initialize(message:) + # @param message [String] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_list_params.rb b/lib/ark_email/models/tenants/tracking_list_params.rb new file mode 100644 index 0000000..5eae472 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_list_params.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#list + class TrackingListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_list_response.rb b/lib/ark_email/models/tenants/tracking_list_response.rb new file mode 100644 index 0000000..112d096 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_list_response.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#list + class TrackingListResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::TrackingListResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::TrackingListResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::TrackingListResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::TrackingListResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute track_domains + # + # @return [Array] + required :track_domains, + -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Tenants::TrackDomain] }, + api_name: :trackDomains + + # @!method initialize(track_domains:) + # @param track_domains [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_retrieve_params.rb b/lib/ark_email/models/tenants/tracking_retrieve_params.rb new file mode 100644 index 0000000..7a21370 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_retrieve_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#retrieve + class TrackingRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_retrieve_response.rb b/lib/ark_email/models/tenants/tracking_retrieve_response.rb new file mode 100644 index 0000000..2eaac40 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_retrieve_response.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#retrieve + class TrackingRetrieveResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::TrackDomain] + required :data, -> { ArkEmail::Tenants::TrackDomain } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::TrackDomain] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_update_params.rb b/lib/ark_email/models/tenants/tracking_update_params.rb new file mode 100644 index 0000000..19d2949 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_update_params.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#update + class TrackingUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!attribute excluded_click_domains + # Comma-separated list of domains to exclude from click tracking (accepts null) + # + # @return [String, nil] + optional :excluded_click_domains, String, api_name: :excludedClickDomains, nil?: true + + # @!attribute ssl_enabled + # Enable or disable SSL for tracking URLs (accepts null) + # + # @return [Boolean, nil] + optional :ssl_enabled, ArkEmail::Internal::Type::Boolean, api_name: :sslEnabled, nil?: true + + # @!attribute track_clicks + # Enable or disable click tracking (accepts null) + # + # @return [Boolean, nil] + optional :track_clicks, ArkEmail::Internal::Type::Boolean, api_name: :trackClicks, nil?: true + + # @!attribute track_opens + # Enable or disable open tracking (accepts null) + # + # @return [Boolean, nil] + optional :track_opens, ArkEmail::Internal::Type::Boolean, api_name: :trackOpens, nil?: true + + # @!method initialize(tenant_id:, excluded_click_domains: nil, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {}) + # @param tenant_id [String] + # + # @param excluded_click_domains [String, nil] Comma-separated list of domains to exclude from click tracking (accepts null) + # + # @param ssl_enabled [Boolean, nil] Enable or disable SSL for tracking URLs (accepts null) + # + # @param track_clicks [Boolean, nil] Enable or disable click tracking (accepts null) + # + # @param track_opens [Boolean, nil] Enable or disable open tracking (accepts null) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_update_response.rb b/lib/ark_email/models/tenants/tracking_update_response.rb new file mode 100644 index 0000000..78ecd95 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_update_response.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#update + class TrackingUpdateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::TrackDomain] + required :data, -> { ArkEmail::Tenants::TrackDomain } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::TrackDomain] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_verify_params.rb b/lib/ark_email/models/tenants/tracking_verify_params.rb new file mode 100644 index 0000000..d49b236 --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_verify_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#verify + class TrackingVerifyParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/tracking_verify_response.rb b/lib/ark_email/models/tenants/tracking_verify_response.rb new file mode 100644 index 0000000..cfb811a --- /dev/null +++ b/lib/ark_email/models/tenants/tracking_verify_response.rb @@ -0,0 +1,135 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Tracking#verify + class TrackingVerifyResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::TrackingVerifyResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::TrackingVerifyResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::TrackingVerifyResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::TrackingVerifyResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Track domain ID + # + # @return [String] + required :id, String + + # @!attribute dns_ok + # Whether DNS is correctly configured + # + # @return [Boolean] + required :dns_ok, ArkEmail::Internal::Type::Boolean, api_name: :dnsOk + + # @!attribute dns_status + # Current DNS verification status + # + # @return [Symbol, ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus, nil] + required :dns_status, + enum: -> { ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus }, + api_name: :dnsStatus, + nil?: true + + # @!attribute full_name + # Full domain name + # + # @return [String] + required :full_name, String, api_name: :fullName + + # @!attribute dns_checked_at + # When DNS was last checked + # + # @return [Time, nil] + optional :dns_checked_at, Time, api_name: :dnsCheckedAt, nil?: true + + # @!attribute dns_error + # DNS error message if verification failed + # + # @return [String, nil] + optional :dns_error, String, api_name: :dnsError, nil?: true + + # @!attribute dns_record + # Required DNS record configuration + # + # @return [ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord, nil] + optional :dns_record, + -> { ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord }, + api_name: :dnsRecord, + nil?: true + + # @!method initialize(id:, dns_ok:, dns_status:, full_name:, dns_checked_at: nil, dns_error: nil, dns_record: nil) + # @param id [String] Track domain ID + # + # @param dns_ok [Boolean] Whether DNS is correctly configured + # + # @param dns_status [Symbol, ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus, nil] Current DNS verification status + # + # @param full_name [String] Full domain name + # + # @param dns_checked_at [Time, nil] When DNS was last checked + # + # @param dns_error [String, nil] DNS error message if verification failed + # + # @param dns_record [ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord, nil] Required DNS record configuration + + # Current DNS verification status + # + # @see ArkEmail::Models::Tenants::TrackingVerifyResponse::Data#dns_status + module DNSStatus + extend ArkEmail::Internal::Type::Enum + + OK = :ok + MISSING = :missing + INVALID = :invalid + + # @!method self.values + # @return [Array] + end + + # @see ArkEmail::Models::Tenants::TrackingVerifyResponse::Data#dns_record + class DNSRecord < ArkEmail::Internal::Type::BaseModel + # @!attribute name + # + # @return [String, nil] + optional :name, String + + # @!attribute type + # + # @return [String, nil] + optional :type, String + + # @!attribute value + # + # @return [String, nil] + optional :value, String + + # @!method initialize(name: nil, type: nil, value: nil) + # Required DNS record configuration + # + # @param name [String] + # @param type [String] + # @param value [String] + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/usage_retrieve_params.rb b/lib/ark_email/models/tenants/usage_retrieve_params.rb new file mode 100644 index 0000000..b35609e --- /dev/null +++ b/lib/ark_email/models/tenants/usage_retrieve_params.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Usage#retrieve + class UsageRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute period + # Time period for usage data. Defaults to current month. + # + # **Formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` + # - Range: `2024-01-01..2024-01-31` + # - Day: `2024-01-15` + # + # @return [String, nil] + optional :period, String + + # @!attribute timezone + # Timezone for period calculations (IANA format). Defaults to UTC. + # + # @return [String, nil] + optional :timezone, String + + # @!method initialize(period: nil, timezone: nil, request_options: {}) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::UsageRetrieveParams} for more details. + # + # @param period [String] Time period for usage data. Defaults to current month. + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/usage_retrieve_response.rb b/lib/ark_email/models/tenants/usage_retrieve_response.rb new file mode 100644 index 0000000..3db2d05 --- /dev/null +++ b/lib/ark_email/models/tenants/usage_retrieve_response.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Usage#retrieve + class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # Tenant usage statistics + # + # @return [ArkEmail::Models::Tenants::TenantUsage] + required :data, -> { ArkEmail::Tenants::TenantUsage } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Usage statistics for a single tenant + # + # @param data [ArkEmail::Models::Tenants::TenantUsage] Tenant usage statistics + # + # @param meta [ArkEmail::Models::APIMeta] + # + # @param success [Boolean, true] + end + end + end +end diff --git a/lib/ark_email/models/tenants/usage_retrieve_timeseries_params.rb b/lib/ark_email/models/tenants/usage_retrieve_timeseries_params.rb new file mode 100644 index 0000000..8b13152 --- /dev/null +++ b/lib/ark_email/models/tenants/usage_retrieve_timeseries_params.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Usage#retrieve_timeseries + class UsageRetrieveTimeseriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute granularity + # Time bucket size for data points + # + # @return [Symbol, ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::Granularity, nil] + optional :granularity, enum: -> { ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity } + + # @!attribute period + # Time period for timeseries data. Defaults to current month. + # + # @return [String, nil] + optional :period, String + + # @!attribute timezone + # Timezone for period calculations (IANA format). Defaults to UTC. + # + # @return [String, nil] + optional :timezone, String + + # @!method initialize(granularity: nil, period: nil, timezone: nil, request_options: {}) + # @param granularity [Symbol, ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::Granularity] Time bucket size for data points + # + # @param period [String] Time period for timeseries data. Defaults to current month. + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Time bucket size for data points + module Granularity + extend ArkEmail::Internal::Type::Enum + + HOUR = :hour + DAY = :day + WEEK = :week + MONTH = :month + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/usage_retrieve_timeseries_response.rb b/lib/ark_email/models/tenants/usage_retrieve_timeseries_response.rb new file mode 100644 index 0000000..2663df5 --- /dev/null +++ b/lib/ark_email/models/tenants/usage_retrieve_timeseries_response.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Usage#retrieve_timeseries + class UsageRetrieveTimeseriesResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # Timeseries usage statistics + # + # @return [ArkEmail::Models::Tenants::TenantUsageTimeseries] + required :data, -> { ArkEmail::Tenants::TenantUsageTimeseries } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Timeseries usage data for a tenant + # + # @param data [ArkEmail::Models::Tenants::TenantUsageTimeseries] Timeseries usage statistics + # + # @param meta [ArkEmail::Models::APIMeta] + # + # @param success [Boolean, true] + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_create_params.rb b/lib/ark_email/models/tenants/webhook_create_params.rb new file mode 100644 index 0000000..28db0e4 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_create_params.rb @@ -0,0 +1,88 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#create + class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute name + # Webhook name for identification + # + # @return [String] + required :name, String + + # @!attribute url + # HTTPS endpoint URL + # + # @return [String] + required :url, String + + # @!attribute all_events + # Subscribe to all events (ignores events array, accepts null) + # + # @return [Boolean, nil] + optional :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents, nil?: true + + # @!attribute enabled + # Whether the webhook is enabled (accepts null) + # + # @return [Boolean, nil] + optional :enabled, ArkEmail::Internal::Type::Boolean, nil?: true + + # @!attribute events + # Events to subscribe to (accepts null): + # + # - `MessageSent` - Email successfully delivered to recipient's server + # - `MessageDelayed` - Temporary delivery failure, will retry + # - `MessageDeliveryFailed` - Permanent delivery failure + # - `MessageHeld` - Email held for manual review + # - `MessageBounced` - Email bounced back + # - `MessageLinkClicked` - Recipient clicked a tracked link + # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded) + # - `DomainDNSError` - DNS configuration issue detected + # + # @return [Array, nil] + optional :events, + -> { + ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Tenants::WebhookCreateParams::Event] + }, + nil?: true + + # @!method initialize(name:, url:, all_events: nil, enabled: nil, events: nil, request_options: {}) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::WebhookCreateParams} for more details. + # + # @param name [String] Webhook name for identification + # + # @param url [String] HTTPS endpoint URL + # + # @param all_events [Boolean, nil] Subscribe to all events (ignores events array, accepts null) + # + # @param enabled [Boolean, nil] Whether the webhook is enabled (accepts null) + # + # @param events [Array, nil] Events to subscribe to (accepts null): + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_create_response.rb b/lib/ark_email/models/tenants/webhook_create_response.rb new file mode 100644 index 0000000..a933f95 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_create_response.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#create + class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::WebhookCreateResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::WebhookCreateResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::WebhookCreateResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::WebhookCreateResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Webhook ID + # + # @return [String] + required :id, String + + # @!attribute all_events + # Whether subscribed to all events + # + # @return [Boolean] + required :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute enabled + # Whether the webhook is active + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # Subscribed events + # + # @return [Array] + required :events, + -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event] } + + # @!attribute name + # Webhook name for identification + # + # @return [String] + required :name, String + + # @!attribute url + # Webhook endpoint URL + # + # @return [String] + required :url, String + + # @!attribute uuid + # + # @return [String] + required :uuid, String + + # @!method initialize(id:, all_events:, created_at:, enabled:, events:, name:, url:, uuid:) + # @param id [String] Webhook ID + # + # @param all_events [Boolean] Whether subscribed to all events + # + # @param created_at [Time] + # + # @param enabled [Boolean] Whether the webhook is active + # + # @param events [Array] Subscribed events + # + # @param name [String] Webhook name for identification + # + # @param url [String] Webhook endpoint URL + # + # @param uuid [String] + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_delete_params.rb b/lib/ark_email/models/tenants/webhook_delete_params.rb new file mode 100644 index 0000000..b7dcacb --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_delete_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#delete + class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_delete_response.rb b/lib/ark_email/models/tenants/webhook_delete_response.rb new file mode 100644 index 0000000..b09f927 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_delete_response.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#delete + class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::WebhookDeleteResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::WebhookDeleteResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::WebhookDeleteResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::WebhookDeleteResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute message + # + # @return [String] + required :message, String + + # @!method initialize(message:) + # @param message [String] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_list_deliveries_params.rb b/lib/ark_email/models/tenants/webhook_list_deliveries_params.rb new file mode 100644 index 0000000..565cc2c --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_list_deliveries_params.rb @@ -0,0 +1,88 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#list_deliveries + class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!attribute after + # Only deliveries after this Unix timestamp + # + # @return [Integer, nil] + optional :after, Integer + + # @!attribute before + # Only deliveries before this Unix timestamp + # + # @return [Integer, nil] + optional :before, Integer + + # @!attribute event + # Filter by event type + # + # @return [Symbol, ArkEmail::Models::Tenants::WebhookListDeliveriesParams::Event, nil] + optional :event, enum: -> { ArkEmail::Tenants::WebhookListDeliveriesParams::Event } + + # @!attribute page + # Page number (default 1) + # + # @return [Integer, nil] + optional :page, Integer + + # @!attribute per_page + # Items per page (default 30, max 100) + # + # @return [Integer, nil] + optional :per_page, Integer + + # @!attribute success + # Filter by delivery success (true = 2xx response, false = non-2xx or error) + # + # @return [Boolean, nil] + optional :success, ArkEmail::Internal::Type::Boolean + + # @!method initialize(tenant_id:, after: nil, before: nil, event: nil, page: nil, per_page: nil, success: nil, request_options: {}) + # @param tenant_id [String] + # + # @param after [Integer] Only deliveries after this Unix timestamp + # + # @param before [Integer] Only deliveries before this Unix timestamp + # + # @param event [Symbol, ArkEmail::Models::Tenants::WebhookListDeliveriesParams::Event] Filter by event type + # + # @param page [Integer] Page number (default 1) + # + # @param per_page [Integer] Items per page (default 30, max 100) + # + # @param success [Boolean] Filter by delivery success (true = 2xx response, false = non-2xx or error) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Filter by event type + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_list_deliveries_response.rb b/lib/ark_email/models/tenants/webhook_list_deliveries_response.rb new file mode 100644 index 0000000..141836e --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_list_deliveries_response.rb @@ -0,0 +1,156 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#list_deliveries + class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [Array] + required :data, + -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data] } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute page + # Current page number + # + # @return [Integer] + required :page, Integer + + # @!attribute per_page + # Items per page + # + # @return [Integer] + required :per_page, Integer, api_name: :perPage + + # @!attribute total + # Total number of deliveries matching the filter + # + # @return [Integer] + required :total, Integer + + # @!attribute total_pages + # Total number of pages + # + # @return [Integer] + required :total_pages, Integer, api_name: :totalPages + + # @!method initialize(data:, meta:, page:, per_page:, total:, total_pages:) + # Paginated list of webhook delivery attempts + # + # @param data [Array] + # + # @param meta [ArkEmail::Models::APIMeta] + # + # @param page [Integer] Current page number + # + # @param per_page [Integer] Items per page + # + # @param total [Integer] Total number of deliveries matching the filter + # + # @param total_pages [Integer] Total number of pages + + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique delivery ID (UUID) + # + # @return [String] + required :id, String + + # @!attribute attempt + # Attempt number (1 for first attempt, increments with retries) + # + # @return [Integer] + required :attempt, Integer + + # @!attribute event + # Event type that triggered this delivery + # + # @return [Symbol, ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event] + required :event, enum: -> { ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event } + + # @!attribute status_code + # HTTP status code returned by the endpoint (null if connection failed) + # + # @return [Integer, nil] + required :status_code, Integer, api_name: :statusCode, nil?: true + + # @!attribute success + # Whether the delivery was successful (2xx response) + # + # @return [Boolean] + required :success, ArkEmail::Internal::Type::Boolean + + # @!attribute timestamp + # When this delivery attempt occurred + # + # @return [Time] + required :timestamp, Time + + # @!attribute url + # URL the webhook was delivered to + # + # @return [String] + required :url, String + + # @!attribute webhook_id + # ID of the webhook this delivery belongs to + # + # @return [String] + required :webhook_id, String, api_name: :webhookId + + # @!attribute will_retry + # Whether this delivery will be retried (true if failed and retries remaining) + # + # @return [Boolean] + required :will_retry, ArkEmail::Internal::Type::Boolean, api_name: :willRetry + + # @!method initialize(id:, attempt:, event:, status_code:, success:, timestamp:, url:, webhook_id:, will_retry:) + # Summary of a webhook delivery attempt + # + # @param id [String] Unique delivery ID (UUID) + # + # @param attempt [Integer] Attempt number (1 for first attempt, increments with retries) + # + # @param event [Symbol, ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event] Event type that triggered this delivery + # + # @param status_code [Integer, nil] HTTP status code returned by the endpoint (null if connection failed) + # + # @param success [Boolean] Whether the delivery was successful (2xx response) + # + # @param timestamp [Time] When this delivery attempt occurred + # + # @param url [String] URL the webhook was delivered to + # + # @param webhook_id [String] ID of the webhook this delivery belongs to + # + # @param will_retry [Boolean] Whether this delivery will be retried (true if failed and retries remaining) + + # Event type that triggered this delivery + # + # @see ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data#event + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_list_params.rb b/lib/ark_email/models/tenants/webhook_list_params.rb new file mode 100644 index 0000000..16453d3 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_list_params.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#list + class WebhookListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_list_response.rb b/lib/ark_email/models/tenants/webhook_list_response.rb new file mode 100644 index 0000000..77d5250 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_list_response.rb @@ -0,0 +1,81 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#list + class WebhookListResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::WebhookListResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::WebhookListResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::WebhookListResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::WebhookListResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute webhooks + # + # @return [Array] + required :webhooks, + -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook] } + + # @!method initialize(webhooks:) + # @param webhooks [Array] + + class Webhook < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Webhook ID + # + # @return [String] + required :id, String + + # @!attribute enabled + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # + # @return [Array] + required :events, ArkEmail::Internal::Type::ArrayOf[String] + + # @!attribute name + # + # @return [String] + required :name, String + + # @!attribute url + # + # @return [String] + required :url, String + + # @!method initialize(id:, enabled:, events:, name:, url:) + # @param id [String] Webhook ID + # + # @param enabled [Boolean] + # + # @param events [Array] + # + # @param name [String] + # + # @param url [String] + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_replay_delivery_params.rb b/lib/ark_email/models/tenants/webhook_replay_delivery_params.rb new file mode 100644 index 0000000..643bcb6 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_replay_delivery_params.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#replay_delivery + class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!attribute webhook_id + # + # @return [String] + required :webhook_id, String + + # @!method initialize(tenant_id:, webhook_id:, request_options: {}) + # @param tenant_id [String] + # @param webhook_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_replay_delivery_response.rb b/lib/ark_email/models/tenants/webhook_replay_delivery_response.rb new file mode 100644 index 0000000..11aba82 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_replay_delivery_response.rb @@ -0,0 +1,84 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#replay_delivery + class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Result of replaying a webhook delivery + # + # @param data [ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute duration + # Request duration in milliseconds + # + # @return [Integer] + required :duration, Integer + + # @!attribute new_delivery_id + # ID of the new delivery created by the replay + # + # @return [String] + required :new_delivery_id, String, api_name: :newDeliveryId + + # @!attribute original_delivery_id + # ID of the original delivery that was replayed + # + # @return [String] + required :original_delivery_id, String, api_name: :originalDeliveryId + + # @!attribute status_code + # HTTP status code from your endpoint + # + # @return [Integer, nil] + required :status_code, Integer, api_name: :statusCode, nil?: true + + # @!attribute success + # Whether the replay was successful (2xx response from endpoint) + # + # @return [Boolean] + required :success, ArkEmail::Internal::Type::Boolean + + # @!attribute timestamp + # When the replay was executed + # + # @return [Time] + required :timestamp, Time + + # @!method initialize(duration:, new_delivery_id:, original_delivery_id:, status_code:, success:, timestamp:) + # @param duration [Integer] Request duration in milliseconds + # + # @param new_delivery_id [String] ID of the new delivery created by the replay + # + # @param original_delivery_id [String] ID of the original delivery that was replayed + # + # @param status_code [Integer, nil] HTTP status code from your endpoint + # + # @param success [Boolean] Whether the replay was successful (2xx response from endpoint) + # + # @param timestamp [Time] When the replay was executed + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_retrieve_delivery_params.rb b/lib/ark_email/models/tenants/webhook_retrieve_delivery_params.rb new file mode 100644 index 0000000..e7e5694 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_retrieve_delivery_params.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#retrieve_delivery + class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!attribute webhook_id + # + # @return [String] + required :webhook_id, String + + # @!method initialize(tenant_id:, webhook_id:, request_options: {}) + # @param tenant_id [String] + # @param webhook_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_retrieve_delivery_response.rb b/lib/ark_email/models/tenants/webhook_retrieve_delivery_response.rb new file mode 100644 index 0000000..b58c647 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_retrieve_delivery_response.rb @@ -0,0 +1,200 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#retrieve_delivery + class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # Full details of a webhook delivery including request and response + # + # @return [ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Detailed information about a webhook delivery attempt + # + # @param data [ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data] Full details of a webhook delivery including request and response + # + # @param meta [ArkEmail::Models::APIMeta] + # + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique delivery ID (UUID) + # + # @return [String] + required :id, String + + # @!attribute attempt + # Attempt number for this delivery + # + # @return [Integer] + required :attempt, Integer + + # @!attribute event + # Event type that triggered this delivery + # + # @return [Symbol, ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event] + required :event, enum: -> { ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event } + + # @!attribute request + # The request that was sent to your endpoint + # + # @return [ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request] + required :request, -> { ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request } + + # @!attribute response + # The response received from your endpoint + # + # @return [ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response] + required :response, -> { ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response } + + # @!attribute status_code + # HTTP status code returned by the endpoint + # + # @return [Integer, nil] + required :status_code, Integer, api_name: :statusCode, nil?: true + + # @!attribute success + # Whether the delivery was successful (2xx response) + # + # @return [Boolean] + required :success, ArkEmail::Internal::Type::Boolean + + # @!attribute timestamp + # When this delivery attempt occurred + # + # @return [Time] + required :timestamp, Time + + # @!attribute url + # URL the webhook was delivered to + # + # @return [String] + required :url, String + + # @!attribute webhook_id + # ID of the webhook this delivery belongs to + # + # @return [String] + required :webhook_id, String, api_name: :webhookId + + # @!attribute webhook_name + # Name of the webhook for easy identification + # + # @return [String] + required :webhook_name, String, api_name: :webhookName + + # @!attribute will_retry + # Whether this delivery will be retried + # + # @return [Boolean] + required :will_retry, ArkEmail::Internal::Type::Boolean, api_name: :willRetry + + # @!method initialize(id:, attempt:, event:, request:, response:, status_code:, success:, timestamp:, url:, webhook_id:, webhook_name:, will_retry:) + # Full details of a webhook delivery including request and response + # + # @param id [String] Unique delivery ID (UUID) + # + # @param attempt [Integer] Attempt number for this delivery + # + # @param event [Symbol, ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event] Event type that triggered this delivery + # + # @param request [ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request] The request that was sent to your endpoint + # + # @param response [ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response] The response received from your endpoint + # + # @param status_code [Integer, nil] HTTP status code returned by the endpoint + # + # @param success [Boolean] Whether the delivery was successful (2xx response) + # + # @param timestamp [Time] When this delivery attempt occurred + # + # @param url [String] URL the webhook was delivered to + # + # @param webhook_id [String] ID of the webhook this delivery belongs to + # + # @param webhook_name [String] Name of the webhook for easy identification + # + # @param will_retry [Boolean] Whether this delivery will be retried + + # Event type that triggered this delivery + # + # @see ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data#event + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + + # @see ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data#request + class Request < ArkEmail::Internal::Type::BaseModel + # @!attribute headers + # HTTP headers that were sent with the request + # + # @return [Hash{Symbol=>String}] + required :headers, ArkEmail::Internal::Type::HashOf[String] + + # @!attribute payload + # The complete webhook payload that was sent + # + # @return [Hash{Symbol=>Object}] + required :payload, ArkEmail::Internal::Type::HashOf[ArkEmail::Internal::Type::Unknown] + + # @!method initialize(headers:, payload:) + # The request that was sent to your endpoint + # + # @param headers [Hash{Symbol=>String}] HTTP headers that were sent with the request + # + # @param payload [Hash{Symbol=>Object}] The complete webhook payload that was sent + end + + # @see ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data#response + class Response < ArkEmail::Internal::Type::BaseModel + # @!attribute status_code + # HTTP status code from your endpoint + # + # @return [Integer, nil] + required :status_code, Integer, api_name: :statusCode, nil?: true + + # @!attribute body + # Response body from your endpoint (may be truncated) + # + # @return [String, nil] + optional :body, String, nil?: true + + # @!method initialize(status_code:, body: nil) + # The response received from your endpoint + # + # @param status_code [Integer, nil] HTTP status code from your endpoint + # + # @param body [String, nil] Response body from your endpoint (may be truncated) + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_retrieve_params.rb b/lib/ark_email/models/tenants/webhook_retrieve_params.rb new file mode 100644 index 0000000..c7c8743 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_retrieve_params.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#retrieve + class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!method initialize(tenant_id:, request_options: {}) + # @param tenant_id [String] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_retrieve_response.rb b/lib/ark_email/models/tenants/webhook_retrieve_response.rb new file mode 100644 index 0000000..afcfb9e --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_retrieve_response.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#retrieve + class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::WebhookRetrieveResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Webhook ID + # + # @return [String] + required :id, String + + # @!attribute all_events + # Whether subscribed to all events + # + # @return [Boolean] + required :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute enabled + # Whether the webhook is active + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # Subscribed events + # + # @return [Array] + required :events, + -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event] } + + # @!attribute name + # Webhook name for identification + # + # @return [String] + required :name, String + + # @!attribute url + # Webhook endpoint URL + # + # @return [String] + required :url, String + + # @!attribute uuid + # + # @return [String] + required :uuid, String + + # @!method initialize(id:, all_events:, created_at:, enabled:, events:, name:, url:, uuid:) + # @param id [String] Webhook ID + # + # @param all_events [Boolean] Whether subscribed to all events + # + # @param created_at [Time] + # + # @param enabled [Boolean] Whether the webhook is active + # + # @param events [Array] Subscribed events + # + # @param name [String] Webhook name for identification + # + # @param url [String] Webhook endpoint URL + # + # @param uuid [String] + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_test_params.rb b/lib/ark_email/models/tenants/webhook_test_params.rb new file mode 100644 index 0000000..d0906d3 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_test_params.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#test_ + class WebhookTestParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!attribute event + # Event type to simulate + # + # @return [Symbol, ArkEmail::Models::Tenants::WebhookTestParams::Event] + required :event, enum: -> { ArkEmail::Tenants::WebhookTestParams::Event } + + # @!method initialize(tenant_id:, event:, request_options: {}) + # @param tenant_id [String] + # + # @param event [Symbol, ArkEmail::Models::Tenants::WebhookTestParams::Event] Event type to simulate + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Event type to simulate + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_test_response.rb b/lib/ark_email/models/tenants/webhook_test_response.rb new file mode 100644 index 0000000..edbcc70 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_test_response.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#test_ + class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::WebhookTestResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::WebhookTestResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::WebhookTestResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::WebhookTestResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute duration + # Request duration in milliseconds + # + # @return [Integer] + required :duration, Integer + + # @!attribute event + # Event type that was tested + # + # @return [String] + required :event, String + + # @!attribute status_code + # HTTP status code from the webhook endpoint + # + # @return [Integer, nil] + required :status_code, Integer, api_name: :statusCode, nil?: true + + # @!attribute success + # Whether the webhook endpoint responded with a 2xx status + # + # @return [Boolean] + required :success, ArkEmail::Internal::Type::Boolean + + # @!attribute body + # Response body from the webhook endpoint (truncated if too long) + # + # @return [String, nil] + optional :body, String, nil?: true + + # @!attribute error + # Error message if the request failed + # + # @return [String, nil] + optional :error, String, nil?: true + + # @!method initialize(duration:, event:, status_code:, success:, body: nil, error: nil) + # @param duration [Integer] Request duration in milliseconds + # + # @param event [String] Event type that was tested + # + # @param status_code [Integer, nil] HTTP status code from the webhook endpoint + # + # @param success [Boolean] Whether the webhook endpoint responded with a 2xx status + # + # @param body [String, nil] Response body from the webhook endpoint (truncated if too long) + # + # @param error [String, nil] Error message if the request failed + end + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_update_params.rb b/lib/ark_email/models/tenants/webhook_update_params.rb new file mode 100644 index 0000000..f8baf3e --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_update_params.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#update + class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute tenant_id + # + # @return [String] + required :tenant_id, String + + # @!attribute all_events + # + # @return [Boolean, nil] + optional :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents, nil?: true + + # @!attribute enabled + # + # @return [Boolean, nil] + optional :enabled, ArkEmail::Internal::Type::Boolean, nil?: true + + # @!attribute events + # + # @return [Array, nil] + optional :events, ArkEmail::Internal::Type::ArrayOf[String], nil?: true + + # @!attribute name + # + # @return [String, nil] + optional :name, String, nil?: true + + # @!attribute url + # + # @return [String, nil] + optional :url, String, nil?: true + + # @!method initialize(tenant_id:, all_events: nil, enabled: nil, events: nil, name: nil, url: nil, request_options: {}) + # @param tenant_id [String] + # @param all_events [Boolean, nil] + # @param enabled [Boolean, nil] + # @param events [Array, nil] + # @param name [String, nil] + # @param url [String, nil] + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/tenants/webhook_update_response.rb b/lib/ark_email/models/tenants/webhook_update_response.rb new file mode 100644 index 0000000..39541e5 --- /dev/null +++ b/lib/ark_email/models/tenants/webhook_update_response.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Tenants + # @see ArkEmail::Resources::Tenants::Webhooks#update + class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Tenants::WebhookUpdateResponse::Data] + required :data, -> { ArkEmail::Models::Tenants::WebhookUpdateResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Tenants::WebhookUpdateResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Tenants::WebhookUpdateResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Webhook ID + # + # @return [String] + required :id, String + + # @!attribute all_events + # Whether subscribed to all events + # + # @return [Boolean] + required :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute enabled + # Whether the webhook is active + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # Subscribed events + # + # @return [Array] + required :events, + -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event] } + + # @!attribute name + # Webhook name for identification + # + # @return [String] + required :name, String + + # @!attribute url + # Webhook endpoint URL + # + # @return [String] + required :url, String + + # @!attribute uuid + # + # @return [String] + required :uuid, String + + # @!method initialize(id:, all_events:, created_at:, enabled:, events:, name:, url:, uuid:) + # @param id [String] Webhook ID + # + # @param all_events [Boolean] Whether subscribed to all events + # + # @param created_at [Time] + # + # @param enabled [Boolean] Whether the webhook is active + # + # @param events [Array] Subscribed events + # + # @param name [String] Webhook name for identification + # + # @param url [String] Webhook endpoint URL + # + # @param uuid [String] + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/models/track_domain.rb b/lib/ark_email/models/track_domain.rb deleted file mode 100644 index fe23691..0000000 --- a/lib/ark_email/models/track_domain.rb +++ /dev/null @@ -1,176 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - class TrackDomain < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Track domain ID - # - # @return [String] - required :id, String - - # @!attribute created_at - # When the track domain was created - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute dns_ok - # Whether the tracking CNAME record is correctly configured. Must be true to use - # tracking features. - # - # @return [Boolean] - required :dns_ok, ArkEmail::Internal::Type::Boolean, api_name: :dnsOk - - # @!attribute domain_id - # ID of the parent sending domain - # - # @return [String] - required :domain_id, String, api_name: :domainId - - # @!attribute full_name - # Full domain name - # - # @return [String] - required :full_name, String, api_name: :fullName - - # @!attribute name - # Subdomain name - # - # @return [String] - required :name, String - - # @!attribute ssl_enabled - # Whether SSL is enabled for tracking URLs - # - # @return [Boolean] - required :ssl_enabled, ArkEmail::Internal::Type::Boolean, api_name: :sslEnabled - - # @!attribute track_clicks - # Whether click tracking is enabled - # - # @return [Boolean] - required :track_clicks, ArkEmail::Internal::Type::Boolean, api_name: :trackClicks - - # @!attribute track_opens - # Whether open tracking is enabled - # - # @return [Boolean] - required :track_opens, ArkEmail::Internal::Type::Boolean, api_name: :trackOpens - - # @!attribute dns_checked_at - # When DNS was last checked - # - # @return [Time, nil] - optional :dns_checked_at, Time, api_name: :dnsCheckedAt, nil?: true - - # @!attribute dns_error - # DNS error message if verification failed - # - # @return [String, nil] - optional :dns_error, String, api_name: :dnsError, nil?: true - - # @!attribute dns_record - # Required DNS record configuration - # - # @return [ArkEmail::Models::TrackDomain::DNSRecord, nil] - optional :dns_record, -> { ArkEmail::TrackDomain::DNSRecord }, api_name: :dnsRecord, nil?: true - - # @!attribute dns_status - # Current DNS verification status - # - # @return [Symbol, ArkEmail::Models::TrackDomain::DNSStatus, nil] - optional :dns_status, enum: -> { ArkEmail::TrackDomain::DNSStatus }, api_name: :dnsStatus, nil?: true - - # @!attribute excluded_click_domains - # Domains excluded from click tracking - # - # @return [String, nil] - optional :excluded_click_domains, String, api_name: :excludedClickDomains, nil?: true - - # @!attribute updated_at - # When the track domain was last updated - # - # @return [Time, nil] - optional :updated_at, Time, api_name: :updatedAt, nil?: true - - # @!method initialize(id:, created_at:, dns_ok:, domain_id:, full_name:, name:, ssl_enabled:, track_clicks:, track_opens:, dns_checked_at: nil, dns_error: nil, dns_record: nil, dns_status: nil, excluded_click_domains: nil, updated_at: nil) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::TrackDomain} for more details. - # - # @param id [String] Track domain ID - # - # @param created_at [Time] When the track domain was created - # - # @param dns_ok [Boolean] Whether the tracking CNAME record is correctly configured. Must be true to use t - # - # @param domain_id [String] ID of the parent sending domain - # - # @param full_name [String] Full domain name - # - # @param name [String] Subdomain name - # - # @param ssl_enabled [Boolean] Whether SSL is enabled for tracking URLs - # - # @param track_clicks [Boolean] Whether click tracking is enabled - # - # @param track_opens [Boolean] Whether open tracking is enabled - # - # @param dns_checked_at [Time, nil] When DNS was last checked - # - # @param dns_error [String, nil] DNS error message if verification failed - # - # @param dns_record [ArkEmail::Models::TrackDomain::DNSRecord, nil] Required DNS record configuration - # - # @param dns_status [Symbol, ArkEmail::Models::TrackDomain::DNSStatus, nil] Current DNS verification status - # - # @param excluded_click_domains [String, nil] Domains excluded from click tracking - # - # @param updated_at [Time, nil] When the track domain was last updated - - # @see ArkEmail::Models::TrackDomain#dns_record - class DNSRecord < ArkEmail::Internal::Type::BaseModel - # @!attribute name - # DNS record name - # - # @return [String, nil] - optional :name, String - - # @!attribute type - # DNS record type - # - # @return [String, nil] - optional :type, String - - # @!attribute value - # DNS record value (target) - # - # @return [String, nil] - optional :value, String - - # @!method initialize(name: nil, type: nil, value: nil) - # Required DNS record configuration - # - # @param name [String] DNS record name - # - # @param type [String] DNS record type - # - # @param value [String] DNS record value (target) - end - - # Current DNS verification status - # - # @see ArkEmail::Models::TrackDomain#dns_status - module DNSStatus - extend ArkEmail::Internal::Type::Enum - - OK = :ok - MISSING = :missing - INVALID = :invalid - - # @!method self.values - # @return [Array] - end - end - end -end diff --git a/lib/ark_email/models/tracking_create_params.rb b/lib/ark_email/models/tracking_create_params.rb deleted file mode 100644 index e245547..0000000 --- a/lib/ark_email/models/tracking_create_params.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#create - class TrackingCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute domain_id - # ID of the sending domain to attach this track domain to - # - # @return [Integer] - required :domain_id, Integer, api_name: :domainId - - # @!attribute name - # Subdomain name (e.g., 'track' for track.yourdomain.com) - # - # @return [String] - required :name, String - - # @!attribute ssl_enabled - # Enable SSL for tracking URLs (accepts null, defaults to true) - # - # @return [Boolean, nil] - optional :ssl_enabled, ArkEmail::Internal::Type::Boolean, api_name: :sslEnabled, nil?: true - - # @!attribute track_clicks - # Enable click tracking (accepts null, defaults to true) - # - # @return [Boolean, nil] - optional :track_clicks, ArkEmail::Internal::Type::Boolean, api_name: :trackClicks, nil?: true - - # @!attribute track_opens - # Enable open tracking (tracking pixel, accepts null, defaults to true) - # - # @return [Boolean, nil] - optional :track_opens, ArkEmail::Internal::Type::Boolean, api_name: :trackOpens, nil?: true - - # @!method initialize(domain_id:, name:, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {}) - # @param domain_id [Integer] ID of the sending domain to attach this track domain to - # - # @param name [String] Subdomain name (e.g., 'track' for track.yourdomain.com) - # - # @param ssl_enabled [Boolean, nil] Enable SSL for tracking URLs (accepts null, defaults to true) - # - # @param track_clicks [Boolean, nil] Enable click tracking (accepts null, defaults to true) - # - # @param track_opens [Boolean, nil] Enable open tracking (tracking pixel, accepts null, defaults to true) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/tracking_create_response.rb b/lib/ark_email/models/tracking_create_response.rb deleted file mode 100644 index 9a282e8..0000000 --- a/lib/ark_email/models/tracking_create_response.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#create - class TrackingCreateResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::TrackDomain] - required :data, -> { ArkEmail::TrackDomain } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::TrackDomain] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - end - end -end diff --git a/lib/ark_email/models/tracking_delete_params.rb b/lib/ark_email/models/tracking_delete_params.rb deleted file mode 100644 index 485917a..0000000 --- a/lib/ark_email/models/tracking_delete_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#delete - class TrackingDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/tracking_delete_response.rb b/lib/ark_email/models/tracking_delete_response.rb deleted file mode 100644 index 83b64a9..0000000 --- a/lib/ark_email/models/tracking_delete_response.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#delete - class TrackingDeleteResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::TrackingDeleteResponse::Data] - required :data, -> { ArkEmail::Models::TrackingDeleteResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::TrackingDeleteResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::TrackingDeleteResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute message - # - # @return [String] - required :message, String - - # @!method initialize(message:) - # @param message [String] - end - end - end -end diff --git a/lib/ark_email/models/tracking_list_params.rb b/lib/ark_email/models/tracking_list_params.rb deleted file mode 100644 index 43d1a31..0000000 --- a/lib/ark_email/models/tracking_list_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#list - class TrackingListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/tracking_list_response.rb b/lib/ark_email/models/tracking_list_response.rb deleted file mode 100644 index 68b683d..0000000 --- a/lib/ark_email/models/tracking_list_response.rb +++ /dev/null @@ -1,41 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#list - class TrackingListResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::TrackingListResponse::Data] - required :data, -> { ArkEmail::Models::TrackingListResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::TrackingListResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::TrackingListResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute track_domains - # - # @return [Array] - required :track_domains, - -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::TrackDomain] }, - api_name: :trackDomains - - # @!method initialize(track_domains:) - # @param track_domains [Array] - end - end - end -end diff --git a/lib/ark_email/models/tracking_retrieve_params.rb b/lib/ark_email/models/tracking_retrieve_params.rb deleted file mode 100644 index 2b953b2..0000000 --- a/lib/ark_email/models/tracking_retrieve_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#retrieve - class TrackingRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/tracking_retrieve_response.rb b/lib/ark_email/models/tracking_retrieve_response.rb deleted file mode 100644 index 533a40a..0000000 --- a/lib/ark_email/models/tracking_retrieve_response.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#retrieve - class TrackingRetrieveResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::TrackDomain] - required :data, -> { ArkEmail::TrackDomain } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::TrackDomain] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - end - end -end diff --git a/lib/ark_email/models/tracking_update_params.rb b/lib/ark_email/models/tracking_update_params.rb deleted file mode 100644 index e0c17ea..0000000 --- a/lib/ark_email/models/tracking_update_params.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#update - class TrackingUpdateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute excluded_click_domains - # Comma-separated list of domains to exclude from click tracking (accepts null) - # - # @return [String, nil] - optional :excluded_click_domains, String, api_name: :excludedClickDomains, nil?: true - - # @!attribute ssl_enabled - # Enable or disable SSL for tracking URLs (accepts null) - # - # @return [Boolean, nil] - optional :ssl_enabled, ArkEmail::Internal::Type::Boolean, api_name: :sslEnabled, nil?: true - - # @!attribute track_clicks - # Enable or disable click tracking (accepts null) - # - # @return [Boolean, nil] - optional :track_clicks, ArkEmail::Internal::Type::Boolean, api_name: :trackClicks, nil?: true - - # @!attribute track_opens - # Enable or disable open tracking (accepts null) - # - # @return [Boolean, nil] - optional :track_opens, ArkEmail::Internal::Type::Boolean, api_name: :trackOpens, nil?: true - - # @!method initialize(excluded_click_domains: nil, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {}) - # @param excluded_click_domains [String, nil] Comma-separated list of domains to exclude from click tracking (accepts null) - # - # @param ssl_enabled [Boolean, nil] Enable or disable SSL for tracking URLs (accepts null) - # - # @param track_clicks [Boolean, nil] Enable or disable click tracking (accepts null) - # - # @param track_opens [Boolean, nil] Enable or disable open tracking (accepts null) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/tracking_update_response.rb b/lib/ark_email/models/tracking_update_response.rb deleted file mode 100644 index 3f181fd..0000000 --- a/lib/ark_email/models/tracking_update_response.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#update - class TrackingUpdateResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::TrackDomain] - required :data, -> { ArkEmail::TrackDomain } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::TrackDomain] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - end - end -end diff --git a/lib/ark_email/models/tracking_verify_params.rb b/lib/ark_email/models/tracking_verify_params.rb deleted file mode 100644 index 8af91bb..0000000 --- a/lib/ark_email/models/tracking_verify_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#verify - class TrackingVerifyParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/tracking_verify_response.rb b/lib/ark_email/models/tracking_verify_response.rb deleted file mode 100644 index 584b33c..0000000 --- a/lib/ark_email/models/tracking_verify_response.rb +++ /dev/null @@ -1,133 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Tracking#verify - class TrackingVerifyResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::TrackingVerifyResponse::Data] - required :data, -> { ArkEmail::Models::TrackingVerifyResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::TrackingVerifyResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::TrackingVerifyResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Track domain ID - # - # @return [String] - required :id, String - - # @!attribute dns_ok - # Whether DNS is correctly configured - # - # @return [Boolean] - required :dns_ok, ArkEmail::Internal::Type::Boolean, api_name: :dnsOk - - # @!attribute dns_status - # Current DNS verification status - # - # @return [Symbol, ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus, nil] - required :dns_status, - enum: -> { ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus }, - api_name: :dnsStatus, - nil?: true - - # @!attribute full_name - # Full domain name - # - # @return [String] - required :full_name, String, api_name: :fullName - - # @!attribute dns_checked_at - # When DNS was last checked - # - # @return [Time, nil] - optional :dns_checked_at, Time, api_name: :dnsCheckedAt, nil?: true - - # @!attribute dns_error - # DNS error message if verification failed - # - # @return [String, nil] - optional :dns_error, String, api_name: :dnsError, nil?: true - - # @!attribute dns_record - # Required DNS record configuration - # - # @return [ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord, nil] - optional :dns_record, - -> { ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord }, - api_name: :dnsRecord, - nil?: true - - # @!method initialize(id:, dns_ok:, dns_status:, full_name:, dns_checked_at: nil, dns_error: nil, dns_record: nil) - # @param id [String] Track domain ID - # - # @param dns_ok [Boolean] Whether DNS is correctly configured - # - # @param dns_status [Symbol, ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus, nil] Current DNS verification status - # - # @param full_name [String] Full domain name - # - # @param dns_checked_at [Time, nil] When DNS was last checked - # - # @param dns_error [String, nil] DNS error message if verification failed - # - # @param dns_record [ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord, nil] Required DNS record configuration - - # Current DNS verification status - # - # @see ArkEmail::Models::TrackingVerifyResponse::Data#dns_status - module DNSStatus - extend ArkEmail::Internal::Type::Enum - - OK = :ok - MISSING = :missing - INVALID = :invalid - - # @!method self.values - # @return [Array] - end - - # @see ArkEmail::Models::TrackingVerifyResponse::Data#dns_record - class DNSRecord < ArkEmail::Internal::Type::BaseModel - # @!attribute name - # - # @return [String, nil] - optional :name, String - - # @!attribute type - # - # @return [String, nil] - optional :type, String - - # @!attribute value - # - # @return [String, nil] - optional :value, String - - # @!method initialize(name: nil, type: nil, value: nil) - # Required DNS record configuration - # - # @param name [String] - # @param type [String] - # @param value [String] - end - end - end - end -end diff --git a/lib/ark_email/models/usage_export_params.rb b/lib/ark_email/models/usage_export_params.rb index f667954..c708c66 100644 --- a/lib/ark_email/models/usage_export_params.rb +++ b/lib/ark_email/models/usage_export_params.rb @@ -20,7 +20,13 @@ class UsageExportParams < ArkEmail::Internal::Type::BaseModel optional :min_sent, Integer # @!attribute period - # Time period for export. Defaults to current month. + # Time period for export. + # + # **Shortcuts:** `this_month`, `last_month`, `last_30_days`, etc. + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` # # @return [String, nil] optional :period, String @@ -32,21 +38,24 @@ class UsageExportParams < ArkEmail::Internal::Type::BaseModel optional :status, enum: -> { ArkEmail::UsageExportParams::Status } # @!attribute timezone - # Timezone for period calculations (IANA format). Defaults to UTC. + # Timezone for period calculations (IANA format) # # @return [String, nil] optional :timezone, String # @!method initialize(format_: nil, min_sent: nil, period: nil, status: nil, timezone: nil, request_options: {}) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::UsageExportParams} for more details. + # # @param format_ [Symbol, ArkEmail::Models::UsageExportParams::Format] Export format # # @param min_sent [Integer] Only include tenants with at least this many emails sent # - # @param period [String] Time period for export. Defaults to current month. + # @param period [String] Time period for export. # # @param status [Symbol, ArkEmail::Models::UsageExportParams::Status] Filter by tenant status # - # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # @param timezone [String] Timezone for period calculations (IANA format) # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] @@ -56,7 +65,6 @@ module Format CSV = :csv JSONL = :jsonl - JSON = :json # @!method self.values # @return [Array] diff --git a/lib/ark_email/models/usage_list_by_tenant_params.rb b/lib/ark_email/models/usage_list_tenants_params.rb similarity index 56% rename from lib/ark_email/models/usage_list_by_tenant_params.rb rename to lib/ark_email/models/usage_list_tenants_params.rb index e25c248..d371fda 100644 --- a/lib/ark_email/models/usage_list_by_tenant_params.rb +++ b/lib/ark_email/models/usage_list_tenants_params.rb @@ -2,46 +2,53 @@ module ArkEmail module Models - # @see ArkEmail::Resources::Usage#list_by_tenant - class UsageListByTenantParams < ArkEmail::Internal::Type::BaseModel + # @see ArkEmail::Resources::Usage#list_tenants + class UsageListTenantsParams < ArkEmail::Internal::Type::BaseModel extend ArkEmail::Internal::Type::RequestParameters::Converter include ArkEmail::Internal::Type::RequestParameters - # @!attribute limit - # Maximum number of tenants to return (1-100) - # - # @return [Integer, nil] - optional :limit, Integer - # @!attribute min_sent # Only include tenants with at least this many emails sent # # @return [Integer, nil] optional :min_sent, Integer - # @!attribute offset - # Number of tenants to skip for pagination + # @!attribute page + # Page number (1-indexed) # # @return [Integer, nil] - optional :offset, Integer + optional :page, Integer # @!attribute period # Time period for usage data. Defaults to current month. # + # **Shortcuts:** `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` + # # @return [String, nil] optional :period, String + # @!attribute per_page + # Results per page (max 100) + # + # @return [Integer, nil] + optional :per_page, Integer + # @!attribute sort # Sort order for results. Prefix with `-` for descending order. # - # @return [Symbol, ArkEmail::Models::UsageListByTenantParams::Sort, nil] - optional :sort, enum: -> { ArkEmail::UsageListByTenantParams::Sort } + # @return [Symbol, ArkEmail::Models::UsageListTenantsParams::Sort, nil] + optional :sort, enum: -> { ArkEmail::UsageListTenantsParams::Sort } # @!attribute status # Filter by tenant status # - # @return [Symbol, ArkEmail::Models::UsageListByTenantParams::Status, nil] - optional :status, enum: -> { ArkEmail::UsageListByTenantParams::Status } + # @return [Symbol, ArkEmail::Models::UsageListTenantsParams::Status, nil] + optional :status, enum: -> { ArkEmail::UsageListTenantsParams::Status } # @!attribute timezone # Timezone for period calculations (IANA format). Defaults to UTC. @@ -49,21 +56,21 @@ class UsageListByTenantParams < ArkEmail::Internal::Type::BaseModel # @return [String, nil] optional :timezone, String - # @!method initialize(limit: nil, min_sent: nil, offset: nil, period: nil, sort: nil, status: nil, timezone: nil, request_options: {}) + # @!method initialize(min_sent: nil, page: nil, period: nil, per_page: nil, sort: nil, status: nil, timezone: nil, request_options: {}) # Some parameter documentations has been truncated, see - # {ArkEmail::Models::UsageListByTenantParams} for more details. - # - # @param limit [Integer] Maximum number of tenants to return (1-100) + # {ArkEmail::Models::UsageListTenantsParams} for more details. # # @param min_sent [Integer] Only include tenants with at least this many emails sent # - # @param offset [Integer] Number of tenants to skip for pagination + # @param page [Integer] Page number (1-indexed) # # @param period [String] Time period for usage data. Defaults to current month. # - # @param sort [Symbol, ArkEmail::Models::UsageListByTenantParams::Sort] Sort order for results. Prefix with `-` for descending order. + # @param per_page [Integer] Results per page (max 100) + # + # @param sort [Symbol, ArkEmail::Models::UsageListTenantsParams::Sort] Sort order for results. Prefix with `-` for descending order. # - # @param status [Symbol, ArkEmail::Models::UsageListByTenantParams::Status] Filter by tenant status + # @param status [Symbol, ArkEmail::Models::UsageListTenantsParams::Status] Filter by tenant status # # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. # @@ -79,8 +86,10 @@ module Sort MINUS_DELIVERED = :"-delivered" BOUNCE_RATE = :bounce_rate MINUS_BOUNCE_RATE = :"-bounce_rate" - NAME = :name - MINUS_NAME = :"-name" + DELIVERY_RATE = :delivery_rate + MINUS_DELIVERY_RATE = :"-delivery_rate" + TENANT_NAME = :tenant_name + MINUS_TENANT_NAME = :"-tenant_name" # @!method self.values # @return [Array] diff --git a/lib/ark_email/models/usage_retrieve_params.rb b/lib/ark_email/models/usage_retrieve_params.rb index bb4aef9..45b228d 100644 --- a/lib/ark_email/models/usage_retrieve_params.rb +++ b/lib/ark_email/models/usage_retrieve_params.rb @@ -7,7 +7,33 @@ class UsageRetrieveParams < ArkEmail::Internal::Type::BaseModel extend ArkEmail::Internal::Type::RequestParameters::Converter include ArkEmail::Internal::Type::RequestParameters - # @!method initialize(request_options: {}) + # @!attribute period + # Time period for usage data. + # + # **Shortcuts:** `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` + # + # @return [String, nil] + optional :period, String + + # @!attribute timezone + # Timezone for period calculations (IANA format) + # + # @return [String, nil] + optional :timezone, String + + # @!method initialize(period: nil, timezone: nil, request_options: {}) + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::UsageRetrieveParams} for more details. + # + # @param period [String] Time period for usage data. + # + # @param timezone [String] Timezone for period calculations (IANA format) + # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] end end diff --git a/lib/ark_email/models/usage_retrieve_response.rb b/lib/ark_email/models/usage_retrieve_response.rb deleted file mode 100644 index e0b1650..0000000 --- a/lib/ark_email/models/usage_retrieve_response.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Usage#retrieve - class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # Current usage and limit information - # - # @return [ArkEmail::Models::LimitsData] - required :data, -> { ArkEmail::LimitsData } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # Account usage and limits response - # - # @param data [ArkEmail::Models::LimitsData] Current usage and limit information - # - # @param meta [ArkEmail::Models::APIMeta] - # - # @param success [Boolean, true] - end - end -end diff --git a/lib/ark_email/models/usage_retrieve_tenant_timeseries_params.rb b/lib/ark_email/models/usage_retrieve_tenant_timeseries_params.rb deleted file mode 100644 index 27048ed..0000000 --- a/lib/ark_email/models/usage_retrieve_tenant_timeseries_params.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Usage#retrieve_tenant_timeseries - class UsageRetrieveTenantTimeseriesParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute granularity - # Time bucket size for data points - # - # @return [Symbol, ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::Granularity, nil] - optional :granularity, enum: -> { ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity } - - # @!attribute period - # Time period for timeseries data. Defaults to current month. - # - # @return [String, nil] - optional :period, String - - # @!attribute timezone - # Timezone for period calculations (IANA format). Defaults to UTC. - # - # @return [String, nil] - optional :timezone, String - - # @!method initialize(granularity: nil, period: nil, timezone: nil, request_options: {}) - # @param granularity [Symbol, ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::Granularity] Time bucket size for data points - # - # @param period [String] Time period for timeseries data. Defaults to current month. - # - # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - - # Time bucket size for data points - module Granularity - extend ArkEmail::Internal::Type::Enum - - HOUR = :hour - DAY = :day - WEEK = :week - MONTH = :month - - # @!method self.values - # @return [Array] - end - end - end -end diff --git a/lib/ark_email/models/usage_retrieve_tenant_timeseries_response.rb b/lib/ark_email/models/usage_retrieve_tenant_timeseries_response.rb deleted file mode 100644 index 44c1965..0000000 --- a/lib/ark_email/models/usage_retrieve_tenant_timeseries_response.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Usage#retrieve_tenant_timeseries - class UsageRetrieveTenantTimeseriesResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # Timeseries usage statistics - # - # @return [ArkEmail::Models::TenantUsageTimeseries] - required :data, -> { ArkEmail::TenantUsageTimeseries } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # Timeseries usage data for a tenant - # - # @param data [ArkEmail::Models::TenantUsageTimeseries] Timeseries usage statistics - # - # @param meta [ArkEmail::Models::APIMeta] - # - # @param success [Boolean, true] - end - end -end diff --git a/lib/ark_email/models/usage_retrieve_tenant_usage_params.rb b/lib/ark_email/models/usage_retrieve_tenant_usage_params.rb deleted file mode 100644 index 6eb0e90..0000000 --- a/lib/ark_email/models/usage_retrieve_tenant_usage_params.rb +++ /dev/null @@ -1,41 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Usage#retrieve_tenant_usage - class UsageRetrieveTenantUsageParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute period - # Time period for usage data. Defaults to current month. - # - # **Formats:** - # - # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, - # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` - # - Month: `2024-01` - # - Range: `2024-01-01..2024-01-31` - # - Day: `2024-01-15` - # - # @return [String, nil] - optional :period, String - - # @!attribute timezone - # Timezone for period calculations (IANA format). Defaults to UTC. - # - # @return [String, nil] - optional :timezone, String - - # @!method initialize(period: nil, timezone: nil, request_options: {}) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::UsageRetrieveTenantUsageParams} for more details. - # - # @param period [String] Time period for usage data. Defaults to current month. - # - # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/usage_retrieve_tenant_usage_response.rb b/lib/ark_email/models/usage_retrieve_tenant_usage_response.rb deleted file mode 100644 index 1c32146..0000000 --- a/lib/ark_email/models/usage_retrieve_tenant_usage_response.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Usage#retrieve_tenant_usage - class UsageRetrieveTenantUsageResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # Tenant usage statistics - # - # @return [ArkEmail::Models::TenantUsage] - required :data, -> { ArkEmail::TenantUsage } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # Usage statistics for a single tenant - # - # @param data [ArkEmail::Models::TenantUsage] Tenant usage statistics - # - # @param meta [ArkEmail::Models::APIMeta] - # - # @param success [Boolean, true] - end - end -end diff --git a/lib/ark_email/models/webhook_create_params.rb b/lib/ark_email/models/webhook_create_params.rb deleted file mode 100644 index 17ce0c8..0000000 --- a/lib/ark_email/models/webhook_create_params.rb +++ /dev/null @@ -1,84 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#create - class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute name - # Webhook name for identification - # - # @return [String] - required :name, String - - # @!attribute url - # HTTPS endpoint URL - # - # @return [String] - required :url, String - - # @!attribute all_events - # Subscribe to all events (ignores events array, accepts null) - # - # @return [Boolean, nil] - optional :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents, nil?: true - - # @!attribute enabled - # Whether the webhook is enabled (accepts null) - # - # @return [Boolean, nil] - optional :enabled, ArkEmail::Internal::Type::Boolean, nil?: true - - # @!attribute events - # Events to subscribe to (accepts null): - # - # - `MessageSent` - Email successfully delivered to recipient's server - # - `MessageDelayed` - Temporary delivery failure, will retry - # - `MessageDeliveryFailed` - Permanent delivery failure - # - `MessageHeld` - Email held for manual review - # - `MessageBounced` - Email bounced back - # - `MessageLinkClicked` - Recipient clicked a tracked link - # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded) - # - `DomainDNSError` - DNS configuration issue detected - # - # @return [Array, nil] - optional :events, - -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::WebhookCreateParams::Event] }, - nil?: true - - # @!method initialize(name:, url:, all_events: nil, enabled: nil, events: nil, request_options: {}) - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::WebhookCreateParams} for more details. - # - # @param name [String] Webhook name for identification - # - # @param url [String] HTTPS endpoint URL - # - # @param all_events [Boolean, nil] Subscribe to all events (ignores events array, accepts null) - # - # @param enabled [Boolean, nil] Whether the webhook is enabled (accepts null) - # - # @param events [Array, nil] Events to subscribe to (accepts null): - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT = :MessageSent - MESSAGE_DELAYED = :MessageDelayed - MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed - MESSAGE_HELD = :MessageHeld - MESSAGE_BOUNCED = :MessageBounced - MESSAGE_LINK_CLICKED = :MessageLinkClicked - MESSAGE_LOADED = :MessageLoaded - DOMAIN_DNS_ERROR = :DomainDNSError - - # @!method self.values - # @return [Array] - end - end - end -end diff --git a/lib/ark_email/models/webhook_create_response.rb b/lib/ark_email/models/webhook_create_response.rb deleted file mode 100644 index d55aefe..0000000 --- a/lib/ark_email/models/webhook_create_response.rb +++ /dev/null @@ -1,111 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#create - class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::WebhookCreateResponse::Data] - required :data, -> { ArkEmail::Models::WebhookCreateResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::WebhookCreateResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::WebhookCreateResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Webhook ID - # - # @return [String] - required :id, String - - # @!attribute all_events - # Whether subscribed to all events - # - # @return [Boolean] - required :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents - - # @!attribute created_at - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute enabled - # Whether the webhook is active - # - # @return [Boolean] - required :enabled, ArkEmail::Internal::Type::Boolean - - # @!attribute events - # Subscribed events - # - # @return [Array] - required :events, - -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::WebhookCreateResponse::Data::Event] } - - # @!attribute name - # Webhook name for identification - # - # @return [String] - required :name, String - - # @!attribute url - # Webhook endpoint URL - # - # @return [String] - required :url, String - - # @!attribute uuid - # - # @return [String] - required :uuid, String - - # @!method initialize(id:, all_events:, created_at:, enabled:, events:, name:, url:, uuid:) - # @param id [String] Webhook ID - # - # @param all_events [Boolean] Whether subscribed to all events - # - # @param created_at [Time] - # - # @param enabled [Boolean] Whether the webhook is active - # - # @param events [Array] Subscribed events - # - # @param name [String] Webhook name for identification - # - # @param url [String] Webhook endpoint URL - # - # @param uuid [String] - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT = :MessageSent - MESSAGE_DELAYED = :MessageDelayed - MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed - MESSAGE_HELD = :MessageHeld - MESSAGE_BOUNCED = :MessageBounced - MESSAGE_LINK_CLICKED = :MessageLinkClicked - MESSAGE_LOADED = :MessageLoaded - DOMAIN_DNS_ERROR = :DomainDNSError - - # @!method self.values - # @return [Array] - end - end - end - end -end diff --git a/lib/ark_email/models/webhook_delete_params.rb b/lib/ark_email/models/webhook_delete_params.rb deleted file mode 100644 index c6b1f37..0000000 --- a/lib/ark_email/models/webhook_delete_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#delete - class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/webhook_delete_response.rb b/lib/ark_email/models/webhook_delete_response.rb deleted file mode 100644 index 6cd05ee..0000000 --- a/lib/ark_email/models/webhook_delete_response.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#delete - class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::WebhookDeleteResponse::Data] - required :data, -> { ArkEmail::Models::WebhookDeleteResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::WebhookDeleteResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::WebhookDeleteResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute message - # - # @return [String] - required :message, String - - # @!method initialize(message:) - # @param message [String] - end - end - end -end diff --git a/lib/ark_email/models/webhook_list_deliveries_params.rb b/lib/ark_email/models/webhook_list_deliveries_params.rb deleted file mode 100644 index 994d2fe..0000000 --- a/lib/ark_email/models/webhook_list_deliveries_params.rb +++ /dev/null @@ -1,79 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#list_deliveries - class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute after - # Only deliveries after this Unix timestamp - # - # @return [Integer, nil] - optional :after, Integer - - # @!attribute before - # Only deliveries before this Unix timestamp - # - # @return [Integer, nil] - optional :before, Integer - - # @!attribute event - # Filter by event type - # - # @return [Symbol, ArkEmail::Models::WebhookListDeliveriesParams::Event, nil] - optional :event, enum: -> { ArkEmail::WebhookListDeliveriesParams::Event } - - # @!attribute page - # Page number (default 1) - # - # @return [Integer, nil] - optional :page, Integer - - # @!attribute per_page - # Items per page (default 30, max 100) - # - # @return [Integer, nil] - optional :per_page, Integer - - # @!attribute success - # Filter by delivery success (true = 2xx response, false = non-2xx or error) - # - # @return [Boolean, nil] - optional :success, ArkEmail::Internal::Type::Boolean - - # @!method initialize(after: nil, before: nil, event: nil, page: nil, per_page: nil, success: nil, request_options: {}) - # @param after [Integer] Only deliveries after this Unix timestamp - # - # @param before [Integer] Only deliveries before this Unix timestamp - # - # @param event [Symbol, ArkEmail::Models::WebhookListDeliveriesParams::Event] Filter by event type - # - # @param page [Integer] Page number (default 1) - # - # @param per_page [Integer] Items per page (default 30, max 100) - # - # @param success [Boolean] Filter by delivery success (true = 2xx response, false = non-2xx or error) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - - # Filter by event type - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT = :MessageSent - MESSAGE_DELAYED = :MessageDelayed - MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed - MESSAGE_HELD = :MessageHeld - MESSAGE_BOUNCED = :MessageBounced - MESSAGE_LINK_CLICKED = :MessageLinkClicked - MESSAGE_LOADED = :MessageLoaded - DOMAIN_DNS_ERROR = :DomainDNSError - - # @!method self.values - # @return [Array] - end - end - end -end diff --git a/lib/ark_email/models/webhook_list_deliveries_response.rb b/lib/ark_email/models/webhook_list_deliveries_response.rb deleted file mode 100644 index 7843781..0000000 --- a/lib/ark_email/models/webhook_list_deliveries_response.rb +++ /dev/null @@ -1,154 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#list_deliveries - class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [Array] - required :data, - -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::WebhookListDeliveriesResponse::Data] } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute page - # Current page number - # - # @return [Integer] - required :page, Integer - - # @!attribute per_page - # Items per page - # - # @return [Integer] - required :per_page, Integer, api_name: :perPage - - # @!attribute total - # Total number of deliveries matching the filter - # - # @return [Integer] - required :total, Integer - - # @!attribute total_pages - # Total number of pages - # - # @return [Integer] - required :total_pages, Integer, api_name: :totalPages - - # @!method initialize(data:, meta:, page:, per_page:, total:, total_pages:) - # Paginated list of webhook delivery attempts - # - # @param data [Array] - # - # @param meta [ArkEmail::Models::APIMeta] - # - # @param page [Integer] Current page number - # - # @param per_page [Integer] Items per page - # - # @param total [Integer] Total number of deliveries matching the filter - # - # @param total_pages [Integer] Total number of pages - - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Unique delivery ID (UUID) - # - # @return [String] - required :id, String - - # @!attribute attempt - # Attempt number (1 for first attempt, increments with retries) - # - # @return [Integer] - required :attempt, Integer - - # @!attribute event - # Event type that triggered this delivery - # - # @return [Symbol, ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event] - required :event, enum: -> { ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event } - - # @!attribute status_code - # HTTP status code returned by the endpoint (null if connection failed) - # - # @return [Integer, nil] - required :status_code, Integer, api_name: :statusCode, nil?: true - - # @!attribute success - # Whether the delivery was successful (2xx response) - # - # @return [Boolean] - required :success, ArkEmail::Internal::Type::Boolean - - # @!attribute timestamp - # When this delivery attempt occurred - # - # @return [Time] - required :timestamp, Time - - # @!attribute url - # URL the webhook was delivered to - # - # @return [String] - required :url, String - - # @!attribute webhook_id - # ID of the webhook this delivery belongs to - # - # @return [String] - required :webhook_id, String, api_name: :webhookId - - # @!attribute will_retry - # Whether this delivery will be retried (true if failed and retries remaining) - # - # @return [Boolean] - required :will_retry, ArkEmail::Internal::Type::Boolean, api_name: :willRetry - - # @!method initialize(id:, attempt:, event:, status_code:, success:, timestamp:, url:, webhook_id:, will_retry:) - # Summary of a webhook delivery attempt - # - # @param id [String] Unique delivery ID (UUID) - # - # @param attempt [Integer] Attempt number (1 for first attempt, increments with retries) - # - # @param event [Symbol, ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event] Event type that triggered this delivery - # - # @param status_code [Integer, nil] HTTP status code returned by the endpoint (null if connection failed) - # - # @param success [Boolean] Whether the delivery was successful (2xx response) - # - # @param timestamp [Time] When this delivery attempt occurred - # - # @param url [String] URL the webhook was delivered to - # - # @param webhook_id [String] ID of the webhook this delivery belongs to - # - # @param will_retry [Boolean] Whether this delivery will be retried (true if failed and retries remaining) - - # Event type that triggered this delivery - # - # @see ArkEmail::Models::WebhookListDeliveriesResponse::Data#event - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT = :MessageSent - MESSAGE_DELAYED = :MessageDelayed - MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed - MESSAGE_HELD = :MessageHeld - MESSAGE_BOUNCED = :MessageBounced - MESSAGE_LINK_CLICKED = :MessageLinkClicked - MESSAGE_LOADED = :MessageLoaded - DOMAIN_DNS_ERROR = :DomainDNSError - - # @!method self.values - # @return [Array] - end - end - end - end -end diff --git a/lib/ark_email/models/webhook_list_params.rb b/lib/ark_email/models/webhook_list_params.rb deleted file mode 100644 index ad372bb..0000000 --- a/lib/ark_email/models/webhook_list_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#list - class WebhookListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/webhook_list_response.rb b/lib/ark_email/models/webhook_list_response.rb deleted file mode 100644 index 5cb37e8..0000000 --- a/lib/ark_email/models/webhook_list_response.rb +++ /dev/null @@ -1,79 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#list - class WebhookListResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::WebhookListResponse::Data] - required :data, -> { ArkEmail::Models::WebhookListResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::WebhookListResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::WebhookListResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute webhooks - # - # @return [Array] - required :webhooks, - -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::WebhookListResponse::Data::Webhook] } - - # @!method initialize(webhooks:) - # @param webhooks [Array] - - class Webhook < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Webhook ID - # - # @return [String] - required :id, String - - # @!attribute enabled - # - # @return [Boolean] - required :enabled, ArkEmail::Internal::Type::Boolean - - # @!attribute events - # - # @return [Array] - required :events, ArkEmail::Internal::Type::ArrayOf[String] - - # @!attribute name - # - # @return [String] - required :name, String - - # @!attribute url - # - # @return [String] - required :url, String - - # @!method initialize(id:, enabled:, events:, name:, url:) - # @param id [String] Webhook ID - # - # @param enabled [Boolean] - # - # @param events [Array] - # - # @param name [String] - # - # @param url [String] - end - end - end - end -end diff --git a/lib/ark_email/models/webhook_replay_delivery_params.rb b/lib/ark_email/models/webhook_replay_delivery_params.rb deleted file mode 100644 index 31b143f..0000000 --- a/lib/ark_email/models/webhook_replay_delivery_params.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#replay_delivery - class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute webhook_id - # - # @return [String] - required :webhook_id, String - - # @!method initialize(webhook_id:, request_options: {}) - # @param webhook_id [String] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/webhook_replay_delivery_response.rb b/lib/ark_email/models/webhook_replay_delivery_response.rb deleted file mode 100644 index a05fc52..0000000 --- a/lib/ark_email/models/webhook_replay_delivery_response.rb +++ /dev/null @@ -1,82 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#replay_delivery - class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::WebhookReplayDeliveryResponse::Data] - required :data, -> { ArkEmail::Models::WebhookReplayDeliveryResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # Result of replaying a webhook delivery - # - # @param data [ArkEmail::Models::WebhookReplayDeliveryResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::WebhookReplayDeliveryResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute duration - # Request duration in milliseconds - # - # @return [Integer] - required :duration, Integer - - # @!attribute new_delivery_id - # ID of the new delivery created by the replay - # - # @return [String] - required :new_delivery_id, String, api_name: :newDeliveryId - - # @!attribute original_delivery_id - # ID of the original delivery that was replayed - # - # @return [String] - required :original_delivery_id, String, api_name: :originalDeliveryId - - # @!attribute status_code - # HTTP status code from your endpoint - # - # @return [Integer, nil] - required :status_code, Integer, api_name: :statusCode, nil?: true - - # @!attribute success - # Whether the replay was successful (2xx response from endpoint) - # - # @return [Boolean] - required :success, ArkEmail::Internal::Type::Boolean - - # @!attribute timestamp - # When the replay was executed - # - # @return [Time] - required :timestamp, Time - - # @!method initialize(duration:, new_delivery_id:, original_delivery_id:, status_code:, success:, timestamp:) - # @param duration [Integer] Request duration in milliseconds - # - # @param new_delivery_id [String] ID of the new delivery created by the replay - # - # @param original_delivery_id [String] ID of the original delivery that was replayed - # - # @param status_code [Integer, nil] HTTP status code from your endpoint - # - # @param success [Boolean] Whether the replay was successful (2xx response from endpoint) - # - # @param timestamp [Time] When the replay was executed - end - end - end -end diff --git a/lib/ark_email/models/webhook_retrieve_delivery_params.rb b/lib/ark_email/models/webhook_retrieve_delivery_params.rb deleted file mode 100644 index d28de2e..0000000 --- a/lib/ark_email/models/webhook_retrieve_delivery_params.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#retrieve_delivery - class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute webhook_id - # - # @return [String] - required :webhook_id, String - - # @!method initialize(webhook_id:, request_options: {}) - # @param webhook_id [String] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/webhook_retrieve_delivery_response.rb b/lib/ark_email/models/webhook_retrieve_delivery_response.rb deleted file mode 100644 index b3ca4f7..0000000 --- a/lib/ark_email/models/webhook_retrieve_delivery_response.rb +++ /dev/null @@ -1,198 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#retrieve_delivery - class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # Full details of a webhook delivery including request and response - # - # @return [ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data] - required :data, -> { ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # Detailed information about a webhook delivery attempt - # - # @param data [ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data] Full details of a webhook delivery including request and response - # - # @param meta [ArkEmail::Models::APIMeta] - # - # @param success [Boolean, true] - - # @see ArkEmail::Models::WebhookRetrieveDeliveryResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Unique delivery ID (UUID) - # - # @return [String] - required :id, String - - # @!attribute attempt - # Attempt number for this delivery - # - # @return [Integer] - required :attempt, Integer - - # @!attribute event - # Event type that triggered this delivery - # - # @return [Symbol, ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event] - required :event, enum: -> { ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event } - - # @!attribute request - # The request that was sent to your endpoint - # - # @return [ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request] - required :request, -> { ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request } - - # @!attribute response - # The response received from your endpoint - # - # @return [ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response] - required :response, -> { ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response } - - # @!attribute status_code - # HTTP status code returned by the endpoint - # - # @return [Integer, nil] - required :status_code, Integer, api_name: :statusCode, nil?: true - - # @!attribute success - # Whether the delivery was successful (2xx response) - # - # @return [Boolean] - required :success, ArkEmail::Internal::Type::Boolean - - # @!attribute timestamp - # When this delivery attempt occurred - # - # @return [Time] - required :timestamp, Time - - # @!attribute url - # URL the webhook was delivered to - # - # @return [String] - required :url, String - - # @!attribute webhook_id - # ID of the webhook this delivery belongs to - # - # @return [String] - required :webhook_id, String, api_name: :webhookId - - # @!attribute webhook_name - # Name of the webhook for easy identification - # - # @return [String] - required :webhook_name, String, api_name: :webhookName - - # @!attribute will_retry - # Whether this delivery will be retried - # - # @return [Boolean] - required :will_retry, ArkEmail::Internal::Type::Boolean, api_name: :willRetry - - # @!method initialize(id:, attempt:, event:, request:, response:, status_code:, success:, timestamp:, url:, webhook_id:, webhook_name:, will_retry:) - # Full details of a webhook delivery including request and response - # - # @param id [String] Unique delivery ID (UUID) - # - # @param attempt [Integer] Attempt number for this delivery - # - # @param event [Symbol, ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event] Event type that triggered this delivery - # - # @param request [ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request] The request that was sent to your endpoint - # - # @param response [ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response] The response received from your endpoint - # - # @param status_code [Integer, nil] HTTP status code returned by the endpoint - # - # @param success [Boolean] Whether the delivery was successful (2xx response) - # - # @param timestamp [Time] When this delivery attempt occurred - # - # @param url [String] URL the webhook was delivered to - # - # @param webhook_id [String] ID of the webhook this delivery belongs to - # - # @param webhook_name [String] Name of the webhook for easy identification - # - # @param will_retry [Boolean] Whether this delivery will be retried - - # Event type that triggered this delivery - # - # @see ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data#event - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT = :MessageSent - MESSAGE_DELAYED = :MessageDelayed - MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed - MESSAGE_HELD = :MessageHeld - MESSAGE_BOUNCED = :MessageBounced - MESSAGE_LINK_CLICKED = :MessageLinkClicked - MESSAGE_LOADED = :MessageLoaded - DOMAIN_DNS_ERROR = :DomainDNSError - - # @!method self.values - # @return [Array] - end - - # @see ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data#request - class Request < ArkEmail::Internal::Type::BaseModel - # @!attribute headers - # HTTP headers that were sent with the request - # - # @return [Hash{Symbol=>String}] - required :headers, ArkEmail::Internal::Type::HashOf[String] - - # @!attribute payload - # The complete webhook payload that was sent - # - # @return [Hash{Symbol=>Object}] - required :payload, ArkEmail::Internal::Type::HashOf[ArkEmail::Internal::Type::Unknown] - - # @!method initialize(headers:, payload:) - # The request that was sent to your endpoint - # - # @param headers [Hash{Symbol=>String}] HTTP headers that were sent with the request - # - # @param payload [Hash{Symbol=>Object}] The complete webhook payload that was sent - end - - # @see ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data#response - class Response < ArkEmail::Internal::Type::BaseModel - # @!attribute status_code - # HTTP status code from your endpoint - # - # @return [Integer, nil] - required :status_code, Integer, api_name: :statusCode, nil?: true - - # @!attribute body - # Response body from your endpoint (may be truncated) - # - # @return [String, nil] - optional :body, String, nil?: true - - # @!method initialize(status_code:, body: nil) - # The response received from your endpoint - # - # @param status_code [Integer, nil] HTTP status code from your endpoint - # - # @param body [String, nil] Response body from your endpoint (may be truncated) - end - end - end - end -end diff --git a/lib/ark_email/models/webhook_retrieve_params.rb b/lib/ark_email/models/webhook_retrieve_params.rb deleted file mode 100644 index 097d642..0000000 --- a/lib/ark_email/models/webhook_retrieve_params.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#retrieve - class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!method initialize(request_options: {}) - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/webhook_retrieve_response.rb b/lib/ark_email/models/webhook_retrieve_response.rb deleted file mode 100644 index 34ce6d3..0000000 --- a/lib/ark_email/models/webhook_retrieve_response.rb +++ /dev/null @@ -1,111 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#retrieve - class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::WebhookRetrieveResponse::Data] - required :data, -> { ArkEmail::Models::WebhookRetrieveResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::WebhookRetrieveResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::WebhookRetrieveResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Webhook ID - # - # @return [String] - required :id, String - - # @!attribute all_events - # Whether subscribed to all events - # - # @return [Boolean] - required :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents - - # @!attribute created_at - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute enabled - # Whether the webhook is active - # - # @return [Boolean] - required :enabled, ArkEmail::Internal::Type::Boolean - - # @!attribute events - # Subscribed events - # - # @return [Array] - required :events, - -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::WebhookRetrieveResponse::Data::Event] } - - # @!attribute name - # Webhook name for identification - # - # @return [String] - required :name, String - - # @!attribute url - # Webhook endpoint URL - # - # @return [String] - required :url, String - - # @!attribute uuid - # - # @return [String] - required :uuid, String - - # @!method initialize(id:, all_events:, created_at:, enabled:, events:, name:, url:, uuid:) - # @param id [String] Webhook ID - # - # @param all_events [Boolean] Whether subscribed to all events - # - # @param created_at [Time] - # - # @param enabled [Boolean] Whether the webhook is active - # - # @param events [Array] Subscribed events - # - # @param name [String] Webhook name for identification - # - # @param url [String] Webhook endpoint URL - # - # @param uuid [String] - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT = :MessageSent - MESSAGE_DELAYED = :MessageDelayed - MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed - MESSAGE_HELD = :MessageHeld - MESSAGE_BOUNCED = :MessageBounced - MESSAGE_LINK_CLICKED = :MessageLinkClicked - MESSAGE_LOADED = :MessageLoaded - DOMAIN_DNS_ERROR = :DomainDNSError - - # @!method self.values - # @return [Array] - end - end - end - end -end diff --git a/lib/ark_email/models/webhook_test_params.rb b/lib/ark_email/models/webhook_test_params.rb deleted file mode 100644 index 95053dd..0000000 --- a/lib/ark_email/models/webhook_test_params.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#test_ - class WebhookTestParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute event - # Event type to simulate - # - # @return [Symbol, ArkEmail::Models::WebhookTestParams::Event] - required :event, enum: -> { ArkEmail::WebhookTestParams::Event } - - # @!method initialize(event:, request_options: {}) - # @param event [Symbol, ArkEmail::Models::WebhookTestParams::Event] Event type to simulate - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - - # Event type to simulate - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT = :MessageSent - MESSAGE_DELAYED = :MessageDelayed - MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed - MESSAGE_HELD = :MessageHeld - MESSAGE_BOUNCED = :MessageBounced - MESSAGE_LINK_CLICKED = :MessageLinkClicked - MESSAGE_LOADED = :MessageLoaded - DOMAIN_DNS_ERROR = :DomainDNSError - - # @!method self.values - # @return [Array] - end - end - end -end diff --git a/lib/ark_email/models/webhook_test_response.rb b/lib/ark_email/models/webhook_test_response.rb deleted file mode 100644 index 323db28..0000000 --- a/lib/ark_email/models/webhook_test_response.rb +++ /dev/null @@ -1,80 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#test_ - class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::WebhookTestResponse::Data] - required :data, -> { ArkEmail::Models::WebhookTestResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::WebhookTestResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::WebhookTestResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute duration - # Request duration in milliseconds - # - # @return [Integer] - required :duration, Integer - - # @!attribute event - # Event type that was tested - # - # @return [String] - required :event, String - - # @!attribute status_code - # HTTP status code from the webhook endpoint - # - # @return [Integer, nil] - required :status_code, Integer, api_name: :statusCode, nil?: true - - # @!attribute success - # Whether the webhook endpoint responded with a 2xx status - # - # @return [Boolean] - required :success, ArkEmail::Internal::Type::Boolean - - # @!attribute body - # Response body from the webhook endpoint (truncated if too long) - # - # @return [String, nil] - optional :body, String, nil?: true - - # @!attribute error - # Error message if the request failed - # - # @return [String, nil] - optional :error, String, nil?: true - - # @!method initialize(duration:, event:, status_code:, success:, body: nil, error: nil) - # @param duration [Integer] Request duration in milliseconds - # - # @param event [String] Event type that was tested - # - # @param status_code [Integer, nil] HTTP status code from the webhook endpoint - # - # @param success [Boolean] Whether the webhook endpoint responded with a 2xx status - # - # @param body [String, nil] Response body from the webhook endpoint (truncated if too long) - # - # @param error [String, nil] Error message if the request failed - end - end - end -end diff --git a/lib/ark_email/models/webhook_update_params.rb b/lib/ark_email/models/webhook_update_params.rb deleted file mode 100644 index 71c4686..0000000 --- a/lib/ark_email/models/webhook_update_params.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#update - class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - # @!attribute all_events - # - # @return [Boolean, nil] - optional :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents, nil?: true - - # @!attribute enabled - # - # @return [Boolean, nil] - optional :enabled, ArkEmail::Internal::Type::Boolean, nil?: true - - # @!attribute events - # - # @return [Array, nil] - optional :events, ArkEmail::Internal::Type::ArrayOf[String], nil?: true - - # @!attribute name - # - # @return [String, nil] - optional :name, String, nil?: true - - # @!attribute url - # - # @return [String, nil] - optional :url, String, nil?: true - - # @!method initialize(all_events: nil, enabled: nil, events: nil, name: nil, url: nil, request_options: {}) - # @param all_events [Boolean, nil] - # @param enabled [Boolean, nil] - # @param events [Array, nil] - # @param name [String, nil] - # @param url [String, nil] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] - end - end -end diff --git a/lib/ark_email/models/webhook_update_response.rb b/lib/ark_email/models/webhook_update_response.rb deleted file mode 100644 index cfbcaf2..0000000 --- a/lib/ark_email/models/webhook_update_response.rb +++ /dev/null @@ -1,111 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Models - # @see ArkEmail::Resources::Webhooks#update - class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel - # @!attribute data - # - # @return [ArkEmail::Models::WebhookUpdateResponse::Data] - required :data, -> { ArkEmail::Models::WebhookUpdateResponse::Data } - - # @!attribute meta - # - # @return [ArkEmail::Models::APIMeta] - required :meta, -> { ArkEmail::APIMeta } - - # @!attribute success - # - # @return [Boolean, true] - required :success, const: true - - # @!method initialize(data:, meta:, success: true) - # @param data [ArkEmail::Models::WebhookUpdateResponse::Data] - # @param meta [ArkEmail::Models::APIMeta] - # @param success [Boolean, true] - - # @see ArkEmail::Models::WebhookUpdateResponse#data - class Data < ArkEmail::Internal::Type::BaseModel - # @!attribute id - # Webhook ID - # - # @return [String] - required :id, String - - # @!attribute all_events - # Whether subscribed to all events - # - # @return [Boolean] - required :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents - - # @!attribute created_at - # - # @return [Time] - required :created_at, Time, api_name: :createdAt - - # @!attribute enabled - # Whether the webhook is active - # - # @return [Boolean] - required :enabled, ArkEmail::Internal::Type::Boolean - - # @!attribute events - # Subscribed events - # - # @return [Array] - required :events, - -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::WebhookUpdateResponse::Data::Event] } - - # @!attribute name - # Webhook name for identification - # - # @return [String] - required :name, String - - # @!attribute url - # Webhook endpoint URL - # - # @return [String] - required :url, String - - # @!attribute uuid - # - # @return [String] - required :uuid, String - - # @!method initialize(id:, all_events:, created_at:, enabled:, events:, name:, url:, uuid:) - # @param id [String] Webhook ID - # - # @param all_events [Boolean] Whether subscribed to all events - # - # @param created_at [Time] - # - # @param enabled [Boolean] Whether the webhook is active - # - # @param events [Array] Subscribed events - # - # @param name [String] Webhook name for identification - # - # @param url [String] Webhook endpoint URL - # - # @param uuid [String] - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT = :MessageSent - MESSAGE_DELAYED = :MessageDelayed - MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed - MESSAGE_HELD = :MessageHeld - MESSAGE_BOUNCED = :MessageBounced - MESSAGE_LINK_CLICKED = :MessageLinkClicked - MESSAGE_LOADED = :MessageLoaded - DOMAIN_DNS_ERROR = :DomainDNSError - - # @!method self.values - # @return [Array] - end - end - end - end -end diff --git a/lib/ark_email/resources/domains.rb b/lib/ark_email/resources/domains.rb deleted file mode 100644 index 72233a1..0000000 --- a/lib/ark_email/resources/domains.rb +++ /dev/null @@ -1,139 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Resources - class Domains - # Add a new domain for sending emails. Returns DNS records that must be configured - # before the domain can be verified. - # - # **Required:** `tenant_id` to specify which tenant the domain belongs to. Each - # tenant gets their own isolated mail server for domain isolation. - # - # **Required DNS records:** - # - # - **SPF** - TXT record for sender authentication - # - **DKIM** - TXT record for email signing - # - **Return Path** - CNAME for bounce handling - # - # After adding DNS records, call `POST /domains/{id}/verify` to verify. - # - # @overload create(name:, tenant_id:, request_options: {}) - # - # @param name [String] Domain name (e.g., "mail.example.com") - # - # @param tenant_id [String] ID of the tenant this domain belongs to - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::DomainCreateResponse] - # - # @see ArkEmail::Models::DomainCreateParams - def create(params) - parsed, options = ArkEmail::DomainCreateParams.dump_request(params) - @client.request( - method: :post, - path: "domains", - body: parsed, - model: ArkEmail::Models::DomainCreateResponse, - options: options - ) - end - - # Get detailed information about a domain including DNS record status - # - # @overload retrieve(domain_id, request_options: {}) - # - # @param domain_id [String] Domain ID or domain name - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::DomainRetrieveResponse] - # - # @see ArkEmail::Models::DomainRetrieveParams - def retrieve(domain_id, params = {}) - @client.request( - method: :get, - path: ["domains/%1$s", domain_id], - model: ArkEmail::Models::DomainRetrieveResponse, - options: params[:request_options] - ) - end - - # Get all sending domains with their verification status. - # - # Optionally filter by `tenant_id` to list domains for a specific tenant. When - # filtered, response includes `tenant_id` and `tenant_name` for each domain. - # - # @overload list(tenant_id: nil, request_options: {}) - # - # @param tenant_id [String] Filter domains by tenant ID - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::DomainListResponse] - # - # @see ArkEmail::Models::DomainListParams - def list(params = {}) - parsed, options = ArkEmail::DomainListParams.dump_request(params) - @client.request( - method: :get, - path: "domains", - query: parsed, - model: ArkEmail::Models::DomainListResponse, - options: options - ) - end - - # Remove a sending domain. You will no longer be able to send emails from this - # domain. - # - # **Warning:** This action cannot be undone. - # - # @overload delete(domain_id, request_options: {}) - # - # @param domain_id [String] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::DomainDeleteResponse] - # - # @see ArkEmail::Models::DomainDeleteParams - def delete(domain_id, params = {}) - @client.request( - method: :delete, - path: ["domains/%1$s", domain_id], - model: ArkEmail::Models::DomainDeleteResponse, - options: params[:request_options] - ) - end - - # Check if DNS records are correctly configured and verify the domain. Returns the - # current status of each required DNS record. - # - # Call this after you've added the DNS records shown when creating the domain. - # - # @overload verify(domain_id, request_options: {}) - # - # @param domain_id [String] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::DomainVerifyResponse] - # - # @see ArkEmail::Models::DomainVerifyParams - def verify(domain_id, params = {}) - @client.request( - method: :post, - path: ["domains/%1$s/verify", domain_id], - model: ArkEmail::Models::DomainVerifyResponse, - options: params[:request_options] - ) - end - - # @api private - # - # @param client [ArkEmail::Client] - def initialize(client:) - @client = client - end - end - end -end diff --git a/lib/ark_email/resources/limits.rb b/lib/ark_email/resources/limits.rb index de26c50..53fd47c 100644 --- a/lib/ark_email/resources/limits.rb +++ b/lib/ark_email/resources/limits.rb @@ -17,7 +17,7 @@ class Limits # **Notes:** # # - This request counts against your rate limit - # - `sendLimit` may be null if Postal is temporarily unavailable + # - `sendLimit` may be null if the service is temporarily unavailable # - `billing` is null if billing is not configured # - Send limit resets at the top of each hour # diff --git a/lib/ark_email/resources/suppressions.rb b/lib/ark_email/resources/suppressions.rb deleted file mode 100644 index 4d0db93..0000000 --- a/lib/ark_email/resources/suppressions.rb +++ /dev/null @@ -1,124 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Resources - class Suppressions - # Add an email address to the suppression list. The address will not receive any - # emails until removed. - # - # @overload create(address:, reason: nil, request_options: {}) - # - # @param address [String] Email address to suppress - # - # @param reason [String, nil] Reason for suppression (accepts null) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::SuppressionCreateResponse] - # - # @see ArkEmail::Models::SuppressionCreateParams - def create(params) - parsed, options = ArkEmail::SuppressionCreateParams.dump_request(params) - @client.request( - method: :post, - path: "suppressions", - body: parsed, - model: ArkEmail::Models::SuppressionCreateResponse, - options: options - ) - end - - # Check if a specific email address is on the suppression list - # - # @overload retrieve(email, request_options: {}) - # - # @param email [String] Email address (URL-encoded) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::SuppressionRetrieveResponse] - # - # @see ArkEmail::Models::SuppressionRetrieveParams - def retrieve(email, params = {}) - @client.request( - method: :get, - path: ["suppressions/%1$s", email], - model: ArkEmail::Models::SuppressionRetrieveResponse, - options: params[:request_options] - ) - end - - # Get all email addresses on the suppression list. These addresses will not - # receive any emails. - # - # @overload list(page: nil, per_page: nil, request_options: {}) - # - # @param page [Integer] - # @param per_page [Integer] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Internal::PageNumberPagination] - # - # @see ArkEmail::Models::SuppressionListParams - def list(params = {}) - parsed, options = ArkEmail::SuppressionListParams.dump_request(params) - @client.request( - method: :get, - path: "suppressions", - query: parsed.transform_keys(per_page: "perPage"), - page: ArkEmail::Internal::PageNumberPagination, - model: ArkEmail::Models::SuppressionListResponse, - options: options - ) - end - - # Remove an email address from the suppression list. The address will be able to - # receive emails again. - # - # @overload delete(email, request_options: {}) - # - # @param email [String] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::SuppressionDeleteResponse] - # - # @see ArkEmail::Models::SuppressionDeleteParams - def delete(email, params = {}) - @client.request( - method: :delete, - path: ["suppressions/%1$s", email], - model: ArkEmail::Models::SuppressionDeleteResponse, - options: params[:request_options] - ) - end - - # Add up to 1000 email addresses to the suppression list at once - # - # @overload bulk_create(suppressions:, request_options: {}) - # - # @param suppressions [Array] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::SuppressionBulkCreateResponse] - # - # @see ArkEmail::Models::SuppressionBulkCreateParams - def bulk_create(params) - parsed, options = ArkEmail::SuppressionBulkCreateParams.dump_request(params) - @client.request( - method: :post, - path: "suppressions/bulk", - body: parsed, - model: ArkEmail::Models::SuppressionBulkCreateResponse, - options: options - ) - end - - # @api private - # - # @param client [ArkEmail::Client] - def initialize(client:) - @client = client - end - end - end -end diff --git a/lib/ark_email/resources/tenants.rb b/lib/ark_email/resources/tenants.rb index 37a09b6..9136a88 100644 --- a/lib/ark_email/resources/tenants.rb +++ b/lib/ark_email/resources/tenants.rb @@ -6,6 +6,21 @@ class Tenants # @return [ArkEmail::Resources::Tenants::Credentials] attr_reader :credentials + # @return [ArkEmail::Resources::Tenants::Domains] + attr_reader :domains + + # @return [ArkEmail::Resources::Tenants::Suppressions] + attr_reader :suppressions + + # @return [ArkEmail::Resources::Tenants::Webhooks] + attr_reader :webhooks + + # @return [ArkEmail::Resources::Tenants::Tracking] + attr_reader :tracking + + # @return [ArkEmail::Resources::Tenants::Usage] + attr_reader :usage + # Some parameter documentations has been truncated, see # {ArkEmail::Models::TenantCreateParams} for more details. # @@ -142,6 +157,11 @@ def delete(tenant_id, params = {}) def initialize(client:) @client = client @credentials = ArkEmail::Resources::Tenants::Credentials.new(client: client) + @domains = ArkEmail::Resources::Tenants::Domains.new(client: client) + @suppressions = ArkEmail::Resources::Tenants::Suppressions.new(client: client) + @webhooks = ArkEmail::Resources::Tenants::Webhooks.new(client: client) + @tracking = ArkEmail::Resources::Tenants::Tracking.new(client: client) + @usage = ArkEmail::Resources::Tenants::Usage.new(client: client) end end end diff --git a/lib/ark_email/resources/tenants/credentials.rb b/lib/ark_email/resources/tenants/credentials.rb index 0151c47..5cecef2 100644 --- a/lib/ark_email/resources/tenants/credentials.rb +++ b/lib/ark_email/resources/tenants/credentials.rb @@ -8,7 +8,7 @@ class Credentials # {ArkEmail::Models::Tenants::CredentialCreateParams} for more details. # # Create a new SMTP or API credential for a tenant. The credential can be used to - # send emails through Postal on behalf of the tenant. + # send emails via Ark on behalf of the tenant. # # **Important:** The credential key is only returned once at creation time. Store # it securely - you cannot retrieve it again. @@ -119,7 +119,7 @@ def update(credential_id, params) end # List all SMTP and API credentials for a tenant. Credentials are used to send - # emails through Postal on behalf of the tenant. + # emails via Ark on behalf of the tenant. # # **Security:** Credential keys are not returned in the list response. Use the # retrieve endpoint with `reveal=true` to get the key. diff --git a/lib/ark_email/resources/tenants/domains.rb b/lib/ark_email/resources/tenants/domains.rb new file mode 100644 index 0000000..5808448 --- /dev/null +++ b/lib/ark_email/resources/tenants/domains.rb @@ -0,0 +1,159 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Tenants + class Domains + # Add a new sending domain to a tenant. Returns DNS records that must be + # configured before the domain can be verified. + # + # Each tenant gets their own isolated mail server for domain isolation. + # + # **Required DNS records:** + # + # - **SPF** - TXT record for sender authentication + # - **DKIM** - TXT record for email signing + # - **Return Path** - CNAME for bounce handling + # + # After adding DNS records, call + # `POST /tenants/{tenantId}/domains/{domainId}/verify` to verify. + # + # @overload create(tenant_id, name:, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param name [String] Domain name (e.g., "mail.example.com") + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::DomainCreateResponse] + # + # @see ArkEmail::Models::Tenants::DomainCreateParams + def create(tenant_id, params) + parsed, options = ArkEmail::Tenants::DomainCreateParams.dump_request(params) + @client.request( + method: :post, + path: ["tenants/%1$s/domains", tenant_id], + body: parsed, + model: ArkEmail::Models::Tenants::DomainCreateResponse, + options: options + ) + end + + # Get detailed information about a domain including DNS record status. + # + # @overload retrieve(domain_id, tenant_id:, request_options: {}) + # + # @param domain_id [String] Domain ID or domain name + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::DomainRetrieveResponse] + # + # @see ArkEmail::Models::Tenants::DomainRetrieveParams + def retrieve(domain_id, params) + parsed, options = ArkEmail::Tenants::DomainRetrieveParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :get, + path: ["tenants/%1$s/domains/%2$s", tenant_id, domain_id], + model: ArkEmail::Models::Tenants::DomainRetrieveResponse, + options: options + ) + end + + # Get all sending domains for a specific tenant with their verification status. + # + # @overload list(tenant_id, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::DomainListResponse] + # + # @see ArkEmail::Models::Tenants::DomainListParams + def list(tenant_id, params = {}) + @client.request( + method: :get, + path: ["tenants/%1$s/domains", tenant_id], + model: ArkEmail::Models::Tenants::DomainListResponse, + options: params[:request_options] + ) + end + + # Remove a sending domain from a tenant. You will no longer be able to send emails + # from this domain. + # + # **Warning:** This action cannot be undone. + # + # @overload delete(domain_id, tenant_id:, request_options: {}) + # + # @param domain_id [String] Domain ID + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::DomainDeleteResponse] + # + # @see ArkEmail::Models::Tenants::DomainDeleteParams + def delete(domain_id, params) + parsed, options = ArkEmail::Tenants::DomainDeleteParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :delete, + path: ["tenants/%1$s/domains/%2$s", tenant_id, domain_id], + model: ArkEmail::Models::Tenants::DomainDeleteResponse, + options: options + ) + end + + # Check if DNS records are correctly configured and verify the domain. Returns the + # current status of each required DNS record. + # + # Call this after you've added the DNS records shown when creating the domain. + # + # @overload verify(domain_id, tenant_id:, request_options: {}) + # + # @param domain_id [String] Domain ID + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::DomainVerifyResponse] + # + # @see ArkEmail::Models::Tenants::DomainVerifyParams + def verify(domain_id, params) + parsed, options = ArkEmail::Tenants::DomainVerifyParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :post, + path: ["tenants/%1$s/domains/%2$s/verify", tenant_id, domain_id], + model: ArkEmail::Models::Tenants::DomainVerifyResponse, + options: options + ) + end + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + end + end + end + end +end diff --git a/lib/ark_email/resources/tenants/suppressions.rb b/lib/ark_email/resources/tenants/suppressions.rb new file mode 100644 index 0000000..1fd0c2b --- /dev/null +++ b/lib/ark_email/resources/tenants/suppressions.rb @@ -0,0 +1,126 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Tenants + class Suppressions + # Add an email address to the tenant's suppression list. The address will not + # receive any emails from this tenant until removed. + # + # @overload create(tenant_id, address:, reason: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param address [String] Email address to suppress + # + # @param reason [String, nil] Reason for suppression (accepts null) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::SuppressionCreateResponse] + # + # @see ArkEmail::Models::Tenants::SuppressionCreateParams + def create(tenant_id, params) + parsed, options = ArkEmail::Tenants::SuppressionCreateParams.dump_request(params) + @client.request( + method: :post, + path: ["tenants/%1$s/suppressions", tenant_id], + body: parsed, + model: ArkEmail::Models::Tenants::SuppressionCreateResponse, + options: options + ) + end + + # Check if a specific email address is on the tenant's suppression list. + # + # @overload retrieve(email, tenant_id:, request_options: {}) + # + # @param email [String] Email address (URL-encoded) + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::SuppressionRetrieveResponse] + # + # @see ArkEmail::Models::Tenants::SuppressionRetrieveParams + def retrieve(email, params) + parsed, options = ArkEmail::Tenants::SuppressionRetrieveParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :get, + path: ["tenants/%1$s/suppressions/%2$s", tenant_id, email], + model: ArkEmail::Models::Tenants::SuppressionRetrieveResponse, + options: options + ) + end + + # Get all email addresses on the tenant's suppression list. These addresses will + # not receive any emails from this tenant. + # + # @overload list(tenant_id, page: nil, per_page: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param page [Integer] + # + # @param per_page [Integer] + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Internal::PageNumberPagination] + # + # @see ArkEmail::Models::Tenants::SuppressionListParams + def list(tenant_id, params = {}) + parsed, options = ArkEmail::Tenants::SuppressionListParams.dump_request(params) + @client.request( + method: :get, + path: ["tenants/%1$s/suppressions", tenant_id], + query: parsed.transform_keys(per_page: "perPage"), + page: ArkEmail::Internal::PageNumberPagination, + model: ArkEmail::Models::Tenants::SuppressionListResponse, + options: options + ) + end + + # Remove an email address from the tenant's suppression list. The address will be + # able to receive emails from this tenant again. + # + # @overload delete(email, tenant_id:, request_options: {}) + # + # @param email [String] Email address (URL-encoded) + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::SuppressionDeleteResponse] + # + # @see ArkEmail::Models::Tenants::SuppressionDeleteParams + def delete(email, params) + parsed, options = ArkEmail::Tenants::SuppressionDeleteParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :delete, + path: ["tenants/%1$s/suppressions/%2$s", tenant_id, email], + model: ArkEmail::Models::Tenants::SuppressionDeleteResponse, + options: options + ) + end + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + end + end + end + end +end diff --git a/lib/ark_email/resources/tenants/tracking.rb b/lib/ark_email/resources/tenants/tracking.rb new file mode 100644 index 0000000..8b66dc7 --- /dev/null +++ b/lib/ark_email/resources/tenants/tracking.rb @@ -0,0 +1,203 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Tenants + class Tracking + # Create a new track domain for open/click tracking for a tenant. + # + # After creation, you must configure a CNAME record pointing to the provided DNS + # value before tracking will work. + # + # @overload create(tenant_id, domain_id:, name:, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param domain_id [Integer] ID of the sending domain to attach this track domain to + # + # @param name [String] Subdomain name (e.g., 'track' for track.yourdomain.com) + # + # @param ssl_enabled [Boolean, nil] Enable SSL for tracking URLs (accepts null, defaults to true) + # + # @param track_clicks [Boolean, nil] Enable click tracking (accepts null, defaults to true) + # + # @param track_opens [Boolean, nil] Enable open tracking (tracking pixel, accepts null, defaults to true) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::TrackingCreateResponse] + # + # @see ArkEmail::Models::Tenants::TrackingCreateParams + def create(tenant_id, params) + parsed, options = ArkEmail::Tenants::TrackingCreateParams.dump_request(params) + @client.request( + method: :post, + path: ["tenants/%1$s/tracking", tenant_id], + body: parsed, + model: ArkEmail::Models::Tenants::TrackingCreateResponse, + options: options + ) + end + + # Get details of a specific track domain including DNS configuration. + # + # @overload retrieve(tracking_id, tenant_id:, request_options: {}) + # + # @param tracking_id [String] Track domain ID + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::TrackingRetrieveResponse] + # + # @see ArkEmail::Models::Tenants::TrackingRetrieveParams + def retrieve(tracking_id, params) + parsed, options = ArkEmail::Tenants::TrackingRetrieveParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :get, + path: ["tenants/%1$s/tracking/%2$s", tenant_id, tracking_id], + model: ArkEmail::Models::Tenants::TrackingRetrieveResponse, + options: options + ) + end + + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::TrackingUpdateParams} for more details. + # + # Update track domain settings. + # + # Use this to: + # + # - Enable/disable click tracking + # - Enable/disable open tracking + # - Enable/disable SSL + # - Set excluded click domains + # + # @overload update(tracking_id, tenant_id:, excluded_click_domains: nil, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {}) + # + # @param tracking_id [String] Path param: Track domain ID + # + # @param tenant_id [String] Path param: The tenant ID + # + # @param excluded_click_domains [String, nil] Body param: Comma-separated list of domains to exclude from click tracking (acce + # + # @param ssl_enabled [Boolean, nil] Body param: Enable or disable SSL for tracking URLs (accepts null) + # + # @param track_clicks [Boolean, nil] Body param: Enable or disable click tracking (accepts null) + # + # @param track_opens [Boolean, nil] Body param: Enable or disable open tracking (accepts null) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::TrackingUpdateResponse] + # + # @see ArkEmail::Models::Tenants::TrackingUpdateParams + def update(tracking_id, params) + parsed, options = ArkEmail::Tenants::TrackingUpdateParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :patch, + path: ["tenants/%1$s/tracking/%2$s", tenant_id, tracking_id], + body: parsed, + model: ArkEmail::Models::Tenants::TrackingUpdateResponse, + options: options + ) + end + + # List all track domains configured for a tenant. Track domains enable open and + # click tracking for emails. + # + # @overload list(tenant_id, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::TrackingListResponse] + # + # @see ArkEmail::Models::Tenants::TrackingListParams + def list(tenant_id, params = {}) + @client.request( + method: :get, + path: ["tenants/%1$s/tracking", tenant_id], + model: ArkEmail::Models::Tenants::TrackingListResponse, + options: params[:request_options] + ) + end + + # Delete a track domain. This will disable tracking for any emails using this + # domain. + # + # @overload delete(tracking_id, tenant_id:, request_options: {}) + # + # @param tracking_id [String] Track domain ID + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::TrackingDeleteResponse] + # + # @see ArkEmail::Models::Tenants::TrackingDeleteParams + def delete(tracking_id, params) + parsed, options = ArkEmail::Tenants::TrackingDeleteParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :delete, + path: ["tenants/%1$s/tracking/%2$s", tenant_id, tracking_id], + model: ArkEmail::Models::Tenants::TrackingDeleteResponse, + options: options + ) + end + + # Check DNS configuration for the track domain. + # + # The track domain requires a CNAME record to be configured before open and click + # tracking will work. Use this endpoint to verify the DNS is correctly set up. + # + # @overload verify(tracking_id, tenant_id:, request_options: {}) + # + # @param tracking_id [String] Track domain ID + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::TrackingVerifyResponse] + # + # @see ArkEmail::Models::Tenants::TrackingVerifyParams + def verify(tracking_id, params) + parsed, options = ArkEmail::Tenants::TrackingVerifyParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :post, + path: ["tenants/%1$s/tracking/%2$s/verify", tenant_id, tracking_id], + model: ArkEmail::Models::Tenants::TrackingVerifyResponse, + options: options + ) + end + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + end + end + end + end +end diff --git a/lib/ark_email/resources/tenants/usage.rb b/lib/ark_email/resources/tenants/usage.rb new file mode 100644 index 0000000..d614f53 --- /dev/null +++ b/lib/ark_email/resources/tenants/usage.rb @@ -0,0 +1,107 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Tenants + class Usage + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::UsageRetrieveParams} for more details. + # + # Returns email sending statistics for a specific tenant over a time period. + # + # **Use cases:** + # + # - Display usage dashboard to your customers + # - Calculate per-tenant billing + # - Monitor tenant health and delivery rates + # + # **Period formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` (full month) + # - Date range: `2024-01-01..2024-01-31` + # - Single day: `2024-01-15` + # + # **Response includes:** + # + # - `emails` - Counts for sent, delivered, soft_failed, hard_failed, bounced, held + # - `rates` - Delivery rate and bounce rate as decimals (0.95 = 95%) + # + # @overload retrieve(tenant_id, period: nil, timezone: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param period [String] Time period for usage data. Defaults to current month. + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::UsageRetrieveResponse] + # + # @see ArkEmail::Models::Tenants::UsageRetrieveParams + def retrieve(tenant_id, params = {}) + parsed, options = ArkEmail::Tenants::UsageRetrieveParams.dump_request(params) + @client.request( + method: :get, + path: ["tenants/%1$s/usage", tenant_id], + query: parsed, + model: ArkEmail::Models::Tenants::UsageRetrieveResponse, + options: options + ) + end + + # Returns time-bucketed email statistics for a specific tenant. + # + # **Use cases:** + # + # - Build usage charts and graphs + # - Identify sending patterns + # - Detect anomalies in delivery rates + # + # **Granularity options:** + # + # - `hour` - Hourly buckets (best for last 7 days) + # - `day` - Daily buckets (best for last 30-90 days) + # - `week` - Weekly buckets (best for last 6 months) + # - `month` - Monthly buckets (best for year-over-year) + # + # The response includes a data point for each time bucket with all email metrics. + # + # @overload retrieve_timeseries(tenant_id, granularity: nil, period: nil, timezone: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param granularity [Symbol, ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::Granularity] Time bucket size for data points + # + # @param period [String] Time period for timeseries data. Defaults to current month. + # + # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::UsageRetrieveTimeseriesResponse] + # + # @see ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams + def retrieve_timeseries(tenant_id, params = {}) + parsed, options = ArkEmail::Tenants::UsageRetrieveTimeseriesParams.dump_request(params) + @client.request( + method: :get, + path: ["tenants/%1$s/usage/timeseries", tenant_id], + query: parsed, + model: ArkEmail::Models::Tenants::UsageRetrieveTimeseriesResponse, + options: options + ) + end + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + end + end + end + end +end diff --git a/lib/ark_email/resources/tenants/webhooks.rb b/lib/ark_email/resources/tenants/webhooks.rb new file mode 100644 index 0000000..a366411 --- /dev/null +++ b/lib/ark_email/resources/tenants/webhooks.rb @@ -0,0 +1,363 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Tenants + class Webhooks + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::WebhookCreateParams} for more details. + # + # Create a webhook endpoint to receive email event notifications for a tenant. + # + # **Available events:** + # + # - `MessageSent` - Email accepted by recipient server + # - `MessageDeliveryFailed` - Delivery permanently failed + # - `MessageDelayed` - Delivery temporarily failed, will retry + # - `MessageBounced` - Email bounced + # - `MessageHeld` - Email held for review + # - `MessageLinkClicked` - Recipient clicked a link + # - `MessageLoaded` - Recipient opened the email + # - `DomainDNSError` - Domain DNS issue detected + # + # @overload create(tenant_id, name:, url:, all_events: nil, enabled: nil, events: nil, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param name [String] Webhook name for identification + # + # @param url [String] HTTPS endpoint URL + # + # @param all_events [Boolean, nil] Subscribe to all events (ignores events array, accepts null) + # + # @param enabled [Boolean, nil] Whether the webhook is enabled (accepts null) + # + # @param events [Array, nil] Events to subscribe to (accepts null): + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookCreateResponse] + # + # @see ArkEmail::Models::Tenants::WebhookCreateParams + def create(tenant_id, params) + parsed, options = ArkEmail::Tenants::WebhookCreateParams.dump_request(params) + @client.request( + method: :post, + path: ["tenants/%1$s/webhooks", tenant_id], + body: parsed, + model: ArkEmail::Models::Tenants::WebhookCreateResponse, + options: options + ) + end + + # Get webhook details + # + # @overload retrieve(webhook_id, tenant_id:, request_options: {}) + # + # @param webhook_id [String] Webhook ID + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookRetrieveResponse] + # + # @see ArkEmail::Models::Tenants::WebhookRetrieveParams + def retrieve(webhook_id, params) + parsed, options = ArkEmail::Tenants::WebhookRetrieveParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :get, + path: ["tenants/%1$s/webhooks/%2$s", tenant_id, webhook_id], + model: ArkEmail::Models::Tenants::WebhookRetrieveResponse, + options: options + ) + end + + # Update a webhook + # + # @overload update(webhook_id, tenant_id:, all_events: nil, enabled: nil, events: nil, name: nil, url: nil, request_options: {}) + # + # @param webhook_id [String] Path param: Webhook ID + # + # @param tenant_id [String] Path param: The tenant ID + # + # @param all_events [Boolean, nil] Body param + # + # @param enabled [Boolean, nil] Body param + # + # @param events [Array, nil] Body param + # + # @param name [String, nil] Body param + # + # @param url [String, nil] Body param + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookUpdateResponse] + # + # @see ArkEmail::Models::Tenants::WebhookUpdateParams + def update(webhook_id, params) + parsed, options = ArkEmail::Tenants::WebhookUpdateParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :patch, + path: ["tenants/%1$s/webhooks/%2$s", tenant_id, webhook_id], + body: parsed, + model: ArkEmail::Models::Tenants::WebhookUpdateResponse, + options: options + ) + end + + # Get all configured webhook endpoints for a tenant. + # + # @overload list(tenant_id, request_options: {}) + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookListResponse] + # + # @see ArkEmail::Models::Tenants::WebhookListParams + def list(tenant_id, params = {}) + @client.request( + method: :get, + path: ["tenants/%1$s/webhooks", tenant_id], + model: ArkEmail::Models::Tenants::WebhookListResponse, + options: params[:request_options] + ) + end + + # Delete a webhook + # + # @overload delete(webhook_id, tenant_id:, request_options: {}) + # + # @param webhook_id [String] Webhook ID + # + # @param tenant_id [String] The tenant ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookDeleteResponse] + # + # @see ArkEmail::Models::Tenants::WebhookDeleteParams + def delete(webhook_id, params) + parsed, options = ArkEmail::Tenants::WebhookDeleteParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :delete, + path: ["tenants/%1$s/webhooks/%2$s", tenant_id, webhook_id], + model: ArkEmail::Models::Tenants::WebhookDeleteResponse, + options: options + ) + end + + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::Tenants::WebhookListDeliveriesParams} for more details. + # + # Get a paginated list of delivery attempts for a specific webhook. + # + # Use this to: + # + # - Monitor webhook health and delivery success rate + # - Debug failed deliveries + # - Find specific events to replay + # + # **Filtering:** + # + # - Filter by success/failure to find problematic deliveries + # - Filter by event type to find specific events + # - Filter by time range for debugging recent issues + # + # **Retry behavior:** Failed deliveries are automatically retried with exponential + # backoff over ~3 days. Check `willRetry` to see if more attempts are scheduled. + # + # @overload list_deliveries(webhook_id, tenant_id:, after: nil, before: nil, event: nil, page: nil, per_page: nil, success: nil, request_options: {}) + # + # @param webhook_id [String] Path param: Webhook ID + # + # @param tenant_id [String] Path param: The tenant ID + # + # @param after [Integer] Query param: Only deliveries after this Unix timestamp + # + # @param before [Integer] Query param: Only deliveries before this Unix timestamp + # + # @param event [Symbol, ArkEmail::Models::Tenants::WebhookListDeliveriesParams::Event] Query param: Filter by event type + # + # @param page [Integer] Query param: Page number (default 1) + # + # @param per_page [Integer] Query param: Items per page (default 30, max 100) + # + # @param success [Boolean] Query param: Filter by delivery success (true = 2xx response, false = non-2xx or + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookListDeliveriesResponse] + # + # @see ArkEmail::Models::Tenants::WebhookListDeliveriesParams + def list_deliveries(webhook_id, params) + parsed, options = ArkEmail::Tenants::WebhookListDeliveriesParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :get, + path: ["tenants/%1$s/webhooks/%2$s/deliveries", tenant_id, webhook_id], + query: parsed.transform_keys(per_page: "perPage"), + model: ArkEmail::Models::Tenants::WebhookListDeliveriesResponse, + options: options + ) + end + + # Re-send a webhook delivery to your endpoint. + # + # **Use cases:** + # + # - Recover from transient failures after fixing your endpoint + # - Test endpoint changes with real historical data + # - Retry deliveries that failed due to downtime + # + # **How it works:** + # + # 1. Fetches the original payload from the delivery + # 2. Generates a new timestamp and signature + # 3. Sends to your webhook URL immediately + # 4. Returns the result (does not queue for retry if it fails) + # + # **Note:** The webhook must be enabled to replay deliveries. + # + # @overload replay_delivery(delivery_id, tenant_id:, webhook_id:, request_options: {}) + # + # @param delivery_id [String] Delivery ID (UUID) to replay + # + # @param tenant_id [String] The tenant ID + # + # @param webhook_id [String] Webhook ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse] + # + # @see ArkEmail::Models::Tenants::WebhookReplayDeliveryParams + def replay_delivery(delivery_id, params) + parsed, options = ArkEmail::Tenants::WebhookReplayDeliveryParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + webhook_id = + parsed.delete(:webhook_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :post, + path: ["tenants/%1$s/webhooks/%2$s/deliveries/%3$s/replay", tenant_id, webhook_id, delivery_id], + model: ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse, + options: options + ) + end + + # Get detailed information about a specific webhook delivery attempt. + # + # Returns: + # + # - The complete request payload that was sent + # - Request headers including the signature + # - Response status code and body from your endpoint + # - Timing information + # + # Use this to debug why a delivery failed or verify what data was sent. + # + # @overload retrieve_delivery(delivery_id, tenant_id:, webhook_id:, request_options: {}) + # + # @param delivery_id [String] Delivery ID (UUID) + # + # @param tenant_id [String] The tenant ID + # + # @param webhook_id [String] Webhook ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse] + # + # @see ArkEmail::Models::Tenants::WebhookRetrieveDeliveryParams + def retrieve_delivery(delivery_id, params) + parsed, options = ArkEmail::Tenants::WebhookRetrieveDeliveryParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + webhook_id = + parsed.delete(:webhook_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :get, + path: ["tenants/%1$s/webhooks/%2$s/deliveries/%3$s", tenant_id, webhook_id, delivery_id], + model: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse, + options: options + ) + end + + # Send a test payload to your webhook endpoint and verify it receives the data + # correctly. + # + # Use this to: + # + # - Verify your webhook URL is accessible + # - Test your signature verification code + # - Ensure your server handles the payload format correctly + # + # **Test payload format:** The test payload is identical to real webhook payloads, + # containing sample data for the specified event type. Your webhook should respond + # with a 2xx status code. + # + # @overload test_(webhook_id, tenant_id:, event:, request_options: {}) + # + # @param webhook_id [String] Path param: Webhook ID + # + # @param tenant_id [String] Path param: The tenant ID + # + # @param event [Symbol, ArkEmail::Models::Tenants::WebhookTestParams::Event] Body param: Event type to simulate + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Tenants::WebhookTestResponse] + # + # @see ArkEmail::Models::Tenants::WebhookTestParams + def test_(webhook_id, params) + parsed, options = ArkEmail::Tenants::WebhookTestParams.dump_request(params) + tenant_id = + parsed.delete(:tenant_id) do + raise ArgumentError.new("missing required path argument #{_1}") + end + @client.request( + method: :post, + path: ["tenants/%1$s/webhooks/%2$s/test", tenant_id, webhook_id], + body: parsed, + model: ArkEmail::Models::Tenants::WebhookTestResponse, + options: options + ) + end + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + end + end + end + end +end diff --git a/lib/ark_email/resources/tracking.rb b/lib/ark_email/resources/tracking.rb deleted file mode 100644 index 7c77e86..0000000 --- a/lib/ark_email/resources/tracking.rb +++ /dev/null @@ -1,167 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Resources - class Tracking - # Create a new track domain for open/click tracking. - # - # After creation, you must configure a CNAME record pointing to the provided DNS - # value before tracking will work. - # - # @overload create(domain_id:, name:, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {}) - # - # @param domain_id [Integer] ID of the sending domain to attach this track domain to - # - # @param name [String] Subdomain name (e.g., 'track' for track.yourdomain.com) - # - # @param ssl_enabled [Boolean, nil] Enable SSL for tracking URLs (accepts null, defaults to true) - # - # @param track_clicks [Boolean, nil] Enable click tracking (accepts null, defaults to true) - # - # @param track_opens [Boolean, nil] Enable open tracking (tracking pixel, accepts null, defaults to true) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::TrackingCreateResponse] - # - # @see ArkEmail::Models::TrackingCreateParams - def create(params) - parsed, options = ArkEmail::TrackingCreateParams.dump_request(params) - @client.request( - method: :post, - path: "tracking", - body: parsed, - model: ArkEmail::Models::TrackingCreateResponse, - options: options - ) - end - - # Get details of a specific track domain including DNS configuration - # - # @overload retrieve(tracking_id, request_options: {}) - # - # @param tracking_id [String] Track domain ID or UUID - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::TrackingRetrieveResponse] - # - # @see ArkEmail::Models::TrackingRetrieveParams - def retrieve(tracking_id, params = {}) - @client.request( - method: :get, - path: ["tracking/%1$s", tracking_id], - model: ArkEmail::Models::TrackingRetrieveResponse, - options: params[:request_options] - ) - end - - # Update track domain settings. - # - # Use this to: - # - # - Enable/disable click tracking - # - Enable/disable open tracking - # - Enable/disable SSL - # - Set excluded click domains - # - # @overload update(tracking_id, excluded_click_domains: nil, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {}) - # - # @param tracking_id [String] Track domain ID or UUID - # - # @param excluded_click_domains [String, nil] Comma-separated list of domains to exclude from click tracking (accepts null) - # - # @param ssl_enabled [Boolean, nil] Enable or disable SSL for tracking URLs (accepts null) - # - # @param track_clicks [Boolean, nil] Enable or disable click tracking (accepts null) - # - # @param track_opens [Boolean, nil] Enable or disable open tracking (accepts null) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::TrackingUpdateResponse] - # - # @see ArkEmail::Models::TrackingUpdateParams - def update(tracking_id, params = {}) - parsed, options = ArkEmail::TrackingUpdateParams.dump_request(params) - @client.request( - method: :patch, - path: ["tracking/%1$s", tracking_id], - body: parsed, - model: ArkEmail::Models::TrackingUpdateResponse, - options: options - ) - end - - # List all track domains configured for your server. Track domains enable open and - # click tracking for your emails. - # - # @overload list(request_options: {}) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::TrackingListResponse] - # - # @see ArkEmail::Models::TrackingListParams - def list(params = {}) - @client.request( - method: :get, - path: "tracking", - model: ArkEmail::Models::TrackingListResponse, - options: params[:request_options] - ) - end - - # Delete a track domain. This will disable tracking for any emails using this - # domain. - # - # @overload delete(tracking_id, request_options: {}) - # - # @param tracking_id [String] Track domain ID or UUID - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::TrackingDeleteResponse] - # - # @see ArkEmail::Models::TrackingDeleteParams - def delete(tracking_id, params = {}) - @client.request( - method: :delete, - path: ["tracking/%1$s", tracking_id], - model: ArkEmail::Models::TrackingDeleteResponse, - options: params[:request_options] - ) - end - - # Check DNS configuration for the track domain. - # - # The track domain requires a CNAME record to be configured before open and click - # tracking will work. Use this endpoint to verify the DNS is correctly set up. - # - # @overload verify(tracking_id, request_options: {}) - # - # @param tracking_id [String] Track domain ID or UUID - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::TrackingVerifyResponse] - # - # @see ArkEmail::Models::TrackingVerifyParams - def verify(tracking_id, params = {}) - @client.request( - method: :post, - path: ["tracking/%1$s/verify", tracking_id], - model: ArkEmail::Models::TrackingVerifyResponse, - options: params[:request_options] - ) - end - - # @api private - # - # @param client [ArkEmail::Client] - def initialize(client:) - @client = client - end - end - end -end diff --git a/lib/ark_email/resources/usage.rb b/lib/ark_email/resources/usage.rb index 8c9a0cf..0f4d1fc 100644 --- a/lib/ark_email/resources/usage.rb +++ b/lib/ark_email/resources/usage.rb @@ -3,76 +3,79 @@ module ArkEmail module Resources class Usage - # @deprecated - # - # > **Deprecated:** Use `GET /limits` instead for rate limits and send limits. - # > This endpoint will be removed in a future version. + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::UsageRetrieveParams} for more details. # - # Returns current usage and limit information for your account. + # Returns aggregated email sending statistics for your entire organization. For + # per-tenant breakdown, use `GET /usage/tenants`. # - # This endpoint is designed for: + # **Use cases:** # - # - **AI agents/MCP servers:** Check constraints before planning batch operations - # - **Monitoring dashboards:** Display current usage status - # - **Rate limit awareness:** Know remaining capacity before making requests + # - Platform dashboards showing org-wide metrics + # - Quick health check on overall sending + # - Monitoring total volume and delivery rates # # **Response includes:** # - # - `rateLimit` - API request rate limit (requests per second) - # - `sendLimit` - Email sending limit (emails per hour) - # - `billing` - Credit balance and auto-recharge configuration + # - `emails` - Aggregated email counts across all tenants + # - `rates` - Overall delivery and bounce rates + # - `tenants` - Tenant count summary (total, active, with activity) # - # **Notes:** + # **Related endpoints:** # - # - This request counts against your rate limit - # - `sendLimit` may be null if Postal is temporarily unavailable - # - `billing` is null if billing is not configured - # - Send limit resets at the top of each hour + # - `GET /usage/tenants` - Paginated usage per tenant + # - `GET /usage/export` - Export usage data for billing + # - `GET /tenants/{tenantId}/usage` - Single tenant usage details + # - `GET /limits` - Rate limits and send limits # - # **Migration:** + # @overload retrieve(period: nil, timezone: nil, request_options: {}) # - # - For rate limits and send limits, use `GET /limits` - # - For per-tenant usage analytics, use `GET /tenants/{tenantId}/usage` - # - For bulk tenant usage, use `GET /usage/by-tenant` + # @param period [String] Time period for usage data. # - # @overload retrieve(request_options: {}) + # @param timezone [String] Timezone for period calculations (IANA format) # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] # - # @return [ArkEmail::Models::UsageRetrieveResponse] + # @return [ArkEmail::Models::OrgUsageSummary] # # @see ArkEmail::Models::UsageRetrieveParams def retrieve(params = {}) + parsed, options = ArkEmail::UsageRetrieveParams.dump_request(params) @client.request( method: :get, path: "usage", - model: ArkEmail::Models::UsageRetrieveResponse, - options: params[:request_options] + query: parsed, + model: ArkEmail::OrgUsageSummary, + options: options ) end - # Export usage data for all tenants in a format suitable for billing systems. + # Some parameter documentations has been truncated, see + # {ArkEmail::Models::UsageExportParams} for more details. # - # **Use cases:** + # Export email usage data for all tenants in CSV or JSON Lines format. Designed + # for billing system integration, data warehousing, and analytics. + # + # **Jobs to be done:** # - # - Import into billing systems (Stripe, Chargebee, etc.) - # - Generate invoices - # - Archive usage data + # - Import usage data into billing systems (Stripe, Chargebee, etc.) + # - Load into data warehouses (Snowflake, BigQuery, etc.) + # - Process in spreadsheets (Excel, Google Sheets) + # - Feed into BI tools (Looker, Metabase, etc.) # # **Export formats:** # - # - `csv` - Comma-separated values (default) - # - `jsonl` - JSON Lines (one JSON object per line) - # - `json` - JSON array + # - `csv` - UTF-8 with BOM for Excel compatibility (default) + # - `jsonl` - JSON Lines (one JSON object per line, streamable) # - # **Response headers:** + # **CSV columns:** `tenant_id`, `tenant_name`, `external_id`, `status`, `sent`, + # `delivered`, `soft_failed`, `hard_failed`, `bounced`, `held`, `delivery_rate`, + # `bounce_rate`, `period_start`, `period_end` # - # - `X-Total-Tenants` - Total number of tenants in export - # - `X-Total-Sent` - Total emails sent across all tenants - # - `Content-Disposition` - Suggested filename for download + # **Response headers:** # - # This endpoint returns up to 10,000 tenants per request. For organizations with - # more tenants, use the `/usage/by-tenant` endpoint with pagination. + # - `Content-Disposition` - Filename for download + # - `Content-Type` - `text/csv` or `application/x-ndjson` # # @overload export(format_: nil, min_sent: nil, period: nil, status: nil, timezone: nil, request_options: {}) # @@ -80,11 +83,11 @@ def retrieve(params = {}) # # @param min_sent [Integer] Only include tenants with at least this many emails sent # - # @param period [String] Time period for export. Defaults to current month. + # @param period [String] Time period for export. # # @param status [Symbol, ArkEmail::Models::UsageExportParams::Status] Filter by tenant status # - # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. + # @param timezone [String] Timezone for period calculations (IANA format) # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] # @@ -96,157 +99,68 @@ def export(params = {}) @client.request( method: :get, path: "usage/export", - query: parsed.transform_keys(format_: "format"), + query: parsed.transform_keys(format_: "format", min_sent: "minSent"), model: ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::UsageExportResponseItem], options: options ) end # Some parameter documentations has been truncated, see - # {ArkEmail::Models::UsageListByTenantParams} for more details. + # {ArkEmail::Models::UsageListTenantsParams} for more details. # - # Returns email usage statistics for all tenants in your organization. + # Returns email usage statistics for all tenants in your organization. Results are + # paginated with page-based navigation. # - # **Use cases:** + # **Jobs to be done:** # - # - Generate monthly billing reports + # - Generate monthly billing invoices per tenant # - Build admin dashboards showing all customer usage # - Identify high-volume or problematic tenants + # - Track usage against plan limits # # **Sorting options:** # # - `sent`, `-sent` - Sort by emails sent (ascending/descending) # - `delivered`, `-delivered` - Sort by emails delivered # - `bounce_rate`, `-bounce_rate` - Sort by bounce rate - # - `name`, `-name` - Sort alphabetically by tenant name + # - `tenant_name`, `-tenant_name` - Sort alphabetically by tenant name # # **Filtering:** # # - `status` - Filter by tenant status (active, suspended, archived) - # - `min_sent` - Only include tenants with at least N emails sent + # - `minSent` - Only include tenants with at least N emails sent # - # Results are paginated. Use `limit` and `offset` for pagination. + # **Auto-pagination:** SDKs support iterating over all pages automatically. # - # @overload list_by_tenant(limit: nil, min_sent: nil, offset: nil, period: nil, sort: nil, status: nil, timezone: nil, request_options: {}) - # - # @param limit [Integer] Maximum number of tenants to return (1-100) + # @overload list_tenants(min_sent: nil, page: nil, period: nil, per_page: nil, sort: nil, status: nil, timezone: nil, request_options: {}) # # @param min_sent [Integer] Only include tenants with at least this many emails sent # - # @param offset [Integer] Number of tenants to skip for pagination + # @param page [Integer] Page number (1-indexed) # # @param period [String] Time period for usage data. Defaults to current month. # - # @param sort [Symbol, ArkEmail::Models::UsageListByTenantParams::Sort] Sort order for results. Prefix with `-` for descending order. - # - # @param status [Symbol, ArkEmail::Models::UsageListByTenantParams::Status] Filter by tenant status - # - # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Internal::OffsetPagination] - # - # @see ArkEmail::Models::UsageListByTenantParams - def list_by_tenant(params = {}) - parsed, options = ArkEmail::UsageListByTenantParams.dump_request(params) - @client.request( - method: :get, - path: "usage/by-tenant", - query: parsed, - page: ArkEmail::Internal::OffsetPagination, - model: ArkEmail::BulkTenantUsage::Tenant, - options: options - ) - end - - # Returns time-bucketed email statistics for a specific tenant. - # - # **Use cases:** - # - # - Build usage charts and graphs - # - Identify sending patterns - # - Detect anomalies in delivery rates - # - # **Granularity options:** - # - # - `hour` - Hourly buckets (best for last 7 days) - # - `day` - Daily buckets (best for last 30-90 days) - # - `week` - Weekly buckets (best for last 6 months) - # - `month` - Monthly buckets (best for year-over-year) + # @param per_page [Integer] Results per page (max 100) # - # The response includes a data point for each time bucket with all email metrics. + # @param sort [Symbol, ArkEmail::Models::UsageListTenantsParams::Sort] Sort order for results. Prefix with `-` for descending order. # - # @overload retrieve_tenant_timeseries(tenant_id, granularity: nil, period: nil, timezone: nil, request_options: {}) - # - # @param tenant_id [String] The tenant ID - # - # @param granularity [Symbol, ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::Granularity] Time bucket size for data points - # - # @param period [String] Time period for timeseries data. Defaults to current month. + # @param status [Symbol, ArkEmail::Models::UsageListTenantsParams::Status] Filter by tenant status # # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. # # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] # - # @return [ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse] + # @return [ArkEmail::Internal::PageNumberPagination] # - # @see ArkEmail::Models::UsageRetrieveTenantTimeseriesParams - def retrieve_tenant_timeseries(tenant_id, params = {}) - parsed, options = ArkEmail::UsageRetrieveTenantTimeseriesParams.dump_request(params) + # @see ArkEmail::Models::UsageListTenantsParams + def list_tenants(params = {}) + parsed, options = ArkEmail::UsageListTenantsParams.dump_request(params) @client.request( method: :get, - path: ["tenants/%1$s/usage/timeseries", tenant_id], - query: parsed, - model: ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse, - options: options - ) - end - - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::UsageRetrieveTenantUsageParams} for more details. - # - # Returns email sending statistics for a specific tenant over a time period. - # - # **Use cases:** - # - # - Display usage dashboard to your customers - # - Calculate per-tenant billing - # - Monitor tenant health and delivery rates - # - # **Period formats:** - # - # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, - # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` - # - Month: `2024-01` (full month) - # - Date range: `2024-01-01..2024-01-31` - # - Single day: `2024-01-15` - # - # **Response includes:** - # - # - `emails` - Counts for sent, delivered, soft_failed, hard_failed, bounced, held - # - `rates` - Delivery rate and bounce rate as decimals (0.95 = 95%) - # - # @overload retrieve_tenant_usage(tenant_id, period: nil, timezone: nil, request_options: {}) - # - # @param tenant_id [String] The tenant ID - # - # @param period [String] Time period for usage data. Defaults to current month. - # - # @param timezone [String] Timezone for period calculations (IANA format). Defaults to UTC. - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::UsageRetrieveTenantUsageResponse] - # - # @see ArkEmail::Models::UsageRetrieveTenantUsageParams - def retrieve_tenant_usage(tenant_id, params = {}) - parsed, options = ArkEmail::UsageRetrieveTenantUsageParams.dump_request(params) - @client.request( - method: :get, - path: ["tenants/%1$s/usage", tenant_id], - query: parsed, - model: ArkEmail::Models::UsageRetrieveTenantUsageResponse, + path: "usage/tenants", + query: parsed.transform_keys(min_sent: "minSent", per_page: "perPage"), + page: ArkEmail::Internal::PageNumberPagination, + model: ArkEmail::TenantUsageItem, options: options ) end diff --git a/lib/ark_email/resources/webhooks.rb b/lib/ark_email/resources/webhooks.rb deleted file mode 100644 index dce22fc..0000000 --- a/lib/ark_email/resources/webhooks.rb +++ /dev/null @@ -1,302 +0,0 @@ -# frozen_string_literal: true - -module ArkEmail - module Resources - class Webhooks - # Some parameter documentations has been truncated, see - # {ArkEmail::Models::WebhookCreateParams} for more details. - # - # Create a webhook endpoint to receive email event notifications. - # - # **Available events:** - # - # - `MessageSent` - Email accepted by recipient server - # - `MessageDeliveryFailed` - Delivery permanently failed - # - `MessageDelayed` - Delivery temporarily failed, will retry - # - `MessageBounced` - Email bounced - # - `MessageHeld` - Email held for review - # - `MessageLinkClicked` - Recipient clicked a link - # - `MessageLoaded` - Recipient opened the email - # - `DomainDNSError` - Domain DNS issue detected - # - # @overload create(name:, url:, all_events: nil, enabled: nil, events: nil, request_options: {}) - # - # @param name [String] Webhook name for identification - # - # @param url [String] HTTPS endpoint URL - # - # @param all_events [Boolean, nil] Subscribe to all events (ignores events array, accepts null) - # - # @param enabled [Boolean, nil] Whether the webhook is enabled (accepts null) - # - # @param events [Array, nil] Events to subscribe to (accepts null): - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookCreateResponse] - # - # @see ArkEmail::Models::WebhookCreateParams - def create(params) - parsed, options = ArkEmail::WebhookCreateParams.dump_request(params) - @client.request( - method: :post, - path: "webhooks", - body: parsed, - model: ArkEmail::Models::WebhookCreateResponse, - options: options - ) - end - - # Get webhook details - # - # @overload retrieve(webhook_id, request_options: {}) - # - # @param webhook_id [String] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookRetrieveResponse] - # - # @see ArkEmail::Models::WebhookRetrieveParams - def retrieve(webhook_id, params = {}) - @client.request( - method: :get, - path: ["webhooks/%1$s", webhook_id], - model: ArkEmail::Models::WebhookRetrieveResponse, - options: params[:request_options] - ) - end - - # Update a webhook - # - # @overload update(webhook_id, all_events: nil, enabled: nil, events: nil, name: nil, url: nil, request_options: {}) - # - # @param webhook_id [String] - # @param all_events [Boolean, nil] - # @param enabled [Boolean, nil] - # @param events [Array, nil] - # @param name [String, nil] - # @param url [String, nil] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookUpdateResponse] - # - # @see ArkEmail::Models::WebhookUpdateParams - def update(webhook_id, params = {}) - parsed, options = ArkEmail::WebhookUpdateParams.dump_request(params) - @client.request( - method: :patch, - path: ["webhooks/%1$s", webhook_id], - body: parsed, - model: ArkEmail::Models::WebhookUpdateResponse, - options: options - ) - end - - # Get all configured webhook endpoints - # - # @overload list(request_options: {}) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookListResponse] - # - # @see ArkEmail::Models::WebhookListParams - def list(params = {}) - @client.request( - method: :get, - path: "webhooks", - model: ArkEmail::Models::WebhookListResponse, - options: params[:request_options] - ) - end - - # Delete a webhook - # - # @overload delete(webhook_id, request_options: {}) - # - # @param webhook_id [String] - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookDeleteResponse] - # - # @see ArkEmail::Models::WebhookDeleteParams - def delete(webhook_id, params = {}) - @client.request( - method: :delete, - path: ["webhooks/%1$s", webhook_id], - model: ArkEmail::Models::WebhookDeleteResponse, - options: params[:request_options] - ) - end - - # Get a paginated list of delivery attempts for a specific webhook. - # - # Use this to: - # - # - Monitor webhook health and delivery success rate - # - Debug failed deliveries - # - Find specific events to replay - # - # **Filtering:** - # - # - Filter by success/failure to find problematic deliveries - # - Filter by event type to find specific events - # - Filter by time range for debugging recent issues - # - # **Retry behavior:** Failed deliveries are automatically retried with exponential - # backoff over ~3 days. Check `willRetry` to see if more attempts are scheduled. - # - # @overload list_deliveries(webhook_id, after: nil, before: nil, event: nil, page: nil, per_page: nil, success: nil, request_options: {}) - # - # @param webhook_id [String] Webhook ID or UUID - # - # @param after [Integer] Only deliveries after this Unix timestamp - # - # @param before [Integer] Only deliveries before this Unix timestamp - # - # @param event [Symbol, ArkEmail::Models::WebhookListDeliveriesParams::Event] Filter by event type - # - # @param page [Integer] Page number (default 1) - # - # @param per_page [Integer] Items per page (default 30, max 100) - # - # @param success [Boolean] Filter by delivery success (true = 2xx response, false = non-2xx or error) - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookListDeliveriesResponse] - # - # @see ArkEmail::Models::WebhookListDeliveriesParams - def list_deliveries(webhook_id, params = {}) - parsed, options = ArkEmail::WebhookListDeliveriesParams.dump_request(params) - @client.request( - method: :get, - path: ["webhooks/%1$s/deliveries", webhook_id], - query: parsed.transform_keys(per_page: "perPage"), - model: ArkEmail::Models::WebhookListDeliveriesResponse, - options: options - ) - end - - # Re-send a webhook delivery to your endpoint. - # - # **Use cases:** - # - # - Recover from transient failures after fixing your endpoint - # - Test endpoint changes with real historical data - # - Retry deliveries that failed due to downtime - # - # **How it works:** - # - # 1. Fetches the original payload from the delivery - # 2. Generates a new timestamp and signature - # 3. Sends to your webhook URL immediately - # 4. Returns the result (does not queue for retry if it fails) - # - # **Note:** The webhook must be enabled to replay deliveries. - # - # @overload replay_delivery(delivery_id, webhook_id:, request_options: {}) - # - # @param delivery_id [String] Delivery ID (UUID) to replay - # - # @param webhook_id [String] Webhook ID or UUID - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookReplayDeliveryResponse] - # - # @see ArkEmail::Models::WebhookReplayDeliveryParams - def replay_delivery(delivery_id, params) - parsed, options = ArkEmail::WebhookReplayDeliveryParams.dump_request(params) - webhook_id = - parsed.delete(:webhook_id) do - raise ArgumentError.new("missing required path argument #{_1}") - end - @client.request( - method: :post, - path: ["webhooks/%1$s/deliveries/%2$s/replay", webhook_id, delivery_id], - model: ArkEmail::Models::WebhookReplayDeliveryResponse, - options: options - ) - end - - # Get detailed information about a specific webhook delivery attempt. - # - # Returns: - # - # - The complete request payload that was sent - # - Request headers including the signature - # - Response status code and body from your endpoint - # - Timing information - # - # Use this to debug why a delivery failed or verify what data was sent. - # - # @overload retrieve_delivery(delivery_id, webhook_id:, request_options: {}) - # - # @param delivery_id [String] Delivery ID (UUID) - # - # @param webhook_id [String] Webhook ID or UUID - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookRetrieveDeliveryResponse] - # - # @see ArkEmail::Models::WebhookRetrieveDeliveryParams - def retrieve_delivery(delivery_id, params) - parsed, options = ArkEmail::WebhookRetrieveDeliveryParams.dump_request(params) - webhook_id = - parsed.delete(:webhook_id) do - raise ArgumentError.new("missing required path argument #{_1}") - end - @client.request( - method: :get, - path: ["webhooks/%1$s/deliveries/%2$s", webhook_id, delivery_id], - model: ArkEmail::Models::WebhookRetrieveDeliveryResponse, - options: options - ) - end - - # Send a test payload to your webhook endpoint and verify it receives the data - # correctly. - # - # Use this to: - # - # - Verify your webhook URL is accessible - # - Test your signature verification code - # - Ensure your server handles the payload format correctly - # - # **Test payload format:** The test payload is identical to real webhook payloads, - # containing sample data for the specified event type. Your webhook should respond - # with a 2xx status code. - # - # @overload test_(webhook_id, event:, request_options: {}) - # - # @param webhook_id [String] Webhook ID or UUID - # - # @param event [Symbol, ArkEmail::Models::WebhookTestParams::Event] Event type to simulate - # - # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] - # - # @return [ArkEmail::Models::WebhookTestResponse] - # - # @see ArkEmail::Models::WebhookTestParams - def test_(webhook_id, params) - parsed, options = ArkEmail::WebhookTestParams.dump_request(params) - @client.request( - method: :post, - path: ["webhooks/%1$s/test", webhook_id], - body: parsed, - model: ArkEmail::Models::WebhookTestResponse, - options: options - ) - end - - # @api private - # - # @param client [ArkEmail::Client] - def initialize(client:) - @client = client - end - end - end -end diff --git a/rbi/ark_email/client.rbi b/rbi/ark_email/client.rbi index 13ddda0..1452273 100644 --- a/rbi/ark_email/client.rbi +++ b/rbi/ark_email/client.rbi @@ -22,27 +22,15 @@ module ArkEmail sig { returns(ArkEmail::Resources::Emails) } attr_reader :emails - sig { returns(ArkEmail::Resources::Domains) } - attr_reader :domains - - sig { returns(ArkEmail::Resources::Suppressions) } - attr_reader :suppressions - - sig { returns(ArkEmail::Resources::Webhooks) } - attr_reader :webhooks - - sig { returns(ArkEmail::Resources::Tracking) } - attr_reader :tracking - sig { returns(ArkEmail::Resources::Logs) } attr_reader :logs - sig { returns(ArkEmail::Resources::Limits) } - attr_reader :limits - sig { returns(ArkEmail::Resources::Usage) } attr_reader :usage + sig { returns(ArkEmail::Resources::Limits) } + attr_reader :limits + sig { returns(ArkEmail::Resources::Tenants) } attr_reader :tenants diff --git a/rbi/ark_email/internal/offset_pagination.rbi b/rbi/ark_email/internal/offset_pagination.rbi deleted file mode 100644 index 2a8987b..0000000 --- a/rbi/ark_email/internal/offset_pagination.rbi +++ /dev/null @@ -1,110 +0,0 @@ -# typed: strong - -module ArkEmail - module Internal - class OffsetPagination - include ArkEmail::Internal::Type::BasePage - - Elem = type_member - - sig { returns(Data) } - attr_accessor :data - - # @api private - sig { returns(String) } - def inspect - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = T.type_alias { T.any(Data, ArkEmail::Internal::AnyHash) } - - sig { returns(T.nilable(Data::Pagination)) } - attr_reader :pagination - - sig { params(pagination: Data::Pagination::OrHash).void } - attr_writer :pagination - - sig { returns(T.nilable(T::Array[T::Hash[Symbol, T.anything]])) } - attr_reader :tenants - - sig { params(tenants: T::Array[T::Hash[Symbol, T.anything]]).void } - attr_writer :tenants - - sig do - params( - pagination: Data::Pagination::OrHash, - tenants: T::Array[T::Hash[Symbol, T.anything]] - ).returns(T.attached_class) - end - def self.new(pagination: nil, tenants: nil) - end - - sig do - override.returns( - { - pagination: Data::Pagination, - tenants: T::Array[T::Hash[Symbol, T.anything]] - } - ) - end - def to_hash - end - - class Pagination < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any(Data::Pagination, ArkEmail::Internal::AnyHash) - end - - sig { returns(T.nilable(T::Boolean)) } - attr_reader :has_more - - sig { params(has_more: T::Boolean).void } - attr_writer :has_more - - sig { returns(T.nilable(Integer)) } - attr_reader :limit - - sig { params(limit: Integer).void } - attr_writer :limit - - sig { returns(T.nilable(Integer)) } - attr_reader :offset - - sig { params(offset: Integer).void } - attr_writer :offset - - sig { returns(T.nilable(Integer)) } - attr_reader :total - - sig { params(total: Integer).void } - attr_writer :total - - sig do - params( - has_more: T::Boolean, - limit: Integer, - offset: Integer, - total: Integer - ).returns(T.attached_class) - end - def self.new(has_more: nil, limit: nil, offset: nil, total: nil) - end - - sig do - override.returns( - { - has_more: T::Boolean, - limit: Integer, - offset: Integer, - total: Integer - } - ) - end - def to_hash - end - end - end - end - end -end diff --git a/rbi/ark_email/models.rbi b/rbi/ark_email/models.rbi index 10cdb6f..802e04a 100644 --- a/rbi/ark_email/models.rbi +++ b/rbi/ark_email/models.rbi @@ -3,20 +3,6 @@ module ArkEmail APIMeta = ArkEmail::Models::APIMeta - BulkTenantUsage = ArkEmail::Models::BulkTenantUsage - - DNSRecord = ArkEmail::Models::DNSRecord - - DomainCreateParams = ArkEmail::Models::DomainCreateParams - - DomainDeleteParams = ArkEmail::Models::DomainDeleteParams - - DomainListParams = ArkEmail::Models::DomainListParams - - DomainRetrieveParams = ArkEmail::Models::DomainRetrieveParams - - DomainVerifyParams = ArkEmail::Models::DomainVerifyParams - EmailCounts = ArkEmail::Models::EmailCounts EmailListParams = ArkEmail::Models::EmailListParams @@ -48,15 +34,7 @@ module ArkEmail LogRetrieveParams = ArkEmail::Models::LogRetrieveParams - SuppressionBulkCreateParams = ArkEmail::Models::SuppressionBulkCreateParams - - SuppressionCreateParams = ArkEmail::Models::SuppressionCreateParams - - SuppressionDeleteParams = ArkEmail::Models::SuppressionDeleteParams - - SuppressionListParams = ArkEmail::Models::SuppressionListParams - - SuppressionRetrieveParams = ArkEmail::Models::SuppressionRetrieveParams + OrgUsageSummary = ArkEmail::Models::OrgUsageSummary Tenant = ArkEmail::Models::Tenant @@ -72,54 +50,13 @@ module ArkEmail TenantUpdateParams = ArkEmail::Models::TenantUpdateParams - TenantUsage = ArkEmail::Models::TenantUsage - - TenantUsageTimeseries = ArkEmail::Models::TenantUsageTimeseries - - TrackDomain = ArkEmail::Models::TrackDomain - - TrackingCreateParams = ArkEmail::Models::TrackingCreateParams - - TrackingDeleteParams = ArkEmail::Models::TrackingDeleteParams - - TrackingListParams = ArkEmail::Models::TrackingListParams - - TrackingRetrieveParams = ArkEmail::Models::TrackingRetrieveParams - - TrackingUpdateParams = ArkEmail::Models::TrackingUpdateParams - - TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams + TenantUsageItem = ArkEmail::Models::TenantUsageItem UsageExportParams = ArkEmail::Models::UsageExportParams - UsageListByTenantParams = ArkEmail::Models::UsageListByTenantParams + UsageListTenantsParams = ArkEmail::Models::UsageListTenantsParams UsagePeriod = ArkEmail::Models::UsagePeriod UsageRetrieveParams = ArkEmail::Models::UsageRetrieveParams - - UsageRetrieveTenantTimeseriesParams = - ArkEmail::Models::UsageRetrieveTenantTimeseriesParams - - UsageRetrieveTenantUsageParams = - ArkEmail::Models::UsageRetrieveTenantUsageParams - - WebhookCreateParams = ArkEmail::Models::WebhookCreateParams - - WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams - - WebhookListDeliveriesParams = ArkEmail::Models::WebhookListDeliveriesParams - - WebhookListParams = ArkEmail::Models::WebhookListParams - - WebhookReplayDeliveryParams = ArkEmail::Models::WebhookReplayDeliveryParams - - WebhookRetrieveDeliveryParams = - ArkEmail::Models::WebhookRetrieveDeliveryParams - - WebhookRetrieveParams = ArkEmail::Models::WebhookRetrieveParams - - WebhookTestParams = ArkEmail::Models::WebhookTestParams - - WebhookUpdateParams = ArkEmail::Models::WebhookUpdateParams end diff --git a/rbi/ark_email/models/bulk_tenant_usage.rbi b/rbi/ark_email/models/bulk_tenant_usage.rbi deleted file mode 100644 index 042b4cd..0000000 --- a/rbi/ark_email/models/bulk_tenant_usage.rbi +++ /dev/null @@ -1,302 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class BulkTenantUsage < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any(ArkEmail::BulkTenantUsage, ArkEmail::Internal::AnyHash) - end - - # Pagination information for usage queries - sig { returns(ArkEmail::BulkTenantUsage::Pagination) } - attr_reader :pagination - - sig do - params(pagination: ArkEmail::BulkTenantUsage::Pagination::OrHash).void - end - attr_writer :pagination - - # Time period for usage data - sig { returns(ArkEmail::UsagePeriod) } - attr_reader :period - - sig { params(period: ArkEmail::UsagePeriod::OrHash).void } - attr_writer :period - - # Aggregate summary across all tenants - sig { returns(ArkEmail::BulkTenantUsage::Summary) } - attr_reader :summary - - sig { params(summary: ArkEmail::BulkTenantUsage::Summary::OrHash).void } - attr_writer :summary - - # Array of tenant usage records - sig { returns(T::Array[ArkEmail::BulkTenantUsage::Tenant]) } - attr_accessor :tenants - - # Bulk tenant usage data with pagination - sig do - params( - pagination: ArkEmail::BulkTenantUsage::Pagination::OrHash, - period: ArkEmail::UsagePeriod::OrHash, - summary: ArkEmail::BulkTenantUsage::Summary::OrHash, - tenants: T::Array[ArkEmail::BulkTenantUsage::Tenant::OrHash] - ).returns(T.attached_class) - end - def self.new( - # Pagination information for usage queries - pagination:, - # Time period for usage data - period:, - # Aggregate summary across all tenants - summary:, - # Array of tenant usage records - tenants: - ) - end - - sig do - override.returns( - { - pagination: ArkEmail::BulkTenantUsage::Pagination, - period: ArkEmail::UsagePeriod, - summary: ArkEmail::BulkTenantUsage::Summary, - tenants: T::Array[ArkEmail::BulkTenantUsage::Tenant] - } - ) - end - def to_hash - end - - class Pagination < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::BulkTenantUsage::Pagination, - ArkEmail::Internal::AnyHash - ) - end - - # Whether more pages are available - sig { returns(T::Boolean) } - attr_accessor :has_more - - # Maximum items per page - sig { returns(Integer) } - attr_accessor :limit - - # Number of items skipped - sig { returns(Integer) } - attr_accessor :offset - - # Total number of tenants matching the query - sig { returns(Integer) } - attr_accessor :total - - # Pagination information for usage queries - sig do - params( - has_more: T::Boolean, - limit: Integer, - offset: Integer, - total: Integer - ).returns(T.attached_class) - end - def self.new( - # Whether more pages are available - has_more:, - # Maximum items per page - limit:, - # Number of items skipped - offset:, - # Total number of tenants matching the query - total: - ) - end - - sig do - override.returns( - { - has_more: T::Boolean, - limit: Integer, - offset: Integer, - total: Integer - } - ) - end - def to_hash - end - end - - class Summary < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::BulkTenantUsage::Summary, - ArkEmail::Internal::AnyHash - ) - end - - # Total emails delivered across all tenants - sig { returns(Integer) } - attr_accessor :total_delivered - - # Total emails sent across all tenants - sig { returns(Integer) } - attr_accessor :total_sent - - # Total number of tenants in the query - sig { returns(Integer) } - attr_accessor :total_tenants - - # Aggregate summary across all tenants - sig do - params( - total_delivered: Integer, - total_sent: Integer, - total_tenants: Integer - ).returns(T.attached_class) - end - def self.new( - # Total emails delivered across all tenants - total_delivered:, - # Total emails sent across all tenants - total_sent:, - # Total number of tenants in the query - total_tenants: - ) - end - - sig do - override.returns( - { - total_delivered: Integer, - total_sent: Integer, - total_tenants: Integer - } - ) - end - def to_hash - end - end - - class Tenant < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::BulkTenantUsage::Tenant, - ArkEmail::Internal::AnyHash - ) - end - - # Email delivery counts - sig { returns(ArkEmail::EmailCounts) } - attr_reader :emails - - sig { params(emails: ArkEmail::EmailCounts::OrHash).void } - attr_writer :emails - - # Email delivery rates (as decimals, e.g., 0.95 = 95%) - sig { returns(ArkEmail::EmailRates) } - attr_reader :rates - - sig { params(rates: ArkEmail::EmailRates::OrHash).void } - attr_writer :rates - - # Current tenant status - sig { returns(ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol) } - attr_accessor :status - - # Unique tenant identifier - sig { returns(String) } - attr_accessor :tenant_id - - # Tenant display name - sig { returns(String) } - attr_accessor :tenant_name - - # Your external ID for this tenant - sig { returns(T.nilable(String)) } - attr_accessor :external_id - - # Usage record for a single tenant in bulk response - sig do - params( - emails: ArkEmail::EmailCounts::OrHash, - rates: ArkEmail::EmailRates::OrHash, - status: ArkEmail::BulkTenantUsage::Tenant::Status::OrSymbol, - tenant_id: String, - tenant_name: String, - external_id: T.nilable(String) - ).returns(T.attached_class) - end - def self.new( - # Email delivery counts - emails:, - # Email delivery rates (as decimals, e.g., 0.95 = 95%) - rates:, - # Current tenant status - status:, - # Unique tenant identifier - tenant_id:, - # Tenant display name - tenant_name:, - # Your external ID for this tenant - external_id: nil - ) - end - - sig do - override.returns( - { - emails: ArkEmail::EmailCounts, - rates: ArkEmail::EmailRates, - status: ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol, - tenant_id: String, - tenant_name: String, - external_id: T.nilable(String) - } - ) - end - def to_hash - end - - # Current tenant status - module Status - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all(Symbol, ArkEmail::BulkTenantUsage::Tenant::Status) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - ACTIVE = - T.let( - :active, - ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol - ) - SUSPENDED = - T.let( - :suspended, - ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol - ) - ARCHIVED = - T.let( - :archived, - ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ArkEmail::BulkTenantUsage::Tenant::Status::TaggedSymbol] - ) - end - def self.values - end - end - end - end - end -end diff --git a/rbi/ark_email/models/dns_record.rbi b/rbi/ark_email/models/dns_record.rbi deleted file mode 100644 index fc59cfb..0000000 --- a/rbi/ark_email/models/dns_record.rbi +++ /dev/null @@ -1,146 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DNSRecord < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias { T.any(ArkEmail::DNSRecord, ArkEmail::Internal::AnyHash) } - - # The complete fully-qualified domain name (FQDN). Use this as a reference to - # verify the record is configured correctly. - sig { returns(String) } - attr_accessor :full_name - - # The relative hostname to enter in your DNS provider. Most DNS providers - # auto-append the zone name, so you only need to enter this relative part. - # - # - `"@"` means the apex/root of the zone (for root domains) - # - `"mail"` for a subdomain like `mail.example.com` - # - `"ark-xyz._domainkey.mail"` for DKIM on a subdomain - sig { returns(String) } - attr_accessor :name - - # The DNS record type to create - sig { returns(ArkEmail::DNSRecord::Type::TaggedSymbol) } - attr_accessor :type - - # The value to set for the DNS record - sig { returns(String) } - attr_accessor :value - - # Current verification status of this DNS record: - # - # - `OK` - Record is correctly configured and verified - # - `Missing` - Record was not found in your DNS - # - `Invalid` - Record exists but has an incorrect value - # - `null` - Record has not been checked yet - sig { returns(T.nilable(ArkEmail::DNSRecord::Status::TaggedSymbol)) } - attr_accessor :status - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig do - params( - full_name: String, - name: String, - type: ArkEmail::DNSRecord::Type::OrSymbol, - value: String, - status: T.nilable(ArkEmail::DNSRecord::Status::OrSymbol) - ).returns(T.attached_class) - end - def self.new( - # The complete fully-qualified domain name (FQDN). Use this as a reference to - # verify the record is configured correctly. - full_name:, - # The relative hostname to enter in your DNS provider. Most DNS providers - # auto-append the zone name, so you only need to enter this relative part. - # - # - `"@"` means the apex/root of the zone (for root domains) - # - `"mail"` for a subdomain like `mail.example.com` - # - `"ark-xyz._domainkey.mail"` for DKIM on a subdomain - name:, - # The DNS record type to create - type:, - # The value to set for the DNS record - value:, - # Current verification status of this DNS record: - # - # - `OK` - Record is correctly configured and verified - # - `Missing` - Record was not found in your DNS - # - `Invalid` - Record exists but has an incorrect value - # - `null` - Record has not been checked yet - status: nil - ) - end - - sig do - override.returns( - { - full_name: String, - name: String, - type: ArkEmail::DNSRecord::Type::TaggedSymbol, - value: String, - status: T.nilable(ArkEmail::DNSRecord::Status::TaggedSymbol) - } - ) - end - def to_hash - end - - # The DNS record type to create - module Type - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = T.type_alias { T.all(Symbol, ArkEmail::DNSRecord::Type) } - OrSymbol = T.type_alias { T.any(Symbol, String) } - - TXT = T.let(:TXT, ArkEmail::DNSRecord::Type::TaggedSymbol) - CNAME = T.let(:CNAME, ArkEmail::DNSRecord::Type::TaggedSymbol) - MX = T.let(:MX, ArkEmail::DNSRecord::Type::TaggedSymbol) - - sig do - override.returns(T::Array[ArkEmail::DNSRecord::Type::TaggedSymbol]) - end - def self.values - end - end - - # Current verification status of this DNS record: - # - # - `OK` - Record is correctly configured and verified - # - `Missing` - Record was not found in your DNS - # - `Invalid` - Record exists but has an incorrect value - # - `null` - Record has not been checked yet - module Status - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias { T.all(Symbol, ArkEmail::DNSRecord::Status) } - OrSymbol = T.type_alias { T.any(Symbol, String) } - - OK = T.let(:OK, ArkEmail::DNSRecord::Status::TaggedSymbol) - MISSING = T.let(:Missing, ArkEmail::DNSRecord::Status::TaggedSymbol) - INVALID = T.let(:Invalid, ArkEmail::DNSRecord::Status::TaggedSymbol) - - sig do - override.returns(T::Array[ArkEmail::DNSRecord::Status::TaggedSymbol]) - end - def self.values - end - end - end - end -end diff --git a/rbi/ark_email/models/domain_create_params.rbi b/rbi/ark_email/models/domain_create_params.rbi deleted file mode 100644 index ceba7e0..0000000 --- a/rbi/ark_email/models/domain_create_params.rbi +++ /dev/null @@ -1,51 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::DomainCreateParams, ArkEmail::Internal::AnyHash) - end - - # Domain name (e.g., "mail.example.com") - sig { returns(String) } - attr_accessor :name - - # ID of the tenant this domain belongs to - sig { returns(String) } - attr_accessor :tenant_id - - sig do - params( - name: String, - tenant_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Domain name (e.g., "mail.example.com") - name:, - # ID of the tenant this domain belongs to - tenant_id:, - request_options: {} - ) - end - - sig do - override.returns( - { - name: String, - tenant_id: String, - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/domain_create_response.rbi b/rbi/ark_email/models/domain_create_response.rbi deleted file mode 100644 index 560242f..0000000 --- a/rbi/ark_email/models/domain_create_response.rbi +++ /dev/null @@ -1,376 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainCreateResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainCreateResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::DomainCreateResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::DomainCreateResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::DomainCreateResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::DomainCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainCreateResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Unique domain identifier - sig { returns(Integer) } - attr_accessor :id - - # Timestamp when the domain was added - sig { returns(Time) } - attr_accessor :created_at - - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - sig do - returns( - T.nilable(ArkEmail::Models::DomainCreateResponse::Data::DNSRecords) - ) - end - attr_reader :dns_records - - sig do - params( - dns_records: - T.nilable( - ArkEmail::Models::DomainCreateResponse::Data::DNSRecords::OrHash - ) - ).void - end - attr_writer :dns_records - - # The domain name used for sending emails - sig { returns(String) } - attr_accessor :name - - # UUID of the domain - sig { returns(String) } - attr_accessor :uuid - - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - sig { returns(T::Boolean) } - attr_accessor :verified - - # ID of the tenant this domain belongs to - sig { returns(T.nilable(String)) } - attr_reader :tenant_id - - sig { params(tenant_id: String).void } - attr_writer :tenant_id - - # Name of the tenant this domain belongs to - sig { returns(T.nilable(String)) } - attr_reader :tenant_name - - sig { params(tenant_name: String).void } - attr_writer :tenant_name - - # Timestamp when the domain ownership was verified, or null if not yet verified - sig { returns(T.nilable(Time)) } - attr_accessor :verified_at - - sig do - params( - id: Integer, - created_at: Time, - dns_records: - T.nilable( - ArkEmail::Models::DomainCreateResponse::Data::DNSRecords::OrHash - ), - name: String, - uuid: String, - verified: T::Boolean, - tenant_id: String, - tenant_name: String, - verified_at: T.nilable(Time) - ).returns(T.attached_class) - end - def self.new( - # Unique domain identifier - id:, - # Timestamp when the domain was added - created_at:, - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - dns_records:, - # The domain name used for sending emails - name:, - # UUID of the domain - uuid:, - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - verified:, - # ID of the tenant this domain belongs to - tenant_id: nil, - # Name of the tenant this domain belongs to - tenant_name: nil, - # Timestamp when the domain ownership was verified, or null if not yet verified - verified_at: nil - ) - end - - sig do - override.returns( - { - id: Integer, - created_at: Time, - dns_records: - T.nilable( - ArkEmail::Models::DomainCreateResponse::Data::DNSRecords - ), - name: String, - uuid: String, - verified: T::Boolean, - tenant_id: String, - tenant_name: String, - verified_at: T.nilable(Time) - } - ) - end - def to_hash - end - - class DNSRecords < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainCreateResponse::Data::DNSRecords, - ArkEmail::Internal::AnyHash - ) - end - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :dkim - - sig { params(dkim: T.nilable(ArkEmail::DNSRecord::OrHash)).void } - attr_writer :dkim - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :return_path - - sig do - params(return_path: T.nilable(ArkEmail::DNSRecord::OrHash)).void - end - attr_writer :return_path - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :spf - - sig { params(spf: T.nilable(ArkEmail::DNSRecord::OrHash)).void } - attr_writer :spf - - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - sig { returns(T.nilable(String)) } - attr_reader :zone - - sig { params(zone: String).void } - attr_writer :zone - - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - sig do - params( - dkim: T.nilable(ArkEmail::DNSRecord::OrHash), - return_path: T.nilable(ArkEmail::DNSRecord::OrHash), - spf: T.nilable(ArkEmail::DNSRecord::OrHash), - zone: String - ).returns(T.attached_class) - end - def self.new( - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - dkim: nil, - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - return_path: nil, - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - spf: nil, - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - zone: nil - ) - end - - sig do - override.returns( - { - dkim: T.nilable(ArkEmail::DNSRecord), - return_path: T.nilable(ArkEmail::DNSRecord), - spf: T.nilable(ArkEmail::DNSRecord), - zone: String - } - ) - end - def to_hash - end - end - end - end - end -end diff --git a/rbi/ark_email/models/domain_delete_params.rbi b/rbi/ark_email/models/domain_delete_params.rbi deleted file mode 100644 index 55da44f..0000000 --- a/rbi/ark_email/models/domain_delete_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::DomainDeleteParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/domain_delete_response.rbi b/rbi/ark_email/models/domain_delete_response.rbi deleted file mode 100644 index c4750e6..0000000 --- a/rbi/ark_email/models/domain_delete_response.rbi +++ /dev/null @@ -1,75 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainDeleteResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainDeleteResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::DomainDeleteResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::DomainDeleteResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::DomainDeleteResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::DomainDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainDeleteResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(String) } - attr_accessor :message - - sig { params(message: String).returns(T.attached_class) } - def self.new(message:) - end - - sig { override.returns({ message: String }) } - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/domain_list_params.rbi b/rbi/ark_email/models/domain_list_params.rbi deleted file mode 100644 index 17905c8..0000000 --- a/rbi/ark_email/models/domain_list_params.rbi +++ /dev/null @@ -1,43 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::DomainListParams, ArkEmail::Internal::AnyHash) - end - - # Filter domains by tenant ID - sig { returns(T.nilable(String)) } - attr_reader :tenant_id - - sig { params(tenant_id: String).void } - attr_writer :tenant_id - - sig do - params( - tenant_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Filter domains by tenant ID - tenant_id: nil, - request_options: {} - ) - end - - sig do - override.returns( - { tenant_id: String, request_options: ArkEmail::RequestOptions } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/domain_list_response.rbi b/rbi/ark_email/models/domain_list_response.rbi deleted file mode 100644 index 3f05df7..0000000 --- a/rbi/ark_email/models/domain_list_response.rbi +++ /dev/null @@ -1,166 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainListResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainListResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::DomainListResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::DomainListResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::DomainListResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::DomainListResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainListResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - sig do - returns(T::Array[ArkEmail::Models::DomainListResponse::Data::Domain]) - end - attr_accessor :domains - - sig do - params( - domains: - T::Array[ - ArkEmail::Models::DomainListResponse::Data::Domain::OrHash - ] - ).returns(T.attached_class) - end - def self.new(domains:) - end - - sig do - override.returns( - { - domains: - T::Array[ArkEmail::Models::DomainListResponse::Data::Domain] - } - ) - end - def to_hash - end - - class Domain < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainListResponse::Data::Domain, - ArkEmail::Internal::AnyHash - ) - end - - # Unique domain identifier - sig { returns(Integer) } - attr_accessor :id - - # The domain name used for sending emails - sig { returns(String) } - attr_accessor :name - - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - sig { returns(T::Boolean) } - attr_accessor :verified - - # ID of the tenant this domain belongs to (included when filtering by tenant_id) - sig { returns(T.nilable(String)) } - attr_reader :tenant_id - - sig { params(tenant_id: String).void } - attr_writer :tenant_id - - # Name of the tenant this domain belongs to (included when filtering by tenant_id) - sig { returns(T.nilable(String)) } - attr_reader :tenant_name - - sig { params(tenant_name: String).void } - attr_writer :tenant_name - - sig do - params( - id: Integer, - name: String, - verified: T::Boolean, - tenant_id: String, - tenant_name: String - ).returns(T.attached_class) - end - def self.new( - # Unique domain identifier - id:, - # The domain name used for sending emails - name:, - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - verified:, - # ID of the tenant this domain belongs to (included when filtering by tenant_id) - tenant_id: nil, - # Name of the tenant this domain belongs to (included when filtering by tenant_id) - tenant_name: nil - ) - end - - sig do - override.returns( - { - id: Integer, - name: String, - verified: T::Boolean, - tenant_id: String, - tenant_name: String - } - ) - end - def to_hash - end - end - end - end - end -end diff --git a/rbi/ark_email/models/domain_retrieve_params.rbi b/rbi/ark_email/models/domain_retrieve_params.rbi deleted file mode 100644 index 18ca3cc..0000000 --- a/rbi/ark_email/models/domain_retrieve_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::DomainRetrieveParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/domain_retrieve_response.rbi b/rbi/ark_email/models/domain_retrieve_response.rbi deleted file mode 100644 index 82b507b..0000000 --- a/rbi/ark_email/models/domain_retrieve_response.rbi +++ /dev/null @@ -1,380 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainRetrieveResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainRetrieveResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::DomainRetrieveResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::DomainRetrieveResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::DomainRetrieveResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::DomainRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainRetrieveResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Unique domain identifier - sig { returns(Integer) } - attr_accessor :id - - # Timestamp when the domain was added - sig { returns(Time) } - attr_accessor :created_at - - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - sig do - returns( - T.nilable( - ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords - ) - ) - end - attr_reader :dns_records - - sig do - params( - dns_records: - T.nilable( - ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords::OrHash - ) - ).void - end - attr_writer :dns_records - - # The domain name used for sending emails - sig { returns(String) } - attr_accessor :name - - # UUID of the domain - sig { returns(String) } - attr_accessor :uuid - - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - sig { returns(T::Boolean) } - attr_accessor :verified - - # ID of the tenant this domain belongs to - sig { returns(T.nilable(String)) } - attr_reader :tenant_id - - sig { params(tenant_id: String).void } - attr_writer :tenant_id - - # Name of the tenant this domain belongs to - sig { returns(T.nilable(String)) } - attr_reader :tenant_name - - sig { params(tenant_name: String).void } - attr_writer :tenant_name - - # Timestamp when the domain ownership was verified, or null if not yet verified - sig { returns(T.nilable(Time)) } - attr_accessor :verified_at - - sig do - params( - id: Integer, - created_at: Time, - dns_records: - T.nilable( - ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords::OrHash - ), - name: String, - uuid: String, - verified: T::Boolean, - tenant_id: String, - tenant_name: String, - verified_at: T.nilable(Time) - ).returns(T.attached_class) - end - def self.new( - # Unique domain identifier - id:, - # Timestamp when the domain was added - created_at:, - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - dns_records:, - # The domain name used for sending emails - name:, - # UUID of the domain - uuid:, - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - verified:, - # ID of the tenant this domain belongs to - tenant_id: nil, - # Name of the tenant this domain belongs to - tenant_name: nil, - # Timestamp when the domain ownership was verified, or null if not yet verified - verified_at: nil - ) - end - - sig do - override.returns( - { - id: Integer, - created_at: Time, - dns_records: - T.nilable( - ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords - ), - name: String, - uuid: String, - verified: T::Boolean, - tenant_id: String, - tenant_name: String, - verified_at: T.nilable(Time) - } - ) - end - def to_hash - end - - class DNSRecords < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords, - ArkEmail::Internal::AnyHash - ) - end - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :dkim - - sig { params(dkim: T.nilable(ArkEmail::DNSRecord::OrHash)).void } - attr_writer :dkim - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :return_path - - sig do - params(return_path: T.nilable(ArkEmail::DNSRecord::OrHash)).void - end - attr_writer :return_path - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :spf - - sig { params(spf: T.nilable(ArkEmail::DNSRecord::OrHash)).void } - attr_writer :spf - - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - sig { returns(T.nilable(String)) } - attr_reader :zone - - sig { params(zone: String).void } - attr_writer :zone - - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - sig do - params( - dkim: T.nilable(ArkEmail::DNSRecord::OrHash), - return_path: T.nilable(ArkEmail::DNSRecord::OrHash), - spf: T.nilable(ArkEmail::DNSRecord::OrHash), - zone: String - ).returns(T.attached_class) - end - def self.new( - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - dkim: nil, - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - return_path: nil, - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - spf: nil, - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - zone: nil - ) - end - - sig do - override.returns( - { - dkim: T.nilable(ArkEmail::DNSRecord), - return_path: T.nilable(ArkEmail::DNSRecord), - spf: T.nilable(ArkEmail::DNSRecord), - zone: String - } - ) - end - def to_hash - end - end - end - end - end -end diff --git a/rbi/ark_email/models/domain_verify_params.rbi b/rbi/ark_email/models/domain_verify_params.rbi deleted file mode 100644 index f2aad2c..0000000 --- a/rbi/ark_email/models/domain_verify_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainVerifyParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::DomainVerifyParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/domain_verify_response.rbi b/rbi/ark_email/models/domain_verify_response.rbi deleted file mode 100644 index 051345f..0000000 --- a/rbi/ark_email/models/domain_verify_response.rbi +++ /dev/null @@ -1,376 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class DomainVerifyResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainVerifyResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::DomainVerifyResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::DomainVerifyResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::DomainVerifyResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::DomainVerifyResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainVerifyResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Unique domain identifier - sig { returns(Integer) } - attr_accessor :id - - # Timestamp when the domain was added - sig { returns(Time) } - attr_accessor :created_at - - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - sig do - returns( - T.nilable(ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords) - ) - end - attr_reader :dns_records - - sig do - params( - dns_records: - T.nilable( - ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords::OrHash - ) - ).void - end - attr_writer :dns_records - - # The domain name used for sending emails - sig { returns(String) } - attr_accessor :name - - # UUID of the domain - sig { returns(String) } - attr_accessor :uuid - - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - sig { returns(T::Boolean) } - attr_accessor :verified - - # ID of the tenant this domain belongs to - sig { returns(T.nilable(String)) } - attr_reader :tenant_id - - sig { params(tenant_id: String).void } - attr_writer :tenant_id - - # Name of the tenant this domain belongs to - sig { returns(T.nilable(String)) } - attr_reader :tenant_name - - sig { params(tenant_name: String).void } - attr_writer :tenant_name - - # Timestamp when the domain ownership was verified, or null if not yet verified - sig { returns(T.nilable(Time)) } - attr_accessor :verified_at - - sig do - params( - id: Integer, - created_at: Time, - dns_records: - T.nilable( - ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords::OrHash - ), - name: String, - uuid: String, - verified: T::Boolean, - tenant_id: String, - tenant_name: String, - verified_at: T.nilable(Time) - ).returns(T.attached_class) - end - def self.new( - # Unique domain identifier - id:, - # Timestamp when the domain was added - created_at:, - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - dns_records:, - # The domain name used for sending emails - name:, - # UUID of the domain - uuid:, - # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. - # Domain must be verified before sending emails. - verified:, - # ID of the tenant this domain belongs to - tenant_id: nil, - # Name of the tenant this domain belongs to - tenant_name: nil, - # Timestamp when the domain ownership was verified, or null if not yet verified - verified_at: nil - ) - end - - sig do - override.returns( - { - id: Integer, - created_at: Time, - dns_records: - T.nilable( - ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords - ), - name: String, - uuid: String, - verified: T::Boolean, - tenant_id: String, - tenant_name: String, - verified_at: T.nilable(Time) - } - ) - end - def to_hash - end - - class DNSRecords < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords, - ArkEmail::Internal::AnyHash - ) - end - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :dkim - - sig { params(dkim: T.nilable(ArkEmail::DNSRecord::OrHash)).void } - attr_writer :dkim - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :return_path - - sig do - params(return_path: T.nilable(ArkEmail::DNSRecord::OrHash)).void - end - attr_writer :return_path - - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - sig { returns(T.nilable(ArkEmail::DNSRecord)) } - attr_reader :spf - - sig { params(spf: T.nilable(ArkEmail::DNSRecord::OrHash)).void } - attr_writer :spf - - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - sig { returns(T.nilable(String)) } - attr_reader :zone - - sig { params(zone: String).void } - attr_writer :zone - - # DNS records that must be added to your domain's DNS settings. Null if records - # are not yet generated. - # - # **Important:** The `name` field contains the relative hostname that you should - # enter in your DNS provider. Most DNS providers auto-append the zone name, so you - # only need to enter the relative part. - # - # For subdomains like `mail.example.com`, the zone is `example.com`, so: - # - # - SPF `name` would be `mail` (not `@`) - # - DKIM `name` would be `ark-xyz._domainkey.mail` - # - Return Path `name` would be `psrp.mail` - sig do - params( - dkim: T.nilable(ArkEmail::DNSRecord::OrHash), - return_path: T.nilable(ArkEmail::DNSRecord::OrHash), - spf: T.nilable(ArkEmail::DNSRecord::OrHash), - zone: String - ).returns(T.attached_class) - end - def self.new( - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - dkim: nil, - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - return_path: nil, - # A DNS record that needs to be configured in your domain's DNS settings. - # - # The `name` field contains the relative hostname to enter in your DNS provider - # (which auto-appends the zone). The `fullName` field contains the complete - # fully-qualified domain name (FQDN) for reference. - # - # **Example for subdomain `mail.example.com`:** - # - # - `name`: `"mail"` (what you enter in DNS provider) - # - `fullName`: `"mail.example.com"` (the complete hostname) - # - # **Example for root domain `example.com`:** - # - # - `name`: `"@"` (DNS shorthand for apex/root) - # - `fullName`: `"example.com"` - spf: nil, - # The DNS zone (registrable domain) where records should be added. This is the - # root domain that your DNS provider manages. For `mail.example.com`, the zone is - # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. - zone: nil - ) - end - - sig do - override.returns( - { - dkim: T.nilable(ArkEmail::DNSRecord), - return_path: T.nilable(ArkEmail::DNSRecord), - spf: T.nilable(ArkEmail::DNSRecord), - zone: String - } - ) - end - def to_hash - end - end - end - end - end -end diff --git a/rbi/ark_email/models/org_usage_summary.rbi b/rbi/ark_email/models/org_usage_summary.rbi new file mode 100644 index 0000000..5bf0756 --- /dev/null +++ b/rbi/ark_email/models/org_usage_summary.rbi @@ -0,0 +1,165 @@ +# typed: strong + +module ArkEmail + module Models + class OrgUsageSummary < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::OrgUsageSummary, ArkEmail::Internal::AnyHash) + end + + sig { returns(ArkEmail::OrgUsageSummary::Data) } + attr_reader :data + + sig { params(data: ArkEmail::OrgUsageSummary::Data::OrHash).void } + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Org-wide usage summary response + sig do + params( + data: ArkEmail::OrgUsageSummary::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::OrgUsageSummary::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::OrgUsageSummary::Data, ArkEmail::Internal::AnyHash) + end + + # Email delivery counts + sig { returns(ArkEmail::EmailCounts) } + attr_reader :emails + + sig { params(emails: ArkEmail::EmailCounts::OrHash).void } + attr_writer :emails + + # Time period for usage data + sig { returns(ArkEmail::UsagePeriod) } + attr_reader :period + + sig { params(period: ArkEmail::UsagePeriod::OrHash).void } + attr_writer :period + + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + sig { returns(ArkEmail::EmailRates) } + attr_reader :rates + + sig { params(rates: ArkEmail::EmailRates::OrHash).void } + attr_writer :rates + + sig { returns(ArkEmail::OrgUsageSummary::Data::Tenants) } + attr_reader :tenants + + sig do + params(tenants: ArkEmail::OrgUsageSummary::Data::Tenants::OrHash).void + end + attr_writer :tenants + + sig do + params( + emails: ArkEmail::EmailCounts::OrHash, + period: ArkEmail::UsagePeriod::OrHash, + rates: ArkEmail::EmailRates::OrHash, + tenants: ArkEmail::OrgUsageSummary::Data::Tenants::OrHash + ).returns(T.attached_class) + end + def self.new( + # Email delivery counts + emails:, + # Time period for usage data + period:, + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + rates:, + tenants: + ) + end + + sig do + override.returns( + { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenants: ArkEmail::OrgUsageSummary::Data::Tenants + } + ) + end + def to_hash + end + + class Tenants < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::OrgUsageSummary::Data::Tenants, + ArkEmail::Internal::AnyHash + ) + end + + # Number of active tenants + sig { returns(Integer) } + attr_accessor :active + + # Total number of tenants + sig { returns(Integer) } + attr_accessor :total + + # Number of tenants with sending activity + sig { returns(Integer) } + attr_accessor :with_activity + + sig do + params( + active: Integer, + total: Integer, + with_activity: Integer + ).returns(T.attached_class) + end + def self.new( + # Number of active tenants + active:, + # Total number of tenants + total:, + # Number of tenants with sending activity + with_activity: + ) + end + + sig do + override.returns( + { active: Integer, total: Integer, with_activity: Integer } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/suppression_bulk_create_params.rbi b/rbi/ark_email/models/suppression_bulk_create_params.rbi deleted file mode 100644 index 5c39194..0000000 --- a/rbi/ark_email/models/suppression_bulk_create_params.rbi +++ /dev/null @@ -1,80 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionBulkCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any( - ArkEmail::SuppressionBulkCreateParams, - ArkEmail::Internal::AnyHash - ) - end - - sig do - returns(T::Array[ArkEmail::SuppressionBulkCreateParams::Suppression]) - end - attr_accessor :suppressions - - sig do - params( - suppressions: - T::Array[ - ArkEmail::SuppressionBulkCreateParams::Suppression::OrHash - ], - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new(suppressions:, request_options: {}) - end - - sig do - override.returns( - { - suppressions: - T::Array[ArkEmail::SuppressionBulkCreateParams::Suppression], - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - - class Suppression < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::SuppressionBulkCreateParams::Suppression, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(String) } - attr_accessor :address - - # Reason for suppression (accepts null) - sig { returns(T.nilable(String)) } - attr_accessor :reason - - sig do - params(address: String, reason: T.nilable(String)).returns( - T.attached_class - ) - end - def self.new( - address:, - # Reason for suppression (accepts null) - reason: nil - ) - end - - sig { override.returns({ address: String, reason: T.nilable(String) }) } - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/suppression_bulk_create_response.rbi b/rbi/ark_email/models/suppression_bulk_create_response.rbi deleted file mode 100644 index af439a4..0000000 --- a/rbi/ark_email/models/suppression_bulk_create_response.rbi +++ /dev/null @@ -1,115 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionBulkCreateResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionBulkCreateResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::SuppressionBulkCreateResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::SuppressionBulkCreateResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::SuppressionBulkCreateResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::SuppressionBulkCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionBulkCreateResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Newly suppressed addresses - sig { returns(Integer) } - attr_accessor :added - - # Invalid addresses skipped - sig { returns(Integer) } - attr_accessor :failed - - # Total addresses in request - sig { returns(Integer) } - attr_accessor :total_requested - - # Already suppressed addresses (updated reason) - sig { returns(Integer) } - attr_accessor :updated - - sig do - params( - added: Integer, - failed: Integer, - total_requested: Integer, - updated: Integer - ).returns(T.attached_class) - end - def self.new( - # Newly suppressed addresses - added:, - # Invalid addresses skipped - failed:, - # Total addresses in request - total_requested:, - # Already suppressed addresses (updated reason) - updated: - ) - end - - sig do - override.returns( - { - added: Integer, - failed: Integer, - total_requested: Integer, - updated: Integer - } - ) - end - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/suppression_create_params.rbi b/rbi/ark_email/models/suppression_create_params.rbi deleted file mode 100644 index 6b55424..0000000 --- a/rbi/ark_email/models/suppression_create_params.rbi +++ /dev/null @@ -1,51 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::SuppressionCreateParams, ArkEmail::Internal::AnyHash) - end - - # Email address to suppress - sig { returns(String) } - attr_accessor :address - - # Reason for suppression (accepts null) - sig { returns(T.nilable(String)) } - attr_accessor :reason - - sig do - params( - address: String, - reason: T.nilable(String), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Email address to suppress - address:, - # Reason for suppression (accepts null) - reason: nil, - request_options: {} - ) - end - - sig do - override.returns( - { - address: String, - reason: T.nilable(String), - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/suppression_create_response.rbi b/rbi/ark_email/models/suppression_create_response.rbi deleted file mode 100644 index 5a95e51..0000000 --- a/rbi/ark_email/models/suppression_create_response.rbi +++ /dev/null @@ -1,109 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionCreateResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionCreateResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::SuppressionCreateResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::SuppressionCreateResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::SuppressionCreateResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::SuppressionCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionCreateResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Suppression ID - sig { returns(String) } - attr_accessor :id - - sig { returns(String) } - attr_accessor :address - - sig { returns(Time) } - attr_accessor :created_at - - # Reason for suppression - sig { returns(T.nilable(String)) } - attr_reader :reason - - sig { params(reason: String).void } - attr_writer :reason - - sig do - params( - id: String, - address: String, - created_at: Time, - reason: String - ).returns(T.attached_class) - end - def self.new( - # Suppression ID - id:, - address:, - created_at:, - # Reason for suppression - reason: nil - ) - end - - sig do - override.returns( - { id: String, address: String, created_at: Time, reason: String } - ) - end - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/suppression_delete_params.rbi b/rbi/ark_email/models/suppression_delete_params.rbi deleted file mode 100644 index 093acd5..0000000 --- a/rbi/ark_email/models/suppression_delete_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::SuppressionDeleteParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/suppression_delete_response.rbi b/rbi/ark_email/models/suppression_delete_response.rbi deleted file mode 100644 index bca0bfc..0000000 --- a/rbi/ark_email/models/suppression_delete_response.rbi +++ /dev/null @@ -1,77 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionDeleteResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionDeleteResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::SuppressionDeleteResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::SuppressionDeleteResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::SuppressionDeleteResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::SuppressionDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionDeleteResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(String) } - attr_accessor :message - - sig { params(message: String).returns(T.attached_class) } - def self.new(message:) - end - - sig { override.returns({ message: String }) } - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/suppression_list_params.rbi b/rbi/ark_email/models/suppression_list_params.rbi deleted file mode 100644 index ac7b5eb..0000000 --- a/rbi/ark_email/models/suppression_list_params.rbi +++ /dev/null @@ -1,49 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::SuppressionListParams, ArkEmail::Internal::AnyHash) - end - - sig { returns(T.nilable(Integer)) } - attr_reader :page - - sig { params(page: Integer).void } - attr_writer :page - - sig { returns(T.nilable(Integer)) } - attr_reader :per_page - - sig { params(per_page: Integer).void } - attr_writer :per_page - - sig do - params( - page: Integer, - per_page: Integer, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new(page: nil, per_page: nil, request_options: {}) - end - - sig do - override.returns( - { - page: Integer, - per_page: Integer, - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/suppression_list_response.rbi b/rbi/ark_email/models/suppression_list_response.rbi deleted file mode 100644 index 166c699..0000000 --- a/rbi/ark_email/models/suppression_list_response.rbi +++ /dev/null @@ -1,56 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionListResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionListResponse, - ArkEmail::Internal::AnyHash - ) - end - - # Suppression ID - sig { returns(String) } - attr_accessor :id - - sig { returns(String) } - attr_accessor :address - - sig { returns(Time) } - attr_accessor :created_at - - sig { returns(T.nilable(String)) } - attr_reader :reason - - sig { params(reason: String).void } - attr_writer :reason - - sig do - params( - id: String, - address: String, - created_at: Time, - reason: String - ).returns(T.attached_class) - end - def self.new( - # Suppression ID - id:, - address:, - created_at:, - reason: nil - ) - end - - sig do - override.returns( - { id: String, address: String, created_at: Time, reason: String } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/suppression_retrieve_params.rbi b/rbi/ark_email/models/suppression_retrieve_params.rbi deleted file mode 100644 index cc69c6c..0000000 --- a/rbi/ark_email/models/suppression_retrieve_params.rbi +++ /dev/null @@ -1,30 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any( - ArkEmail::SuppressionRetrieveParams, - ArkEmail::Internal::AnyHash - ) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/suppression_retrieve_response.rbi b/rbi/ark_email/models/suppression_retrieve_response.rbi deleted file mode 100644 index f3921b3..0000000 --- a/rbi/ark_email/models/suppression_retrieve_response.rbi +++ /dev/null @@ -1,115 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class SuppressionRetrieveResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionRetrieveResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::SuppressionRetrieveResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::SuppressionRetrieveResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::SuppressionRetrieveResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::SuppressionRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::SuppressionRetrieveResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # The email address that was checked - sig { returns(String) } - attr_accessor :address - - # Whether the address is currently suppressed - sig { returns(T::Boolean) } - attr_accessor :suppressed - - # When the suppression was created (if suppressed) - sig { returns(T.nilable(Time)) } - attr_accessor :created_at - - # Reason for suppression (if suppressed) - sig { returns(T.nilable(String)) } - attr_accessor :reason - - sig do - params( - address: String, - suppressed: T::Boolean, - created_at: T.nilable(Time), - reason: T.nilable(String) - ).returns(T.attached_class) - end - def self.new( - # The email address that was checked - address:, - # Whether the address is currently suppressed - suppressed:, - # When the suppression was created (if suppressed) - created_at: nil, - # Reason for suppression (if suppressed) - reason: nil - ) - end - - sig do - override.returns( - { - address: String, - suppressed: T::Boolean, - created_at: T.nilable(Time), - reason: T.nilable(String) - } - ) - end - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/tenant_usage.rbi b/rbi/ark_email/models/tenant_usage_item.rbi similarity index 56% rename from rbi/ark_email/models/tenant_usage.rbi rename to rbi/ark_email/models/tenant_usage_item.rbi index c2d41c7..df32985 100644 --- a/rbi/ark_email/models/tenant_usage.rbi +++ b/rbi/ark_email/models/tenant_usage_item.rbi @@ -2,10 +2,10 @@ module ArkEmail module Models - class TenantUsage < ArkEmail::Internal::Type::BaseModel + class TenantUsageItem < ArkEmail::Internal::Type::BaseModel OrHash = T.type_alias do - T.any(ArkEmail::TenantUsage, ArkEmail::Internal::AnyHash) + T.any(ArkEmail::TenantUsageItem, ArkEmail::Internal::AnyHash) end # Email delivery counts @@ -15,13 +15,6 @@ module ArkEmail sig { params(emails: ArkEmail::EmailCounts::OrHash).void } attr_writer :emails - # Time period for usage data - sig { returns(ArkEmail::UsagePeriod) } - attr_reader :period - - sig { params(period: ArkEmail::UsagePeriod::OrHash).void } - attr_writer :period - # Email delivery rates (as decimals, e.g., 0.95 = 95%) sig { returns(ArkEmail::EmailRates) } attr_reader :rates @@ -29,6 +22,10 @@ module ArkEmail sig { params(rates: ArkEmail::EmailRates::OrHash).void } attr_writer :rates + # Current tenant status + sig { returns(ArkEmail::TenantUsageItem::Status::TaggedSymbol) } + attr_accessor :status + # Unique tenant identifier sig { returns(String) } attr_accessor :tenant_id @@ -37,16 +34,16 @@ module ArkEmail sig { returns(String) } attr_accessor :tenant_name - # Your external ID for this tenant (from metadata) + # Your external ID for this tenant sig { returns(T.nilable(String)) } attr_accessor :external_id - # Tenant usage statistics + # Usage record for a single tenant (camelCase for SDK) sig do params( emails: ArkEmail::EmailCounts::OrHash, - period: ArkEmail::UsagePeriod::OrHash, rates: ArkEmail::EmailRates::OrHash, + status: ArkEmail::TenantUsageItem::Status::OrSymbol, tenant_id: String, tenant_name: String, external_id: T.nilable(String) @@ -55,15 +52,15 @@ module ArkEmail def self.new( # Email delivery counts emails:, - # Time period for usage data - period:, # Email delivery rates (as decimals, e.g., 0.95 = 95%) rates:, + # Current tenant status + status:, # Unique tenant identifier tenant_id:, # Tenant display name tenant_name:, - # Your external ID for this tenant (from metadata) + # Your external ID for this tenant external_id: nil ) end @@ -72,8 +69,8 @@ module ArkEmail override.returns( { emails: ArkEmail::EmailCounts, - period: ArkEmail::UsagePeriod, rates: ArkEmail::EmailRates, + status: ArkEmail::TenantUsageItem::Status::TaggedSymbol, tenant_id: String, tenant_name: String, external_id: T.nilable(String) @@ -82,6 +79,29 @@ module ArkEmail end def to_hash end + + # Current tenant status + module Status + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias { T.all(Symbol, ArkEmail::TenantUsageItem::Status) } + OrSymbol = T.type_alias { T.any(Symbol, String) } + + ACTIVE = T.let(:active, ArkEmail::TenantUsageItem::Status::TaggedSymbol) + SUSPENDED = + T.let(:suspended, ArkEmail::TenantUsageItem::Status::TaggedSymbol) + ARCHIVED = + T.let(:archived, ArkEmail::TenantUsageItem::Status::TaggedSymbol) + + sig do + override.returns( + T::Array[ArkEmail::TenantUsageItem::Status::TaggedSymbol] + ) + end + def self.values + end + end end end end diff --git a/rbi/ark_email/models/tenant_usage_timeseries.rbi b/rbi/ark_email/models/tenant_usage_timeseries.rbi deleted file mode 100644 index cfd7462..0000000 --- a/rbi/ark_email/models/tenant_usage_timeseries.rbi +++ /dev/null @@ -1,200 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any(ArkEmail::TenantUsageTimeseries, ArkEmail::Internal::AnyHash) - end - - # Array of time-bucketed data points - sig { returns(T::Array[ArkEmail::TenantUsageTimeseries::Data]) } - attr_accessor :data - - # Time bucket granularity - sig do - returns(ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol) - end - attr_accessor :granularity - - # Time period for usage data - sig { returns(ArkEmail::UsagePeriod) } - attr_reader :period - - sig { params(period: ArkEmail::UsagePeriod::OrHash).void } - attr_writer :period - - # Unique tenant identifier - sig { returns(String) } - attr_accessor :tenant_id - - # Tenant display name - sig { returns(String) } - attr_accessor :tenant_name - - # Timeseries usage statistics - sig do - params( - data: T::Array[ArkEmail::TenantUsageTimeseries::Data::OrHash], - granularity: ArkEmail::TenantUsageTimeseries::Granularity::OrSymbol, - period: ArkEmail::UsagePeriod::OrHash, - tenant_id: String, - tenant_name: String - ).returns(T.attached_class) - end - def self.new( - # Array of time-bucketed data points - data:, - # Time bucket granularity - granularity:, - # Time period for usage data - period:, - # Unique tenant identifier - tenant_id:, - # Tenant display name - tenant_name: - ) - end - - sig do - override.returns( - { - data: T::Array[ArkEmail::TenantUsageTimeseries::Data], - granularity: - ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol, - period: ArkEmail::UsagePeriod, - tenant_id: String, - tenant_name: String - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::TenantUsageTimeseries::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Bounces in this bucket - sig { returns(Integer) } - attr_accessor :bounced - - # Emails delivered in this bucket - sig { returns(Integer) } - attr_accessor :delivered - - # Hard failures in this bucket - sig { returns(Integer) } - attr_accessor :hard_failed - - # Emails held in this bucket - sig { returns(Integer) } - attr_accessor :held - - # Emails sent in this bucket - sig { returns(Integer) } - attr_accessor :sent - - # Soft failures in this bucket - sig { returns(Integer) } - attr_accessor :soft_failed - - # Start of time bucket - sig { returns(Time) } - attr_accessor :timestamp - - # Single timeseries data point - sig do - params( - bounced: Integer, - delivered: Integer, - hard_failed: Integer, - held: Integer, - sent: Integer, - soft_failed: Integer, - timestamp: Time - ).returns(T.attached_class) - end - def self.new( - # Bounces in this bucket - bounced:, - # Emails delivered in this bucket - delivered:, - # Hard failures in this bucket - hard_failed:, - # Emails held in this bucket - held:, - # Emails sent in this bucket - sent:, - # Soft failures in this bucket - soft_failed:, - # Start of time bucket - timestamp: - ) - end - - sig do - override.returns( - { - bounced: Integer, - delivered: Integer, - hard_failed: Integer, - held: Integer, - sent: Integer, - soft_failed: Integer, - timestamp: Time - } - ) - end - def to_hash - end - end - - # Time bucket granularity - module Granularity - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all(Symbol, ArkEmail::TenantUsageTimeseries::Granularity) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - HOUR = - T.let( - :hour, - ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol - ) - DAY = - T.let( - :day, - ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol - ) - WEEK = - T.let( - :week, - ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol - ) - MONTH = - T.let( - :month, - ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ArkEmail::TenantUsageTimeseries::Granularity::TaggedSymbol] - ) - end - def self.values - end - end - end - end -end diff --git a/rbi/ark_email/models/tenants/dns_record.rbi b/rbi/ark_email/models/tenants/dns_record.rbi new file mode 100644 index 0000000..d556a69 --- /dev/null +++ b/rbi/ark_email/models/tenants/dns_record.rbi @@ -0,0 +1,161 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DNSRecord < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::Tenants::DNSRecord, ArkEmail::Internal::AnyHash) + end + + # The complete fully-qualified domain name (FQDN). Use this as a reference to + # verify the record is configured correctly. + sig { returns(String) } + attr_accessor :full_name + + # The relative hostname to enter in your DNS provider. Most DNS providers + # auto-append the zone name, so you only need to enter this relative part. + # + # - `"@"` means the apex/root of the zone (for root domains) + # - `"mail"` for a subdomain like `mail.example.com` + # - `"ark-xyz._domainkey.mail"` for DKIM on a subdomain + sig { returns(String) } + attr_accessor :name + + # The DNS record type to create + sig { returns(ArkEmail::Tenants::DNSRecord::Type::TaggedSymbol) } + attr_accessor :type + + # The value to set for the DNS record + sig { returns(String) } + attr_accessor :value + + # Current verification status of this DNS record: + # + # - `OK` - Record is correctly configured and verified + # - `Missing` - Record was not found in your DNS + # - `Invalid` - Record exists but has an incorrect value + # - `null` - Record has not been checked yet + sig do + returns(T.nilable(ArkEmail::Tenants::DNSRecord::Status::TaggedSymbol)) + end + attr_accessor :status + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig do + params( + full_name: String, + name: String, + type: ArkEmail::Tenants::DNSRecord::Type::OrSymbol, + value: String, + status: T.nilable(ArkEmail::Tenants::DNSRecord::Status::OrSymbol) + ).returns(T.attached_class) + end + def self.new( + # The complete fully-qualified domain name (FQDN). Use this as a reference to + # verify the record is configured correctly. + full_name:, + # The relative hostname to enter in your DNS provider. Most DNS providers + # auto-append the zone name, so you only need to enter this relative part. + # + # - `"@"` means the apex/root of the zone (for root domains) + # - `"mail"` for a subdomain like `mail.example.com` + # - `"ark-xyz._domainkey.mail"` for DKIM on a subdomain + name:, + # The DNS record type to create + type:, + # The value to set for the DNS record + value:, + # Current verification status of this DNS record: + # + # - `OK` - Record is correctly configured and verified + # - `Missing` - Record was not found in your DNS + # - `Invalid` - Record exists but has an incorrect value + # - `null` - Record has not been checked yet + status: nil + ) + end + + sig do + override.returns( + { + full_name: String, + name: String, + type: ArkEmail::Tenants::DNSRecord::Type::TaggedSymbol, + value: String, + status: + T.nilable(ArkEmail::Tenants::DNSRecord::Status::TaggedSymbol) + } + ) + end + def to_hash + end + + # The DNS record type to create + module Type + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias { T.all(Symbol, ArkEmail::Tenants::DNSRecord::Type) } + OrSymbol = T.type_alias { T.any(Symbol, String) } + + TXT = T.let(:TXT, ArkEmail::Tenants::DNSRecord::Type::TaggedSymbol) + CNAME = + T.let(:CNAME, ArkEmail::Tenants::DNSRecord::Type::TaggedSymbol) + MX = T.let(:MX, ArkEmail::Tenants::DNSRecord::Type::TaggedSymbol) + + sig do + override.returns( + T::Array[ArkEmail::Tenants::DNSRecord::Type::TaggedSymbol] + ) + end + def self.values + end + end + + # Current verification status of this DNS record: + # + # - `OK` - Record is correctly configured and verified + # - `Missing` - Record was not found in your DNS + # - `Invalid` - Record exists but has an incorrect value + # - `null` - Record has not been checked yet + module Status + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias { T.all(Symbol, ArkEmail::Tenants::DNSRecord::Status) } + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OK = T.let(:OK, ArkEmail::Tenants::DNSRecord::Status::TaggedSymbol) + MISSING = + T.let(:Missing, ArkEmail::Tenants::DNSRecord::Status::TaggedSymbol) + INVALID = + T.let(:Invalid, ArkEmail::Tenants::DNSRecord::Status::TaggedSymbol) + + sig do + override.returns( + T::Array[ArkEmail::Tenants::DNSRecord::Status::TaggedSymbol] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_create_params.rbi b/rbi/ark_email/models/tenants/domain_create_params.rbi new file mode 100644 index 0000000..ef96700 --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_create_params.rbi @@ -0,0 +1,45 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::DomainCreateParams, + ArkEmail::Internal::AnyHash + ) + end + + # Domain name (e.g., "mail.example.com") + sig { returns(String) } + attr_accessor :name + + sig do + params( + name: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Domain name (e.g., "mail.example.com") + name:, + request_options: {} + ) + end + + sig do + override.returns( + { name: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_create_response.rbi b/rbi/ark_email/models/tenants/domain_create_response.rbi new file mode 100644 index 0000000..cb050ea --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_create_response.rbi @@ -0,0 +1,388 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainCreateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainCreateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::DomainCreateResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::DomainCreateResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Models::Tenants::DomainCreateResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::DomainCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainCreateResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique domain identifier + sig { returns(Integer) } + attr_accessor :id + + # Timestamp when the domain was added + sig { returns(Time) } + attr_accessor :created_at + + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + sig do + returns( + T.nilable( + ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords + ) + ) + end + attr_reader :dns_records + + sig do + params( + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords::OrHash + ) + ).void + end + attr_writer :dns_records + + # The domain name used for sending emails + sig { returns(String) } + attr_accessor :name + + # UUID of the domain + sig { returns(String) } + attr_accessor :uuid + + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + sig { returns(T::Boolean) } + attr_accessor :verified + + # ID of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Name of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_name + + sig { params(tenant_name: String).void } + attr_writer :tenant_name + + # Timestamp when the domain ownership was verified, or null if not yet verified + sig { returns(T.nilable(Time)) } + attr_accessor :verified_at + + sig do + params( + id: Integer, + created_at: Time, + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords::OrHash + ), + name: String, + uuid: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String, + verified_at: T.nilable(Time) + ).returns(T.attached_class) + end + def self.new( + # Unique domain identifier + id:, + # Timestamp when the domain was added + created_at:, + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + dns_records:, + # The domain name used for sending emails + name:, + # UUID of the domain + uuid:, + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + verified:, + # ID of the tenant this domain belongs to + tenant_id: nil, + # Name of the tenant this domain belongs to + tenant_name: nil, + # Timestamp when the domain ownership was verified, or null if not yet verified + verified_at: nil + ) + end + + sig do + override.returns( + { + id: Integer, + created_at: Time, + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords + ), + name: String, + uuid: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String, + verified_at: T.nilable(Time) + } + ) + end + def to_hash + end + + class DNSRecords < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords, + ArkEmail::Internal::AnyHash + ) + end + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :dkim + + sig do + params(dkim: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash)).void + end + attr_writer :dkim + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :return_path + + sig do + params( + return_path: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash) + ).void + end + attr_writer :return_path + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :spf + + sig do + params(spf: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash)).void + end + attr_writer :spf + + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + sig { returns(T.nilable(String)) } + attr_reader :zone + + sig { params(zone: String).void } + attr_writer :zone + + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + sig do + params( + dkim: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + return_path: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + spf: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + zone: String + ).returns(T.attached_class) + end + def self.new( + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + dkim: nil, + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + return_path: nil, + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + spf: nil, + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + zone: nil + ) + end + + sig do + override.returns( + { + dkim: T.nilable(ArkEmail::Tenants::DNSRecord), + return_path: T.nilable(ArkEmail::Tenants::DNSRecord), + spf: T.nilable(ArkEmail::Tenants::DNSRecord), + zone: String + } + ) + end + def to_hash + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_delete_params.rbi b/rbi/ark_email/models/tenants/domain_delete_params.rbi new file mode 100644 index 0000000..2eee0d7 --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_delete_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::DomainDeleteParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_delete_response.rbi b/rbi/ark_email/models/tenants/domain_delete_response.rbi new file mode 100644 index 0000000..21f98e6 --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_delete_response.rbi @@ -0,0 +1,79 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainDeleteResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainDeleteResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::DomainDeleteResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::DomainDeleteResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Models::Tenants::DomainDeleteResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::DomainDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainDeleteResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :message + + sig { params(message: String).returns(T.attached_class) } + def self.new(message:) + end + + sig { override.returns({ message: String }) } + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_list_params.rbi b/rbi/ark_email/models/tenants/domain_list_params.rbi new file mode 100644 index 0000000..34a290a --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_list_params.rbi @@ -0,0 +1,32 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::DomainListParams, + ArkEmail::Internal::AnyHash + ) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_list_response.rbi b/rbi/ark_email/models/tenants/domain_list_response.rbi new file mode 100644 index 0000000..79981f5 --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_list_response.rbi @@ -0,0 +1,176 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainListResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainListResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::DomainListResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::DomainListResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Models::Tenants::DomainListResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::DomainListResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainListResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns( + T::Array[ + ArkEmail::Models::Tenants::DomainListResponse::Data::Domain + ] + ) + end + attr_accessor :domains + + sig do + params( + domains: + T::Array[ + ArkEmail::Models::Tenants::DomainListResponse::Data::Domain::OrHash + ] + ).returns(T.attached_class) + end + def self.new(domains:) + end + + sig do + override.returns( + { + domains: + T::Array[ + ArkEmail::Models::Tenants::DomainListResponse::Data::Domain + ] + } + ) + end + def to_hash + end + + class Domain < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainListResponse::Data::Domain, + ArkEmail::Internal::AnyHash + ) + end + + # Unique domain identifier + sig { returns(Integer) } + attr_accessor :id + + # The domain name used for sending emails + sig { returns(String) } + attr_accessor :name + + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + sig { returns(T::Boolean) } + attr_accessor :verified + + # ID of the tenant this domain belongs to (included when filtering by tenant_id) + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Name of the tenant this domain belongs to (included when filtering by tenant_id) + sig { returns(T.nilable(String)) } + attr_reader :tenant_name + + sig { params(tenant_name: String).void } + attr_writer :tenant_name + + sig do + params( + id: Integer, + name: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String + ).returns(T.attached_class) + end + def self.new( + # Unique domain identifier + id:, + # The domain name used for sending emails + name:, + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + verified:, + # ID of the tenant this domain belongs to (included when filtering by tenant_id) + tenant_id: nil, + # Name of the tenant this domain belongs to (included when filtering by tenant_id) + tenant_name: nil + ) + end + + sig do + override.returns( + { + id: Integer, + name: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String + } + ) + end + def to_hash + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_retrieve_params.rbi b/rbi/ark_email/models/tenants/domain_retrieve_params.rbi new file mode 100644 index 0000000..c87b9c8 --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_retrieve_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::DomainRetrieveParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_retrieve_response.rbi b/rbi/ark_email/models/tenants/domain_retrieve_response.rbi new file mode 100644 index 0000000..c6305f2 --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_retrieve_response.rbi @@ -0,0 +1,390 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainRetrieveResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainRetrieveResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::DomainRetrieveResponse::Data) } + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainRetrieveResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique domain identifier + sig { returns(Integer) } + attr_accessor :id + + # Timestamp when the domain was added + sig { returns(Time) } + attr_accessor :created_at + + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + sig do + returns( + T.nilable( + ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords + ) + ) + end + attr_reader :dns_records + + sig do + params( + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords::OrHash + ) + ).void + end + attr_writer :dns_records + + # The domain name used for sending emails + sig { returns(String) } + attr_accessor :name + + # UUID of the domain + sig { returns(String) } + attr_accessor :uuid + + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + sig { returns(T::Boolean) } + attr_accessor :verified + + # ID of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Name of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_name + + sig { params(tenant_name: String).void } + attr_writer :tenant_name + + # Timestamp when the domain ownership was verified, or null if not yet verified + sig { returns(T.nilable(Time)) } + attr_accessor :verified_at + + sig do + params( + id: Integer, + created_at: Time, + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords::OrHash + ), + name: String, + uuid: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String, + verified_at: T.nilable(Time) + ).returns(T.attached_class) + end + def self.new( + # Unique domain identifier + id:, + # Timestamp when the domain was added + created_at:, + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + dns_records:, + # The domain name used for sending emails + name:, + # UUID of the domain + uuid:, + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + verified:, + # ID of the tenant this domain belongs to + tenant_id: nil, + # Name of the tenant this domain belongs to + tenant_name: nil, + # Timestamp when the domain ownership was verified, or null if not yet verified + verified_at: nil + ) + end + + sig do + override.returns( + { + id: Integer, + created_at: Time, + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords + ), + name: String, + uuid: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String, + verified_at: T.nilable(Time) + } + ) + end + def to_hash + end + + class DNSRecords < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords, + ArkEmail::Internal::AnyHash + ) + end + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :dkim + + sig do + params(dkim: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash)).void + end + attr_writer :dkim + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :return_path + + sig do + params( + return_path: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash) + ).void + end + attr_writer :return_path + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :spf + + sig do + params(spf: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash)).void + end + attr_writer :spf + + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + sig { returns(T.nilable(String)) } + attr_reader :zone + + sig { params(zone: String).void } + attr_writer :zone + + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + sig do + params( + dkim: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + return_path: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + spf: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + zone: String + ).returns(T.attached_class) + end + def self.new( + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + dkim: nil, + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + return_path: nil, + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + spf: nil, + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + zone: nil + ) + end + + sig do + override.returns( + { + dkim: T.nilable(ArkEmail::Tenants::DNSRecord), + return_path: T.nilable(ArkEmail::Tenants::DNSRecord), + spf: T.nilable(ArkEmail::Tenants::DNSRecord), + zone: String + } + ) + end + def to_hash + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_verify_params.rbi b/rbi/ark_email/models/tenants/domain_verify_params.rbi new file mode 100644 index 0000000..850b835 --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_verify_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainVerifyParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::DomainVerifyParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/domain_verify_response.rbi b/rbi/ark_email/models/tenants/domain_verify_response.rbi new file mode 100644 index 0000000..dbb4d17 --- /dev/null +++ b/rbi/ark_email/models/tenants/domain_verify_response.rbi @@ -0,0 +1,388 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class DomainVerifyResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainVerifyResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::DomainVerifyResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::DomainVerifyResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Models::Tenants::DomainVerifyResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::DomainVerifyResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainVerifyResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique domain identifier + sig { returns(Integer) } + attr_accessor :id + + # Timestamp when the domain was added + sig { returns(Time) } + attr_accessor :created_at + + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + sig do + returns( + T.nilable( + ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords + ) + ) + end + attr_reader :dns_records + + sig do + params( + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords::OrHash + ) + ).void + end + attr_writer :dns_records + + # The domain name used for sending emails + sig { returns(String) } + attr_accessor :name + + # UUID of the domain + sig { returns(String) } + attr_accessor :uuid + + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + sig { returns(T::Boolean) } + attr_accessor :verified + + # ID of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Name of the tenant this domain belongs to + sig { returns(T.nilable(String)) } + attr_reader :tenant_name + + sig { params(tenant_name: String).void } + attr_writer :tenant_name + + # Timestamp when the domain ownership was verified, or null if not yet verified + sig { returns(T.nilable(Time)) } + attr_accessor :verified_at + + sig do + params( + id: Integer, + created_at: Time, + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords::OrHash + ), + name: String, + uuid: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String, + verified_at: T.nilable(Time) + ).returns(T.attached_class) + end + def self.new( + # Unique domain identifier + id:, + # Timestamp when the domain was added + created_at:, + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + dns_records:, + # The domain name used for sending emails + name:, + # UUID of the domain + uuid:, + # Whether all DNS records (SPF, DKIM, Return Path) are correctly configured. + # Domain must be verified before sending emails. + verified:, + # ID of the tenant this domain belongs to + tenant_id: nil, + # Name of the tenant this domain belongs to + tenant_name: nil, + # Timestamp when the domain ownership was verified, or null if not yet verified + verified_at: nil + ) + end + + sig do + override.returns( + { + id: Integer, + created_at: Time, + dns_records: + T.nilable( + ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords + ), + name: String, + uuid: String, + verified: T::Boolean, + tenant_id: String, + tenant_name: String, + verified_at: T.nilable(Time) + } + ) + end + def to_hash + end + + class DNSRecords < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords, + ArkEmail::Internal::AnyHash + ) + end + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :dkim + + sig do + params(dkim: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash)).void + end + attr_writer :dkim + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :return_path + + sig do + params( + return_path: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash) + ).void + end + attr_writer :return_path + + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + sig { returns(T.nilable(ArkEmail::Tenants::DNSRecord)) } + attr_reader :spf + + sig do + params(spf: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash)).void + end + attr_writer :spf + + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + sig { returns(T.nilable(String)) } + attr_reader :zone + + sig { params(zone: String).void } + attr_writer :zone + + # DNS records that must be added to your domain's DNS settings. Null if records + # are not yet generated. + # + # **Important:** The `name` field contains the relative hostname that you should + # enter in your DNS provider. Most DNS providers auto-append the zone name, so you + # only need to enter the relative part. + # + # For subdomains like `mail.example.com`, the zone is `example.com`, so: + # + # - SPF `name` would be `mail` (not `@`) + # - DKIM `name` would be `ark-xyz._domainkey.mail` + # - Return Path `name` would be `psrp.mail` + sig do + params( + dkim: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + return_path: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + spf: T.nilable(ArkEmail::Tenants::DNSRecord::OrHash), + zone: String + ).returns(T.attached_class) + end + def self.new( + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + dkim: nil, + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + return_path: nil, + # A DNS record that needs to be configured in your domain's DNS settings. + # + # The `name` field contains the relative hostname to enter in your DNS provider + # (which auto-appends the zone). The `fullName` field contains the complete + # fully-qualified domain name (FQDN) for reference. + # + # **Example for subdomain `mail.example.com`:** + # + # - `name`: `"mail"` (what you enter in DNS provider) + # - `fullName`: `"mail.example.com"` (the complete hostname) + # + # **Example for root domain `example.com`:** + # + # - `name`: `"@"` (DNS shorthand for apex/root) + # - `fullName`: `"example.com"` + spf: nil, + # The DNS zone (registrable domain) where records should be added. This is the + # root domain that your DNS provider manages. For `mail.example.com`, the zone is + # `example.com`. For `example.co.uk`, the zone is `example.co.uk`. + zone: nil + ) + end + + sig do + override.returns( + { + dkim: T.nilable(ArkEmail::Tenants::DNSRecord), + return_path: T.nilable(ArkEmail::Tenants::DNSRecord), + spf: T.nilable(ArkEmail::Tenants::DNSRecord), + zone: String + } + ) + end + def to_hash + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/suppression_create_params.rbi b/rbi/ark_email/models/tenants/suppression_create_params.rbi new file mode 100644 index 0000000..89c144a --- /dev/null +++ b/rbi/ark_email/models/tenants/suppression_create_params.rbi @@ -0,0 +1,56 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class SuppressionCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::SuppressionCreateParams, + ArkEmail::Internal::AnyHash + ) + end + + # Email address to suppress + sig { returns(String) } + attr_accessor :address + + # Reason for suppression (accepts null) + sig { returns(T.nilable(String)) } + attr_accessor :reason + + sig do + params( + address: String, + reason: T.nilable(String), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Email address to suppress + address:, + # Reason for suppression (accepts null) + reason: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + address: String, + reason: T.nilable(String), + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/suppression_create_response.rbi b/rbi/ark_email/models/tenants/suppression_create_response.rbi new file mode 100644 index 0000000..d9de6c0 --- /dev/null +++ b/rbi/ark_email/models/tenants/suppression_create_response.rbi @@ -0,0 +1,115 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class SuppressionCreateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::SuppressionCreateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Tenants::SuppressionCreateResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::SuppressionCreateResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::SuppressionCreateResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::SuppressionCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::SuppressionCreateResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Suppression ID + sig { returns(String) } + attr_accessor :id + + sig { returns(String) } + attr_accessor :address + + sig { returns(Time) } + attr_accessor :created_at + + # Reason for suppression + sig { returns(T.nilable(String)) } + attr_reader :reason + + sig { params(reason: String).void } + attr_writer :reason + + sig do + params( + id: String, + address: String, + created_at: Time, + reason: String + ).returns(T.attached_class) + end + def self.new( + # Suppression ID + id:, + address:, + created_at:, + # Reason for suppression + reason: nil + ) + end + + sig do + override.returns( + { id: String, address: String, created_at: Time, reason: String } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/suppression_delete_params.rbi b/rbi/ark_email/models/tenants/suppression_delete_params.rbi new file mode 100644 index 0000000..8567095 --- /dev/null +++ b/rbi/ark_email/models/tenants/suppression_delete_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class SuppressionDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::SuppressionDeleteParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/suppression_delete_response.rbi b/rbi/ark_email/models/tenants/suppression_delete_response.rbi new file mode 100644 index 0000000..eea29f8 --- /dev/null +++ b/rbi/ark_email/models/tenants/suppression_delete_response.rbi @@ -0,0 +1,83 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class SuppressionDeleteResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::SuppressionDeleteResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :message + + sig { params(message: String).returns(T.attached_class) } + def self.new(message:) + end + + sig { override.returns({ message: String }) } + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/suppression_list_params.rbi b/rbi/ark_email/models/tenants/suppression_list_params.rbi new file mode 100644 index 0000000..bc7f9f8 --- /dev/null +++ b/rbi/ark_email/models/tenants/suppression_list_params.rbi @@ -0,0 +1,54 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class SuppressionListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::SuppressionListParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(T.nilable(Integer)) } + attr_reader :page + + sig { params(page: Integer).void } + attr_writer :page + + sig { returns(T.nilable(Integer)) } + attr_reader :per_page + + sig { params(per_page: Integer).void } + attr_writer :per_page + + sig do + params( + page: Integer, + per_page: Integer, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(page: nil, per_page: nil, request_options: {}) + end + + sig do + override.returns( + { + page: Integer, + per_page: Integer, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/suppression_list_response.rbi b/rbi/ark_email/models/tenants/suppression_list_response.rbi new file mode 100644 index 0000000..a7c504e --- /dev/null +++ b/rbi/ark_email/models/tenants/suppression_list_response.rbi @@ -0,0 +1,58 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class SuppressionListResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::SuppressionListResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Suppression ID + sig { returns(String) } + attr_accessor :id + + sig { returns(String) } + attr_accessor :address + + sig { returns(Time) } + attr_accessor :created_at + + sig { returns(T.nilable(String)) } + attr_reader :reason + + sig { params(reason: String).void } + attr_writer :reason + + sig do + params( + id: String, + address: String, + created_at: Time, + reason: String + ).returns(T.attached_class) + end + def self.new( + # Suppression ID + id:, + address:, + created_at:, + reason: nil + ) + end + + sig do + override.returns( + { id: String, address: String, created_at: Time, reason: String } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/suppression_retrieve_params.rbi b/rbi/ark_email/models/tenants/suppression_retrieve_params.rbi new file mode 100644 index 0000000..7782a8b --- /dev/null +++ b/rbi/ark_email/models/tenants/suppression_retrieve_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class SuppressionRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::SuppressionRetrieveParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/suppression_retrieve_response.rbi b/rbi/ark_email/models/tenants/suppression_retrieve_response.rbi new file mode 100644 index 0000000..b88b1a6 --- /dev/null +++ b/rbi/ark_email/models/tenants/suppression_retrieve_response.rbi @@ -0,0 +1,122 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class SuppressionRetrieveResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::SuppressionRetrieveResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: + ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # The email address that was checked + sig { returns(String) } + attr_accessor :address + + # Whether the address is currently suppressed + sig { returns(T::Boolean) } + attr_accessor :suppressed + + # When the suppression was created (if suppressed) + sig { returns(T.nilable(Time)) } + attr_accessor :created_at + + # Reason for suppression (if suppressed) + sig { returns(T.nilable(String)) } + attr_accessor :reason + + sig do + params( + address: String, + suppressed: T::Boolean, + created_at: T.nilable(Time), + reason: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # The email address that was checked + address:, + # Whether the address is currently suppressed + suppressed:, + # When the suppression was created (if suppressed) + created_at: nil, + # Reason for suppression (if suppressed) + reason: nil + ) + end + + sig do + override.returns( + { + address: String, + suppressed: T::Boolean, + created_at: T.nilable(Time), + reason: T.nilable(String) + } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tenant_usage.rbi b/rbi/ark_email/models/tenants/tenant_usage.rbi new file mode 100644 index 0000000..3e1ad13 --- /dev/null +++ b/rbi/ark_email/models/tenants/tenant_usage.rbi @@ -0,0 +1,91 @@ +# typed: strong + +module ArkEmail + module Models + TenantUsage = Tenants::TenantUsage + + module Tenants + class TenantUsage < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::Tenants::TenantUsage, ArkEmail::Internal::AnyHash) + end + + # Email delivery counts + sig { returns(ArkEmail::EmailCounts) } + attr_reader :emails + + sig { params(emails: ArkEmail::EmailCounts::OrHash).void } + attr_writer :emails + + # Time period for usage data + sig { returns(ArkEmail::UsagePeriod) } + attr_reader :period + + sig { params(period: ArkEmail::UsagePeriod::OrHash).void } + attr_writer :period + + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + sig { returns(ArkEmail::EmailRates) } + attr_reader :rates + + sig { params(rates: ArkEmail::EmailRates::OrHash).void } + attr_writer :rates + + # Unique tenant identifier + sig { returns(String) } + attr_accessor :tenant_id + + # Tenant display name + sig { returns(String) } + attr_accessor :tenant_name + + # Your external ID for this tenant (from metadata) + sig { returns(T.nilable(String)) } + attr_accessor :external_id + + # Tenant usage statistics + sig do + params( + emails: ArkEmail::EmailCounts::OrHash, + period: ArkEmail::UsagePeriod::OrHash, + rates: ArkEmail::EmailRates::OrHash, + tenant_id: String, + tenant_name: String, + external_id: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # Email delivery counts + emails:, + # Time period for usage data + period:, + # Email delivery rates (as decimals, e.g., 0.95 = 95%) + rates:, + # Unique tenant identifier + tenant_id:, + # Tenant display name + tenant_name:, + # Your external ID for this tenant (from metadata) + external_id: nil + ) + end + + sig do + override.returns( + { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenant_id: String, + tenant_name: String, + external_id: T.nilable(String) + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tenant_usage_timeseries.rbi b/rbi/ark_email/models/tenants/tenant_usage_timeseries.rbi new file mode 100644 index 0000000..3c1ee4a --- /dev/null +++ b/rbi/ark_email/models/tenants/tenant_usage_timeseries.rbi @@ -0,0 +1,218 @@ +# typed: strong + +module ArkEmail + module Models + TenantUsageTimeseries = Tenants::TenantUsageTimeseries + + module Tenants + class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TenantUsageTimeseries, + ArkEmail::Internal::AnyHash + ) + end + + # Array of time-bucketed data points + sig do + returns(T::Array[ArkEmail::Tenants::TenantUsageTimeseries::Data]) + end + attr_accessor :data + + # Time bucket granularity + sig do + returns( + ArkEmail::Tenants::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + end + attr_accessor :granularity + + # Time period for usage data + sig { returns(ArkEmail::UsagePeriod) } + attr_reader :period + + sig { params(period: ArkEmail::UsagePeriod::OrHash).void } + attr_writer :period + + # Unique tenant identifier + sig { returns(String) } + attr_accessor :tenant_id + + # Tenant display name + sig { returns(String) } + attr_accessor :tenant_name + + # Timeseries usage statistics + sig do + params( + data: + T::Array[ArkEmail::Tenants::TenantUsageTimeseries::Data::OrHash], + granularity: + ArkEmail::Tenants::TenantUsageTimeseries::Granularity::OrSymbol, + period: ArkEmail::UsagePeriod::OrHash, + tenant_id: String, + tenant_name: String + ).returns(T.attached_class) + end + def self.new( + # Array of time-bucketed data points + data:, + # Time bucket granularity + granularity:, + # Time period for usage data + period:, + # Unique tenant identifier + tenant_id:, + # Tenant display name + tenant_name: + ) + end + + sig do + override.returns( + { + data: T::Array[ArkEmail::Tenants::TenantUsageTimeseries::Data], + granularity: + ArkEmail::Tenants::TenantUsageTimeseries::Granularity::TaggedSymbol, + period: ArkEmail::UsagePeriod, + tenant_id: String, + tenant_name: String + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TenantUsageTimeseries::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Bounces in this bucket + sig { returns(Integer) } + attr_accessor :bounced + + # Emails delivered in this bucket + sig { returns(Integer) } + attr_accessor :delivered + + # Hard failures in this bucket + sig { returns(Integer) } + attr_accessor :hard_failed + + # Emails held in this bucket + sig { returns(Integer) } + attr_accessor :held + + # Emails sent in this bucket + sig { returns(Integer) } + attr_accessor :sent + + # Soft failures in this bucket + sig { returns(Integer) } + attr_accessor :soft_failed + + # Start of time bucket + sig { returns(Time) } + attr_accessor :timestamp + + # Single timeseries data point + sig do + params( + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + ).returns(T.attached_class) + end + def self.new( + # Bounces in this bucket + bounced:, + # Emails delivered in this bucket + delivered:, + # Hard failures in this bucket + hard_failed:, + # Emails held in this bucket + held:, + # Emails sent in this bucket + sent:, + # Soft failures in this bucket + soft_failed:, + # Start of time bucket + timestamp: + ) + end + + sig do + override.returns( + { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + } + ) + end + def to_hash + end + end + + # Time bucket granularity + module Granularity + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Tenants::TenantUsageTimeseries::Granularity + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + HOUR = + T.let( + :hour, + ArkEmail::Tenants::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + DAY = + T.let( + :day, + ArkEmail::Tenants::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + WEEK = + T.let( + :week, + ArkEmail::Tenants::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + MONTH = + T.let( + :month, + ArkEmail::Tenants::TenantUsageTimeseries::Granularity::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Tenants::TenantUsageTimeseries::Granularity::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/track_domain.rbi b/rbi/ark_email/models/tenants/track_domain.rbi new file mode 100644 index 0000000..9b8eb24 --- /dev/null +++ b/rbi/ark_email/models/tenants/track_domain.rbi @@ -0,0 +1,255 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackDomain < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any(ArkEmail::Tenants::TrackDomain, ArkEmail::Internal::AnyHash) + end + + # Track domain ID + sig { returns(String) } + attr_accessor :id + + # When the track domain was created + sig { returns(Time) } + attr_accessor :created_at + + # Whether the tracking CNAME record is correctly configured. Must be true to use + # tracking features. + sig { returns(T::Boolean) } + attr_accessor :dns_ok + + # ID of the parent sending domain + sig { returns(String) } + attr_accessor :domain_id + + # Full domain name + sig { returns(String) } + attr_accessor :full_name + + # Subdomain name + sig { returns(String) } + attr_accessor :name + + # Whether SSL is enabled for tracking URLs + sig { returns(T::Boolean) } + attr_accessor :ssl_enabled + + # Whether click tracking is enabled + sig { returns(T::Boolean) } + attr_accessor :track_clicks + + # Whether open tracking is enabled + sig { returns(T::Boolean) } + attr_accessor :track_opens + + # When DNS was last checked + sig { returns(T.nilable(Time)) } + attr_accessor :dns_checked_at + + # DNS error message if verification failed + sig { returns(T.nilable(String)) } + attr_accessor :dns_error + + # Required DNS record configuration + sig { returns(T.nilable(ArkEmail::Tenants::TrackDomain::DNSRecord)) } + attr_reader :dns_record + + sig do + params( + dns_record: + T.nilable(ArkEmail::Tenants::TrackDomain::DNSRecord::OrHash) + ).void + end + attr_writer :dns_record + + # Current DNS verification status + sig do + returns( + T.nilable(ArkEmail::Tenants::TrackDomain::DNSStatus::TaggedSymbol) + ) + end + attr_accessor :dns_status + + # Domains excluded from click tracking + sig { returns(T.nilable(String)) } + attr_accessor :excluded_click_domains + + # When the track domain was last updated + sig { returns(T.nilable(Time)) } + attr_accessor :updated_at + + sig do + params( + id: String, + created_at: Time, + dns_ok: T::Boolean, + domain_id: String, + full_name: String, + name: String, + ssl_enabled: T::Boolean, + track_clicks: T::Boolean, + track_opens: T::Boolean, + dns_checked_at: T.nilable(Time), + dns_error: T.nilable(String), + dns_record: + T.nilable(ArkEmail::Tenants::TrackDomain::DNSRecord::OrHash), + dns_status: + T.nilable(ArkEmail::Tenants::TrackDomain::DNSStatus::OrSymbol), + excluded_click_domains: T.nilable(String), + updated_at: T.nilable(Time) + ).returns(T.attached_class) + end + def self.new( + # Track domain ID + id:, + # When the track domain was created + created_at:, + # Whether the tracking CNAME record is correctly configured. Must be true to use + # tracking features. + dns_ok:, + # ID of the parent sending domain + domain_id:, + # Full domain name + full_name:, + # Subdomain name + name:, + # Whether SSL is enabled for tracking URLs + ssl_enabled:, + # Whether click tracking is enabled + track_clicks:, + # Whether open tracking is enabled + track_opens:, + # When DNS was last checked + dns_checked_at: nil, + # DNS error message if verification failed + dns_error: nil, + # Required DNS record configuration + dns_record: nil, + # Current DNS verification status + dns_status: nil, + # Domains excluded from click tracking + excluded_click_domains: nil, + # When the track domain was last updated + updated_at: nil + ) + end + + sig do + override.returns( + { + id: String, + created_at: Time, + dns_ok: T::Boolean, + domain_id: String, + full_name: String, + name: String, + ssl_enabled: T::Boolean, + track_clicks: T::Boolean, + track_opens: T::Boolean, + dns_checked_at: T.nilable(Time), + dns_error: T.nilable(String), + dns_record: T.nilable(ArkEmail::Tenants::TrackDomain::DNSRecord), + dns_status: + T.nilable( + ArkEmail::Tenants::TrackDomain::DNSStatus::TaggedSymbol + ), + excluded_click_domains: T.nilable(String), + updated_at: T.nilable(Time) + } + ) + end + def to_hash + end + + class DNSRecord < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TrackDomain::DNSRecord, + ArkEmail::Internal::AnyHash + ) + end + + # DNS record name + sig { returns(T.nilable(String)) } + attr_reader :name + + sig { params(name: String).void } + attr_writer :name + + # DNS record type + sig { returns(T.nilable(String)) } + attr_reader :type + + sig { params(type: String).void } + attr_writer :type + + # DNS record value (target) + sig { returns(T.nilable(String)) } + attr_reader :value + + sig { params(value: String).void } + attr_writer :value + + # Required DNS record configuration + sig do + params(name: String, type: String, value: String).returns( + T.attached_class + ) + end + def self.new( + # DNS record name + name: nil, + # DNS record type + type: nil, + # DNS record value (target) + value: nil + ) + end + + sig do + override.returns({ name: String, type: String, value: String }) + end + def to_hash + end + end + + # Current DNS verification status + module DNSStatus + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Tenants::TrackDomain::DNSStatus) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OK = + T.let(:ok, ArkEmail::Tenants::TrackDomain::DNSStatus::TaggedSymbol) + MISSING = + T.let( + :missing, + ArkEmail::Tenants::TrackDomain::DNSStatus::TaggedSymbol + ) + INVALID = + T.let( + :invalid, + ArkEmail::Tenants::TrackDomain::DNSStatus::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ArkEmail::Tenants::TrackDomain::DNSStatus::TaggedSymbol] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_create_params.rbi b/rbi/ark_email/models/tenants/tracking_create_params.rbi new file mode 100644 index 0000000..d237413 --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_create_params.rbi @@ -0,0 +1,80 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TrackingCreateParams, + ArkEmail::Internal::AnyHash + ) + end + + # ID of the sending domain to attach this track domain to + sig { returns(Integer) } + attr_accessor :domain_id + + # Subdomain name (e.g., 'track' for track.yourdomain.com) + sig { returns(String) } + attr_accessor :name + + # Enable SSL for tracking URLs (accepts null, defaults to true) + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :ssl_enabled + + # Enable click tracking (accepts null, defaults to true) + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :track_clicks + + # Enable open tracking (tracking pixel, accepts null, defaults to true) + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :track_opens + + sig do + params( + domain_id: Integer, + name: String, + ssl_enabled: T.nilable(T::Boolean), + track_clicks: T.nilable(T::Boolean), + track_opens: T.nilable(T::Boolean), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # ID of the sending domain to attach this track domain to + domain_id:, + # Subdomain name (e.g., 'track' for track.yourdomain.com) + name:, + # Enable SSL for tracking URLs (accepts null, defaults to true) + ssl_enabled: nil, + # Enable click tracking (accepts null, defaults to true) + track_clicks: nil, + # Enable open tracking (tracking pixel, accepts null, defaults to true) + track_opens: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + domain_id: Integer, + name: String, + ssl_enabled: T.nilable(T::Boolean), + track_clicks: T.nilable(T::Boolean), + track_opens: T.nilable(T::Boolean), + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_create_response.rbi b/rbi/ark_email/models/tenants/tracking_create_response.rbi new file mode 100644 index 0000000..bc2d658 --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_create_response.rbi @@ -0,0 +1,54 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingCreateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingCreateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Tenants::TrackDomain) } + attr_reader :data + + sig { params(data: ArkEmail::Tenants::TrackDomain::OrHash).void } + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Tenants::TrackDomain::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_delete_params.rbi b/rbi/ark_email/models/tenants/tracking_delete_params.rbi new file mode 100644 index 0000000..336db05 --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_delete_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TrackingDeleteParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_delete_response.rbi b/rbi/ark_email/models/tenants/tracking_delete_response.rbi new file mode 100644 index 0000000..daff105 --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_delete_response.rbi @@ -0,0 +1,81 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingDeleteResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingDeleteResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::TrackingDeleteResponse::Data) } + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::TrackingDeleteResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::TrackingDeleteResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::TrackingDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingDeleteResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :message + + sig { params(message: String).returns(T.attached_class) } + def self.new(message:) + end + + sig { override.returns({ message: String }) } + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_list_params.rbi b/rbi/ark_email/models/tenants/tracking_list_params.rbi new file mode 100644 index 0000000..6946442 --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_list_params.rbi @@ -0,0 +1,32 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TrackingListParams, + ArkEmail::Internal::AnyHash + ) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_list_response.rbi b/rbi/ark_email/models/tenants/tracking_list_response.rbi new file mode 100644 index 0000000..2bbe67a --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_list_response.rbi @@ -0,0 +1,87 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingListResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingListResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::TrackingListResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::TrackingListResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Models::Tenants::TrackingListResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::TrackingListResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingListResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(T::Array[ArkEmail::Tenants::TrackDomain]) } + attr_accessor :track_domains + + sig do + params( + track_domains: T::Array[ArkEmail::Tenants::TrackDomain::OrHash] + ).returns(T.attached_class) + end + def self.new(track_domains:) + end + + sig do + override.returns( + { track_domains: T::Array[ArkEmail::Tenants::TrackDomain] } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_retrieve_params.rbi b/rbi/ark_email/models/tenants/tracking_retrieve_params.rbi new file mode 100644 index 0000000..d287d10 --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_retrieve_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TrackingRetrieveParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_retrieve_response.rbi b/rbi/ark_email/models/tenants/tracking_retrieve_response.rbi new file mode 100644 index 0000000..44da541 --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_retrieve_response.rbi @@ -0,0 +1,54 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingRetrieveResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingRetrieveResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Tenants::TrackDomain) } + attr_reader :data + + sig { params(data: ArkEmail::Tenants::TrackDomain::OrHash).void } + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Tenants::TrackDomain::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_update_params.rbi b/rbi/ark_email/models/tenants/tracking_update_params.rbi new file mode 100644 index 0000000..71302ad --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_update_params.rbi @@ -0,0 +1,78 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TrackingUpdateParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + # Comma-separated list of domains to exclude from click tracking (accepts null) + sig { returns(T.nilable(String)) } + attr_accessor :excluded_click_domains + + # Enable or disable SSL for tracking URLs (accepts null) + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :ssl_enabled + + # Enable or disable click tracking (accepts null) + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :track_clicks + + # Enable or disable open tracking (accepts null) + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :track_opens + + sig do + params( + tenant_id: String, + excluded_click_domains: T.nilable(String), + ssl_enabled: T.nilable(T::Boolean), + track_clicks: T.nilable(T::Boolean), + track_opens: T.nilable(T::Boolean), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + tenant_id:, + # Comma-separated list of domains to exclude from click tracking (accepts null) + excluded_click_domains: nil, + # Enable or disable SSL for tracking URLs (accepts null) + ssl_enabled: nil, + # Enable or disable click tracking (accepts null) + track_clicks: nil, + # Enable or disable open tracking (accepts null) + track_opens: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + tenant_id: String, + excluded_click_domains: T.nilable(String), + ssl_enabled: T.nilable(T::Boolean), + track_clicks: T.nilable(T::Boolean), + track_opens: T.nilable(T::Boolean), + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_update_response.rbi b/rbi/ark_email/models/tenants/tracking_update_response.rbi new file mode 100644 index 0000000..9e4ed0d --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_update_response.rbi @@ -0,0 +1,54 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingUpdateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingUpdateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Tenants::TrackDomain) } + attr_reader :data + + sig { params(data: ArkEmail::Tenants::TrackDomain::OrHash).void } + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Tenants::TrackDomain::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_verify_params.rbi b/rbi/ark_email/models/tenants/tracking_verify_params.rbi new file mode 100644 index 0000000..26fcd77 --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_verify_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingVerifyParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::TrackingVerifyParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/tracking_verify_response.rbi b/rbi/ark_email/models/tenants/tracking_verify_response.rbi new file mode 100644 index 0000000..7ac758f --- /dev/null +++ b/rbi/ark_email/models/tenants/tracking_verify_response.rbi @@ -0,0 +1,260 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class TrackingVerifyResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingVerifyResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::TrackingVerifyResponse::Data) } + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Track domain ID + sig { returns(String) } + attr_accessor :id + + # Whether DNS is correctly configured + sig { returns(T::Boolean) } + attr_accessor :dns_ok + + # Current DNS verification status + sig do + returns( + T.nilable( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol + ) + ) + end + attr_accessor :dns_status + + # Full domain name + sig { returns(String) } + attr_accessor :full_name + + # When DNS was last checked + sig { returns(T.nilable(Time)) } + attr_accessor :dns_checked_at + + # DNS error message if verification failed + sig { returns(T.nilable(String)) } + attr_accessor :dns_error + + # Required DNS record configuration + sig do + returns( + T.nilable( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord + ) + ) + end + attr_reader :dns_record + + sig do + params( + dns_record: + T.nilable( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord::OrHash + ) + ).void + end + attr_writer :dns_record + + sig do + params( + id: String, + dns_ok: T::Boolean, + dns_status: + T.nilable( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus::OrSymbol + ), + full_name: String, + dns_checked_at: T.nilable(Time), + dns_error: T.nilable(String), + dns_record: + T.nilable( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord::OrHash + ) + ).returns(T.attached_class) + end + def self.new( + # Track domain ID + id:, + # Whether DNS is correctly configured + dns_ok:, + # Current DNS verification status + dns_status:, + # Full domain name + full_name:, + # When DNS was last checked + dns_checked_at: nil, + # DNS error message if verification failed + dns_error: nil, + # Required DNS record configuration + dns_record: nil + ) + end + + sig do + override.returns( + { + id: String, + dns_ok: T::Boolean, + dns_status: + T.nilable( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol + ), + full_name: String, + dns_checked_at: T.nilable(Time), + dns_error: T.nilable(String), + dns_record: + T.nilable( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord + ) + } + ) + end + def to_hash + end + + # Current DNS verification status + module DNSStatus + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OK = + T.let( + :ok, + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol + ) + MISSING = + T.let( + :missing, + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol + ) + INVALID = + T.let( + :invalid, + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol + ] + ) + end + def self.values + end + end + + class DNSRecord < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(T.nilable(String)) } + attr_reader :name + + sig { params(name: String).void } + attr_writer :name + + sig { returns(T.nilable(String)) } + attr_reader :type + + sig { params(type: String).void } + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :value + + sig { params(value: String).void } + attr_writer :value + + # Required DNS record configuration + sig do + params(name: String, type: String, value: String).returns( + T.attached_class + ) + end + def self.new(name: nil, type: nil, value: nil) + end + + sig do + override.returns({ name: String, type: String, value: String }) + end + def to_hash + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/usage_retrieve_params.rbi b/rbi/ark_email/models/tenants/usage_retrieve_params.rbi new file mode 100644 index 0000000..8c46d61 --- /dev/null +++ b/rbi/ark_email/models/tenants/usage_retrieve_params.rbi @@ -0,0 +1,78 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class UsageRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::UsageRetrieveParams, + ArkEmail::Internal::AnyHash + ) + end + + # Time period for usage data. Defaults to current month. + # + # **Formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` + # - Range: `2024-01-01..2024-01-31` + # - Day: `2024-01-15` + sig { returns(T.nilable(String)) } + attr_reader :period + + sig { params(period: String).void } + attr_writer :period + + # Timezone for period calculations (IANA format). Defaults to UTC. + sig { returns(T.nilable(String)) } + attr_reader :timezone + + sig { params(timezone: String).void } + attr_writer :timezone + + sig do + params( + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Time period for usage data. Defaults to current month. + # + # **Formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` + # - Range: `2024-01-01..2024-01-31` + # - Day: `2024-01-15` + period: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/usage_retrieve_response.rbi b/rbi/ark_email/models/tenants/usage_retrieve_response.rbi new file mode 100644 index 0000000..df92dba --- /dev/null +++ b/rbi/ark_email/models/tenants/usage_retrieve_response.rbi @@ -0,0 +1,61 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::UsageRetrieveResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Tenant usage statistics + sig { returns(ArkEmail::Tenants::TenantUsage) } + attr_reader :data + + sig { params(data: ArkEmail::Tenants::TenantUsage::OrHash).void } + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Usage statistics for a single tenant + sig do + params( + data: ArkEmail::Tenants::TenantUsage::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Tenant usage statistics + data:, + meta:, + success: true + ) + end + + sig do + override.returns( + { + data: ArkEmail::Tenants::TenantUsage, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/usage_retrieve_timeseries_params.rbi b/rbi/ark_email/models/tenants/usage_retrieve_timeseries_params.rbi new file mode 100644 index 0000000..9c62ef8 --- /dev/null +++ b/rbi/ark_email/models/tenants/usage_retrieve_timeseries_params.rbi @@ -0,0 +1,131 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class UsageRetrieveTimeseriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::UsageRetrieveTimeseriesParams, + ArkEmail::Internal::AnyHash + ) + end + + # Time bucket size for data points + sig do + returns( + T.nilable( + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::OrSymbol + ) + ) + end + attr_reader :granularity + + sig do + params( + granularity: + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::OrSymbol + ).void + end + attr_writer :granularity + + # Time period for timeseries data. Defaults to current month. + sig { returns(T.nilable(String)) } + attr_reader :period + + sig { params(period: String).void } + attr_writer :period + + # Timezone for period calculations (IANA format). Defaults to UTC. + sig { returns(T.nilable(String)) } + attr_reader :timezone + + sig { params(timezone: String).void } + attr_writer :timezone + + sig do + params( + granularity: + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::OrSymbol, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Time bucket size for data points + granularity: nil, + # Time period for timeseries data. Defaults to current month. + period: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + granularity: + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::OrSymbol, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Time bucket size for data points + module Granularity + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + HOUR = + T.let( + :hour, + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::TaggedSymbol + ) + DAY = + T.let( + :day, + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::TaggedSymbol + ) + WEEK = + T.let( + :week, + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::TaggedSymbol + ) + MONTH = + T.let( + :month, + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/usage_retrieve_timeseries_response.rbi b/rbi/ark_email/models/tenants/usage_retrieve_timeseries_response.rbi new file mode 100644 index 0000000..618d631 --- /dev/null +++ b/rbi/ark_email/models/tenants/usage_retrieve_timeseries_response.rbi @@ -0,0 +1,63 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class UsageRetrieveTimeseriesResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::UsageRetrieveTimeseriesResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Timeseries usage statistics + sig { returns(ArkEmail::Tenants::TenantUsageTimeseries) } + attr_reader :data + + sig do + params(data: ArkEmail::Tenants::TenantUsageTimeseries::OrHash).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Timeseries usage data for a tenant + sig do + params( + data: ArkEmail::Tenants::TenantUsageTimeseries::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Timeseries usage statistics + data:, + meta:, + success: true + ) + end + + sig do + override.returns( + { + data: ArkEmail::Tenants::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_create_params.rbi b/rbi/ark_email/models/tenants/webhook_create_params.rbi new file mode 100644 index 0000000..1a6671e --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_create_params.rbi @@ -0,0 +1,175 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookCreateParams, + ArkEmail::Internal::AnyHash + ) + end + + # Webhook name for identification + sig { returns(String) } + attr_accessor :name + + # HTTPS endpoint URL + sig { returns(String) } + attr_accessor :url + + # Subscribe to all events (ignores events array, accepts null) + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :all_events + + # Whether the webhook is enabled (accepts null) + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :enabled + + # Events to subscribe to (accepts null): + # + # - `MessageSent` - Email successfully delivered to recipient's server + # - `MessageDelayed` - Temporary delivery failure, will retry + # - `MessageDeliveryFailed` - Permanent delivery failure + # - `MessageHeld` - Email held for manual review + # - `MessageBounced` - Email bounced back + # - `MessageLinkClicked` - Recipient clicked a tracked link + # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded) + # - `DomainDNSError` - DNS configuration issue detected + sig do + returns( + T.nilable( + T::Array[ArkEmail::Tenants::WebhookCreateParams::Event::OrSymbol] + ) + ) + end + attr_accessor :events + + sig do + params( + name: String, + url: String, + all_events: T.nilable(T::Boolean), + enabled: T.nilable(T::Boolean), + events: + T.nilable( + T::Array[ + ArkEmail::Tenants::WebhookCreateParams::Event::OrSymbol + ] + ), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Webhook name for identification + name:, + # HTTPS endpoint URL + url:, + # Subscribe to all events (ignores events array, accepts null) + all_events: nil, + # Whether the webhook is enabled (accepts null) + enabled: nil, + # Events to subscribe to (accepts null): + # + # - `MessageSent` - Email successfully delivered to recipient's server + # - `MessageDelayed` - Temporary delivery failure, will retry + # - `MessageDeliveryFailed` - Permanent delivery failure + # - `MessageHeld` - Email held for manual review + # - `MessageBounced` - Email bounced back + # - `MessageLinkClicked` - Recipient clicked a tracked link + # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded) + # - `DomainDNSError` - DNS configuration issue detected + events: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + name: String, + url: String, + all_events: T.nilable(T::Boolean), + enabled: T.nilable(T::Boolean), + events: + T.nilable( + T::Array[ + ArkEmail::Tenants::WebhookCreateParams::Event::OrSymbol + ] + ), + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Tenants::WebhookCreateParams::Event) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Tenants::WebhookCreateParams::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_create_response.rbi b/rbi/ark_email/models/tenants/webhook_create_response.rbi new file mode 100644 index 0000000..5f7544c --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_create_response.rbi @@ -0,0 +1,222 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookCreateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::WebhookCreateResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::WebhookCreateResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookCreateResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Webhook ID + sig { returns(String) } + attr_accessor :id + + # Whether subscribed to all events + sig { returns(T::Boolean) } + attr_accessor :all_events + + sig { returns(Time) } + attr_accessor :created_at + + # Whether the webhook is active + sig { returns(T::Boolean) } + attr_accessor :enabled + + # Subscribed events + sig do + returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ] + ) + end + attr_accessor :events + + # Webhook name for identification + sig { returns(String) } + attr_accessor :name + + # Webhook endpoint URL + sig { returns(String) } + attr_accessor :url + + sig { returns(String) } + attr_accessor :uuid + + sig do + params( + id: String, + all_events: T::Boolean, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::OrSymbol + ], + name: String, + url: String, + uuid: String + ).returns(T.attached_class) + end + def self.new( + # Webhook ID + id:, + # Whether subscribed to all events + all_events:, + created_at:, + # Whether the webhook is active + enabled:, + # Subscribed events + events:, + # Webhook name for identification + name:, + # Webhook endpoint URL + url:, + uuid: + ) + end + + sig do + override.returns( + { + id: String, + all_events: T::Boolean, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ], + name: String, + url: String, + uuid: String + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookCreateResponse::Data::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_delete_params.rbi b/rbi/ark_email/models/tenants/webhook_delete_params.rbi new file mode 100644 index 0000000..d8d6764 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_delete_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookDeleteParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_delete_response.rbi b/rbi/ark_email/models/tenants/webhook_delete_response.rbi new file mode 100644 index 0000000..053bfd4 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_delete_response.rbi @@ -0,0 +1,80 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookDeleteResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::WebhookDeleteResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::WebhookDeleteResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookDeleteResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookDeleteResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :message + + sig { params(message: String).returns(T.attached_class) } + def self.new(message:) + end + + sig { override.returns({ message: String }) } + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_list_deliveries_params.rbi b/rbi/ark_email/models/tenants/webhook_list_deliveries_params.rbi new file mode 100644 index 0000000..a68911e --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_list_deliveries_params.rbi @@ -0,0 +1,190 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookListDeliveriesParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + # Only deliveries after this Unix timestamp + sig { returns(T.nilable(Integer)) } + attr_reader :after + + sig { params(after: Integer).void } + attr_writer :after + + # Only deliveries before this Unix timestamp + sig { returns(T.nilable(Integer)) } + attr_reader :before + + sig { params(before: Integer).void } + attr_writer :before + + # Filter by event type + sig do + returns( + T.nilable( + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::OrSymbol + ) + ) + end + attr_reader :event + + sig do + params( + event: + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::OrSymbol + ).void + end + attr_writer :event + + # Page number (default 1) + sig { returns(T.nilable(Integer)) } + attr_reader :page + + sig { params(page: Integer).void } + attr_writer :page + + # Items per page (default 30, max 100) + sig { returns(T.nilable(Integer)) } + attr_reader :per_page + + sig { params(per_page: Integer).void } + attr_writer :per_page + + # Filter by delivery success (true = 2xx response, false = non-2xx or error) + sig { returns(T.nilable(T::Boolean)) } + attr_reader :success + + sig { params(success: T::Boolean).void } + attr_writer :success + + sig do + params( + tenant_id: String, + after: Integer, + before: Integer, + event: + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::OrSymbol, + page: Integer, + per_page: Integer, + success: T::Boolean, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + tenant_id:, + # Only deliveries after this Unix timestamp + after: nil, + # Only deliveries before this Unix timestamp + before: nil, + # Filter by event type + event: nil, + # Page number (default 1) + page: nil, + # Items per page (default 30, max 100) + per_page: nil, + # Filter by delivery success (true = 2xx response, false = non-2xx or error) + success: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + tenant_id: String, + after: Integer, + before: Integer, + event: + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::OrSymbol, + page: Integer, + per_page: Integer, + success: T::Boolean, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Filter by event type + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_list_deliveries_response.rbi b/rbi/ark_email/models/tenants/webhook_list_deliveries_response.rbi new file mode 100644 index 0000000..9e38002 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_list_deliveries_response.rbi @@ -0,0 +1,265 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data + ] + ) + end + attr_accessor :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + # Current page number + sig { returns(Integer) } + attr_accessor :page + + # Items per page + sig { returns(Integer) } + attr_accessor :per_page + + # Total number of deliveries matching the filter + sig { returns(Integer) } + attr_accessor :total + + # Total number of pages + sig { returns(Integer) } + attr_accessor :total_pages + + # Paginated list of webhook delivery attempts + sig do + params( + data: + T::Array[ + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::OrHash + ], + meta: ArkEmail::APIMeta::OrHash, + page: Integer, + per_page: Integer, + total: Integer, + total_pages: Integer + ).returns(T.attached_class) + end + def self.new( + data:, + meta:, + # Current page number + page:, + # Items per page + per_page:, + # Total number of deliveries matching the filter + total:, + # Total number of pages + total_pages: + ) + end + + sig do + override.returns( + { + data: + T::Array[ + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data + ], + meta: ArkEmail::APIMeta, + page: Integer, + per_page: Integer, + total: Integer, + total_pages: Integer + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique delivery ID (UUID) + sig { returns(String) } + attr_accessor :id + + # Attempt number (1 for first attempt, increments with retries) + sig { returns(Integer) } + attr_accessor :attempt + + # Event type that triggered this delivery + sig do + returns( + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + end + attr_accessor :event + + # HTTP status code returned by the endpoint (null if connection failed) + sig { returns(T.nilable(Integer)) } + attr_accessor :status_code + + # Whether the delivery was successful (2xx response) + sig { returns(T::Boolean) } + attr_accessor :success + + # When this delivery attempt occurred + sig { returns(Time) } + attr_accessor :timestamp + + # URL the webhook was delivered to + sig { returns(String) } + attr_accessor :url + + # ID of the webhook this delivery belongs to + sig { returns(String) } + attr_accessor :webhook_id + + # Whether this delivery will be retried (true if failed and retries remaining) + sig { returns(T::Boolean) } + attr_accessor :will_retry + + # Summary of a webhook delivery attempt + sig do + params( + id: String, + attempt: Integer, + event: + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::OrSymbol, + status_code: T.nilable(Integer), + success: T::Boolean, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Unique delivery ID (UUID) + id:, + # Attempt number (1 for first attempt, increments with retries) + attempt:, + # Event type that triggered this delivery + event:, + # HTTP status code returned by the endpoint (null if connection failed) + status_code:, + # Whether the delivery was successful (2xx response) + success:, + # When this delivery attempt occurred + timestamp:, + # URL the webhook was delivered to + url:, + # ID of the webhook this delivery belongs to + webhook_id:, + # Whether this delivery will be retried (true if failed and retries remaining) + will_retry: + ) + end + + sig do + override.returns( + { + id: String, + attempt: Integer, + event: + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol, + status_code: T.nilable(Integer), + success: T::Boolean, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: T::Boolean + } + ) + end + def to_hash + end + + # Event type that triggered this delivery + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_list_params.rbi b/rbi/ark_email/models/tenants/webhook_list_params.rbi new file mode 100644 index 0000000..e1d06a4 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_list_params.rbi @@ -0,0 +1,32 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookListParams, + ArkEmail::Internal::AnyHash + ) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_list_response.rbi b/rbi/ark_email/models/tenants/webhook_list_response.rbi new file mode 100644 index 0000000..59b0c1b --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_list_response.rbi @@ -0,0 +1,160 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookListResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookListResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::WebhookListResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::WebhookListResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Models::Tenants::WebhookListResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::WebhookListResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookListResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook + ] + ) + end + attr_accessor :webhooks + + sig do + params( + webhooks: + T::Array[ + ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook::OrHash + ] + ).returns(T.attached_class) + end + def self.new(webhooks:) + end + + sig do + override.returns( + { + webhooks: + T::Array[ + ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook + ] + } + ) + end + def to_hash + end + + class Webhook < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook, + ArkEmail::Internal::AnyHash + ) + end + + # Webhook ID + sig { returns(String) } + attr_accessor :id + + sig { returns(T::Boolean) } + attr_accessor :enabled + + sig { returns(T::Array[String]) } + attr_accessor :events + + sig { returns(String) } + attr_accessor :name + + sig { returns(String) } + attr_accessor :url + + sig do + params( + id: String, + enabled: T::Boolean, + events: T::Array[String], + name: String, + url: String + ).returns(T.attached_class) + end + def self.new( + # Webhook ID + id:, + enabled:, + events:, + name:, + url: + ) + end + + sig do + override.returns( + { + id: String, + enabled: T::Boolean, + events: T::Array[String], + name: String, + url: String + } + ) + end + def to_hash + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_replay_delivery_params.rbi b/rbi/ark_email/models/tenants/webhook_replay_delivery_params.rbi new file mode 100644 index 0000000..7766010 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_replay_delivery_params.rbi @@ -0,0 +1,48 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookReplayDeliveryParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig { returns(String) } + attr_accessor :webhook_id + + sig do + params( + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, webhook_id:, request_options: {}) + end + + sig do + override.returns( + { + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_replay_delivery_response.rbi b/rbi/ark_email/models/tenants/webhook_replay_delivery_response.rbi new file mode 100644 index 0000000..5e9a471 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_replay_delivery_response.rbi @@ -0,0 +1,141 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns( + ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data + ) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Result of replaying a webhook delivery + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: + ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Request duration in milliseconds + sig { returns(Integer) } + attr_accessor :duration + + # ID of the new delivery created by the replay + sig { returns(String) } + attr_accessor :new_delivery_id + + # ID of the original delivery that was replayed + sig { returns(String) } + attr_accessor :original_delivery_id + + # HTTP status code from your endpoint + sig { returns(T.nilable(Integer)) } + attr_accessor :status_code + + # Whether the replay was successful (2xx response from endpoint) + sig { returns(T::Boolean) } + attr_accessor :success + + # When the replay was executed + sig { returns(Time) } + attr_accessor :timestamp + + sig do + params( + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: T.nilable(Integer), + success: T::Boolean, + timestamp: Time + ).returns(T.attached_class) + end + def self.new( + # Request duration in milliseconds + duration:, + # ID of the new delivery created by the replay + new_delivery_id:, + # ID of the original delivery that was replayed + original_delivery_id:, + # HTTP status code from your endpoint + status_code:, + # Whether the replay was successful (2xx response from endpoint) + success:, + # When the replay was executed + timestamp: + ) + end + + sig do + override.returns( + { + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: T.nilable(Integer), + success: T::Boolean, + timestamp: Time + } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_retrieve_delivery_params.rbi b/rbi/ark_email/models/tenants/webhook_retrieve_delivery_params.rbi new file mode 100644 index 0000000..5d04ea3 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_retrieve_delivery_params.rbi @@ -0,0 +1,48 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookRetrieveDeliveryParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig { returns(String) } + attr_accessor :webhook_id + + sig do + params( + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, webhook_id:, request_options: {}) + end + + sig do + override.returns( + { + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_retrieve_delivery_response.rbi b/rbi/ark_email/models/tenants/webhook_retrieve_delivery_response.rbi new file mode 100644 index 0000000..a4875fe --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_retrieve_delivery_response.rbi @@ -0,0 +1,380 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Full details of a webhook delivery including request and response + sig do + returns( + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data + ) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Detailed information about a webhook delivery attempt + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Full details of a webhook delivery including request and response + data:, + meta:, + success: true + ) + end + + sig do + override.returns( + { + data: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique delivery ID (UUID) + sig { returns(String) } + attr_accessor :id + + # Attempt number for this delivery + sig { returns(Integer) } + attr_accessor :attempt + + # Event type that triggered this delivery + sig do + returns( + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + end + attr_accessor :event + + # The request that was sent to your endpoint + sig do + returns( + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request + ) + end + attr_reader :request + + sig do + params( + request: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request::OrHash + ).void + end + attr_writer :request + + # The response received from your endpoint + sig do + returns( + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response + ) + end + attr_reader :response + + sig do + params( + response: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response::OrHash + ).void + end + attr_writer :response + + # HTTP status code returned by the endpoint + sig { returns(T.nilable(Integer)) } + attr_accessor :status_code + + # Whether the delivery was successful (2xx response) + sig { returns(T::Boolean) } + attr_accessor :success + + # When this delivery attempt occurred + sig { returns(Time) } + attr_accessor :timestamp + + # URL the webhook was delivered to + sig { returns(String) } + attr_accessor :url + + # ID of the webhook this delivery belongs to + sig { returns(String) } + attr_accessor :webhook_id + + # Name of the webhook for easy identification + sig { returns(String) } + attr_accessor :webhook_name + + # Whether this delivery will be retried + sig { returns(T::Boolean) } + attr_accessor :will_retry + + # Full details of a webhook delivery including request and response + sig do + params( + id: String, + attempt: Integer, + event: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::OrSymbol, + request: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request::OrHash, + response: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response::OrHash, + status_code: T.nilable(Integer), + success: T::Boolean, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Unique delivery ID (UUID) + id:, + # Attempt number for this delivery + attempt:, + # Event type that triggered this delivery + event:, + # The request that was sent to your endpoint + request:, + # The response received from your endpoint + response:, + # HTTP status code returned by the endpoint + status_code:, + # Whether the delivery was successful (2xx response) + success:, + # When this delivery attempt occurred + timestamp:, + # URL the webhook was delivered to + url:, + # ID of the webhook this delivery belongs to + webhook_id:, + # Name of the webhook for easy identification + webhook_name:, + # Whether this delivery will be retried + will_retry: + ) + end + + sig do + override.returns( + { + id: String, + attempt: Integer, + event: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol, + request: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request, + response: + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response, + status_code: T.nilable(Integer), + success: T::Boolean, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: T::Boolean + } + ) + end + def to_hash + end + + # Event type that triggered this delivery + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + + class Request < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request, + ArkEmail::Internal::AnyHash + ) + end + + # HTTP headers that were sent with the request + sig { returns(T::Hash[Symbol, String]) } + attr_accessor :headers + + # The complete webhook payload that was sent + sig { returns(T::Hash[Symbol, T.anything]) } + attr_accessor :payload + + # The request that was sent to your endpoint + sig do + params( + headers: T::Hash[Symbol, String], + payload: T::Hash[Symbol, T.anything] + ).returns(T.attached_class) + end + def self.new( + # HTTP headers that were sent with the request + headers:, + # The complete webhook payload that was sent + payload: + ) + end + + sig do + override.returns( + { + headers: T::Hash[Symbol, String], + payload: T::Hash[Symbol, T.anything] + } + ) + end + def to_hash + end + end + + class Response < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response, + ArkEmail::Internal::AnyHash + ) + end + + # HTTP status code from your endpoint + sig { returns(T.nilable(Integer)) } + attr_accessor :status_code + + # Response body from your endpoint (may be truncated) + sig { returns(T.nilable(String)) } + attr_accessor :body + + # The response received from your endpoint + sig do + params( + status_code: T.nilable(Integer), + body: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # HTTP status code from your endpoint + status_code:, + # Response body from your endpoint (may be truncated) + body: nil + ) + end + + sig do + override.returns( + { status_code: T.nilable(Integer), body: T.nilable(String) } + ) + end + def to_hash + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_retrieve_params.rbi b/rbi/ark_email/models/tenants/webhook_retrieve_params.rbi new file mode 100644 index 0000000..840dca3 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_retrieve_params.rbi @@ -0,0 +1,40 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookRetrieveParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new(tenant_id:, request_options: {}) + end + + sig do + override.returns( + { tenant_id: String, request_options: ArkEmail::RequestOptions } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_retrieve_response.rbi b/rbi/ark_email/models/tenants/webhook_retrieve_response.rbi new file mode 100644 index 0000000..b565d66 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_retrieve_response.rbi @@ -0,0 +1,225 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookRetrieveResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Webhook ID + sig { returns(String) } + attr_accessor :id + + # Whether subscribed to all events + sig { returns(T::Boolean) } + attr_accessor :all_events + + sig { returns(Time) } + attr_accessor :created_at + + # Whether the webhook is active + sig { returns(T::Boolean) } + attr_accessor :enabled + + # Subscribed events + sig do + returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ] + ) + end + attr_accessor :events + + # Webhook name for identification + sig { returns(String) } + attr_accessor :name + + # Webhook endpoint URL + sig { returns(String) } + attr_accessor :url + + sig { returns(String) } + attr_accessor :uuid + + sig do + params( + id: String, + all_events: T::Boolean, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::OrSymbol + ], + name: String, + url: String, + uuid: String + ).returns(T.attached_class) + end + def self.new( + # Webhook ID + id:, + # Whether subscribed to all events + all_events:, + created_at:, + # Whether the webhook is active + enabled:, + # Subscribed events + events:, + # Webhook name for identification + name:, + # Webhook endpoint URL + url:, + uuid: + ) + end + + sig do + override.returns( + { + id: String, + all_events: T::Boolean, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ], + name: String, + url: String, + uuid: String + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_test_params.rbi b/rbi/ark_email/models/tenants/webhook_test_params.rbi new file mode 100644 index 0000000..d96b38e --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_test_params.rbi @@ -0,0 +1,116 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookTestParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookTestParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + # Event type to simulate + sig { returns(ArkEmail::Tenants::WebhookTestParams::Event::OrSymbol) } + attr_accessor :event + + sig do + params( + tenant_id: String, + event: ArkEmail::Tenants::WebhookTestParams::Event::OrSymbol, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + tenant_id:, + # Event type to simulate + event:, + request_options: {} + ) + end + + sig do + override.returns( + { + tenant_id: String, + event: ArkEmail::Tenants::WebhookTestParams::Event::OrSymbol, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Event type to simulate + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Tenants::WebhookTestParams::Event) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Tenants::WebhookTestParams::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_test_response.rbi b/rbi/ark_email/models/tenants/webhook_test_response.rbi new file mode 100644 index 0000000..0d33d64 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_test_response.rbi @@ -0,0 +1,133 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookTestResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::WebhookTestResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::WebhookTestResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Models::Tenants::WebhookTestResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookTestResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Request duration in milliseconds + sig { returns(Integer) } + attr_accessor :duration + + # Event type that was tested + sig { returns(String) } + attr_accessor :event + + # HTTP status code from the webhook endpoint + sig { returns(T.nilable(Integer)) } + attr_accessor :status_code + + # Whether the webhook endpoint responded with a 2xx status + sig { returns(T::Boolean) } + attr_accessor :success + + # Response body from the webhook endpoint (truncated if too long) + sig { returns(T.nilable(String)) } + attr_accessor :body + + # Error message if the request failed + sig { returns(T.nilable(String)) } + attr_accessor :error + + sig do + params( + duration: Integer, + event: String, + status_code: T.nilable(Integer), + success: T::Boolean, + body: T.nilable(String), + error: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # Request duration in milliseconds + duration:, + # Event type that was tested + event:, + # HTTP status code from the webhook endpoint + status_code:, + # Whether the webhook endpoint responded with a 2xx status + success:, + # Response body from the webhook endpoint (truncated if too long) + body: nil, + # Error message if the request failed + error: nil + ) + end + + sig do + override.returns( + { + duration: Integer, + event: String, + status_code: T.nilable(Integer), + success: T::Boolean, + body: T.nilable(String), + error: T.nilable(String) + } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_update_params.rbi b/rbi/ark_email/models/tenants/webhook_update_params.rbi new file mode 100644 index 0000000..4ae1f81 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_update_params.rbi @@ -0,0 +1,76 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Tenants::WebhookUpdateParams, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :tenant_id + + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :all_events + + sig { returns(T.nilable(T::Boolean)) } + attr_accessor :enabled + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :events + + sig { returns(T.nilable(String)) } + attr_accessor :name + + sig { returns(T.nilable(String)) } + attr_accessor :url + + sig do + params( + tenant_id: String, + all_events: T.nilable(T::Boolean), + enabled: T.nilable(T::Boolean), + events: T.nilable(T::Array[String]), + name: T.nilable(String), + url: T.nilable(String), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + tenant_id:, + all_events: nil, + enabled: nil, + events: nil, + name: nil, + url: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + tenant_id: String, + all_events: T.nilable(T::Boolean), + enabled: T.nilable(T::Boolean), + events: T.nilable(T::Array[String]), + name: T.nilable(String), + url: T.nilable(String), + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/tenants/webhook_update_response.rbi b/rbi/ark_email/models/tenants/webhook_update_response.rbi new file mode 100644 index 0000000..e9fe1c8 --- /dev/null +++ b/rbi/ark_email/models/tenants/webhook_update_response.rbi @@ -0,0 +1,222 @@ +# typed: strong + +module ArkEmail + module Models + module Tenants + class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookUpdateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Tenants::WebhookUpdateResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Tenants::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Webhook ID + sig { returns(String) } + attr_accessor :id + + # Whether subscribed to all events + sig { returns(T::Boolean) } + attr_accessor :all_events + + sig { returns(Time) } + attr_accessor :created_at + + # Whether the webhook is active + sig { returns(T::Boolean) } + attr_accessor :enabled + + # Subscribed events + sig do + returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ] + ) + end + attr_accessor :events + + # Webhook name for identification + sig { returns(String) } + attr_accessor :name + + # Webhook endpoint URL + sig { returns(String) } + attr_accessor :url + + sig { returns(String) } + attr_accessor :uuid + + sig do + params( + id: String, + all_events: T::Boolean, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::OrSymbol + ], + name: String, + url: String, + uuid: String + ).returns(T.attached_class) + end + def self.new( + # Webhook ID + id:, + # Whether subscribed to all events + all_events:, + created_at:, + # Whether the webhook is active + enabled:, + # Subscribed events + events:, + # Webhook name for identification + name:, + # Webhook endpoint URL + url:, + uuid: + ) + end + + sig do + override.returns( + { + id: String, + all_events: T::Boolean, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ], + name: String, + url: String, + uuid: String + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/track_domain.rbi b/rbi/ark_email/models/track_domain.rbi deleted file mode 100644 index 8de8ac2..0000000 --- a/rbi/ark_email/models/track_domain.rbi +++ /dev/null @@ -1,230 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackDomain < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any(ArkEmail::TrackDomain, ArkEmail::Internal::AnyHash) - end - - # Track domain ID - sig { returns(String) } - attr_accessor :id - - # When the track domain was created - sig { returns(Time) } - attr_accessor :created_at - - # Whether the tracking CNAME record is correctly configured. Must be true to use - # tracking features. - sig { returns(T::Boolean) } - attr_accessor :dns_ok - - # ID of the parent sending domain - sig { returns(String) } - attr_accessor :domain_id - - # Full domain name - sig { returns(String) } - attr_accessor :full_name - - # Subdomain name - sig { returns(String) } - attr_accessor :name - - # Whether SSL is enabled for tracking URLs - sig { returns(T::Boolean) } - attr_accessor :ssl_enabled - - # Whether click tracking is enabled - sig { returns(T::Boolean) } - attr_accessor :track_clicks - - # Whether open tracking is enabled - sig { returns(T::Boolean) } - attr_accessor :track_opens - - # When DNS was last checked - sig { returns(T.nilable(Time)) } - attr_accessor :dns_checked_at - - # DNS error message if verification failed - sig { returns(T.nilable(String)) } - attr_accessor :dns_error - - # Required DNS record configuration - sig { returns(T.nilable(ArkEmail::TrackDomain::DNSRecord)) } - attr_reader :dns_record - - sig do - params( - dns_record: T.nilable(ArkEmail::TrackDomain::DNSRecord::OrHash) - ).void - end - attr_writer :dns_record - - # Current DNS verification status - sig { returns(T.nilable(ArkEmail::TrackDomain::DNSStatus::TaggedSymbol)) } - attr_accessor :dns_status - - # Domains excluded from click tracking - sig { returns(T.nilable(String)) } - attr_accessor :excluded_click_domains - - # When the track domain was last updated - sig { returns(T.nilable(Time)) } - attr_accessor :updated_at - - sig do - params( - id: String, - created_at: Time, - dns_ok: T::Boolean, - domain_id: String, - full_name: String, - name: String, - ssl_enabled: T::Boolean, - track_clicks: T::Boolean, - track_opens: T::Boolean, - dns_checked_at: T.nilable(Time), - dns_error: T.nilable(String), - dns_record: T.nilable(ArkEmail::TrackDomain::DNSRecord::OrHash), - dns_status: T.nilable(ArkEmail::TrackDomain::DNSStatus::OrSymbol), - excluded_click_domains: T.nilable(String), - updated_at: T.nilable(Time) - ).returns(T.attached_class) - end - def self.new( - # Track domain ID - id:, - # When the track domain was created - created_at:, - # Whether the tracking CNAME record is correctly configured. Must be true to use - # tracking features. - dns_ok:, - # ID of the parent sending domain - domain_id:, - # Full domain name - full_name:, - # Subdomain name - name:, - # Whether SSL is enabled for tracking URLs - ssl_enabled:, - # Whether click tracking is enabled - track_clicks:, - # Whether open tracking is enabled - track_opens:, - # When DNS was last checked - dns_checked_at: nil, - # DNS error message if verification failed - dns_error: nil, - # Required DNS record configuration - dns_record: nil, - # Current DNS verification status - dns_status: nil, - # Domains excluded from click tracking - excluded_click_domains: nil, - # When the track domain was last updated - updated_at: nil - ) - end - - sig do - override.returns( - { - id: String, - created_at: Time, - dns_ok: T::Boolean, - domain_id: String, - full_name: String, - name: String, - ssl_enabled: T::Boolean, - track_clicks: T::Boolean, - track_opens: T::Boolean, - dns_checked_at: T.nilable(Time), - dns_error: T.nilable(String), - dns_record: T.nilable(ArkEmail::TrackDomain::DNSRecord), - dns_status: - T.nilable(ArkEmail::TrackDomain::DNSStatus::TaggedSymbol), - excluded_click_domains: T.nilable(String), - updated_at: T.nilable(Time) - } - ) - end - def to_hash - end - - class DNSRecord < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any(ArkEmail::TrackDomain::DNSRecord, ArkEmail::Internal::AnyHash) - end - - # DNS record name - sig { returns(T.nilable(String)) } - attr_reader :name - - sig { params(name: String).void } - attr_writer :name - - # DNS record type - sig { returns(T.nilable(String)) } - attr_reader :type - - sig { params(type: String).void } - attr_writer :type - - # DNS record value (target) - sig { returns(T.nilable(String)) } - attr_reader :value - - sig { params(value: String).void } - attr_writer :value - - # Required DNS record configuration - sig do - params(name: String, type: String, value: String).returns( - T.attached_class - ) - end - def self.new( - # DNS record name - name: nil, - # DNS record type - type: nil, - # DNS record value (target) - value: nil - ) - end - - sig { override.returns({ name: String, type: String, value: String }) } - def to_hash - end - end - - # Current DNS verification status - module DNSStatus - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias { T.all(Symbol, ArkEmail::TrackDomain::DNSStatus) } - OrSymbol = T.type_alias { T.any(Symbol, String) } - - OK = T.let(:ok, ArkEmail::TrackDomain::DNSStatus::TaggedSymbol) - MISSING = - T.let(:missing, ArkEmail::TrackDomain::DNSStatus::TaggedSymbol) - INVALID = - T.let(:invalid, ArkEmail::TrackDomain::DNSStatus::TaggedSymbol) - - sig do - override.returns( - T::Array[ArkEmail::TrackDomain::DNSStatus::TaggedSymbol] - ) - end - def self.values - end - end - end - end -end diff --git a/rbi/ark_email/models/tracking_create_params.rbi b/rbi/ark_email/models/tracking_create_params.rbi deleted file mode 100644 index b346a94..0000000 --- a/rbi/ark_email/models/tracking_create_params.rbi +++ /dev/null @@ -1,75 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::TrackingCreateParams, ArkEmail::Internal::AnyHash) - end - - # ID of the sending domain to attach this track domain to - sig { returns(Integer) } - attr_accessor :domain_id - - # Subdomain name (e.g., 'track' for track.yourdomain.com) - sig { returns(String) } - attr_accessor :name - - # Enable SSL for tracking URLs (accepts null, defaults to true) - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :ssl_enabled - - # Enable click tracking (accepts null, defaults to true) - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :track_clicks - - # Enable open tracking (tracking pixel, accepts null, defaults to true) - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :track_opens - - sig do - params( - domain_id: Integer, - name: String, - ssl_enabled: T.nilable(T::Boolean), - track_clicks: T.nilable(T::Boolean), - track_opens: T.nilable(T::Boolean), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # ID of the sending domain to attach this track domain to - domain_id:, - # Subdomain name (e.g., 'track' for track.yourdomain.com) - name:, - # Enable SSL for tracking URLs (accepts null, defaults to true) - ssl_enabled: nil, - # Enable click tracking (accepts null, defaults to true) - track_clicks: nil, - # Enable open tracking (tracking pixel, accepts null, defaults to true) - track_opens: nil, - request_options: {} - ) - end - - sig do - override.returns( - { - domain_id: Integer, - name: String, - ssl_enabled: T.nilable(T::Boolean), - track_clicks: T.nilable(T::Boolean), - track_opens: T.nilable(T::Boolean), - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_create_response.rbi b/rbi/ark_email/models/tracking_create_response.rbi deleted file mode 100644 index c6cece1..0000000 --- a/rbi/ark_email/models/tracking_create_response.rbi +++ /dev/null @@ -1,52 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingCreateResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingCreateResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::TrackDomain) } - attr_reader :data - - sig { params(data: ArkEmail::TrackDomain::OrHash).void } - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::TrackDomain::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_delete_params.rbi b/rbi/ark_email/models/tracking_delete_params.rbi deleted file mode 100644 index fc27dba..0000000 --- a/rbi/ark_email/models/tracking_delete_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::TrackingDeleteParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_delete_response.rbi b/rbi/ark_email/models/tracking_delete_response.rbi deleted file mode 100644 index 45cd812..0000000 --- a/rbi/ark_email/models/tracking_delete_response.rbi +++ /dev/null @@ -1,77 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingDeleteResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingDeleteResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::TrackingDeleteResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::TrackingDeleteResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::TrackingDeleteResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::TrackingDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingDeleteResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(String) } - attr_accessor :message - - sig { params(message: String).returns(T.attached_class) } - def self.new(message:) - end - - sig { override.returns({ message: String }) } - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/tracking_list_params.rbi b/rbi/ark_email/models/tracking_list_params.rbi deleted file mode 100644 index 2655435..0000000 --- a/rbi/ark_email/models/tracking_list_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::TrackingListParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_list_response.rbi b/rbi/ark_email/models/tracking_list_response.rbi deleted file mode 100644 index f4d513d..0000000 --- a/rbi/ark_email/models/tracking_list_response.rbi +++ /dev/null @@ -1,81 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingListResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingListResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::TrackingListResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::TrackingListResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::TrackingListResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::TrackingListResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingListResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(T::Array[ArkEmail::TrackDomain]) } - attr_accessor :track_domains - - sig do - params( - track_domains: T::Array[ArkEmail::TrackDomain::OrHash] - ).returns(T.attached_class) - end - def self.new(track_domains:) - end - - sig do - override.returns({ track_domains: T::Array[ArkEmail::TrackDomain] }) - end - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/tracking_retrieve_params.rbi b/rbi/ark_email/models/tracking_retrieve_params.rbi deleted file mode 100644 index 3619900..0000000 --- a/rbi/ark_email/models/tracking_retrieve_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::TrackingRetrieveParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_retrieve_response.rbi b/rbi/ark_email/models/tracking_retrieve_response.rbi deleted file mode 100644 index db57ba3..0000000 --- a/rbi/ark_email/models/tracking_retrieve_response.rbi +++ /dev/null @@ -1,52 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingRetrieveResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingRetrieveResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::TrackDomain) } - attr_reader :data - - sig { params(data: ArkEmail::TrackDomain::OrHash).void } - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::TrackDomain::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_update_params.rbi b/rbi/ark_email/models/tracking_update_params.rbi deleted file mode 100644 index bf2eb91..0000000 --- a/rbi/ark_email/models/tracking_update_params.rbi +++ /dev/null @@ -1,67 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingUpdateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::TrackingUpdateParams, ArkEmail::Internal::AnyHash) - end - - # Comma-separated list of domains to exclude from click tracking (accepts null) - sig { returns(T.nilable(String)) } - attr_accessor :excluded_click_domains - - # Enable or disable SSL for tracking URLs (accepts null) - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :ssl_enabled - - # Enable or disable click tracking (accepts null) - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :track_clicks - - # Enable or disable open tracking (accepts null) - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :track_opens - - sig do - params( - excluded_click_domains: T.nilable(String), - ssl_enabled: T.nilable(T::Boolean), - track_clicks: T.nilable(T::Boolean), - track_opens: T.nilable(T::Boolean), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Comma-separated list of domains to exclude from click tracking (accepts null) - excluded_click_domains: nil, - # Enable or disable SSL for tracking URLs (accepts null) - ssl_enabled: nil, - # Enable or disable click tracking (accepts null) - track_clicks: nil, - # Enable or disable open tracking (accepts null) - track_opens: nil, - request_options: {} - ) - end - - sig do - override.returns( - { - excluded_click_domains: T.nilable(String), - ssl_enabled: T.nilable(T::Boolean), - track_clicks: T.nilable(T::Boolean), - track_opens: T.nilable(T::Boolean), - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_update_response.rbi b/rbi/ark_email/models/tracking_update_response.rbi deleted file mode 100644 index 4d38c0b..0000000 --- a/rbi/ark_email/models/tracking_update_response.rbi +++ /dev/null @@ -1,52 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingUpdateResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingUpdateResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::TrackDomain) } - attr_reader :data - - sig { params(data: ArkEmail::TrackDomain::OrHash).void } - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::TrackDomain::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_verify_params.rbi b/rbi/ark_email/models/tracking_verify_params.rbi deleted file mode 100644 index 63b29a6..0000000 --- a/rbi/ark_email/models/tracking_verify_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingVerifyParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::TrackingVerifyParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/tracking_verify_response.rbi b/rbi/ark_email/models/tracking_verify_response.rbi deleted file mode 100644 index 18c8b0f..0000000 --- a/rbi/ark_email/models/tracking_verify_response.rbi +++ /dev/null @@ -1,254 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class TrackingVerifyResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingVerifyResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::TrackingVerifyResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::TrackingVerifyResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::TrackingVerifyResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::TrackingVerifyResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingVerifyResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Track domain ID - sig { returns(String) } - attr_accessor :id - - # Whether DNS is correctly configured - sig { returns(T::Boolean) } - attr_accessor :dns_ok - - # Current DNS verification status - sig do - returns( - T.nilable( - ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol - ) - ) - end - attr_accessor :dns_status - - # Full domain name - sig { returns(String) } - attr_accessor :full_name - - # When DNS was last checked - sig { returns(T.nilable(Time)) } - attr_accessor :dns_checked_at - - # DNS error message if verification failed - sig { returns(T.nilable(String)) } - attr_accessor :dns_error - - # Required DNS record configuration - sig do - returns( - T.nilable(ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord) - ) - end - attr_reader :dns_record - - sig do - params( - dns_record: - T.nilable( - ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord::OrHash - ) - ).void - end - attr_writer :dns_record - - sig do - params( - id: String, - dns_ok: T::Boolean, - dns_status: - T.nilable( - ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus::OrSymbol - ), - full_name: String, - dns_checked_at: T.nilable(Time), - dns_error: T.nilable(String), - dns_record: - T.nilable( - ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord::OrHash - ) - ).returns(T.attached_class) - end - def self.new( - # Track domain ID - id:, - # Whether DNS is correctly configured - dns_ok:, - # Current DNS verification status - dns_status:, - # Full domain name - full_name:, - # When DNS was last checked - dns_checked_at: nil, - # DNS error message if verification failed - dns_error: nil, - # Required DNS record configuration - dns_record: nil - ) - end - - sig do - override.returns( - { - id: String, - dns_ok: T::Boolean, - dns_status: - T.nilable( - ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol - ), - full_name: String, - dns_checked_at: T.nilable(Time), - dns_error: T.nilable(String), - dns_record: - T.nilable( - ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord - ) - } - ) - end - def to_hash - end - - # Current DNS verification status - module DNSStatus - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - OK = - T.let( - :ok, - ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol - ) - MISSING = - T.let( - :missing, - ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol - ) - INVALID = - T.let( - :invalid, - ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::Models::TrackingVerifyResponse::Data::DNSStatus::TaggedSymbol - ] - ) - end - def self.values - end - end - - class DNSRecord < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(T.nilable(String)) } - attr_reader :name - - sig { params(name: String).void } - attr_writer :name - - sig { returns(T.nilable(String)) } - attr_reader :type - - sig { params(type: String).void } - attr_writer :type - - sig { returns(T.nilable(String)) } - attr_reader :value - - sig { params(value: String).void } - attr_writer :value - - # Required DNS record configuration - sig do - params(name: String, type: String, value: String).returns( - T.attached_class - ) - end - def self.new(name: nil, type: nil, value: nil) - end - - sig do - override.returns({ name: String, type: String, value: String }) - end - def to_hash - end - end - end - end - end -end diff --git a/rbi/ark_email/models/usage_export_params.rbi b/rbi/ark_email/models/usage_export_params.rbi index 62fec12..58c0b1d 100644 --- a/rbi/ark_email/models/usage_export_params.rbi +++ b/rbi/ark_email/models/usage_export_params.rbi @@ -27,7 +27,13 @@ module ArkEmail sig { params(min_sent: Integer).void } attr_writer :min_sent - # Time period for export. Defaults to current month. + # Time period for export. + # + # **Shortcuts:** `this_month`, `last_month`, `last_30_days`, etc. + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` sig { returns(T.nilable(String)) } attr_reader :period @@ -41,7 +47,7 @@ module ArkEmail sig { params(status: ArkEmail::UsageExportParams::Status::OrSymbol).void } attr_writer :status - # Timezone for period calculations (IANA format). Defaults to UTC. + # Timezone for period calculations (IANA format) sig { returns(T.nilable(String)) } attr_reader :timezone @@ -63,11 +69,17 @@ module ArkEmail format_: nil, # Only include tenants with at least this many emails sent min_sent: nil, - # Time period for export. Defaults to current month. + # Time period for export. + # + # **Shortcuts:** `this_month`, `last_month`, `last_30_days`, etc. + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` period: nil, # Filter by tenant status status: nil, - # Timezone for period calculations (IANA format). Defaults to UTC. + # Timezone for period calculations (IANA format) timezone: nil, request_options: {} ) @@ -98,7 +110,6 @@ module ArkEmail CSV = T.let(:csv, ArkEmail::UsageExportParams::Format::TaggedSymbol) JSONL = T.let(:jsonl, ArkEmail::UsageExportParams::Format::TaggedSymbol) - JSON = T.let(:json, ArkEmail::UsageExportParams::Format::TaggedSymbol) sig do override.returns( diff --git a/rbi/ark_email/models/usage_list_by_tenant_params.rbi b/rbi/ark_email/models/usage_list_tenants_params.rbi similarity index 51% rename from rbi/ark_email/models/usage_list_by_tenant_params.rbi rename to rbi/ark_email/models/usage_list_tenants_params.rbi index f38e099..b251678 100644 --- a/rbi/ark_email/models/usage_list_by_tenant_params.rbi +++ b/rbi/ark_email/models/usage_list_tenants_params.rbi @@ -2,22 +2,15 @@ module ArkEmail module Models - class UsageListByTenantParams < ArkEmail::Internal::Type::BaseModel + class UsageListTenantsParams < ArkEmail::Internal::Type::BaseModel extend ArkEmail::Internal::Type::RequestParameters::Converter include ArkEmail::Internal::Type::RequestParameters OrHash = T.type_alias do - T.any(ArkEmail::UsageListByTenantParams, ArkEmail::Internal::AnyHash) + T.any(ArkEmail::UsageListTenantsParams, ArkEmail::Internal::AnyHash) end - # Maximum number of tenants to return (1-100) - sig { returns(T.nilable(Integer)) } - attr_reader :limit - - sig { params(limit: Integer).void } - attr_writer :limit - # Only include tenants with at least this many emails sent sig { returns(T.nilable(Integer)) } attr_reader :min_sent @@ -25,39 +18,53 @@ module ArkEmail sig { params(min_sent: Integer).void } attr_writer :min_sent - # Number of tenants to skip for pagination + # Page number (1-indexed) sig { returns(T.nilable(Integer)) } - attr_reader :offset + attr_reader :page - sig { params(offset: Integer).void } - attr_writer :offset + sig { params(page: Integer).void } + attr_writer :page # Time period for usage data. Defaults to current month. + # + # **Shortcuts:** `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` sig { returns(T.nilable(String)) } attr_reader :period sig { params(period: String).void } attr_writer :period + # Results per page (max 100) + sig { returns(T.nilable(Integer)) } + attr_reader :per_page + + sig { params(per_page: Integer).void } + attr_writer :per_page + # Sort order for results. Prefix with `-` for descending order. sig do - returns(T.nilable(ArkEmail::UsageListByTenantParams::Sort::OrSymbol)) + returns(T.nilable(ArkEmail::UsageListTenantsParams::Sort::OrSymbol)) end attr_reader :sort sig do - params(sort: ArkEmail::UsageListByTenantParams::Sort::OrSymbol).void + params(sort: ArkEmail::UsageListTenantsParams::Sort::OrSymbol).void end attr_writer :sort # Filter by tenant status sig do - returns(T.nilable(ArkEmail::UsageListByTenantParams::Status::OrSymbol)) + returns(T.nilable(ArkEmail::UsageListTenantsParams::Status::OrSymbol)) end attr_reader :status sig do - params(status: ArkEmail::UsageListByTenantParams::Status::OrSymbol).void + params(status: ArkEmail::UsageListTenantsParams::Status::OrSymbol).void end attr_writer :status @@ -70,25 +77,32 @@ module ArkEmail sig do params( - limit: Integer, min_sent: Integer, - offset: Integer, + page: Integer, period: String, - sort: ArkEmail::UsageListByTenantParams::Sort::OrSymbol, - status: ArkEmail::UsageListByTenantParams::Status::OrSymbol, + per_page: Integer, + sort: ArkEmail::UsageListTenantsParams::Sort::OrSymbol, + status: ArkEmail::UsageListTenantsParams::Status::OrSymbol, timezone: String, request_options: ArkEmail::RequestOptions::OrHash ).returns(T.attached_class) end def self.new( - # Maximum number of tenants to return (1-100) - limit: nil, # Only include tenants with at least this many emails sent min_sent: nil, - # Number of tenants to skip for pagination - offset: nil, + # Page number (1-indexed) + page: nil, # Time period for usage data. Defaults to current month. + # + # **Shortcuts:** `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` period: nil, + # Results per page (max 100) + per_page: nil, # Sort order for results. Prefix with `-` for descending order. sort: nil, # Filter by tenant status @@ -102,12 +116,12 @@ module ArkEmail sig do override.returns( { - limit: Integer, min_sent: Integer, - offset: Integer, + page: Integer, period: String, - sort: ArkEmail::UsageListByTenantParams::Sort::OrSymbol, - status: ArkEmail::UsageListByTenantParams::Status::OrSymbol, + per_page: Integer, + sort: ArkEmail::UsageListTenantsParams::Sort::OrSymbol, + status: ArkEmail::UsageListTenantsParams::Status::OrSymbol, timezone: String, request_options: ArkEmail::RequestOptions } @@ -121,43 +135,57 @@ module ArkEmail extend ArkEmail::Internal::Type::Enum TaggedSymbol = - T.type_alias do - T.all(Symbol, ArkEmail::UsageListByTenantParams::Sort) - end + T.type_alias { T.all(Symbol, ArkEmail::UsageListTenantsParams::Sort) } OrSymbol = T.type_alias { T.any(Symbol, String) } SENT = - T.let(:sent, ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol) + T.let(:sent, ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol) MINUS_SENT = - T.let(:"-sent", ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol) + T.let(:"-sent", ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol) DELIVERED = T.let( :delivered, - ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol + ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol ) MINUS_DELIVERED = T.let( :"-delivered", - ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol + ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol ) BOUNCE_RATE = T.let( :bounce_rate, - ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol + ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol ) MINUS_BOUNCE_RATE = T.let( :"-bounce_rate", - ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol + ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol + ) + DELIVERY_RATE = + T.let( + :delivery_rate, + ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol + ) + MINUS_DELIVERY_RATE = + T.let( + :"-delivery_rate", + ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol + ) + TENANT_NAME = + T.let( + :tenant_name, + ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol + ) + MINUS_TENANT_NAME = + T.let( + :"-tenant_name", + ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol ) - NAME = - T.let(:name, ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol) - MINUS_NAME = - T.let(:"-name", ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol) sig do override.returns( - T::Array[ArkEmail::UsageListByTenantParams::Sort::TaggedSymbol] + T::Array[ArkEmail::UsageListTenantsParams::Sort::TaggedSymbol] ) end def self.values @@ -170,29 +198,26 @@ module ArkEmail TaggedSymbol = T.type_alias do - T.all(Symbol, ArkEmail::UsageListByTenantParams::Status) + T.all(Symbol, ArkEmail::UsageListTenantsParams::Status) end OrSymbol = T.type_alias { T.any(Symbol, String) } ACTIVE = - T.let( - :active, - ArkEmail::UsageListByTenantParams::Status::TaggedSymbol - ) + T.let(:active, ArkEmail::UsageListTenantsParams::Status::TaggedSymbol) SUSPENDED = T.let( :suspended, - ArkEmail::UsageListByTenantParams::Status::TaggedSymbol + ArkEmail::UsageListTenantsParams::Status::TaggedSymbol ) ARCHIVED = T.let( :archived, - ArkEmail::UsageListByTenantParams::Status::TaggedSymbol + ArkEmail::UsageListTenantsParams::Status::TaggedSymbol ) sig do override.returns( - T::Array[ArkEmail::UsageListByTenantParams::Status::TaggedSymbol] + T::Array[ArkEmail::UsageListTenantsParams::Status::TaggedSymbol] ) end def self.values diff --git a/rbi/ark_email/models/usage_retrieve_params.rbi b/rbi/ark_email/models/usage_retrieve_params.rbi index 11b6d18..7d0a427 100644 --- a/rbi/ark_email/models/usage_retrieve_params.rbi +++ b/rbi/ark_email/models/usage_retrieve_params.rbi @@ -11,15 +11,59 @@ module ArkEmail T.any(ArkEmail::UsageRetrieveParams, ArkEmail::Internal::AnyHash) end + # Time period for usage data. + # + # **Shortcuts:** `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` + sig { returns(T.nilable(String)) } + attr_reader :period + + sig { params(period: String).void } + attr_writer :period + + # Timezone for period calculations (IANA format) + sig { returns(T.nilable(String)) } + attr_reader :timezone + + sig { params(timezone: String).void } + attr_writer :timezone + sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) + params( + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) end - def self.new(request_options: {}) + def self.new( + # Time period for usage data. + # + # **Shortcuts:** `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` + period: nil, + # Timezone for period calculations (IANA format) + timezone: nil, + request_options: {} + ) end - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + sig do + override.returns( + { + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + ) + end def to_hash end end diff --git a/rbi/ark_email/models/usage_retrieve_response.rbi b/rbi/ark_email/models/usage_retrieve_response.rbi deleted file mode 100644 index ffbffc5..0000000 --- a/rbi/ark_email/models/usage_retrieve_response.rbi +++ /dev/null @@ -1,59 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::UsageRetrieveResponse, - ArkEmail::Internal::AnyHash - ) - end - - # Current usage and limit information - sig { returns(ArkEmail::LimitsData) } - attr_reader :data - - sig { params(data: ArkEmail::LimitsData::OrHash).void } - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - # Account usage and limits response - sig do - params( - data: ArkEmail::LimitsData::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # Current usage and limit information - data:, - meta:, - success: true - ) - end - - sig do - override.returns( - { - data: ArkEmail::LimitsData, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/usage_retrieve_tenant_timeseries_params.rbi b/rbi/ark_email/models/usage_retrieve_tenant_timeseries_params.rbi deleted file mode 100644 index c358f5e..0000000 --- a/rbi/ark_email/models/usage_retrieve_tenant_timeseries_params.rbi +++ /dev/null @@ -1,129 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class UsageRetrieveTenantTimeseriesParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any( - ArkEmail::UsageRetrieveTenantTimeseriesParams, - ArkEmail::Internal::AnyHash - ) - end - - # Time bucket size for data points - sig do - returns( - T.nilable( - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol - ) - ) - end - attr_reader :granularity - - sig do - params( - granularity: - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol - ).void - end - attr_writer :granularity - - # Time period for timeseries data. Defaults to current month. - sig { returns(T.nilable(String)) } - attr_reader :period - - sig { params(period: String).void } - attr_writer :period - - # Timezone for period calculations (IANA format). Defaults to UTC. - sig { returns(T.nilable(String)) } - attr_reader :timezone - - sig { params(timezone: String).void } - attr_writer :timezone - - sig do - params( - granularity: - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol, - period: String, - timezone: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Time bucket size for data points - granularity: nil, - # Time period for timeseries data. Defaults to current month. - period: nil, - # Timezone for period calculations (IANA format). Defaults to UTC. - timezone: nil, - request_options: {} - ) - end - - sig do - override.returns( - { - granularity: - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol, - period: String, - timezone: String, - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - - # Time bucket size for data points - module Granularity - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - HOUR = - T.let( - :hour, - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol - ) - DAY = - T.let( - :day, - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol - ) - WEEK = - T.let( - :week, - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol - ) - MONTH = - T.let( - :month, - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::TaggedSymbol - ] - ) - end - def self.values - end - end - end - end -end diff --git a/rbi/ark_email/models/usage_retrieve_tenant_timeseries_response.rbi b/rbi/ark_email/models/usage_retrieve_tenant_timeseries_response.rbi deleted file mode 100644 index d8f70b6..0000000 --- a/rbi/ark_email/models/usage_retrieve_tenant_timeseries_response.rbi +++ /dev/null @@ -1,59 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class UsageRetrieveTenantTimeseriesResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse, - ArkEmail::Internal::AnyHash - ) - end - - # Timeseries usage statistics - sig { returns(ArkEmail::TenantUsageTimeseries) } - attr_reader :data - - sig { params(data: ArkEmail::TenantUsageTimeseries::OrHash).void } - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - # Timeseries usage data for a tenant - sig do - params( - data: ArkEmail::TenantUsageTimeseries::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # Timeseries usage statistics - data:, - meta:, - success: true - ) - end - - sig do - override.returns( - { - data: ArkEmail::TenantUsageTimeseries, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/usage_retrieve_tenant_usage_params.rbi b/rbi/ark_email/models/usage_retrieve_tenant_usage_params.rbi deleted file mode 100644 index e3aef9b..0000000 --- a/rbi/ark_email/models/usage_retrieve_tenant_usage_params.rbi +++ /dev/null @@ -1,76 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class UsageRetrieveTenantUsageParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any( - ArkEmail::UsageRetrieveTenantUsageParams, - ArkEmail::Internal::AnyHash - ) - end - - # Time period for usage data. Defaults to current month. - # - # **Formats:** - # - # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, - # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` - # - Month: `2024-01` - # - Range: `2024-01-01..2024-01-31` - # - Day: `2024-01-15` - sig { returns(T.nilable(String)) } - attr_reader :period - - sig { params(period: String).void } - attr_writer :period - - # Timezone for period calculations (IANA format). Defaults to UTC. - sig { returns(T.nilable(String)) } - attr_reader :timezone - - sig { params(timezone: String).void } - attr_writer :timezone - - sig do - params( - period: String, - timezone: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Time period for usage data. Defaults to current month. - # - # **Formats:** - # - # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, - # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` - # - Month: `2024-01` - # - Range: `2024-01-01..2024-01-31` - # - Day: `2024-01-15` - period: nil, - # Timezone for period calculations (IANA format). Defaults to UTC. - timezone: nil, - request_options: {} - ) - end - - sig do - override.returns( - { - period: String, - timezone: String, - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/usage_retrieve_tenant_usage_response.rbi b/rbi/ark_email/models/usage_retrieve_tenant_usage_response.rbi deleted file mode 100644 index cf3c146..0000000 --- a/rbi/ark_email/models/usage_retrieve_tenant_usage_response.rbi +++ /dev/null @@ -1,59 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class UsageRetrieveTenantUsageResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::UsageRetrieveTenantUsageResponse, - ArkEmail::Internal::AnyHash - ) - end - - # Tenant usage statistics - sig { returns(ArkEmail::TenantUsage) } - attr_reader :data - - sig { params(data: ArkEmail::TenantUsage::OrHash).void } - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - # Usage statistics for a single tenant - sig do - params( - data: ArkEmail::TenantUsage::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # Tenant usage statistics - data:, - meta:, - success: true - ) - end - - sig do - override.returns( - { - data: ArkEmail::TenantUsage, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/webhook_create_params.rbi b/rbi/ark_email/models/webhook_create_params.rbi deleted file mode 100644 index a6b14bb..0000000 --- a/rbi/ark_email/models/webhook_create_params.rbi +++ /dev/null @@ -1,158 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::WebhookCreateParams, ArkEmail::Internal::AnyHash) - end - - # Webhook name for identification - sig { returns(String) } - attr_accessor :name - - # HTTPS endpoint URL - sig { returns(String) } - attr_accessor :url - - # Subscribe to all events (ignores events array, accepts null) - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :all_events - - # Whether the webhook is enabled (accepts null) - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :enabled - - # Events to subscribe to (accepts null): - # - # - `MessageSent` - Email successfully delivered to recipient's server - # - `MessageDelayed` - Temporary delivery failure, will retry - # - `MessageDeliveryFailed` - Permanent delivery failure - # - `MessageHeld` - Email held for manual review - # - `MessageBounced` - Email bounced back - # - `MessageLinkClicked` - Recipient clicked a tracked link - # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded) - # - `DomainDNSError` - DNS configuration issue detected - sig do - returns( - T.nilable(T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol]) - ) - end - attr_accessor :events - - sig do - params( - name: String, - url: String, - all_events: T.nilable(T::Boolean), - enabled: T.nilable(T::Boolean), - events: - T.nilable(T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol]), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Webhook name for identification - name:, - # HTTPS endpoint URL - url:, - # Subscribe to all events (ignores events array, accepts null) - all_events: nil, - # Whether the webhook is enabled (accepts null) - enabled: nil, - # Events to subscribe to (accepts null): - # - # - `MessageSent` - Email successfully delivered to recipient's server - # - `MessageDelayed` - Temporary delivery failure, will retry - # - `MessageDeliveryFailed` - Permanent delivery failure - # - `MessageHeld` - Email held for manual review - # - `MessageBounced` - Email bounced back - # - `MessageLinkClicked` - Recipient clicked a tracked link - # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded) - # - `DomainDNSError` - DNS configuration issue detected - events: nil, - request_options: {} - ) - end - - sig do - override.returns( - { - name: String, - url: String, - all_events: T.nilable(T::Boolean), - enabled: T.nilable(T::Boolean), - events: - T.nilable( - T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol] - ), - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - - module Event - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias { T.all(Symbol, ArkEmail::WebhookCreateParams::Event) } - OrSymbol = T.type_alias { T.any(Symbol, String) } - - MESSAGE_SENT = - T.let( - :MessageSent, - ArkEmail::WebhookCreateParams::Event::TaggedSymbol - ) - MESSAGE_DELAYED = - T.let( - :MessageDelayed, - ArkEmail::WebhookCreateParams::Event::TaggedSymbol - ) - MESSAGE_DELIVERY_FAILED = - T.let( - :MessageDeliveryFailed, - ArkEmail::WebhookCreateParams::Event::TaggedSymbol - ) - MESSAGE_HELD = - T.let( - :MessageHeld, - ArkEmail::WebhookCreateParams::Event::TaggedSymbol - ) - MESSAGE_BOUNCED = - T.let( - :MessageBounced, - ArkEmail::WebhookCreateParams::Event::TaggedSymbol - ) - MESSAGE_LINK_CLICKED = - T.let( - :MessageLinkClicked, - ArkEmail::WebhookCreateParams::Event::TaggedSymbol - ) - MESSAGE_LOADED = - T.let( - :MessageLoaded, - ArkEmail::WebhookCreateParams::Event::TaggedSymbol - ) - DOMAIN_DNS_ERROR = - T.let( - :DomainDNSError, - ArkEmail::WebhookCreateParams::Event::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ArkEmail::WebhookCreateParams::Event::TaggedSymbol] - ) - end - def self.values - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_create_response.rbi b/rbi/ark_email/models/webhook_create_response.rbi deleted file mode 100644 index f493625..0000000 --- a/rbi/ark_email/models/webhook_create_response.rbi +++ /dev/null @@ -1,217 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookCreateResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::WebhookCreateResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::WebhookCreateResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::WebhookCreateResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::WebhookCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookCreateResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Webhook ID - sig { returns(String) } - attr_accessor :id - - # Whether subscribed to all events - sig { returns(T::Boolean) } - attr_accessor :all_events - - sig { returns(Time) } - attr_accessor :created_at - - # Whether the webhook is active - sig { returns(T::Boolean) } - attr_accessor :enabled - - # Subscribed events - sig do - returns( - T::Array[ - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ] - ) - end - attr_accessor :events - - # Webhook name for identification - sig { returns(String) } - attr_accessor :name - - # Webhook endpoint URL - sig { returns(String) } - attr_accessor :url - - sig { returns(String) } - attr_accessor :uuid - - sig do - params( - id: String, - all_events: T::Boolean, - created_at: Time, - enabled: T::Boolean, - events: - T::Array[ - ArkEmail::Models::WebhookCreateResponse::Data::Event::OrSymbol - ], - name: String, - url: String, - uuid: String - ).returns(T.attached_class) - end - def self.new( - # Webhook ID - id:, - # Whether subscribed to all events - all_events:, - created_at:, - # Whether the webhook is active - enabled:, - # Subscribed events - events:, - # Webhook name for identification - name:, - # Webhook endpoint URL - url:, - uuid: - ) - end - - sig do - override.returns( - { - id: String, - all_events: T::Boolean, - created_at: Time, - enabled: T::Boolean, - events: - T::Array[ - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ], - name: String, - url: String, - uuid: String - } - ) - end - def to_hash - end - - module Event - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::Models::WebhookCreateResponse::Data::Event - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - MESSAGE_SENT = - T.let( - :MessageSent, - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELAYED = - T.let( - :MessageDelayed, - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELIVERY_FAILED = - T.let( - :MessageDeliveryFailed, - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_HELD = - T.let( - :MessageHeld, - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_BOUNCED = - T.let( - :MessageBounced, - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LINK_CLICKED = - T.let( - :MessageLinkClicked, - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LOADED = - T.let( - :MessageLoaded, - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ) - DOMAIN_DNS_ERROR = - T.let( - :DomainDNSError, - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol - ] - ) - end - def self.values - end - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_delete_params.rbi b/rbi/ark_email/models/webhook_delete_params.rbi deleted file mode 100644 index 786a20a..0000000 --- a/rbi/ark_email/models/webhook_delete_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::WebhookDeleteParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/webhook_delete_response.rbi b/rbi/ark_email/models/webhook_delete_response.rbi deleted file mode 100644 index 63ead47..0000000 --- a/rbi/ark_email/models/webhook_delete_response.rbi +++ /dev/null @@ -1,75 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookDeleteResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::WebhookDeleteResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::WebhookDeleteResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::WebhookDeleteResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::WebhookDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookDeleteResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(String) } - attr_accessor :message - - sig { params(message: String).returns(T.attached_class) } - def self.new(message:) - end - - sig { override.returns({ message: String }) } - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_list_deliveries_params.rbi b/rbi/ark_email/models/webhook_list_deliveries_params.rbi deleted file mode 100644 index b48fe3e..0000000 --- a/rbi/ark_email/models/webhook_list_deliveries_params.rbi +++ /dev/null @@ -1,172 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any( - ArkEmail::WebhookListDeliveriesParams, - ArkEmail::Internal::AnyHash - ) - end - - # Only deliveries after this Unix timestamp - sig { returns(T.nilable(Integer)) } - attr_reader :after - - sig { params(after: Integer).void } - attr_writer :after - - # Only deliveries before this Unix timestamp - sig { returns(T.nilable(Integer)) } - attr_reader :before - - sig { params(before: Integer).void } - attr_writer :before - - # Filter by event type - sig do - returns( - T.nilable(ArkEmail::WebhookListDeliveriesParams::Event::OrSymbol) - ) - end - attr_reader :event - - sig do - params( - event: ArkEmail::WebhookListDeliveriesParams::Event::OrSymbol - ).void - end - attr_writer :event - - # Page number (default 1) - sig { returns(T.nilable(Integer)) } - attr_reader :page - - sig { params(page: Integer).void } - attr_writer :page - - # Items per page (default 30, max 100) - sig { returns(T.nilable(Integer)) } - attr_reader :per_page - - sig { params(per_page: Integer).void } - attr_writer :per_page - - # Filter by delivery success (true = 2xx response, false = non-2xx or error) - sig { returns(T.nilable(T::Boolean)) } - attr_reader :success - - sig { params(success: T::Boolean).void } - attr_writer :success - - sig do - params( - after: Integer, - before: Integer, - event: ArkEmail::WebhookListDeliveriesParams::Event::OrSymbol, - page: Integer, - per_page: Integer, - success: T::Boolean, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Only deliveries after this Unix timestamp - after: nil, - # Only deliveries before this Unix timestamp - before: nil, - # Filter by event type - event: nil, - # Page number (default 1) - page: nil, - # Items per page (default 30, max 100) - per_page: nil, - # Filter by delivery success (true = 2xx response, false = non-2xx or error) - success: nil, - request_options: {} - ) - end - - sig do - override.returns( - { - after: Integer, - before: Integer, - event: ArkEmail::WebhookListDeliveriesParams::Event::OrSymbol, - page: Integer, - per_page: Integer, - success: T::Boolean, - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - - # Filter by event type - module Event - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all(Symbol, ArkEmail::WebhookListDeliveriesParams::Event) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - MESSAGE_SENT = - T.let( - :MessageSent, - ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol - ) - MESSAGE_DELAYED = - T.let( - :MessageDelayed, - ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol - ) - MESSAGE_DELIVERY_FAILED = - T.let( - :MessageDeliveryFailed, - ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol - ) - MESSAGE_HELD = - T.let( - :MessageHeld, - ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol - ) - MESSAGE_BOUNCED = - T.let( - :MessageBounced, - ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol - ) - MESSAGE_LINK_CLICKED = - T.let( - :MessageLinkClicked, - ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol - ) - MESSAGE_LOADED = - T.let( - :MessageLoaded, - ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol - ) - DOMAIN_DNS_ERROR = - T.let( - :DomainDNSError, - ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol] - ) - end - def self.values - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_list_deliveries_response.rbi b/rbi/ark_email/models/webhook_list_deliveries_response.rbi deleted file mode 100644 index 05e1ba5..0000000 --- a/rbi/ark_email/models/webhook_list_deliveries_response.rbi +++ /dev/null @@ -1,257 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookListDeliveriesResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig do - returns(T::Array[ArkEmail::Models::WebhookListDeliveriesResponse::Data]) - end - attr_accessor :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - # Current page number - sig { returns(Integer) } - attr_accessor :page - - # Items per page - sig { returns(Integer) } - attr_accessor :per_page - - # Total number of deliveries matching the filter - sig { returns(Integer) } - attr_accessor :total - - # Total number of pages - sig { returns(Integer) } - attr_accessor :total_pages - - # Paginated list of webhook delivery attempts - sig do - params( - data: - T::Array[ - ArkEmail::Models::WebhookListDeliveriesResponse::Data::OrHash - ], - meta: ArkEmail::APIMeta::OrHash, - page: Integer, - per_page: Integer, - total: Integer, - total_pages: Integer - ).returns(T.attached_class) - end - def self.new( - data:, - meta:, - # Current page number - page:, - # Items per page - per_page:, - # Total number of deliveries matching the filter - total:, - # Total number of pages - total_pages: - ) - end - - sig do - override.returns( - { - data: - T::Array[ArkEmail::Models::WebhookListDeliveriesResponse::Data], - meta: ArkEmail::APIMeta, - page: Integer, - per_page: Integer, - total: Integer, - total_pages: Integer - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookListDeliveriesResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Unique delivery ID (UUID) - sig { returns(String) } - attr_accessor :id - - # Attempt number (1 for first attempt, increments with retries) - sig { returns(Integer) } - attr_accessor :attempt - - # Event type that triggered this delivery - sig do - returns( - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - end - attr_accessor :event - - # HTTP status code returned by the endpoint (null if connection failed) - sig { returns(T.nilable(Integer)) } - attr_accessor :status_code - - # Whether the delivery was successful (2xx response) - sig { returns(T::Boolean) } - attr_accessor :success - - # When this delivery attempt occurred - sig { returns(Time) } - attr_accessor :timestamp - - # URL the webhook was delivered to - sig { returns(String) } - attr_accessor :url - - # ID of the webhook this delivery belongs to - sig { returns(String) } - attr_accessor :webhook_id - - # Whether this delivery will be retried (true if failed and retries remaining) - sig { returns(T::Boolean) } - attr_accessor :will_retry - - # Summary of a webhook delivery attempt - sig do - params( - id: String, - attempt: Integer, - event: - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::OrSymbol, - status_code: T.nilable(Integer), - success: T::Boolean, - timestamp: Time, - url: String, - webhook_id: String, - will_retry: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # Unique delivery ID (UUID) - id:, - # Attempt number (1 for first attempt, increments with retries) - attempt:, - # Event type that triggered this delivery - event:, - # HTTP status code returned by the endpoint (null if connection failed) - status_code:, - # Whether the delivery was successful (2xx response) - success:, - # When this delivery attempt occurred - timestamp:, - # URL the webhook was delivered to - url:, - # ID of the webhook this delivery belongs to - webhook_id:, - # Whether this delivery will be retried (true if failed and retries remaining) - will_retry: - ) - end - - sig do - override.returns( - { - id: String, - attempt: Integer, - event: - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol, - status_code: T.nilable(Integer), - success: T::Boolean, - timestamp: Time, - url: String, - webhook_id: String, - will_retry: T::Boolean - } - ) - end - def to_hash - end - - # Event type that triggered this delivery - module Event - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - MESSAGE_SENT = - T.let( - :MessageSent, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELAYED = - T.let( - :MessageDelayed, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELIVERY_FAILED = - T.let( - :MessageDeliveryFailed, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - MESSAGE_HELD = - T.let( - :MessageHeld, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - MESSAGE_BOUNCED = - T.let( - :MessageBounced, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LINK_CLICKED = - T.let( - :MessageLinkClicked, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LOADED = - T.let( - :MessageLoaded, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - DOMAIN_DNS_ERROR = - T.let( - :DomainDNSError, - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol - ] - ) - end - def self.values - end - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_list_params.rbi b/rbi/ark_email/models/webhook_list_params.rbi deleted file mode 100644 index 3ecedf2..0000000 --- a/rbi/ark_email/models/webhook_list_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::WebhookListParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/webhook_list_response.rbi b/rbi/ark_email/models/webhook_list_response.rbi deleted file mode 100644 index 2d427bb..0000000 --- a/rbi/ark_email/models/webhook_list_response.rbi +++ /dev/null @@ -1,152 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookListResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookListResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::WebhookListResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::WebhookListResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::WebhookListResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::WebhookListResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookListResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - sig do - returns( - T::Array[ArkEmail::Models::WebhookListResponse::Data::Webhook] - ) - end - attr_accessor :webhooks - - sig do - params( - webhooks: - T::Array[ - ArkEmail::Models::WebhookListResponse::Data::Webhook::OrHash - ] - ).returns(T.attached_class) - end - def self.new(webhooks:) - end - - sig do - override.returns( - { - webhooks: - T::Array[ArkEmail::Models::WebhookListResponse::Data::Webhook] - } - ) - end - def to_hash - end - - class Webhook < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookListResponse::Data::Webhook, - ArkEmail::Internal::AnyHash - ) - end - - # Webhook ID - sig { returns(String) } - attr_accessor :id - - sig { returns(T::Boolean) } - attr_accessor :enabled - - sig { returns(T::Array[String]) } - attr_accessor :events - - sig { returns(String) } - attr_accessor :name - - sig { returns(String) } - attr_accessor :url - - sig do - params( - id: String, - enabled: T::Boolean, - events: T::Array[String], - name: String, - url: String - ).returns(T.attached_class) - end - def self.new( - # Webhook ID - id:, - enabled:, - events:, - name:, - url: - ) - end - - sig do - override.returns( - { - id: String, - enabled: T::Boolean, - events: T::Array[String], - name: String, - url: String - } - ) - end - def to_hash - end - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_replay_delivery_params.rbi b/rbi/ark_email/models/webhook_replay_delivery_params.rbi deleted file mode 100644 index 13a2ed5..0000000 --- a/rbi/ark_email/models/webhook_replay_delivery_params.rbi +++ /dev/null @@ -1,38 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any( - ArkEmail::WebhookReplayDeliveryParams, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(String) } - attr_accessor :webhook_id - - sig do - params( - webhook_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new(webhook_id:, request_options: {}) - end - - sig do - override.returns( - { webhook_id: String, request_options: ArkEmail::RequestOptions } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/webhook_replay_delivery_response.rbi b/rbi/ark_email/models/webhook_replay_delivery_response.rbi deleted file mode 100644 index 882935e..0000000 --- a/rbi/ark_email/models/webhook_replay_delivery_response.rbi +++ /dev/null @@ -1,132 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookReplayDeliveryResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::WebhookReplayDeliveryResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::WebhookReplayDeliveryResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - # Result of replaying a webhook delivery - sig do - params( - data: ArkEmail::Models::WebhookReplayDeliveryResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::WebhookReplayDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookReplayDeliveryResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Request duration in milliseconds - sig { returns(Integer) } - attr_accessor :duration - - # ID of the new delivery created by the replay - sig { returns(String) } - attr_accessor :new_delivery_id - - # ID of the original delivery that was replayed - sig { returns(String) } - attr_accessor :original_delivery_id - - # HTTP status code from your endpoint - sig { returns(T.nilable(Integer)) } - attr_accessor :status_code - - # Whether the replay was successful (2xx response from endpoint) - sig { returns(T::Boolean) } - attr_accessor :success - - # When the replay was executed - sig { returns(Time) } - attr_accessor :timestamp - - sig do - params( - duration: Integer, - new_delivery_id: String, - original_delivery_id: String, - status_code: T.nilable(Integer), - success: T::Boolean, - timestamp: Time - ).returns(T.attached_class) - end - def self.new( - # Request duration in milliseconds - duration:, - # ID of the new delivery created by the replay - new_delivery_id:, - # ID of the original delivery that was replayed - original_delivery_id:, - # HTTP status code from your endpoint - status_code:, - # Whether the replay was successful (2xx response from endpoint) - success:, - # When the replay was executed - timestamp: - ) - end - - sig do - override.returns( - { - duration: Integer, - new_delivery_id: String, - original_delivery_id: String, - status_code: T.nilable(Integer), - success: T::Boolean, - timestamp: Time - } - ) - end - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_retrieve_delivery_params.rbi b/rbi/ark_email/models/webhook_retrieve_delivery_params.rbi deleted file mode 100644 index 7481556..0000000 --- a/rbi/ark_email/models/webhook_retrieve_delivery_params.rbi +++ /dev/null @@ -1,38 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any( - ArkEmail::WebhookRetrieveDeliveryParams, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(String) } - attr_accessor :webhook_id - - sig do - params( - webhook_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new(webhook_id:, request_options: {}) - end - - sig do - override.returns( - { webhook_id: String, request_options: ArkEmail::RequestOptions } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/webhook_retrieve_delivery_response.rbi b/rbi/ark_email/models/webhook_retrieve_delivery_response.rbi deleted file mode 100644 index d1980ed..0000000 --- a/rbi/ark_email/models/webhook_retrieve_delivery_response.rbi +++ /dev/null @@ -1,371 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookRetrieveDeliveryResponse, - ArkEmail::Internal::AnyHash - ) - end - - # Full details of a webhook delivery including request and response - sig { returns(ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - # Detailed information about a webhook delivery attempt - sig do - params( - data: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # Full details of a webhook delivery including request and response - data:, - meta:, - success: true - ) - end - - sig do - override.returns( - { - data: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Unique delivery ID (UUID) - sig { returns(String) } - attr_accessor :id - - # Attempt number for this delivery - sig { returns(Integer) } - attr_accessor :attempt - - # Event type that triggered this delivery - sig do - returns( - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - end - attr_accessor :event - - # The request that was sent to your endpoint - sig do - returns( - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request - ) - end - attr_reader :request - - sig do - params( - request: - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request::OrHash - ).void - end - attr_writer :request - - # The response received from your endpoint - sig do - returns( - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response - ) - end - attr_reader :response - - sig do - params( - response: - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response::OrHash - ).void - end - attr_writer :response - - # HTTP status code returned by the endpoint - sig { returns(T.nilable(Integer)) } - attr_accessor :status_code - - # Whether the delivery was successful (2xx response) - sig { returns(T::Boolean) } - attr_accessor :success - - # When this delivery attempt occurred - sig { returns(Time) } - attr_accessor :timestamp - - # URL the webhook was delivered to - sig { returns(String) } - attr_accessor :url - - # ID of the webhook this delivery belongs to - sig { returns(String) } - attr_accessor :webhook_id - - # Name of the webhook for easy identification - sig { returns(String) } - attr_accessor :webhook_name - - # Whether this delivery will be retried - sig { returns(T::Boolean) } - attr_accessor :will_retry - - # Full details of a webhook delivery including request and response - sig do - params( - id: String, - attempt: Integer, - event: - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::OrSymbol, - request: - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request::OrHash, - response: - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response::OrHash, - status_code: T.nilable(Integer), - success: T::Boolean, - timestamp: Time, - url: String, - webhook_id: String, - webhook_name: String, - will_retry: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # Unique delivery ID (UUID) - id:, - # Attempt number for this delivery - attempt:, - # Event type that triggered this delivery - event:, - # The request that was sent to your endpoint - request:, - # The response received from your endpoint - response:, - # HTTP status code returned by the endpoint - status_code:, - # Whether the delivery was successful (2xx response) - success:, - # When this delivery attempt occurred - timestamp:, - # URL the webhook was delivered to - url:, - # ID of the webhook this delivery belongs to - webhook_id:, - # Name of the webhook for easy identification - webhook_name:, - # Whether this delivery will be retried - will_retry: - ) - end - - sig do - override.returns( - { - id: String, - attempt: Integer, - event: - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol, - request: - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request, - response: - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response, - status_code: T.nilable(Integer), - success: T::Boolean, - timestamp: Time, - url: String, - webhook_id: String, - webhook_name: String, - will_retry: T::Boolean - } - ) - end - def to_hash - end - - # Event type that triggered this delivery - module Event - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - MESSAGE_SENT = - T.let( - :MessageSent, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELAYED = - T.let( - :MessageDelayed, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELIVERY_FAILED = - T.let( - :MessageDeliveryFailed, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - MESSAGE_HELD = - T.let( - :MessageHeld, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - MESSAGE_BOUNCED = - T.let( - :MessageBounced, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LINK_CLICKED = - T.let( - :MessageLinkClicked, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LOADED = - T.let( - :MessageLoaded, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - DOMAIN_DNS_ERROR = - T.let( - :DomainDNSError, - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol - ] - ) - end - def self.values - end - end - - class Request < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request, - ArkEmail::Internal::AnyHash - ) - end - - # HTTP headers that were sent with the request - sig { returns(T::Hash[Symbol, String]) } - attr_accessor :headers - - # The complete webhook payload that was sent - sig { returns(T::Hash[Symbol, T.anything]) } - attr_accessor :payload - - # The request that was sent to your endpoint - sig do - params( - headers: T::Hash[Symbol, String], - payload: T::Hash[Symbol, T.anything] - ).returns(T.attached_class) - end - def self.new( - # HTTP headers that were sent with the request - headers:, - # The complete webhook payload that was sent - payload: - ) - end - - sig do - override.returns( - { - headers: T::Hash[Symbol, String], - payload: T::Hash[Symbol, T.anything] - } - ) - end - def to_hash - end - end - - class Response < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response, - ArkEmail::Internal::AnyHash - ) - end - - # HTTP status code from your endpoint - sig { returns(T.nilable(Integer)) } - attr_accessor :status_code - - # Response body from your endpoint (may be truncated) - sig { returns(T.nilable(String)) } - attr_accessor :body - - # The response received from your endpoint - sig do - params( - status_code: T.nilable(Integer), - body: T.nilable(String) - ).returns(T.attached_class) - end - def self.new( - # HTTP status code from your endpoint - status_code:, - # Response body from your endpoint (may be truncated) - body: nil - ) - end - - sig do - override.returns( - { status_code: T.nilable(Integer), body: T.nilable(String) } - ) - end - def to_hash - end - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_retrieve_params.rbi b/rbi/ark_email/models/webhook_retrieve_params.rbi deleted file mode 100644 index 1759ce1..0000000 --- a/rbi/ark_email/models/webhook_retrieve_params.rbi +++ /dev/null @@ -1,27 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::WebhookRetrieveParams, ArkEmail::Internal::AnyHash) - end - - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - T.attached_class - ) - end - def self.new(request_options: {}) - end - - sig { override.returns({ request_options: ArkEmail::RequestOptions }) } - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/webhook_retrieve_response.rbi b/rbi/ark_email/models/webhook_retrieve_response.rbi deleted file mode 100644 index 9be5107..0000000 --- a/rbi/ark_email/models/webhook_retrieve_response.rbi +++ /dev/null @@ -1,219 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookRetrieveResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::WebhookRetrieveResponse::Data) } - attr_reader :data - - sig do - params( - data: ArkEmail::Models::WebhookRetrieveResponse::Data::OrHash - ).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::WebhookRetrieveResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::WebhookRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookRetrieveResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Webhook ID - sig { returns(String) } - attr_accessor :id - - # Whether subscribed to all events - sig { returns(T::Boolean) } - attr_accessor :all_events - - sig { returns(Time) } - attr_accessor :created_at - - # Whether the webhook is active - sig { returns(T::Boolean) } - attr_accessor :enabled - - # Subscribed events - sig do - returns( - T::Array[ - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ] - ) - end - attr_accessor :events - - # Webhook name for identification - sig { returns(String) } - attr_accessor :name - - # Webhook endpoint URL - sig { returns(String) } - attr_accessor :url - - sig { returns(String) } - attr_accessor :uuid - - sig do - params( - id: String, - all_events: T::Boolean, - created_at: Time, - enabled: T::Boolean, - events: - T::Array[ - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::OrSymbol - ], - name: String, - url: String, - uuid: String - ).returns(T.attached_class) - end - def self.new( - # Webhook ID - id:, - # Whether subscribed to all events - all_events:, - created_at:, - # Whether the webhook is active - enabled:, - # Subscribed events - events:, - # Webhook name for identification - name:, - # Webhook endpoint URL - url:, - uuid: - ) - end - - sig do - override.returns( - { - id: String, - all_events: T::Boolean, - created_at: Time, - enabled: T::Boolean, - events: - T::Array[ - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ], - name: String, - url: String, - uuid: String - } - ) - end - def to_hash - end - - module Event - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - MESSAGE_SENT = - T.let( - :MessageSent, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELAYED = - T.let( - :MessageDelayed, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELIVERY_FAILED = - T.let( - :MessageDeliveryFailed, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ) - MESSAGE_HELD = - T.let( - :MessageHeld, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ) - MESSAGE_BOUNCED = - T.let( - :MessageBounced, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LINK_CLICKED = - T.let( - :MessageLinkClicked, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LOADED = - T.let( - :MessageLoaded, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ) - DOMAIN_DNS_ERROR = - T.let( - :DomainDNSError, - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol - ] - ) - end - def self.values - end - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_test_params.rbi b/rbi/ark_email/models/webhook_test_params.rbi deleted file mode 100644 index d5d5005..0000000 --- a/rbi/ark_email/models/webhook_test_params.rbi +++ /dev/null @@ -1,95 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookTestParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::WebhookTestParams, ArkEmail::Internal::AnyHash) - end - - # Event type to simulate - sig { returns(ArkEmail::WebhookTestParams::Event::OrSymbol) } - attr_accessor :event - - sig do - params( - event: ArkEmail::WebhookTestParams::Event::OrSymbol, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - # Event type to simulate - event:, - request_options: {} - ) - end - - sig do - override.returns( - { - event: ArkEmail::WebhookTestParams::Event::OrSymbol, - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - - # Event type to simulate - module Event - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias { T.all(Symbol, ArkEmail::WebhookTestParams::Event) } - OrSymbol = T.type_alias { T.any(Symbol, String) } - - MESSAGE_SENT = - T.let(:MessageSent, ArkEmail::WebhookTestParams::Event::TaggedSymbol) - MESSAGE_DELAYED = - T.let( - :MessageDelayed, - ArkEmail::WebhookTestParams::Event::TaggedSymbol - ) - MESSAGE_DELIVERY_FAILED = - T.let( - :MessageDeliveryFailed, - ArkEmail::WebhookTestParams::Event::TaggedSymbol - ) - MESSAGE_HELD = - T.let(:MessageHeld, ArkEmail::WebhookTestParams::Event::TaggedSymbol) - MESSAGE_BOUNCED = - T.let( - :MessageBounced, - ArkEmail::WebhookTestParams::Event::TaggedSymbol - ) - MESSAGE_LINK_CLICKED = - T.let( - :MessageLinkClicked, - ArkEmail::WebhookTestParams::Event::TaggedSymbol - ) - MESSAGE_LOADED = - T.let( - :MessageLoaded, - ArkEmail::WebhookTestParams::Event::TaggedSymbol - ) - DOMAIN_DNS_ERROR = - T.let( - :DomainDNSError, - ArkEmail::WebhookTestParams::Event::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ArkEmail::WebhookTestParams::Event::TaggedSymbol] - ) - end - def self.values - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_test_response.rbi b/rbi/ark_email/models/webhook_test_response.rbi deleted file mode 100644 index 5eee241..0000000 --- a/rbi/ark_email/models/webhook_test_response.rbi +++ /dev/null @@ -1,129 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookTestResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::WebhookTestResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::WebhookTestResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::WebhookTestResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::WebhookTestResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookTestResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Request duration in milliseconds - sig { returns(Integer) } - attr_accessor :duration - - # Event type that was tested - sig { returns(String) } - attr_accessor :event - - # HTTP status code from the webhook endpoint - sig { returns(T.nilable(Integer)) } - attr_accessor :status_code - - # Whether the webhook endpoint responded with a 2xx status - sig { returns(T::Boolean) } - attr_accessor :success - - # Response body from the webhook endpoint (truncated if too long) - sig { returns(T.nilable(String)) } - attr_accessor :body - - # Error message if the request failed - sig { returns(T.nilable(String)) } - attr_accessor :error - - sig do - params( - duration: Integer, - event: String, - status_code: T.nilable(Integer), - success: T::Boolean, - body: T.nilable(String), - error: T.nilable(String) - ).returns(T.attached_class) - end - def self.new( - # Request duration in milliseconds - duration:, - # Event type that was tested - event:, - # HTTP status code from the webhook endpoint - status_code:, - # Whether the webhook endpoint responded with a 2xx status - success:, - # Response body from the webhook endpoint (truncated if too long) - body: nil, - # Error message if the request failed - error: nil - ) - end - - sig do - override.returns( - { - duration: Integer, - event: String, - status_code: T.nilable(Integer), - success: T::Boolean, - body: T.nilable(String), - error: T.nilable(String) - } - ) - end - def to_hash - end - end - end - end -end diff --git a/rbi/ark_email/models/webhook_update_params.rbi b/rbi/ark_email/models/webhook_update_params.rbi deleted file mode 100644 index 83e39e1..0000000 --- a/rbi/ark_email/models/webhook_update_params.rbi +++ /dev/null @@ -1,65 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - OrHash = - T.type_alias do - T.any(ArkEmail::WebhookUpdateParams, ArkEmail::Internal::AnyHash) - end - - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :all_events - - sig { returns(T.nilable(T::Boolean)) } - attr_accessor :enabled - - sig { returns(T.nilable(T::Array[String])) } - attr_accessor :events - - sig { returns(T.nilable(String)) } - attr_accessor :name - - sig { returns(T.nilable(String)) } - attr_accessor :url - - sig do - params( - all_events: T.nilable(T::Boolean), - enabled: T.nilable(T::Boolean), - events: T.nilable(T::Array[String]), - name: T.nilable(String), - url: T.nilable(String), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(T.attached_class) - end - def self.new( - all_events: nil, - enabled: nil, - events: nil, - name: nil, - url: nil, - request_options: {} - ) - end - - sig do - override.returns( - { - all_events: T.nilable(T::Boolean), - enabled: T.nilable(T::Boolean), - events: T.nilable(T::Array[String]), - name: T.nilable(String), - url: T.nilable(String), - request_options: ArkEmail::RequestOptions - } - ) - end - def to_hash - end - end - end -end diff --git a/rbi/ark_email/models/webhook_update_response.rbi b/rbi/ark_email/models/webhook_update_response.rbi deleted file mode 100644 index 9c08173..0000000 --- a/rbi/ark_email/models/webhook_update_response.rbi +++ /dev/null @@ -1,217 +0,0 @@ -# typed: strong - -module ArkEmail - module Models - class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookUpdateResponse, - ArkEmail::Internal::AnyHash - ) - end - - sig { returns(ArkEmail::Models::WebhookUpdateResponse::Data) } - attr_reader :data - - sig do - params(data: ArkEmail::Models::WebhookUpdateResponse::Data::OrHash).void - end - attr_writer :data - - sig { returns(ArkEmail::APIMeta) } - attr_reader :meta - - sig { params(meta: ArkEmail::APIMeta::OrHash).void } - attr_writer :meta - - sig { returns(T::Boolean) } - attr_accessor :success - - sig do - params( - data: ArkEmail::Models::WebhookUpdateResponse::Data::OrHash, - meta: ArkEmail::APIMeta::OrHash, - success: T::Boolean - ).returns(T.attached_class) - end - def self.new(data:, meta:, success: true) - end - - sig do - override.returns( - { - data: ArkEmail::Models::WebhookUpdateResponse::Data, - meta: ArkEmail::APIMeta, - success: T::Boolean - } - ) - end - def to_hash - end - - class Data < ArkEmail::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - ArkEmail::Models::WebhookUpdateResponse::Data, - ArkEmail::Internal::AnyHash - ) - end - - # Webhook ID - sig { returns(String) } - attr_accessor :id - - # Whether subscribed to all events - sig { returns(T::Boolean) } - attr_accessor :all_events - - sig { returns(Time) } - attr_accessor :created_at - - # Whether the webhook is active - sig { returns(T::Boolean) } - attr_accessor :enabled - - # Subscribed events - sig do - returns( - T::Array[ - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ] - ) - end - attr_accessor :events - - # Webhook name for identification - sig { returns(String) } - attr_accessor :name - - # Webhook endpoint URL - sig { returns(String) } - attr_accessor :url - - sig { returns(String) } - attr_accessor :uuid - - sig do - params( - id: String, - all_events: T::Boolean, - created_at: Time, - enabled: T::Boolean, - events: - T::Array[ - ArkEmail::Models::WebhookUpdateResponse::Data::Event::OrSymbol - ], - name: String, - url: String, - uuid: String - ).returns(T.attached_class) - end - def self.new( - # Webhook ID - id:, - # Whether subscribed to all events - all_events:, - created_at:, - # Whether the webhook is active - enabled:, - # Subscribed events - events:, - # Webhook name for identification - name:, - # Webhook endpoint URL - url:, - uuid: - ) - end - - sig do - override.returns( - { - id: String, - all_events: T::Boolean, - created_at: Time, - enabled: T::Boolean, - events: - T::Array[ - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ], - name: String, - url: String, - uuid: String - } - ) - end - def to_hash - end - - module Event - extend ArkEmail::Internal::Type::Enum - - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - ArkEmail::Models::WebhookUpdateResponse::Data::Event - ) - end - OrSymbol = T.type_alias { T.any(Symbol, String) } - - MESSAGE_SENT = - T.let( - :MessageSent, - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELAYED = - T.let( - :MessageDelayed, - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_DELIVERY_FAILED = - T.let( - :MessageDeliveryFailed, - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_HELD = - T.let( - :MessageHeld, - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_BOUNCED = - T.let( - :MessageBounced, - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LINK_CLICKED = - T.let( - :MessageLinkClicked, - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ) - MESSAGE_LOADED = - T.let( - :MessageLoaded, - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ) - DOMAIN_DNS_ERROR = - T.let( - :DomainDNSError, - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ) - - sig do - override.returns( - T::Array[ - ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol - ] - ) - end - def self.values - end - end - end - end - end -end diff --git a/rbi/ark_email/resources/domains.rbi b/rbi/ark_email/resources/domains.rbi deleted file mode 100644 index f8b89de..0000000 --- a/rbi/ark_email/resources/domains.rbi +++ /dev/null @@ -1,98 +0,0 @@ -# typed: strong - -module ArkEmail - module Resources - class Domains - # Add a new domain for sending emails. Returns DNS records that must be configured - # before the domain can be verified. - # - # **Required:** `tenant_id` to specify which tenant the domain belongs to. Each - # tenant gets their own isolated mail server for domain isolation. - # - # **Required DNS records:** - # - # - **SPF** - TXT record for sender authentication - # - **DKIM** - TXT record for email signing - # - **Return Path** - CNAME for bounce handling - # - # After adding DNS records, call `POST /domains/{id}/verify` to verify. - sig do - params( - name: String, - tenant_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::DomainCreateResponse) - end - def create( - # Domain name (e.g., "mail.example.com") - name:, - # ID of the tenant this domain belongs to - tenant_id:, - request_options: {} - ) - end - - # Get detailed information about a domain including DNS record status - sig do - params( - domain_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::DomainRetrieveResponse) - end - def retrieve( - # Domain ID or domain name - domain_id, - request_options: {} - ) - end - - # Get all sending domains with their verification status. - # - # Optionally filter by `tenant_id` to list domains for a specific tenant. When - # filtered, response includes `tenant_id` and `tenant_name` for each domain. - sig do - params( - tenant_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::DomainListResponse) - end - def list( - # Filter domains by tenant ID - tenant_id: nil, - request_options: {} - ) - end - - # Remove a sending domain. You will no longer be able to send emails from this - # domain. - # - # **Warning:** This action cannot be undone. - sig do - params( - domain_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::DomainDeleteResponse) - end - def delete(domain_id, request_options: {}) - end - - # Check if DNS records are correctly configured and verify the domain. Returns the - # current status of each required DNS record. - # - # Call this after you've added the DNS records shown when creating the domain. - sig do - params( - domain_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::DomainVerifyResponse) - end - def verify(domain_id, request_options: {}) - end - - # @api private - sig { params(client: ArkEmail::Client).returns(T.attached_class) } - def self.new(client:) - end - end - end -end diff --git a/rbi/ark_email/resources/limits.rbi b/rbi/ark_email/resources/limits.rbi index 00884f9..d1fb5aa 100644 --- a/rbi/ark_email/resources/limits.rbi +++ b/rbi/ark_email/resources/limits.rbi @@ -17,7 +17,7 @@ module ArkEmail # **Notes:** # # - This request counts against your rate limit - # - `sendLimit` may be null if Postal is temporarily unavailable + # - `sendLimit` may be null if the service is temporarily unavailable # - `billing` is null if billing is not configured # - Send limit resets at the top of each hour sig do diff --git a/rbi/ark_email/resources/suppressions.rbi b/rbi/ark_email/resources/suppressions.rbi deleted file mode 100644 index a463fbf..0000000 --- a/rbi/ark_email/resources/suppressions.rbi +++ /dev/null @@ -1,84 +0,0 @@ -# typed: strong - -module ArkEmail - module Resources - class Suppressions - # Add an email address to the suppression list. The address will not receive any - # emails until removed. - sig do - params( - address: String, - reason: T.nilable(String), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::SuppressionCreateResponse) - end - def create( - # Email address to suppress - address:, - # Reason for suppression (accepts null) - reason: nil, - request_options: {} - ) - end - - # Check if a specific email address is on the suppression list - sig do - params( - email: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::SuppressionRetrieveResponse) - end - def retrieve( - # Email address (URL-encoded) - email, - request_options: {} - ) - end - - # Get all email addresses on the suppression list. These addresses will not - # receive any emails. - sig do - params( - page: Integer, - per_page: Integer, - request_options: ArkEmail::RequestOptions::OrHash - ).returns( - ArkEmail::Internal::PageNumberPagination[ - ArkEmail::Models::SuppressionListResponse - ] - ) - end - def list(page: nil, per_page: nil, request_options: {}) - end - - # Remove an email address from the suppression list. The address will be able to - # receive emails again. - sig do - params( - email: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::SuppressionDeleteResponse) - end - def delete(email, request_options: {}) - end - - # Add up to 1000 email addresses to the suppression list at once - sig do - params( - suppressions: - T::Array[ - ArkEmail::SuppressionBulkCreateParams::Suppression::OrHash - ], - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::SuppressionBulkCreateResponse) - end - def bulk_create(suppressions:, request_options: {}) - end - - # @api private - sig { params(client: ArkEmail::Client).returns(T.attached_class) } - def self.new(client:) - end - end - end -end diff --git a/rbi/ark_email/resources/tenants.rbi b/rbi/ark_email/resources/tenants.rbi index da5fbba..999c92e 100644 --- a/rbi/ark_email/resources/tenants.rbi +++ b/rbi/ark_email/resources/tenants.rbi @@ -6,6 +6,21 @@ module ArkEmail sig { returns(ArkEmail::Resources::Tenants::Credentials) } attr_reader :credentials + sig { returns(ArkEmail::Resources::Tenants::Domains) } + attr_reader :domains + + sig { returns(ArkEmail::Resources::Tenants::Suppressions) } + attr_reader :suppressions + + sig { returns(ArkEmail::Resources::Tenants::Webhooks) } + attr_reader :webhooks + + sig { returns(ArkEmail::Resources::Tenants::Tracking) } + attr_reader :tracking + + sig { returns(ArkEmail::Resources::Tenants::Usage) } + attr_reader :usage + # Create a new tenant. # # Returns the created tenant with a unique `id`. Store this ID in your database to diff --git a/rbi/ark_email/resources/tenants/credentials.rbi b/rbi/ark_email/resources/tenants/credentials.rbi index 682e7a7..3595977 100644 --- a/rbi/ark_email/resources/tenants/credentials.rbi +++ b/rbi/ark_email/resources/tenants/credentials.rbi @@ -5,7 +5,7 @@ module ArkEmail class Tenants class Credentials # Create a new SMTP or API credential for a tenant. The credential can be used to - # send emails through Postal on behalf of the tenant. + # send emails via Ark on behalf of the tenant. # # **Important:** The credential key is only returned once at creation time. Store # it securely - you cannot retrieve it again. @@ -93,7 +93,7 @@ module ArkEmail end # List all SMTP and API credentials for a tenant. Credentials are used to send - # emails through Postal on behalf of the tenant. + # emails via Ark on behalf of the tenant. # # **Security:** Credential keys are not returned in the list response. Use the # retrieve endpoint with `reveal=true` to get the key. diff --git a/rbi/ark_email/resources/tenants/domains.rbi b/rbi/ark_email/resources/tenants/domains.rbi new file mode 100644 index 0000000..c06f4cd --- /dev/null +++ b/rbi/ark_email/resources/tenants/domains.rbi @@ -0,0 +1,114 @@ +# typed: strong + +module ArkEmail + module Resources + class Tenants + class Domains + # Add a new sending domain to a tenant. Returns DNS records that must be + # configured before the domain can be verified. + # + # Each tenant gets their own isolated mail server for domain isolation. + # + # **Required DNS records:** + # + # - **SPF** - TXT record for sender authentication + # - **DKIM** - TXT record for email signing + # - **Return Path** - CNAME for bounce handling + # + # After adding DNS records, call + # `POST /tenants/{tenantId}/domains/{domainId}/verify` to verify. + sig do + params( + tenant_id: String, + name: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::DomainCreateResponse) + end + def create( + # The tenant ID + tenant_id, + # Domain name (e.g., "mail.example.com") + name:, + request_options: {} + ) + end + + # Get detailed information about a domain including DNS record status. + sig do + params( + domain_id: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::DomainRetrieveResponse) + end + def retrieve( + # Domain ID or domain name + domain_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # Get all sending domains for a specific tenant with their verification status. + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::DomainListResponse) + end + def list( + # The tenant ID + tenant_id, + request_options: {} + ) + end + + # Remove a sending domain from a tenant. You will no longer be able to send emails + # from this domain. + # + # **Warning:** This action cannot be undone. + sig do + params( + domain_id: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::DomainDeleteResponse) + end + def delete( + # Domain ID + domain_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # Check if DNS records are correctly configured and verify the domain. Returns the + # current status of each required DNS record. + # + # Call this after you've added the DNS records shown when creating the domain. + sig do + params( + domain_id: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::DomainVerifyResponse) + end + def verify( + # Domain ID + domain_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end + end +end diff --git a/rbi/ark_email/resources/tenants/suppressions.rbi b/rbi/ark_email/resources/tenants/suppressions.rbi new file mode 100644 index 0000000..574fecf --- /dev/null +++ b/rbi/ark_email/resources/tenants/suppressions.rbi @@ -0,0 +1,93 @@ +# typed: strong + +module ArkEmail + module Resources + class Tenants + class Suppressions + # Add an email address to the tenant's suppression list. The address will not + # receive any emails from this tenant until removed. + sig do + params( + tenant_id: String, + address: String, + reason: T.nilable(String), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::SuppressionCreateResponse) + end + def create( + # The tenant ID + tenant_id, + # Email address to suppress + address:, + # Reason for suppression (accepts null) + reason: nil, + request_options: {} + ) + end + + # Check if a specific email address is on the tenant's suppression list. + sig do + params( + email: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::SuppressionRetrieveResponse) + end + def retrieve( + # Email address (URL-encoded) + email, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # Get all email addresses on the tenant's suppression list. These addresses will + # not receive any emails from this tenant. + sig do + params( + tenant_id: String, + page: Integer, + per_page: Integer, + request_options: ArkEmail::RequestOptions::OrHash + ).returns( + ArkEmail::Internal::PageNumberPagination[ + ArkEmail::Models::Tenants::SuppressionListResponse + ] + ) + end + def list( + # The tenant ID + tenant_id, + page: nil, + per_page: nil, + request_options: {} + ) + end + + # Remove an email address from the tenant's suppression list. The address will be + # able to receive emails from this tenant again. + sig do + params( + email: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::SuppressionDeleteResponse) + end + def delete( + # Email address (URL-encoded) + email, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end + end +end diff --git a/rbi/ark_email/resources/tenants/tracking.rbi b/rbi/ark_email/resources/tenants/tracking.rbi new file mode 100644 index 0000000..4ba1bbe --- /dev/null +++ b/rbi/ark_email/resources/tenants/tracking.rbi @@ -0,0 +1,153 @@ +# typed: strong + +module ArkEmail + module Resources + class Tenants + class Tracking + # Create a new track domain for open/click tracking for a tenant. + # + # After creation, you must configure a CNAME record pointing to the provided DNS + # value before tracking will work. + sig do + params( + tenant_id: String, + domain_id: Integer, + name: String, + ssl_enabled: T.nilable(T::Boolean), + track_clicks: T.nilable(T::Boolean), + track_opens: T.nilable(T::Boolean), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::TrackingCreateResponse) + end + def create( + # The tenant ID + tenant_id, + # ID of the sending domain to attach this track domain to + domain_id:, + # Subdomain name (e.g., 'track' for track.yourdomain.com) + name:, + # Enable SSL for tracking URLs (accepts null, defaults to true) + ssl_enabled: nil, + # Enable click tracking (accepts null, defaults to true) + track_clicks: nil, + # Enable open tracking (tracking pixel, accepts null, defaults to true) + track_opens: nil, + request_options: {} + ) + end + + # Get details of a specific track domain including DNS configuration. + sig do + params( + tracking_id: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::TrackingRetrieveResponse) + end + def retrieve( + # Track domain ID + tracking_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # Update track domain settings. + # + # Use this to: + # + # - Enable/disable click tracking + # - Enable/disable open tracking + # - Enable/disable SSL + # - Set excluded click domains + sig do + params( + tracking_id: String, + tenant_id: String, + excluded_click_domains: T.nilable(String), + ssl_enabled: T.nilable(T::Boolean), + track_clicks: T.nilable(T::Boolean), + track_opens: T.nilable(T::Boolean), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::TrackingUpdateResponse) + end + def update( + # Path param: Track domain ID + tracking_id, + # Path param: The tenant ID + tenant_id:, + # Body param: Comma-separated list of domains to exclude from click tracking + # (accepts null) + excluded_click_domains: nil, + # Body param: Enable or disable SSL for tracking URLs (accepts null) + ssl_enabled: nil, + # Body param: Enable or disable click tracking (accepts null) + track_clicks: nil, + # Body param: Enable or disable open tracking (accepts null) + track_opens: nil, + request_options: {} + ) + end + + # List all track domains configured for a tenant. Track domains enable open and + # click tracking for emails. + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::TrackingListResponse) + end + def list( + # The tenant ID + tenant_id, + request_options: {} + ) + end + + # Delete a track domain. This will disable tracking for any emails using this + # domain. + sig do + params( + tracking_id: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::TrackingDeleteResponse) + end + def delete( + # Track domain ID + tracking_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # Check DNS configuration for the track domain. + # + # The track domain requires a CNAME record to be configured before open and click + # tracking will work. Use this endpoint to verify the DNS is correctly set up. + sig do + params( + tracking_id: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::TrackingVerifyResponse) + end + def verify( + # Track domain ID + tracking_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end + end +end diff --git a/rbi/ark_email/resources/tenants/usage.rbi b/rbi/ark_email/resources/tenants/usage.rbi new file mode 100644 index 0000000..785dc4c --- /dev/null +++ b/rbi/ark_email/resources/tenants/usage.rbi @@ -0,0 +1,100 @@ +# typed: strong + +module ArkEmail + module Resources + class Tenants + class Usage + # Returns email sending statistics for a specific tenant over a time period. + # + # **Use cases:** + # + # - Display usage dashboard to your customers + # - Calculate per-tenant billing + # - Monitor tenant health and delivery rates + # + # **Period formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` (full month) + # - Date range: `2024-01-01..2024-01-31` + # - Single day: `2024-01-15` + # + # **Response includes:** + # + # - `emails` - Counts for sent, delivered, soft_failed, hard_failed, bounced, held + # - `rates` - Delivery rate and bounce rate as decimals (0.95 = 95%) + sig do + params( + tenant_id: String, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::UsageRetrieveResponse) + end + def retrieve( + # The tenant ID + tenant_id, + # Time period for usage data. Defaults to current month. + # + # **Formats:** + # + # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # - Month: `2024-01` + # - Range: `2024-01-01..2024-01-31` + # - Day: `2024-01-15` + period: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + # Returns time-bucketed email statistics for a specific tenant. + # + # **Use cases:** + # + # - Build usage charts and graphs + # - Identify sending patterns + # - Detect anomalies in delivery rates + # + # **Granularity options:** + # + # - `hour` - Hourly buckets (best for last 7 days) + # - `day` - Daily buckets (best for last 30-90 days) + # - `week` - Weekly buckets (best for last 6 months) + # - `month` - Monthly buckets (best for year-over-year) + # + # The response includes a data point for each time bucket with all email metrics. + sig do + params( + tenant_id: String, + granularity: + ArkEmail::Tenants::UsageRetrieveTimeseriesParams::Granularity::OrSymbol, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::UsageRetrieveTimeseriesResponse) + end + def retrieve_timeseries( + # The tenant ID + tenant_id, + # Time bucket size for data points + granularity: nil, + # Time period for timeseries data. Defaults to current month. + period: nil, + # Timezone for period calculations (IANA format). Defaults to UTC. + timezone: nil, + request_options: {} + ) + end + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end + end +end diff --git a/rbi/ark_email/resources/tenants/webhooks.rbi b/rbi/ark_email/resources/tenants/webhooks.rbi new file mode 100644 index 0000000..6f8a644 --- /dev/null +++ b/rbi/ark_email/resources/tenants/webhooks.rbi @@ -0,0 +1,295 @@ +# typed: strong + +module ArkEmail + module Resources + class Tenants + class Webhooks + # Create a webhook endpoint to receive email event notifications for a tenant. + # + # **Available events:** + # + # - `MessageSent` - Email accepted by recipient server + # - `MessageDeliveryFailed` - Delivery permanently failed + # - `MessageDelayed` - Delivery temporarily failed, will retry + # - `MessageBounced` - Email bounced + # - `MessageHeld` - Email held for review + # - `MessageLinkClicked` - Recipient clicked a link + # - `MessageLoaded` - Recipient opened the email + # - `DomainDNSError` - Domain DNS issue detected + sig do + params( + tenant_id: String, + name: String, + url: String, + all_events: T.nilable(T::Boolean), + enabled: T.nilable(T::Boolean), + events: + T.nilable( + T::Array[ + ArkEmail::Tenants::WebhookCreateParams::Event::OrSymbol + ] + ), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookCreateResponse) + end + def create( + # The tenant ID + tenant_id, + # Webhook name for identification + name:, + # HTTPS endpoint URL + url:, + # Subscribe to all events (ignores events array, accepts null) + all_events: nil, + # Whether the webhook is enabled (accepts null) + enabled: nil, + # Events to subscribe to (accepts null): + # + # - `MessageSent` - Email successfully delivered to recipient's server + # - `MessageDelayed` - Temporary delivery failure, will retry + # - `MessageDeliveryFailed` - Permanent delivery failure + # - `MessageHeld` - Email held for manual review + # - `MessageBounced` - Email bounced back + # - `MessageLinkClicked` - Recipient clicked a tracked link + # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded) + # - `DomainDNSError` - DNS configuration issue detected + events: nil, + request_options: {} + ) + end + + # Get webhook details + sig do + params( + webhook_id: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookRetrieveResponse) + end + def retrieve( + # Webhook ID + webhook_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # Update a webhook + sig do + params( + webhook_id: String, + tenant_id: String, + all_events: T.nilable(T::Boolean), + enabled: T.nilable(T::Boolean), + events: T.nilable(T::Array[String]), + name: T.nilable(String), + url: T.nilable(String), + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookUpdateResponse) + end + def update( + # Path param: Webhook ID + webhook_id, + # Path param: The tenant ID + tenant_id:, + # Body param + all_events: nil, + # Body param + enabled: nil, + # Body param + events: nil, + # Body param + name: nil, + # Body param + url: nil, + request_options: {} + ) + end + + # Get all configured webhook endpoints for a tenant. + sig do + params( + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookListResponse) + end + def list( + # The tenant ID + tenant_id, + request_options: {} + ) + end + + # Delete a webhook + sig do + params( + webhook_id: String, + tenant_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookDeleteResponse) + end + def delete( + # Webhook ID + webhook_id, + # The tenant ID + tenant_id:, + request_options: {} + ) + end + + # Get a paginated list of delivery attempts for a specific webhook. + # + # Use this to: + # + # - Monitor webhook health and delivery success rate + # - Debug failed deliveries + # - Find specific events to replay + # + # **Filtering:** + # + # - Filter by success/failure to find problematic deliveries + # - Filter by event type to find specific events + # - Filter by time range for debugging recent issues + # + # **Retry behavior:** Failed deliveries are automatically retried with exponential + # backoff over ~3 days. Check `willRetry` to see if more attempts are scheduled. + sig do + params( + webhook_id: String, + tenant_id: String, + after: Integer, + before: Integer, + event: + ArkEmail::Tenants::WebhookListDeliveriesParams::Event::OrSymbol, + page: Integer, + per_page: Integer, + success: T::Boolean, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookListDeliveriesResponse) + end + def list_deliveries( + # Path param: Webhook ID + webhook_id, + # Path param: The tenant ID + tenant_id:, + # Query param: Only deliveries after this Unix timestamp + after: nil, + # Query param: Only deliveries before this Unix timestamp + before: nil, + # Query param: Filter by event type + event: nil, + # Query param: Page number (default 1) + page: nil, + # Query param: Items per page (default 30, max 100) + per_page: nil, + # Query param: Filter by delivery success (true = 2xx response, false = non-2xx or + # error) + success: nil, + request_options: {} + ) + end + + # Re-send a webhook delivery to your endpoint. + # + # **Use cases:** + # + # - Recover from transient failures after fixing your endpoint + # - Test endpoint changes with real historical data + # - Retry deliveries that failed due to downtime + # + # **How it works:** + # + # 1. Fetches the original payload from the delivery + # 2. Generates a new timestamp and signature + # 3. Sends to your webhook URL immediately + # 4. Returns the result (does not queue for retry if it fails) + # + # **Note:** The webhook must be enabled to replay deliveries. + sig do + params( + delivery_id: String, + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse) + end + def replay_delivery( + # Delivery ID (UUID) to replay + delivery_id, + # The tenant ID + tenant_id:, + # Webhook ID + webhook_id:, + request_options: {} + ) + end + + # Get detailed information about a specific webhook delivery attempt. + # + # Returns: + # + # - The complete request payload that was sent + # - Request headers including the signature + # - Response status code and body from your endpoint + # - Timing information + # + # Use this to debug why a delivery failed or verify what data was sent. + sig do + params( + delivery_id: String, + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse) + end + def retrieve_delivery( + # Delivery ID (UUID) + delivery_id, + # The tenant ID + tenant_id:, + # Webhook ID + webhook_id:, + request_options: {} + ) + end + + # Send a test payload to your webhook endpoint and verify it receives the data + # correctly. + # + # Use this to: + # + # - Verify your webhook URL is accessible + # - Test your signature verification code + # - Ensure your server handles the payload format correctly + # + # **Test payload format:** The test payload is identical to real webhook payloads, + # containing sample data for the specified event type. Your webhook should respond + # with a 2xx status code. + sig do + params( + webhook_id: String, + tenant_id: String, + event: ArkEmail::Tenants::WebhookTestParams::Event::OrSymbol, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Tenants::WebhookTestResponse) + end + def test_( + # Path param: Webhook ID + webhook_id, + # Path param: The tenant ID + tenant_id:, + # Body param: Event type to simulate + event:, + request_options: {} + ) + end + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end + end +end diff --git a/rbi/ark_email/resources/tracking.rbi b/rbi/ark_email/resources/tracking.rbi deleted file mode 100644 index 894d014..0000000 --- a/rbi/ark_email/resources/tracking.rbi +++ /dev/null @@ -1,130 +0,0 @@ -# typed: strong - -module ArkEmail - module Resources - class Tracking - # Create a new track domain for open/click tracking. - # - # After creation, you must configure a CNAME record pointing to the provided DNS - # value before tracking will work. - sig do - params( - domain_id: Integer, - name: String, - ssl_enabled: T.nilable(T::Boolean), - track_clicks: T.nilable(T::Boolean), - track_opens: T.nilable(T::Boolean), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::TrackingCreateResponse) - end - def create( - # ID of the sending domain to attach this track domain to - domain_id:, - # Subdomain name (e.g., 'track' for track.yourdomain.com) - name:, - # Enable SSL for tracking URLs (accepts null, defaults to true) - ssl_enabled: nil, - # Enable click tracking (accepts null, defaults to true) - track_clicks: nil, - # Enable open tracking (tracking pixel, accepts null, defaults to true) - track_opens: nil, - request_options: {} - ) - end - - # Get details of a specific track domain including DNS configuration - sig do - params( - tracking_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::TrackingRetrieveResponse) - end - def retrieve( - # Track domain ID or UUID - tracking_id, - request_options: {} - ) - end - - # Update track domain settings. - # - # Use this to: - # - # - Enable/disable click tracking - # - Enable/disable open tracking - # - Enable/disable SSL - # - Set excluded click domains - sig do - params( - tracking_id: String, - excluded_click_domains: T.nilable(String), - ssl_enabled: T.nilable(T::Boolean), - track_clicks: T.nilable(T::Boolean), - track_opens: T.nilable(T::Boolean), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::TrackingUpdateResponse) - end - def update( - # Track domain ID or UUID - tracking_id, - # Comma-separated list of domains to exclude from click tracking (accepts null) - excluded_click_domains: nil, - # Enable or disable SSL for tracking URLs (accepts null) - ssl_enabled: nil, - # Enable or disable click tracking (accepts null) - track_clicks: nil, - # Enable or disable open tracking (accepts null) - track_opens: nil, - request_options: {} - ) - end - - # List all track domains configured for your server. Track domains enable open and - # click tracking for your emails. - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - ArkEmail::Models::TrackingListResponse - ) - end - def list(request_options: {}) - end - - # Delete a track domain. This will disable tracking for any emails using this - # domain. - sig do - params( - tracking_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::TrackingDeleteResponse) - end - def delete( - # Track domain ID or UUID - tracking_id, - request_options: {} - ) - end - - # Check DNS configuration for the track domain. - # - # The track domain requires a CNAME record to be configured before open and click - # tracking will work. Use this endpoint to verify the DNS is correctly set up. - sig do - params( - tracking_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::TrackingVerifyResponse) - end - def verify( - # Track domain ID or UUID - tracking_id, - request_options: {} - ) - end - - # @api private - sig { params(client: ArkEmail::Client).returns(T.attached_class) } - def self.new(client:) - end - end - end -end diff --git a/rbi/ark_email/resources/usage.rbi b/rbi/ark_email/resources/usage.rbi index 4da97e1..799c858 100644 --- a/rbi/ark_email/resources/usage.rbi +++ b/rbi/ark_email/resources/usage.rbi @@ -3,65 +3,73 @@ module ArkEmail module Resources class Usage - # > **Deprecated:** Use `GET /limits` instead for rate limits and send limits. - # > This endpoint will be removed in a future version. + # Returns aggregated email sending statistics for your entire organization. For + # per-tenant breakdown, use `GET /usage/tenants`. # - # Returns current usage and limit information for your account. - # - # This endpoint is designed for: + # **Use cases:** # - # - **AI agents/MCP servers:** Check constraints before planning batch operations - # - **Monitoring dashboards:** Display current usage status - # - **Rate limit awareness:** Know remaining capacity before making requests + # - Platform dashboards showing org-wide metrics + # - Quick health check on overall sending + # - Monitoring total volume and delivery rates # # **Response includes:** # - # - `rateLimit` - API request rate limit (requests per second) - # - `sendLimit` - Email sending limit (emails per hour) - # - `billing` - Credit balance and auto-recharge configuration - # - # **Notes:** + # - `emails` - Aggregated email counts across all tenants + # - `rates` - Overall delivery and bounce rates + # - `tenants` - Tenant count summary (total, active, with activity) # - # - This request counts against your rate limit - # - `sendLimit` may be null if Postal is temporarily unavailable - # - `billing` is null if billing is not configured - # - Send limit resets at the top of each hour + # **Related endpoints:** # - # **Migration:** - # - # - For rate limits and send limits, use `GET /limits` - # - For per-tenant usage analytics, use `GET /tenants/{tenantId}/usage` - # - For bulk tenant usage, use `GET /usage/by-tenant` + # - `GET /usage/tenants` - Paginated usage per tenant + # - `GET /usage/export` - Export usage data for billing + # - `GET /tenants/{tenantId}/usage` - Single tenant usage details + # - `GET /limits` - Rate limits and send limits sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - ArkEmail::Models::UsageRetrieveResponse - ) + params( + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::OrgUsageSummary) end - def retrieve(request_options: {}) + def retrieve( + # Time period for usage data. + # + # **Shortcuts:** `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` + period: nil, + # Timezone for period calculations (IANA format) + timezone: nil, + request_options: {} + ) end - # Export usage data for all tenants in a format suitable for billing systems. + # Export email usage data for all tenants in CSV or JSON Lines format. Designed + # for billing system integration, data warehousing, and analytics. # - # **Use cases:** + # **Jobs to be done:** # - # - Import into billing systems (Stripe, Chargebee, etc.) - # - Generate invoices - # - Archive usage data + # - Import usage data into billing systems (Stripe, Chargebee, etc.) + # - Load into data warehouses (Snowflake, BigQuery, etc.) + # - Process in spreadsheets (Excel, Google Sheets) + # - Feed into BI tools (Looker, Metabase, etc.) # # **Export formats:** # - # - `csv` - Comma-separated values (default) - # - `jsonl` - JSON Lines (one JSON object per line) - # - `json` - JSON array + # - `csv` - UTF-8 with BOM for Excel compatibility (default) + # - `jsonl` - JSON Lines (one JSON object per line, streamable) # - # **Response headers:** + # **CSV columns:** `tenant_id`, `tenant_name`, `external_id`, `status`, `sent`, + # `delivered`, `soft_failed`, `hard_failed`, `bounced`, `held`, `delivery_rate`, + # `bounce_rate`, `period_start`, `period_end` # - # - `X-Total-Tenants` - Total number of tenants in export - # - `X-Total-Sent` - Total emails sent across all tenants - # - `Content-Disposition` - Suggested filename for download + # **Response headers:** # - # This endpoint returns up to 10,000 tenants per request. For organizations with - # more tenants, use the `/usage/by-tenant` endpoint with pagination. + # - `Content-Disposition` - Filename for download + # - `Content-Type` - `text/csv` or `application/x-ndjson` sig do params( format_: ArkEmail::UsageExportParams::Format::OrSymbol, @@ -77,62 +85,75 @@ module ArkEmail format_: nil, # Only include tenants with at least this many emails sent min_sent: nil, - # Time period for export. Defaults to current month. + # Time period for export. + # + # **Shortcuts:** `this_month`, `last_month`, `last_30_days`, etc. + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` period: nil, # Filter by tenant status status: nil, - # Timezone for period calculations (IANA format). Defaults to UTC. + # Timezone for period calculations (IANA format) timezone: nil, request_options: {} ) end - # Returns email usage statistics for all tenants in your organization. + # Returns email usage statistics for all tenants in your organization. Results are + # paginated with page-based navigation. # - # **Use cases:** + # **Jobs to be done:** # - # - Generate monthly billing reports + # - Generate monthly billing invoices per tenant # - Build admin dashboards showing all customer usage # - Identify high-volume or problematic tenants + # - Track usage against plan limits # # **Sorting options:** # # - `sent`, `-sent` - Sort by emails sent (ascending/descending) # - `delivered`, `-delivered` - Sort by emails delivered # - `bounce_rate`, `-bounce_rate` - Sort by bounce rate - # - `name`, `-name` - Sort alphabetically by tenant name + # - `tenant_name`, `-tenant_name` - Sort alphabetically by tenant name # # **Filtering:** # # - `status` - Filter by tenant status (active, suspended, archived) - # - `min_sent` - Only include tenants with at least N emails sent + # - `minSent` - Only include tenants with at least N emails sent # - # Results are paginated. Use `limit` and `offset` for pagination. + # **Auto-pagination:** SDKs support iterating over all pages automatically. sig do params( - limit: Integer, min_sent: Integer, - offset: Integer, + page: Integer, period: String, - sort: ArkEmail::UsageListByTenantParams::Sort::OrSymbol, - status: ArkEmail::UsageListByTenantParams::Status::OrSymbol, + per_page: Integer, + sort: ArkEmail::UsageListTenantsParams::Sort::OrSymbol, + status: ArkEmail::UsageListTenantsParams::Status::OrSymbol, timezone: String, request_options: ArkEmail::RequestOptions::OrHash ).returns( - ArkEmail::Internal::OffsetPagination[ - ArkEmail::BulkTenantUsage::Tenant - ] + ArkEmail::Internal::PageNumberPagination[ArkEmail::TenantUsageItem] ) end - def list_by_tenant( - # Maximum number of tenants to return (1-100) - limit: nil, + def list_tenants( # Only include tenants with at least this many emails sent min_sent: nil, - # Number of tenants to skip for pagination - offset: nil, + # Page number (1-indexed) + page: nil, # Time period for usage data. Defaults to current month. + # + # **Shortcuts:** `today`, `yesterday`, `this_week`, `last_week`, `this_month`, + # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` + # + # **Month format:** `2024-01` (YYYY-MM) + # + # **Custom range:** `2024-01-01..2024-01-15` period: nil, + # Results per page (max 100) + per_page: nil, # Sort order for results. Prefix with `-` for descending order. sort: nil, # Filter by tenant status @@ -143,92 +164,6 @@ module ArkEmail ) end - # Returns time-bucketed email statistics for a specific tenant. - # - # **Use cases:** - # - # - Build usage charts and graphs - # - Identify sending patterns - # - Detect anomalies in delivery rates - # - # **Granularity options:** - # - # - `hour` - Hourly buckets (best for last 7 days) - # - `day` - Daily buckets (best for last 30-90 days) - # - `week` - Weekly buckets (best for last 6 months) - # - `month` - Monthly buckets (best for year-over-year) - # - # The response includes a data point for each time bucket with all email metrics. - sig do - params( - tenant_id: String, - granularity: - ArkEmail::UsageRetrieveTenantTimeseriesParams::Granularity::OrSymbol, - period: String, - timezone: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse) - end - def retrieve_tenant_timeseries( - # The tenant ID - tenant_id, - # Time bucket size for data points - granularity: nil, - # Time period for timeseries data. Defaults to current month. - period: nil, - # Timezone for period calculations (IANA format). Defaults to UTC. - timezone: nil, - request_options: {} - ) - end - - # Returns email sending statistics for a specific tenant over a time period. - # - # **Use cases:** - # - # - Display usage dashboard to your customers - # - Calculate per-tenant billing - # - Monitor tenant health and delivery rates - # - # **Period formats:** - # - # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, - # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` - # - Month: `2024-01` (full month) - # - Date range: `2024-01-01..2024-01-31` - # - Single day: `2024-01-15` - # - # **Response includes:** - # - # - `emails` - Counts for sent, delivered, soft_failed, hard_failed, bounced, held - # - `rates` - Delivery rate and bounce rate as decimals (0.95 = 95%) - sig do - params( - tenant_id: String, - period: String, - timezone: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::UsageRetrieveTenantUsageResponse) - end - def retrieve_tenant_usage( - # The tenant ID - tenant_id, - # Time period for usage data. Defaults to current month. - # - # **Formats:** - # - # - Shortcuts: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, - # `last_month`, `last_7_days`, `last_30_days`, `last_90_days` - # - Month: `2024-01` - # - Range: `2024-01-01..2024-01-31` - # - Day: `2024-01-15` - period: nil, - # Timezone for period calculations (IANA format). Defaults to UTC. - timezone: nil, - request_options: {} - ) - end - # @api private sig { params(client: ArkEmail::Client).returns(T.attached_class) } def self.new(client:) diff --git a/rbi/ark_email/resources/webhooks.rbi b/rbi/ark_email/resources/webhooks.rbi deleted file mode 100644 index 89e8f0d..0000000 --- a/rbi/ark_email/resources/webhooks.rbi +++ /dev/null @@ -1,244 +0,0 @@ -# typed: strong - -module ArkEmail - module Resources - class Webhooks - # Create a webhook endpoint to receive email event notifications. - # - # **Available events:** - # - # - `MessageSent` - Email accepted by recipient server - # - `MessageDeliveryFailed` - Delivery permanently failed - # - `MessageDelayed` - Delivery temporarily failed, will retry - # - `MessageBounced` - Email bounced - # - `MessageHeld` - Email held for review - # - `MessageLinkClicked` - Recipient clicked a link - # - `MessageLoaded` - Recipient opened the email - # - `DomainDNSError` - Domain DNS issue detected - sig do - params( - name: String, - url: String, - all_events: T.nilable(T::Boolean), - enabled: T.nilable(T::Boolean), - events: - T.nilable(T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol]), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::WebhookCreateResponse) - end - def create( - # Webhook name for identification - name:, - # HTTPS endpoint URL - url:, - # Subscribe to all events (ignores events array, accepts null) - all_events: nil, - # Whether the webhook is enabled (accepts null) - enabled: nil, - # Events to subscribe to (accepts null): - # - # - `MessageSent` - Email successfully delivered to recipient's server - # - `MessageDelayed` - Temporary delivery failure, will retry - # - `MessageDeliveryFailed` - Permanent delivery failure - # - `MessageHeld` - Email held for manual review - # - `MessageBounced` - Email bounced back - # - `MessageLinkClicked` - Recipient clicked a tracked link - # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded) - # - `DomainDNSError` - DNS configuration issue detected - events: nil, - request_options: {} - ) - end - - # Get webhook details - sig do - params( - webhook_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::WebhookRetrieveResponse) - end - def retrieve(webhook_id, request_options: {}) - end - - # Update a webhook - sig do - params( - webhook_id: String, - all_events: T.nilable(T::Boolean), - enabled: T.nilable(T::Boolean), - events: T.nilable(T::Array[String]), - name: T.nilable(String), - url: T.nilable(String), - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::WebhookUpdateResponse) - end - def update( - webhook_id, - all_events: nil, - enabled: nil, - events: nil, - name: nil, - url: nil, - request_options: {} - ) - end - - # Get all configured webhook endpoints - sig do - params(request_options: ArkEmail::RequestOptions::OrHash).returns( - ArkEmail::Models::WebhookListResponse - ) - end - def list(request_options: {}) - end - - # Delete a webhook - sig do - params( - webhook_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::WebhookDeleteResponse) - end - def delete(webhook_id, request_options: {}) - end - - # Get a paginated list of delivery attempts for a specific webhook. - # - # Use this to: - # - # - Monitor webhook health and delivery success rate - # - Debug failed deliveries - # - Find specific events to replay - # - # **Filtering:** - # - # - Filter by success/failure to find problematic deliveries - # - Filter by event type to find specific events - # - Filter by time range for debugging recent issues - # - # **Retry behavior:** Failed deliveries are automatically retried with exponential - # backoff over ~3 days. Check `willRetry` to see if more attempts are scheduled. - sig do - params( - webhook_id: String, - after: Integer, - before: Integer, - event: ArkEmail::WebhookListDeliveriesParams::Event::OrSymbol, - page: Integer, - per_page: Integer, - success: T::Boolean, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::WebhookListDeliveriesResponse) - end - def list_deliveries( - # Webhook ID or UUID - webhook_id, - # Only deliveries after this Unix timestamp - after: nil, - # Only deliveries before this Unix timestamp - before: nil, - # Filter by event type - event: nil, - # Page number (default 1) - page: nil, - # Items per page (default 30, max 100) - per_page: nil, - # Filter by delivery success (true = 2xx response, false = non-2xx or error) - success: nil, - request_options: {} - ) - end - - # Re-send a webhook delivery to your endpoint. - # - # **Use cases:** - # - # - Recover from transient failures after fixing your endpoint - # - Test endpoint changes with real historical data - # - Retry deliveries that failed due to downtime - # - # **How it works:** - # - # 1. Fetches the original payload from the delivery - # 2. Generates a new timestamp and signature - # 3. Sends to your webhook URL immediately - # 4. Returns the result (does not queue for retry if it fails) - # - # **Note:** The webhook must be enabled to replay deliveries. - sig do - params( - delivery_id: String, - webhook_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::WebhookReplayDeliveryResponse) - end - def replay_delivery( - # Delivery ID (UUID) to replay - delivery_id, - # Webhook ID or UUID - webhook_id:, - request_options: {} - ) - end - - # Get detailed information about a specific webhook delivery attempt. - # - # Returns: - # - # - The complete request payload that was sent - # - Request headers including the signature - # - Response status code and body from your endpoint - # - Timing information - # - # Use this to debug why a delivery failed or verify what data was sent. - sig do - params( - delivery_id: String, - webhook_id: String, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::WebhookRetrieveDeliveryResponse) - end - def retrieve_delivery( - # Delivery ID (UUID) - delivery_id, - # Webhook ID or UUID - webhook_id:, - request_options: {} - ) - end - - # Send a test payload to your webhook endpoint and verify it receives the data - # correctly. - # - # Use this to: - # - # - Verify your webhook URL is accessible - # - Test your signature verification code - # - Ensure your server handles the payload format correctly - # - # **Test payload format:** The test payload is identical to real webhook payloads, - # containing sample data for the specified event type. Your webhook should respond - # with a 2xx status code. - sig do - params( - webhook_id: String, - event: ArkEmail::WebhookTestParams::Event::OrSymbol, - request_options: ArkEmail::RequestOptions::OrHash - ).returns(ArkEmail::Models::WebhookTestResponse) - end - def test_( - # Webhook ID or UUID - webhook_id, - # Event type to simulate - event:, - request_options: {} - ) - end - - # @api private - sig { params(client: ArkEmail::Client).returns(T.attached_class) } - def self.new(client:) - end - end - end -end diff --git a/sig/ark_email/client.rbs b/sig/ark_email/client.rbs index 78209fc..e710cd8 100644 --- a/sig/ark_email/client.rbs +++ b/sig/ark_email/client.rbs @@ -12,20 +12,12 @@ module ArkEmail attr_reader emails: ArkEmail::Resources::Emails - attr_reader domains: ArkEmail::Resources::Domains - - attr_reader suppressions: ArkEmail::Resources::Suppressions - - attr_reader webhooks: ArkEmail::Resources::Webhooks - - attr_reader tracking: ArkEmail::Resources::Tracking - attr_reader logs: ArkEmail::Resources::Logs - attr_reader limits: ArkEmail::Resources::Limits - attr_reader usage: ArkEmail::Resources::Usage + attr_reader limits: ArkEmail::Resources::Limits + attr_reader tenants: ArkEmail::Resources::Tenants private def auth_headers: -> ::Hash[String, String] diff --git a/sig/ark_email/internal/offset_pagination.rbs b/sig/ark_email/internal/offset_pagination.rbs deleted file mode 100644 index 602322b..0000000 --- a/sig/ark_email/internal/offset_pagination.rbs +++ /dev/null @@ -1,70 +0,0 @@ -module ArkEmail - module Internal - class OffsetPagination[Elem] - include ArkEmail::Internal::Type::BasePage[Elem] - - attr_accessor data: Data - - def inspect: -> String - - type data = - { pagination: Data::Pagination, tenants: ::Array[::Hash[Symbol, top]] } - class Data < ArkEmail::Internal::Type::BaseModel - attr_reader pagination: Data::Pagination? - - def pagination=: (Data::Pagination) -> Data::Pagination - - attr_reader tenants: ::Array[::Hash[Symbol, top]]? - - def tenants=: ( - ::Array[::Hash[Symbol, top]] - ) -> ::Array[::Hash[Symbol, top]] - - def initialize: ( - ?pagination: Data::Pagination, - ?tenants: ::Array[::Hash[Symbol, top]] - ) -> void - - def to_hash: -> { - pagination: Data::Pagination, - tenants: ::Array[::Hash[Symbol, top]] - } - - type pagination = - { has_more: bool, limit: Integer, offset: Integer, total: Integer } - - class Pagination < ArkEmail::Internal::Type::BaseModel - attr_reader has_more: bool? - - def has_more=: (bool) -> bool - - attr_reader limit: Integer? - - def limit=: (Integer) -> Integer - - attr_reader offset: Integer? - - def offset=: (Integer) -> Integer - - attr_reader total: Integer? - - def total=: (Integer) -> Integer - - def initialize: ( - ?has_more: bool, - ?limit: Integer, - ?offset: Integer, - ?total: Integer - ) -> void - - def to_hash: -> { - has_more: bool, - limit: Integer, - offset: Integer, - total: Integer - } - end - end - end - end -end diff --git a/sig/ark_email/models.rbs b/sig/ark_email/models.rbs index ec069fe..370e968 100644 --- a/sig/ark_email/models.rbs +++ b/sig/ark_email/models.rbs @@ -1,20 +1,6 @@ module ArkEmail class APIMeta = ArkEmail::Models::APIMeta - class BulkTenantUsage = ArkEmail::Models::BulkTenantUsage - - class DNSRecord = ArkEmail::Models::DNSRecord - - class DomainCreateParams = ArkEmail::Models::DomainCreateParams - - class DomainDeleteParams = ArkEmail::Models::DomainDeleteParams - - class DomainListParams = ArkEmail::Models::DomainListParams - - class DomainRetrieveParams = ArkEmail::Models::DomainRetrieveParams - - class DomainVerifyParams = ArkEmail::Models::DomainVerifyParams - class EmailCounts = ArkEmail::Models::EmailCounts class EmailListParams = ArkEmail::Models::EmailListParams @@ -45,15 +31,7 @@ module ArkEmail class LogRetrieveParams = ArkEmail::Models::LogRetrieveParams - class SuppressionBulkCreateParams = ArkEmail::Models::SuppressionBulkCreateParams - - class SuppressionCreateParams = ArkEmail::Models::SuppressionCreateParams - - class SuppressionDeleteParams = ArkEmail::Models::SuppressionDeleteParams - - class SuppressionListParams = ArkEmail::Models::SuppressionListParams - - class SuppressionRetrieveParams = ArkEmail::Models::SuppressionRetrieveParams + class OrgUsageSummary = ArkEmail::Models::OrgUsageSummary class Tenant = ArkEmail::Models::Tenant @@ -69,51 +47,13 @@ module ArkEmail class TenantUpdateParams = ArkEmail::Models::TenantUpdateParams - class TenantUsage = ArkEmail::Models::TenantUsage - - class TenantUsageTimeseries = ArkEmail::Models::TenantUsageTimeseries - - class TrackDomain = ArkEmail::Models::TrackDomain - - class TrackingCreateParams = ArkEmail::Models::TrackingCreateParams - - class TrackingDeleteParams = ArkEmail::Models::TrackingDeleteParams - - class TrackingListParams = ArkEmail::Models::TrackingListParams - - class TrackingRetrieveParams = ArkEmail::Models::TrackingRetrieveParams - - class TrackingUpdateParams = ArkEmail::Models::TrackingUpdateParams - - class TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams + class TenantUsageItem = ArkEmail::Models::TenantUsageItem class UsageExportParams = ArkEmail::Models::UsageExportParams - class UsageListByTenantParams = ArkEmail::Models::UsageListByTenantParams + class UsageListTenantsParams = ArkEmail::Models::UsageListTenantsParams class UsagePeriod = ArkEmail::Models::UsagePeriod class UsageRetrieveParams = ArkEmail::Models::UsageRetrieveParams - - class UsageRetrieveTenantTimeseriesParams = ArkEmail::Models::UsageRetrieveTenantTimeseriesParams - - class UsageRetrieveTenantUsageParams = ArkEmail::Models::UsageRetrieveTenantUsageParams - - class WebhookCreateParams = ArkEmail::Models::WebhookCreateParams - - class WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams - - class WebhookListDeliveriesParams = ArkEmail::Models::WebhookListDeliveriesParams - - class WebhookListParams = ArkEmail::Models::WebhookListParams - - class WebhookReplayDeliveryParams = ArkEmail::Models::WebhookReplayDeliveryParams - - class WebhookRetrieveDeliveryParams = ArkEmail::Models::WebhookRetrieveDeliveryParams - - class WebhookRetrieveParams = ArkEmail::Models::WebhookRetrieveParams - - class WebhookTestParams = ArkEmail::Models::WebhookTestParams - - class WebhookUpdateParams = ArkEmail::Models::WebhookUpdateParams end diff --git a/sig/ark_email/models/bulk_tenant_usage.rbs b/sig/ark_email/models/bulk_tenant_usage.rbs deleted file mode 100644 index 8c2be07..0000000 --- a/sig/ark_email/models/bulk_tenant_usage.rbs +++ /dev/null @@ -1,143 +0,0 @@ -module ArkEmail - module Models - type bulk_tenant_usage = - { - pagination: ArkEmail::BulkTenantUsage::Pagination, - period: ArkEmail::UsagePeriod, - summary: ArkEmail::BulkTenantUsage::Summary, - tenants: ::Array[ArkEmail::BulkTenantUsage::Tenant] - } - - class BulkTenantUsage < ArkEmail::Internal::Type::BaseModel - attr_accessor pagination: ArkEmail::BulkTenantUsage::Pagination - - attr_accessor period: ArkEmail::UsagePeriod - - attr_accessor summary: ArkEmail::BulkTenantUsage::Summary - - attr_accessor tenants: ::Array[ArkEmail::BulkTenantUsage::Tenant] - - def initialize: ( - pagination: ArkEmail::BulkTenantUsage::Pagination, - period: ArkEmail::UsagePeriod, - summary: ArkEmail::BulkTenantUsage::Summary, - tenants: ::Array[ArkEmail::BulkTenantUsage::Tenant] - ) -> void - - def to_hash: -> { - pagination: ArkEmail::BulkTenantUsage::Pagination, - period: ArkEmail::UsagePeriod, - summary: ArkEmail::BulkTenantUsage::Summary, - tenants: ::Array[ArkEmail::BulkTenantUsage::Tenant] - } - - type pagination = - { has_more: bool, limit: Integer, offset: Integer, total: Integer } - - class Pagination < ArkEmail::Internal::Type::BaseModel - attr_accessor has_more: bool - - attr_accessor limit: Integer - - attr_accessor offset: Integer - - attr_accessor total: Integer - - def initialize: ( - has_more: bool, - limit: Integer, - offset: Integer, - total: Integer - ) -> void - - def to_hash: -> { - has_more: bool, - limit: Integer, - offset: Integer, - total: Integer - } - end - - type summary = - { - total_delivered: Integer, - total_sent: Integer, - total_tenants: Integer - } - - class Summary < ArkEmail::Internal::Type::BaseModel - attr_accessor total_delivered: Integer - - attr_accessor total_sent: Integer - - attr_accessor total_tenants: Integer - - def initialize: ( - total_delivered: Integer, - total_sent: Integer, - total_tenants: Integer - ) -> void - - def to_hash: -> { - total_delivered: Integer, - total_sent: Integer, - total_tenants: Integer - } - end - - type tenant = - { - emails: ArkEmail::EmailCounts, - rates: ArkEmail::EmailRates, - status: ArkEmail::Models::BulkTenantUsage::Tenant::status, - tenant_id: String, - tenant_name: String, - external_id: String? - } - - class Tenant < ArkEmail::Internal::Type::BaseModel - attr_accessor emails: ArkEmail::EmailCounts - - attr_accessor rates: ArkEmail::EmailRates - - attr_accessor status: ArkEmail::Models::BulkTenantUsage::Tenant::status - - attr_accessor tenant_id: String - - attr_accessor tenant_name: String - - attr_accessor external_id: String? - - def initialize: ( - emails: ArkEmail::EmailCounts, - rates: ArkEmail::EmailRates, - status: ArkEmail::Models::BulkTenantUsage::Tenant::status, - tenant_id: String, - tenant_name: String, - ?external_id: String? - ) -> void - - def to_hash: -> { - emails: ArkEmail::EmailCounts, - rates: ArkEmail::EmailRates, - status: ArkEmail::Models::BulkTenantUsage::Tenant::status, - tenant_id: String, - tenant_name: String, - external_id: String? - } - - type status = :active | :suspended | :archived - - module Status - extend ArkEmail::Internal::Type::Enum - - ACTIVE: :active - SUSPENDED: :suspended - ARCHIVED: :archived - - def self?.values: -> ::Array[ArkEmail::Models::BulkTenantUsage::Tenant::status] - end - end - end - end -end diff --git a/sig/ark_email/models/dns_record.rbs b/sig/ark_email/models/dns_record.rbs deleted file mode 100644 index eee7d16..0000000 --- a/sig/ark_email/models/dns_record.rbs +++ /dev/null @@ -1,64 +0,0 @@ -module ArkEmail - module Models - type dns_record = - { - full_name: String, - name: String, - type: ArkEmail::Models::DNSRecord::type_, - value: String, - status: ArkEmail::Models::DNSRecord::status? - } - - class DNSRecord < ArkEmail::Internal::Type::BaseModel - attr_accessor full_name: String - - attr_accessor name: String - - attr_accessor type: ArkEmail::Models::DNSRecord::type_ - - attr_accessor value: String - - attr_accessor status: ArkEmail::Models::DNSRecord::status? - - def initialize: ( - full_name: String, - name: String, - type: ArkEmail::Models::DNSRecord::type_, - value: String, - ?status: ArkEmail::Models::DNSRecord::status? - ) -> void - - def to_hash: -> { - full_name: String, - name: String, - type: ArkEmail::Models::DNSRecord::type_, - value: String, - status: ArkEmail::Models::DNSRecord::status? - } - - type type_ = :TXT | :CNAME | :MX - - module Type - extend ArkEmail::Internal::Type::Enum - - TXT: :TXT - CNAME: :CNAME - MX: :MX - - def self?.values: -> ::Array[ArkEmail::Models::DNSRecord::type_] - end - - type status = :OK | :Missing | :Invalid - - module Status - extend ArkEmail::Internal::Type::Enum - - OK: :OK - MISSING: :Missing - INVALID: :Invalid - - def self?.values: -> ::Array[ArkEmail::Models::DNSRecord::status] - end - end - end -end diff --git a/sig/ark_email/models/domain_create_params.rbs b/sig/ark_email/models/domain_create_params.rbs deleted file mode 100644 index f28f657..0000000 --- a/sig/ark_email/models/domain_create_params.rbs +++ /dev/null @@ -1,28 +0,0 @@ -module ArkEmail - module Models - type domain_create_params = - { name: String, tenant_id: String } - & ArkEmail::Internal::Type::request_parameters - - class DomainCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor name: String - - attr_accessor tenant_id: String - - def initialize: ( - name: String, - tenant_id: String, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - name: String, - tenant_id: String, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/domain_create_response.rbs b/sig/ark_email/models/domain_create_response.rbs deleted file mode 100644 index 0598d97..0000000 --- a/sig/ark_email/models/domain_create_response.rbs +++ /dev/null @@ -1,125 +0,0 @@ -module ArkEmail - module Models - type domain_create_response = - { - data: ArkEmail::Models::DomainCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class DomainCreateResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::DomainCreateResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::DomainCreateResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::DomainCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainCreateResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - tenant_id: String, - tenant_name: String, - verified_at: Time? - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: Integer - - attr_accessor created_at: Time - - attr_accessor dns_records: ArkEmail::Models::DomainCreateResponse::Data::DNSRecords? - - attr_accessor name: String - - attr_accessor uuid: String - - attr_accessor verified: bool - - attr_reader tenant_id: String? - - def tenant_id=: (String) -> String - - attr_reader tenant_name: String? - - def tenant_name=: (String) -> String - - attr_accessor verified_at: Time? - - def initialize: ( - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainCreateResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - ?tenant_id: String, - ?tenant_name: String, - ?verified_at: Time? - ) -> void - - def to_hash: -> { - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainCreateResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - tenant_id: String, - tenant_name: String, - verified_at: Time? - } - - type dns_records = - { - dkim: ArkEmail::DNSRecord?, - return_path: ArkEmail::DNSRecord?, - spf: ArkEmail::DNSRecord?, - zone: String - } - - class DNSRecords < ArkEmail::Internal::Type::BaseModel - attr_accessor dkim: ArkEmail::DNSRecord? - - attr_accessor return_path: ArkEmail::DNSRecord? - - attr_accessor spf: ArkEmail::DNSRecord? - - attr_reader zone: String? - - def zone=: (String) -> String - - def initialize: ( - ?dkim: ArkEmail::DNSRecord?, - ?return_path: ArkEmail::DNSRecord?, - ?spf: ArkEmail::DNSRecord?, - ?zone: String - ) -> void - - def to_hash: -> { - dkim: ArkEmail::DNSRecord?, - return_path: ArkEmail::DNSRecord?, - spf: ArkEmail::DNSRecord?, - zone: String - } - end - end - end - end -end diff --git a/sig/ark_email/models/domain_delete_params.rbs b/sig/ark_email/models/domain_delete_params.rbs deleted file mode 100644 index 801b0b4..0000000 --- a/sig/ark_email/models/domain_delete_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type domain_delete_params = - { } & ArkEmail::Internal::Type::request_parameters - - class DomainDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/domain_delete_response.rbs b/sig/ark_email/models/domain_delete_response.rbs deleted file mode 100644 index 2a6844e..0000000 --- a/sig/ark_email/models/domain_delete_response.rbs +++ /dev/null @@ -1,40 +0,0 @@ -module ArkEmail - module Models - type domain_delete_response = - { - data: ArkEmail::Models::DomainDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class DomainDeleteResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::DomainDeleteResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::DomainDeleteResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::DomainDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = { message: String } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor message: String - - def initialize: (message: String) -> void - - def to_hash: -> { message: String } - end - end - end -end diff --git a/sig/ark_email/models/domain_list_params.rbs b/sig/ark_email/models/domain_list_params.rbs deleted file mode 100644 index 0536e30..0000000 --- a/sig/ark_email/models/domain_list_params.rbs +++ /dev/null @@ -1,25 +0,0 @@ -module ArkEmail - module Models - type domain_list_params = - { tenant_id: String } & ArkEmail::Internal::Type::request_parameters - - class DomainListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_reader tenant_id: String? - - def tenant_id=: (String) -> String - - def initialize: ( - ?tenant_id: String, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - tenant_id: String, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/domain_list_response.rbs b/sig/ark_email/models/domain_list_response.rbs deleted file mode 100644 index 273cba0..0000000 --- a/sig/ark_email/models/domain_list_response.rbs +++ /dev/null @@ -1,86 +0,0 @@ -module ArkEmail - module Models - type domain_list_response = - { - data: ArkEmail::Models::DomainListResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class DomainListResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::DomainListResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::DomainListResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::DomainListResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { domains: ::Array[ArkEmail::Models::DomainListResponse::Data::Domain] } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor domains: ::Array[ArkEmail::Models::DomainListResponse::Data::Domain] - - def initialize: ( - domains: ::Array[ArkEmail::Models::DomainListResponse::Data::Domain] - ) -> void - - def to_hash: -> { - domains: ::Array[ArkEmail::Models::DomainListResponse::Data::Domain] - } - - type domain = - { - id: Integer, - name: String, - verified: bool, - tenant_id: String, - tenant_name: String - } - - class Domain < ArkEmail::Internal::Type::BaseModel - attr_accessor id: Integer - - attr_accessor name: String - - attr_accessor verified: bool - - attr_reader tenant_id: String? - - def tenant_id=: (String) -> String - - attr_reader tenant_name: String? - - def tenant_name=: (String) -> String - - def initialize: ( - id: Integer, - name: String, - verified: bool, - ?tenant_id: String, - ?tenant_name: String - ) -> void - - def to_hash: -> { - id: Integer, - name: String, - verified: bool, - tenant_id: String, - tenant_name: String - } - end - end - end - end -end diff --git a/sig/ark_email/models/domain_retrieve_params.rbs b/sig/ark_email/models/domain_retrieve_params.rbs deleted file mode 100644 index faf360b..0000000 --- a/sig/ark_email/models/domain_retrieve_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type domain_retrieve_params = - { } & ArkEmail::Internal::Type::request_parameters - - class DomainRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/domain_retrieve_response.rbs b/sig/ark_email/models/domain_retrieve_response.rbs deleted file mode 100644 index 1b3c33c..0000000 --- a/sig/ark_email/models/domain_retrieve_response.rbs +++ /dev/null @@ -1,125 +0,0 @@ -module ArkEmail - module Models - type domain_retrieve_response = - { - data: ArkEmail::Models::DomainRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class DomainRetrieveResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::DomainRetrieveResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::DomainRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::DomainRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - tenant_id: String, - tenant_name: String, - verified_at: Time? - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: Integer - - attr_accessor created_at: Time - - attr_accessor dns_records: ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords? - - attr_accessor name: String - - attr_accessor uuid: String - - attr_accessor verified: bool - - attr_reader tenant_id: String? - - def tenant_id=: (String) -> String - - attr_reader tenant_name: String? - - def tenant_name=: (String) -> String - - attr_accessor verified_at: Time? - - def initialize: ( - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - ?tenant_id: String, - ?tenant_name: String, - ?verified_at: Time? - ) -> void - - def to_hash: -> { - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainRetrieveResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - tenant_id: String, - tenant_name: String, - verified_at: Time? - } - - type dns_records = - { - dkim: ArkEmail::DNSRecord?, - return_path: ArkEmail::DNSRecord?, - spf: ArkEmail::DNSRecord?, - zone: String - } - - class DNSRecords < ArkEmail::Internal::Type::BaseModel - attr_accessor dkim: ArkEmail::DNSRecord? - - attr_accessor return_path: ArkEmail::DNSRecord? - - attr_accessor spf: ArkEmail::DNSRecord? - - attr_reader zone: String? - - def zone=: (String) -> String - - def initialize: ( - ?dkim: ArkEmail::DNSRecord?, - ?return_path: ArkEmail::DNSRecord?, - ?spf: ArkEmail::DNSRecord?, - ?zone: String - ) -> void - - def to_hash: -> { - dkim: ArkEmail::DNSRecord?, - return_path: ArkEmail::DNSRecord?, - spf: ArkEmail::DNSRecord?, - zone: String - } - end - end - end - end -end diff --git a/sig/ark_email/models/domain_verify_params.rbs b/sig/ark_email/models/domain_verify_params.rbs deleted file mode 100644 index 0d05c6c..0000000 --- a/sig/ark_email/models/domain_verify_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type domain_verify_params = - { } & ArkEmail::Internal::Type::request_parameters - - class DomainVerifyParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/domain_verify_response.rbs b/sig/ark_email/models/domain_verify_response.rbs deleted file mode 100644 index 9dacd6b..0000000 --- a/sig/ark_email/models/domain_verify_response.rbs +++ /dev/null @@ -1,125 +0,0 @@ -module ArkEmail - module Models - type domain_verify_response = - { - data: ArkEmail::Models::DomainVerifyResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class DomainVerifyResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::DomainVerifyResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::DomainVerifyResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::DomainVerifyResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - tenant_id: String, - tenant_name: String, - verified_at: Time? - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: Integer - - attr_accessor created_at: Time - - attr_accessor dns_records: ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords? - - attr_accessor name: String - - attr_accessor uuid: String - - attr_accessor verified: bool - - attr_reader tenant_id: String? - - def tenant_id=: (String) -> String - - attr_reader tenant_name: String? - - def tenant_name=: (String) -> String - - attr_accessor verified_at: Time? - - def initialize: ( - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - ?tenant_id: String, - ?tenant_name: String, - ?verified_at: Time? - ) -> void - - def to_hash: -> { - id: Integer, - created_at: Time, - dns_records: ArkEmail::Models::DomainVerifyResponse::Data::DNSRecords?, - name: String, - uuid: String, - verified: bool, - tenant_id: String, - tenant_name: String, - verified_at: Time? - } - - type dns_records = - { - dkim: ArkEmail::DNSRecord?, - return_path: ArkEmail::DNSRecord?, - spf: ArkEmail::DNSRecord?, - zone: String - } - - class DNSRecords < ArkEmail::Internal::Type::BaseModel - attr_accessor dkim: ArkEmail::DNSRecord? - - attr_accessor return_path: ArkEmail::DNSRecord? - - attr_accessor spf: ArkEmail::DNSRecord? - - attr_reader zone: String? - - def zone=: (String) -> String - - def initialize: ( - ?dkim: ArkEmail::DNSRecord?, - ?return_path: ArkEmail::DNSRecord?, - ?spf: ArkEmail::DNSRecord?, - ?zone: String - ) -> void - - def to_hash: -> { - dkim: ArkEmail::DNSRecord?, - return_path: ArkEmail::DNSRecord?, - spf: ArkEmail::DNSRecord?, - zone: String - } - end - end - end - end -end diff --git a/sig/ark_email/models/org_usage_summary.rbs b/sig/ark_email/models/org_usage_summary.rbs new file mode 100644 index 0000000..b8509c6 --- /dev/null +++ b/sig/ark_email/models/org_usage_summary.rbs @@ -0,0 +1,85 @@ +module ArkEmail + module Models + type org_usage_summary = + { + data: ArkEmail::OrgUsageSummary::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class OrgUsageSummary < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::OrgUsageSummary::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::OrgUsageSummary::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::OrgUsageSummary::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenants: ArkEmail::OrgUsageSummary::Data::Tenants + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor emails: ArkEmail::EmailCounts + + attr_accessor period: ArkEmail::UsagePeriod + + attr_accessor rates: ArkEmail::EmailRates + + attr_accessor tenants: ArkEmail::OrgUsageSummary::Data::Tenants + + def initialize: ( + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenants: ArkEmail::OrgUsageSummary::Data::Tenants + ) -> void + + def to_hash: -> { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenants: ArkEmail::OrgUsageSummary::Data::Tenants + } + + type tenants = + { active: Integer, total: Integer, with_activity: Integer } + + class Tenants < ArkEmail::Internal::Type::BaseModel + attr_accessor active: Integer + + attr_accessor total: Integer + + attr_accessor with_activity: Integer + + def initialize: ( + active: Integer, + total: Integer, + with_activity: Integer + ) -> void + + def to_hash: -> { + active: Integer, + total: Integer, + with_activity: Integer + } + end + end + end + end +end diff --git a/sig/ark_email/models/suppression_bulk_create_params.rbs b/sig/ark_email/models/suppression_bulk_create_params.rbs deleted file mode 100644 index 88da51f..0000000 --- a/sig/ark_email/models/suppression_bulk_create_params.rbs +++ /dev/null @@ -1,38 +0,0 @@ -module ArkEmail - module Models - type suppression_bulk_create_params = - { - suppressions: ::Array[ArkEmail::SuppressionBulkCreateParams::Suppression] - } - & ArkEmail::Internal::Type::request_parameters - - class SuppressionBulkCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor suppressions: ::Array[ArkEmail::SuppressionBulkCreateParams::Suppression] - - def initialize: ( - suppressions: ::Array[ArkEmail::SuppressionBulkCreateParams::Suppression], - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - suppressions: ::Array[ArkEmail::SuppressionBulkCreateParams::Suppression], - request_options: ArkEmail::RequestOptions - } - - type suppression = { address: String, reason: String? } - - class Suppression < ArkEmail::Internal::Type::BaseModel - attr_accessor address: String - - attr_accessor reason: String? - - def initialize: (address: String, ?reason: String?) -> void - - def to_hash: -> { address: String, reason: String? } - end - end - end -end diff --git a/sig/ark_email/models/suppression_bulk_create_response.rbs b/sig/ark_email/models/suppression_bulk_create_response.rbs deleted file mode 100644 index 963d7a0..0000000 --- a/sig/ark_email/models/suppression_bulk_create_response.rbs +++ /dev/null @@ -1,62 +0,0 @@ -module ArkEmail - module Models - type suppression_bulk_create_response = - { - data: ArkEmail::Models::SuppressionBulkCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class SuppressionBulkCreateResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::SuppressionBulkCreateResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::SuppressionBulkCreateResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::SuppressionBulkCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - added: Integer, - failed: Integer, - total_requested: Integer, - updated: Integer - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor added: Integer - - attr_accessor failed: Integer - - attr_accessor total_requested: Integer - - attr_accessor updated: Integer - - def initialize: ( - added: Integer, - failed: Integer, - total_requested: Integer, - updated: Integer - ) -> void - - def to_hash: -> { - added: Integer, - failed: Integer, - total_requested: Integer, - updated: Integer - } - end - end - end -end diff --git a/sig/ark_email/models/suppression_create_params.rbs b/sig/ark_email/models/suppression_create_params.rbs deleted file mode 100644 index 3558f7f..0000000 --- a/sig/ark_email/models/suppression_create_params.rbs +++ /dev/null @@ -1,28 +0,0 @@ -module ArkEmail - module Models - type suppression_create_params = - { address: String, reason: String? } - & ArkEmail::Internal::Type::request_parameters - - class SuppressionCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor address: String - - attr_accessor reason: String? - - def initialize: ( - address: String, - ?reason: String?, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - address: String, - reason: String?, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/suppression_create_response.rbs b/sig/ark_email/models/suppression_create_response.rbs deleted file mode 100644 index 922baaa..0000000 --- a/sig/ark_email/models/suppression_create_response.rbs +++ /dev/null @@ -1,59 +0,0 @@ -module ArkEmail - module Models - type suppression_create_response = - { - data: ArkEmail::Models::SuppressionCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class SuppressionCreateResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::SuppressionCreateResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::SuppressionCreateResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::SuppressionCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { id: String, address: String, created_at: Time, reason: String } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor address: String - - attr_accessor created_at: Time - - attr_reader reason: String? - - def reason=: (String) -> String - - def initialize: ( - id: String, - address: String, - created_at: Time, - ?reason: String - ) -> void - - def to_hash: -> { - id: String, - address: String, - created_at: Time, - reason: String - } - end - end - end -end diff --git a/sig/ark_email/models/suppression_delete_params.rbs b/sig/ark_email/models/suppression_delete_params.rbs deleted file mode 100644 index 3b0bdf3..0000000 --- a/sig/ark_email/models/suppression_delete_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type suppression_delete_params = - { } & ArkEmail::Internal::Type::request_parameters - - class SuppressionDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/suppression_delete_response.rbs b/sig/ark_email/models/suppression_delete_response.rbs deleted file mode 100644 index f43ca62..0000000 --- a/sig/ark_email/models/suppression_delete_response.rbs +++ /dev/null @@ -1,40 +0,0 @@ -module ArkEmail - module Models - type suppression_delete_response = - { - data: ArkEmail::Models::SuppressionDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class SuppressionDeleteResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::SuppressionDeleteResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::SuppressionDeleteResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::SuppressionDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = { message: String } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor message: String - - def initialize: (message: String) -> void - - def to_hash: -> { message: String } - end - end - end -end diff --git a/sig/ark_email/models/suppression_list_params.rbs b/sig/ark_email/models/suppression_list_params.rbs deleted file mode 100644 index 10aecd9..0000000 --- a/sig/ark_email/models/suppression_list_params.rbs +++ /dev/null @@ -1,32 +0,0 @@ -module ArkEmail - module Models - type suppression_list_params = - { page: Integer, per_page: Integer } - & ArkEmail::Internal::Type::request_parameters - - class SuppressionListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_reader page: Integer? - - def page=: (Integer) -> Integer - - attr_reader per_page: Integer? - - def per_page=: (Integer) -> Integer - - def initialize: ( - ?page: Integer, - ?per_page: Integer, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - page: Integer, - per_page: Integer, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/suppression_list_response.rbs b/sig/ark_email/models/suppression_list_response.rbs deleted file mode 100644 index e84907b..0000000 --- a/sig/ark_email/models/suppression_list_response.rbs +++ /dev/null @@ -1,32 +0,0 @@ -module ArkEmail - module Models - type suppression_list_response = - { id: String, address: String, created_at: Time, reason: String } - - class SuppressionListResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor address: String - - attr_accessor created_at: Time - - attr_reader reason: String? - - def reason=: (String) -> String - - def initialize: ( - id: String, - address: String, - created_at: Time, - ?reason: String - ) -> void - - def to_hash: -> { - id: String, - address: String, - created_at: Time, - reason: String - } - end - end -end diff --git a/sig/ark_email/models/suppression_retrieve_params.rbs b/sig/ark_email/models/suppression_retrieve_params.rbs deleted file mode 100644 index e77ab33..0000000 --- a/sig/ark_email/models/suppression_retrieve_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type suppression_retrieve_params = - { } & ArkEmail::Internal::Type::request_parameters - - class SuppressionRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/suppression_retrieve_response.rbs b/sig/ark_email/models/suppression_retrieve_response.rbs deleted file mode 100644 index 9d2fb1a..0000000 --- a/sig/ark_email/models/suppression_retrieve_response.rbs +++ /dev/null @@ -1,62 +0,0 @@ -module ArkEmail - module Models - type suppression_retrieve_response = - { - data: ArkEmail::Models::SuppressionRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class SuppressionRetrieveResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::SuppressionRetrieveResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::SuppressionRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::SuppressionRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - address: String, - suppressed: bool, - created_at: Time?, - reason: String? - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor address: String - - attr_accessor suppressed: bool - - attr_accessor created_at: Time? - - attr_accessor reason: String? - - def initialize: ( - address: String, - suppressed: bool, - ?created_at: Time?, - ?reason: String? - ) -> void - - def to_hash: -> { - address: String, - suppressed: bool, - created_at: Time?, - reason: String? - } - end - end - end -end diff --git a/sig/ark_email/models/tenant_usage.rbs b/sig/ark_email/models/tenant_usage_item.rbs similarity index 57% rename from sig/ark_email/models/tenant_usage.rbs rename to sig/ark_email/models/tenant_usage_item.rbs index 6c2fb5e..b1e2f6f 100644 --- a/sig/ark_email/models/tenant_usage.rbs +++ b/sig/ark_email/models/tenant_usage_item.rbs @@ -1,22 +1,22 @@ module ArkEmail module Models - type tenant_usage = + type tenant_usage_item = { emails: ArkEmail::EmailCounts, - period: ArkEmail::UsagePeriod, rates: ArkEmail::EmailRates, + status: ArkEmail::Models::TenantUsageItem::status, tenant_id: String, tenant_name: String, external_id: String? } - class TenantUsage < ArkEmail::Internal::Type::BaseModel + class TenantUsageItem < ArkEmail::Internal::Type::BaseModel attr_accessor emails: ArkEmail::EmailCounts - attr_accessor period: ArkEmail::UsagePeriod - attr_accessor rates: ArkEmail::EmailRates + attr_accessor status: ArkEmail::Models::TenantUsageItem::status + attr_accessor tenant_id: String attr_accessor tenant_name: String @@ -25,8 +25,8 @@ module ArkEmail def initialize: ( emails: ArkEmail::EmailCounts, - period: ArkEmail::UsagePeriod, rates: ArkEmail::EmailRates, + status: ArkEmail::Models::TenantUsageItem::status, tenant_id: String, tenant_name: String, ?external_id: String? @@ -34,12 +34,24 @@ module ArkEmail def to_hash: -> { emails: ArkEmail::EmailCounts, - period: ArkEmail::UsagePeriod, rates: ArkEmail::EmailRates, + status: ArkEmail::Models::TenantUsageItem::status, tenant_id: String, tenant_name: String, external_id: String? } + + type status = :active | :suspended | :archived + + module Status + extend ArkEmail::Internal::Type::Enum + + ACTIVE: :active + SUSPENDED: :suspended + ARCHIVED: :archived + + def self?.values: -> ::Array[ArkEmail::Models::TenantUsageItem::status] + end end end end diff --git a/sig/ark_email/models/tenant_usage_timeseries.rbs b/sig/ark_email/models/tenant_usage_timeseries.rbs deleted file mode 100644 index 7c2c01d..0000000 --- a/sig/ark_email/models/tenant_usage_timeseries.rbs +++ /dev/null @@ -1,100 +0,0 @@ -module ArkEmail - module Models - type tenant_usage_timeseries = - { - data: ::Array[ArkEmail::TenantUsageTimeseries::Data], - granularity: ArkEmail::Models::TenantUsageTimeseries::granularity, - period: ArkEmail::UsagePeriod, - tenant_id: String, - tenant_name: String - } - - class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ::Array[ArkEmail::TenantUsageTimeseries::Data] - - attr_accessor granularity: ArkEmail::Models::TenantUsageTimeseries::granularity - - attr_accessor period: ArkEmail::UsagePeriod - - attr_accessor tenant_id: String - - attr_accessor tenant_name: String - - def initialize: ( - data: ::Array[ArkEmail::TenantUsageTimeseries::Data], - granularity: ArkEmail::Models::TenantUsageTimeseries::granularity, - period: ArkEmail::UsagePeriod, - tenant_id: String, - tenant_name: String - ) -> void - - def to_hash: -> { - data: ::Array[ArkEmail::TenantUsageTimeseries::Data], - granularity: ArkEmail::Models::TenantUsageTimeseries::granularity, - period: ArkEmail::UsagePeriod, - tenant_id: String, - tenant_name: String - } - - type data = - { - bounced: Integer, - delivered: Integer, - hard_failed: Integer, - held: Integer, - sent: Integer, - soft_failed: Integer, - timestamp: Time - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor bounced: Integer - - attr_accessor delivered: Integer - - attr_accessor hard_failed: Integer - - attr_accessor held: Integer - - attr_accessor sent: Integer - - attr_accessor soft_failed: Integer - - attr_accessor timestamp: Time - - def initialize: ( - bounced: Integer, - delivered: Integer, - hard_failed: Integer, - held: Integer, - sent: Integer, - soft_failed: Integer, - timestamp: Time - ) -> void - - def to_hash: -> { - bounced: Integer, - delivered: Integer, - hard_failed: Integer, - held: Integer, - sent: Integer, - soft_failed: Integer, - timestamp: Time - } - end - - type granularity = :hour | :day | :week | :month - - module Granularity - extend ArkEmail::Internal::Type::Enum - - HOUR: :hour - DAY: :day - WEEK: :week - MONTH: :month - - def self?.values: -> ::Array[ArkEmail::Models::TenantUsageTimeseries::granularity] - end - end - end -end diff --git a/sig/ark_email/models/tenants/dns_record.rbs b/sig/ark_email/models/tenants/dns_record.rbs new file mode 100644 index 0000000..a34036c --- /dev/null +++ b/sig/ark_email/models/tenants/dns_record.rbs @@ -0,0 +1,66 @@ +module ArkEmail + module Models + module Tenants + type dns_record = + { + full_name: String, + name: String, + type: ArkEmail::Models::Tenants::DNSRecord::type_, + value: String, + status: ArkEmail::Models::Tenants::DNSRecord::status? + } + + class DNSRecord < ArkEmail::Internal::Type::BaseModel + attr_accessor full_name: String + + attr_accessor name: String + + attr_accessor type: ArkEmail::Models::Tenants::DNSRecord::type_ + + attr_accessor value: String + + attr_accessor status: ArkEmail::Models::Tenants::DNSRecord::status? + + def initialize: ( + full_name: String, + name: String, + type: ArkEmail::Models::Tenants::DNSRecord::type_, + value: String, + ?status: ArkEmail::Models::Tenants::DNSRecord::status? + ) -> void + + def to_hash: -> { + full_name: String, + name: String, + type: ArkEmail::Models::Tenants::DNSRecord::type_, + value: String, + status: ArkEmail::Models::Tenants::DNSRecord::status? + } + + type type_ = :TXT | :CNAME | :MX + + module Type + extend ArkEmail::Internal::Type::Enum + + TXT: :TXT + CNAME: :CNAME + MX: :MX + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::DNSRecord::type_] + end + + type status = :OK | :Missing | :Invalid + + module Status + extend ArkEmail::Internal::Type::Enum + + OK: :OK + MISSING: :Missing + INVALID: :Invalid + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::DNSRecord::status] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_create_params.rbs b/sig/ark_email/models/tenants/domain_create_params.rbs new file mode 100644 index 0000000..8504b30 --- /dev/null +++ b/sig/ark_email/models/tenants/domain_create_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type domain_create_params = + { name: String } & ArkEmail::Internal::Type::request_parameters + + class DomainCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor name: String + + def initialize: ( + name: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + name: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_create_response.rbs b/sig/ark_email/models/tenants/domain_create_response.rbs new file mode 100644 index 0000000..d25e1b9 --- /dev/null +++ b/sig/ark_email/models/tenants/domain_create_response.rbs @@ -0,0 +1,127 @@ +module ArkEmail + module Models + module Tenants + type domain_create_response = + { + data: ArkEmail::Models::Tenants::DomainCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class DomainCreateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::DomainCreateResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::DomainCreateResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::DomainCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + tenant_id: String, + tenant_name: String, + verified_at: Time? + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: Integer + + attr_accessor created_at: Time + + attr_accessor dns_records: ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords? + + attr_accessor name: String + + attr_accessor uuid: String + + attr_accessor verified: bool + + attr_reader tenant_id: String? + + def tenant_id=: (String) -> String + + attr_reader tenant_name: String? + + def tenant_name=: (String) -> String + + attr_accessor verified_at: Time? + + def initialize: ( + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + ?tenant_id: String, + ?tenant_name: String, + ?verified_at: Time? + ) -> void + + def to_hash: -> { + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainCreateResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + tenant_id: String, + tenant_name: String, + verified_at: Time? + } + + type dns_records = + { + dkim: ArkEmail::Tenants::DNSRecord?, + return_path: ArkEmail::Tenants::DNSRecord?, + spf: ArkEmail::Tenants::DNSRecord?, + zone: String + } + + class DNSRecords < ArkEmail::Internal::Type::BaseModel + attr_accessor dkim: ArkEmail::Tenants::DNSRecord? + + attr_accessor return_path: ArkEmail::Tenants::DNSRecord? + + attr_accessor spf: ArkEmail::Tenants::DNSRecord? + + attr_reader zone: String? + + def zone=: (String) -> String + + def initialize: ( + ?dkim: ArkEmail::Tenants::DNSRecord?, + ?return_path: ArkEmail::Tenants::DNSRecord?, + ?spf: ArkEmail::Tenants::DNSRecord?, + ?zone: String + ) -> void + + def to_hash: -> { + dkim: ArkEmail::Tenants::DNSRecord?, + return_path: ArkEmail::Tenants::DNSRecord?, + spf: ArkEmail::Tenants::DNSRecord?, + zone: String + } + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_delete_params.rbs b/sig/ark_email/models/tenants/domain_delete_params.rbs new file mode 100644 index 0000000..47202ff --- /dev/null +++ b/sig/ark_email/models/tenants/domain_delete_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type domain_delete_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class DomainDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_delete_response.rbs b/sig/ark_email/models/tenants/domain_delete_response.rbs new file mode 100644 index 0000000..f2f6244 --- /dev/null +++ b/sig/ark_email/models/tenants/domain_delete_response.rbs @@ -0,0 +1,42 @@ +module ArkEmail + module Models + module Tenants + type domain_delete_response = + { + data: ArkEmail::Models::Tenants::DomainDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class DomainDeleteResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::DomainDeleteResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::DomainDeleteResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::DomainDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = { message: String } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor message: String + + def initialize: (message: String) -> void + + def to_hash: -> { message: String } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_list_params.rbs b/sig/ark_email/models/tenants/domain_list_params.rbs new file mode 100644 index 0000000..1fed5f3 --- /dev/null +++ b/sig/ark_email/models/tenants/domain_list_params.rbs @@ -0,0 +1,17 @@ +module ArkEmail + module Models + module Tenants + type domain_list_params = + { } & ArkEmail::Internal::Type::request_parameters + + class DomainListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_list_response.rbs b/sig/ark_email/models/tenants/domain_list_response.rbs new file mode 100644 index 0000000..cc43cae --- /dev/null +++ b/sig/ark_email/models/tenants/domain_list_response.rbs @@ -0,0 +1,90 @@ +module ArkEmail + module Models + module Tenants + type domain_list_response = + { + data: ArkEmail::Models::Tenants::DomainListResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class DomainListResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::DomainListResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::DomainListResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::DomainListResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + domains: ::Array[ArkEmail::Models::Tenants::DomainListResponse::Data::Domain] + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor domains: ::Array[ArkEmail::Models::Tenants::DomainListResponse::Data::Domain] + + def initialize: ( + domains: ::Array[ArkEmail::Models::Tenants::DomainListResponse::Data::Domain] + ) -> void + + def to_hash: -> { + domains: ::Array[ArkEmail::Models::Tenants::DomainListResponse::Data::Domain] + } + + type domain = + { + id: Integer, + name: String, + verified: bool, + tenant_id: String, + tenant_name: String + } + + class Domain < ArkEmail::Internal::Type::BaseModel + attr_accessor id: Integer + + attr_accessor name: String + + attr_accessor verified: bool + + attr_reader tenant_id: String? + + def tenant_id=: (String) -> String + + attr_reader tenant_name: String? + + def tenant_name=: (String) -> String + + def initialize: ( + id: Integer, + name: String, + verified: bool, + ?tenant_id: String, + ?tenant_name: String + ) -> void + + def to_hash: -> { + id: Integer, + name: String, + verified: bool, + tenant_id: String, + tenant_name: String + } + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_retrieve_params.rbs b/sig/ark_email/models/tenants/domain_retrieve_params.rbs new file mode 100644 index 0000000..202ded9 --- /dev/null +++ b/sig/ark_email/models/tenants/domain_retrieve_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type domain_retrieve_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class DomainRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_retrieve_response.rbs b/sig/ark_email/models/tenants/domain_retrieve_response.rbs new file mode 100644 index 0000000..1bde3b1 --- /dev/null +++ b/sig/ark_email/models/tenants/domain_retrieve_response.rbs @@ -0,0 +1,127 @@ +module ArkEmail + module Models + module Tenants + type domain_retrieve_response = + { + data: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class DomainRetrieveResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + tenant_id: String, + tenant_name: String, + verified_at: Time? + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: Integer + + attr_accessor created_at: Time + + attr_accessor dns_records: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords? + + attr_accessor name: String + + attr_accessor uuid: String + + attr_accessor verified: bool + + attr_reader tenant_id: String? + + def tenant_id=: (String) -> String + + attr_reader tenant_name: String? + + def tenant_name=: (String) -> String + + attr_accessor verified_at: Time? + + def initialize: ( + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + ?tenant_id: String, + ?tenant_name: String, + ?verified_at: Time? + ) -> void + + def to_hash: -> { + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + tenant_id: String, + tenant_name: String, + verified_at: Time? + } + + type dns_records = + { + dkim: ArkEmail::Tenants::DNSRecord?, + return_path: ArkEmail::Tenants::DNSRecord?, + spf: ArkEmail::Tenants::DNSRecord?, + zone: String + } + + class DNSRecords < ArkEmail::Internal::Type::BaseModel + attr_accessor dkim: ArkEmail::Tenants::DNSRecord? + + attr_accessor return_path: ArkEmail::Tenants::DNSRecord? + + attr_accessor spf: ArkEmail::Tenants::DNSRecord? + + attr_reader zone: String? + + def zone=: (String) -> String + + def initialize: ( + ?dkim: ArkEmail::Tenants::DNSRecord?, + ?return_path: ArkEmail::Tenants::DNSRecord?, + ?spf: ArkEmail::Tenants::DNSRecord?, + ?zone: String + ) -> void + + def to_hash: -> { + dkim: ArkEmail::Tenants::DNSRecord?, + return_path: ArkEmail::Tenants::DNSRecord?, + spf: ArkEmail::Tenants::DNSRecord?, + zone: String + } + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_verify_params.rbs b/sig/ark_email/models/tenants/domain_verify_params.rbs new file mode 100644 index 0000000..1a5cb3a --- /dev/null +++ b/sig/ark_email/models/tenants/domain_verify_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type domain_verify_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class DomainVerifyParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/domain_verify_response.rbs b/sig/ark_email/models/tenants/domain_verify_response.rbs new file mode 100644 index 0000000..33691f4 --- /dev/null +++ b/sig/ark_email/models/tenants/domain_verify_response.rbs @@ -0,0 +1,127 @@ +module ArkEmail + module Models + module Tenants + type domain_verify_response = + { + data: ArkEmail::Models::Tenants::DomainVerifyResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class DomainVerifyResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::DomainVerifyResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::DomainVerifyResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::DomainVerifyResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + tenant_id: String, + tenant_name: String, + verified_at: Time? + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: Integer + + attr_accessor created_at: Time + + attr_accessor dns_records: ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords? + + attr_accessor name: String + + attr_accessor uuid: String + + attr_accessor verified: bool + + attr_reader tenant_id: String? + + def tenant_id=: (String) -> String + + attr_reader tenant_name: String? + + def tenant_name=: (String) -> String + + attr_accessor verified_at: Time? + + def initialize: ( + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + ?tenant_id: String, + ?tenant_name: String, + ?verified_at: Time? + ) -> void + + def to_hash: -> { + id: Integer, + created_at: Time, + dns_records: ArkEmail::Models::Tenants::DomainVerifyResponse::Data::DNSRecords?, + name: String, + uuid: String, + verified: bool, + tenant_id: String, + tenant_name: String, + verified_at: Time? + } + + type dns_records = + { + dkim: ArkEmail::Tenants::DNSRecord?, + return_path: ArkEmail::Tenants::DNSRecord?, + spf: ArkEmail::Tenants::DNSRecord?, + zone: String + } + + class DNSRecords < ArkEmail::Internal::Type::BaseModel + attr_accessor dkim: ArkEmail::Tenants::DNSRecord? + + attr_accessor return_path: ArkEmail::Tenants::DNSRecord? + + attr_accessor spf: ArkEmail::Tenants::DNSRecord? + + attr_reader zone: String? + + def zone=: (String) -> String + + def initialize: ( + ?dkim: ArkEmail::Tenants::DNSRecord?, + ?return_path: ArkEmail::Tenants::DNSRecord?, + ?spf: ArkEmail::Tenants::DNSRecord?, + ?zone: String + ) -> void + + def to_hash: -> { + dkim: ArkEmail::Tenants::DNSRecord?, + return_path: ArkEmail::Tenants::DNSRecord?, + spf: ArkEmail::Tenants::DNSRecord?, + zone: String + } + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/suppression_create_params.rbs b/sig/ark_email/models/tenants/suppression_create_params.rbs new file mode 100644 index 0000000..04237d4 --- /dev/null +++ b/sig/ark_email/models/tenants/suppression_create_params.rbs @@ -0,0 +1,30 @@ +module ArkEmail + module Models + module Tenants + type suppression_create_params = + { address: String, reason: String? } + & ArkEmail::Internal::Type::request_parameters + + class SuppressionCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor address: String + + attr_accessor reason: String? + + def initialize: ( + address: String, + ?reason: String?, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + address: String, + reason: String?, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/suppression_create_response.rbs b/sig/ark_email/models/tenants/suppression_create_response.rbs new file mode 100644 index 0000000..cf478c4 --- /dev/null +++ b/sig/ark_email/models/tenants/suppression_create_response.rbs @@ -0,0 +1,61 @@ +module ArkEmail + module Models + module Tenants + type suppression_create_response = + { + data: ArkEmail::Models::Tenants::SuppressionCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class SuppressionCreateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::SuppressionCreateResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::SuppressionCreateResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::SuppressionCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { id: String, address: String, created_at: Time, reason: String } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor address: String + + attr_accessor created_at: Time + + attr_reader reason: String? + + def reason=: (String) -> String + + def initialize: ( + id: String, + address: String, + created_at: Time, + ?reason: String + ) -> void + + def to_hash: -> { + id: String, + address: String, + created_at: Time, + reason: String + } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/suppression_delete_params.rbs b/sig/ark_email/models/tenants/suppression_delete_params.rbs new file mode 100644 index 0000000..dd0dccc --- /dev/null +++ b/sig/ark_email/models/tenants/suppression_delete_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type suppression_delete_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class SuppressionDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/suppression_delete_response.rbs b/sig/ark_email/models/tenants/suppression_delete_response.rbs new file mode 100644 index 0000000..bf4d7ac --- /dev/null +++ b/sig/ark_email/models/tenants/suppression_delete_response.rbs @@ -0,0 +1,42 @@ +module ArkEmail + module Models + module Tenants + type suppression_delete_response = + { + data: ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class SuppressionDeleteResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = { message: String } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor message: String + + def initialize: (message: String) -> void + + def to_hash: -> { message: String } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/suppression_list_params.rbs b/sig/ark_email/models/tenants/suppression_list_params.rbs new file mode 100644 index 0000000..c2eed93 --- /dev/null +++ b/sig/ark_email/models/tenants/suppression_list_params.rbs @@ -0,0 +1,34 @@ +module ArkEmail + module Models + module Tenants + type suppression_list_params = + { page: Integer, per_page: Integer } + & ArkEmail::Internal::Type::request_parameters + + class SuppressionListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader page: Integer? + + def page=: (Integer) -> Integer + + attr_reader per_page: Integer? + + def per_page=: (Integer) -> Integer + + def initialize: ( + ?page: Integer, + ?per_page: Integer, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + page: Integer, + per_page: Integer, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/suppression_list_response.rbs b/sig/ark_email/models/tenants/suppression_list_response.rbs new file mode 100644 index 0000000..55b37d7 --- /dev/null +++ b/sig/ark_email/models/tenants/suppression_list_response.rbs @@ -0,0 +1,34 @@ +module ArkEmail + module Models + module Tenants + type suppression_list_response = + { id: String, address: String, created_at: Time, reason: String } + + class SuppressionListResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor address: String + + attr_accessor created_at: Time + + attr_reader reason: String? + + def reason=: (String) -> String + + def initialize: ( + id: String, + address: String, + created_at: Time, + ?reason: String + ) -> void + + def to_hash: -> { + id: String, + address: String, + created_at: Time, + reason: String + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/suppression_retrieve_params.rbs b/sig/ark_email/models/tenants/suppression_retrieve_params.rbs new file mode 100644 index 0000000..fa75259 --- /dev/null +++ b/sig/ark_email/models/tenants/suppression_retrieve_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type suppression_retrieve_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class SuppressionRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/suppression_retrieve_response.rbs b/sig/ark_email/models/tenants/suppression_retrieve_response.rbs new file mode 100644 index 0000000..71ffd74 --- /dev/null +++ b/sig/ark_email/models/tenants/suppression_retrieve_response.rbs @@ -0,0 +1,64 @@ +module ArkEmail + module Models + module Tenants + type suppression_retrieve_response = + { + data: ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class SuppressionRetrieveResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + address: String, + suppressed: bool, + created_at: Time?, + reason: String? + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor address: String + + attr_accessor suppressed: bool + + attr_accessor created_at: Time? + + attr_accessor reason: String? + + def initialize: ( + address: String, + suppressed: bool, + ?created_at: Time?, + ?reason: String? + ) -> void + + def to_hash: -> { + address: String, + suppressed: bool, + created_at: Time?, + reason: String? + } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/tenant_usage.rbs b/sig/ark_email/models/tenants/tenant_usage.rbs new file mode 100644 index 0000000..5e2e7dc --- /dev/null +++ b/sig/ark_email/models/tenants/tenant_usage.rbs @@ -0,0 +1,49 @@ +module ArkEmail + module Models + class TenantUsage = Tenants::TenantUsage + + module Tenants + type tenant_usage = + { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenant_id: String, + tenant_name: String, + external_id: String? + } + + class TenantUsage < ArkEmail::Internal::Type::BaseModel + attr_accessor emails: ArkEmail::EmailCounts + + attr_accessor period: ArkEmail::UsagePeriod + + attr_accessor rates: ArkEmail::EmailRates + + attr_accessor tenant_id: String + + attr_accessor tenant_name: String + + attr_accessor external_id: String? + + def initialize: ( + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenant_id: String, + tenant_name: String, + ?external_id: String? + ) -> void + + def to_hash: -> { + emails: ArkEmail::EmailCounts, + period: ArkEmail::UsagePeriod, + rates: ArkEmail::EmailRates, + tenant_id: String, + tenant_name: String, + external_id: String? + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tenant_usage_timeseries.rbs b/sig/ark_email/models/tenants/tenant_usage_timeseries.rbs new file mode 100644 index 0000000..60ff056 --- /dev/null +++ b/sig/ark_email/models/tenants/tenant_usage_timeseries.rbs @@ -0,0 +1,104 @@ +module ArkEmail + module Models + class TenantUsageTimeseries = Tenants::TenantUsageTimeseries + + module Tenants + type tenant_usage_timeseries = + { + data: ::Array[ArkEmail::Tenants::TenantUsageTimeseries::Data], + granularity: ArkEmail::Models::Tenants::TenantUsageTimeseries::granularity, + period: ArkEmail::UsagePeriod, + tenant_id: String, + tenant_name: String + } + + class TenantUsageTimeseries < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ::Array[ArkEmail::Tenants::TenantUsageTimeseries::Data] + + attr_accessor granularity: ArkEmail::Models::Tenants::TenantUsageTimeseries::granularity + + attr_accessor period: ArkEmail::UsagePeriod + + attr_accessor tenant_id: String + + attr_accessor tenant_name: String + + def initialize: ( + data: ::Array[ArkEmail::Tenants::TenantUsageTimeseries::Data], + granularity: ArkEmail::Models::Tenants::TenantUsageTimeseries::granularity, + period: ArkEmail::UsagePeriod, + tenant_id: String, + tenant_name: String + ) -> void + + def to_hash: -> { + data: ::Array[ArkEmail::Tenants::TenantUsageTimeseries::Data], + granularity: ArkEmail::Models::Tenants::TenantUsageTimeseries::granularity, + period: ArkEmail::UsagePeriod, + tenant_id: String, + tenant_name: String + } + + type data = + { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor bounced: Integer + + attr_accessor delivered: Integer + + attr_accessor hard_failed: Integer + + attr_accessor held: Integer + + attr_accessor sent: Integer + + attr_accessor soft_failed: Integer + + attr_accessor timestamp: Time + + def initialize: ( + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + ) -> void + + def to_hash: -> { + bounced: Integer, + delivered: Integer, + hard_failed: Integer, + held: Integer, + sent: Integer, + soft_failed: Integer, + timestamp: Time + } + end + + type granularity = :hour | :day | :week | :month + + module Granularity + extend ArkEmail::Internal::Type::Enum + + HOUR: :hour + DAY: :day + WEEK: :week + MONTH: :month + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::TenantUsageTimeseries::granularity] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/track_domain.rbs b/sig/ark_email/models/tenants/track_domain.rbs new file mode 100644 index 0000000..ff00d1c --- /dev/null +++ b/sig/ark_email/models/tenants/track_domain.rbs @@ -0,0 +1,124 @@ +module ArkEmail + module Models + module Tenants + type track_domain = + { + id: String, + created_at: Time, + dns_ok: bool, + domain_id: String, + full_name: String, + name: String, + ssl_enabled: bool, + track_clicks: bool, + track_opens: bool, + dns_checked_at: Time?, + dns_error: String?, + dns_record: ArkEmail::Tenants::TrackDomain::DNSRecord?, + dns_status: ArkEmail::Models::Tenants::TrackDomain::dns_status?, + excluded_click_domains: String?, + updated_at: Time? + } + + class TrackDomain < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor created_at: Time + + attr_accessor dns_ok: bool + + attr_accessor domain_id: String + + attr_accessor full_name: String + + attr_accessor name: String + + attr_accessor ssl_enabled: bool + + attr_accessor track_clicks: bool + + attr_accessor track_opens: bool + + attr_accessor dns_checked_at: Time? + + attr_accessor dns_error: String? + + attr_accessor dns_record: ArkEmail::Tenants::TrackDomain::DNSRecord? + + attr_accessor dns_status: ArkEmail::Models::Tenants::TrackDomain::dns_status? + + attr_accessor excluded_click_domains: String? + + attr_accessor updated_at: Time? + + def initialize: ( + id: String, + created_at: Time, + dns_ok: bool, + domain_id: String, + full_name: String, + name: String, + ssl_enabled: bool, + track_clicks: bool, + track_opens: bool, + ?dns_checked_at: Time?, + ?dns_error: String?, + ?dns_record: ArkEmail::Tenants::TrackDomain::DNSRecord?, + ?dns_status: ArkEmail::Models::Tenants::TrackDomain::dns_status?, + ?excluded_click_domains: String?, + ?updated_at: Time? + ) -> void + + def to_hash: -> { + id: String, + created_at: Time, + dns_ok: bool, + domain_id: String, + full_name: String, + name: String, + ssl_enabled: bool, + track_clicks: bool, + track_opens: bool, + dns_checked_at: Time?, + dns_error: String?, + dns_record: ArkEmail::Tenants::TrackDomain::DNSRecord?, + dns_status: ArkEmail::Models::Tenants::TrackDomain::dns_status?, + excluded_click_domains: String?, + updated_at: Time? + } + + type dns_record = { name: String, type: String, value: String } + + class DNSRecord < ArkEmail::Internal::Type::BaseModel + attr_reader name: String? + + def name=: (String) -> String + + attr_reader type: String? + + def type=: (String) -> String + + attr_reader value: String? + + def value=: (String) -> String + + def initialize: (?name: String, ?type: String, ?value: String) -> void + + def to_hash: -> { name: String, type: String, value: String } + end + + type dns_status = :ok | :missing | :invalid + + module DNSStatus + extend ArkEmail::Internal::Type::Enum + + OK: :ok + MISSING: :missing + INVALID: :invalid + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::TrackDomain::dns_status] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_create_params.rbs b/sig/ark_email/models/tenants/tracking_create_params.rbs new file mode 100644 index 0000000..1ffd87c --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_create_params.rbs @@ -0,0 +1,48 @@ +module ArkEmail + module Models + module Tenants + type tracking_create_params = + { + domain_id: Integer, + name: String, + ssl_enabled: bool?, + track_clicks: bool?, + track_opens: bool? + } + & ArkEmail::Internal::Type::request_parameters + + class TrackingCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor domain_id: Integer + + attr_accessor name: String + + attr_accessor ssl_enabled: bool? + + attr_accessor track_clicks: bool? + + attr_accessor track_opens: bool? + + def initialize: ( + domain_id: Integer, + name: String, + ?ssl_enabled: bool?, + ?track_clicks: bool?, + ?track_opens: bool?, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + domain_id: Integer, + name: String, + ssl_enabled: bool?, + track_clicks: bool?, + track_opens: bool?, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_create_response.rbs b/sig/ark_email/models/tenants/tracking_create_response.rbs new file mode 100644 index 0000000..d31efcf --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_create_response.rbs @@ -0,0 +1,32 @@ +module ArkEmail + module Models + module Tenants + type tracking_create_response = + { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true + } + + class TrackingCreateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Tenants::TrackDomain + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_delete_params.rbs b/sig/ark_email/models/tenants/tracking_delete_params.rbs new file mode 100644 index 0000000..a247458 --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_delete_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type tracking_delete_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class TrackingDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_delete_response.rbs b/sig/ark_email/models/tenants/tracking_delete_response.rbs new file mode 100644 index 0000000..45b9e1d --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_delete_response.rbs @@ -0,0 +1,42 @@ +module ArkEmail + module Models + module Tenants + type tracking_delete_response = + { + data: ArkEmail::Models::Tenants::TrackingDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class TrackingDeleteResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::TrackingDeleteResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::TrackingDeleteResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::TrackingDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = { message: String } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor message: String + + def initialize: (message: String) -> void + + def to_hash: -> { message: String } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_list_params.rbs b/sig/ark_email/models/tenants/tracking_list_params.rbs new file mode 100644 index 0000000..0486676 --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_list_params.rbs @@ -0,0 +1,17 @@ +module ArkEmail + module Models + module Tenants + type tracking_list_params = + { } & ArkEmail::Internal::Type::request_parameters + + class TrackingListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_list_response.rbs b/sig/ark_email/models/tenants/tracking_list_response.rbs new file mode 100644 index 0000000..5b76161 --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_list_response.rbs @@ -0,0 +1,46 @@ +module ArkEmail + module Models + module Tenants + type tracking_list_response = + { + data: ArkEmail::Models::Tenants::TrackingListResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class TrackingListResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::TrackingListResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::TrackingListResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::TrackingListResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = { track_domains: ::Array[ArkEmail::Tenants::TrackDomain] } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor track_domains: ::Array[ArkEmail::Tenants::TrackDomain] + + def initialize: ( + track_domains: ::Array[ArkEmail::Tenants::TrackDomain] + ) -> void + + def to_hash: -> { + track_domains: ::Array[ArkEmail::Tenants::TrackDomain] + } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_retrieve_params.rbs b/sig/ark_email/models/tenants/tracking_retrieve_params.rbs new file mode 100644 index 0000000..3125283 --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_retrieve_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type tracking_retrieve_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class TrackingRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_retrieve_response.rbs b/sig/ark_email/models/tenants/tracking_retrieve_response.rbs new file mode 100644 index 0000000..0fec1c8 --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_retrieve_response.rbs @@ -0,0 +1,32 @@ +module ArkEmail + module Models + module Tenants + type tracking_retrieve_response = + { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true + } + + class TrackingRetrieveResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Tenants::TrackDomain + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_update_params.rbs b/sig/ark_email/models/tenants/tracking_update_params.rbs new file mode 100644 index 0000000..976d068 --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_update_params.rbs @@ -0,0 +1,48 @@ +module ArkEmail + module Models + module Tenants + type tracking_update_params = + { + tenant_id: String, + excluded_click_domains: String?, + ssl_enabled: bool?, + track_clicks: bool?, + track_opens: bool? + } + & ArkEmail::Internal::Type::request_parameters + + class TrackingUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + attr_accessor excluded_click_domains: String? + + attr_accessor ssl_enabled: bool? + + attr_accessor track_clicks: bool? + + attr_accessor track_opens: bool? + + def initialize: ( + tenant_id: String, + ?excluded_click_domains: String?, + ?ssl_enabled: bool?, + ?track_clicks: bool?, + ?track_opens: bool?, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + excluded_click_domains: String?, + ssl_enabled: bool?, + track_clicks: bool?, + track_opens: bool?, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_update_response.rbs b/sig/ark_email/models/tenants/tracking_update_response.rbs new file mode 100644 index 0000000..4fc6e55 --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_update_response.rbs @@ -0,0 +1,32 @@ +module ArkEmail + module Models + module Tenants + type tracking_update_response = + { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true + } + + class TrackingUpdateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Tenants::TrackDomain + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_verify_params.rbs b/sig/ark_email/models/tenants/tracking_verify_params.rbs new file mode 100644 index 0000000..ea2f45f --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_verify_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type tracking_verify_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class TrackingVerifyParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/tracking_verify_response.rbs b/sig/ark_email/models/tenants/tracking_verify_response.rbs new file mode 100644 index 0000000..4f4a629 --- /dev/null +++ b/sig/ark_email/models/tenants/tracking_verify_response.rbs @@ -0,0 +1,115 @@ +module ArkEmail + module Models + module Tenants + type tracking_verify_response = + { + data: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class TrackingVerifyResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + dns_ok: bool, + dns_status: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::dns_status?, + full_name: String, + dns_checked_at: Time?, + dns_error: String?, + dns_record: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord? + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor dns_ok: bool + + attr_accessor dns_status: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::dns_status? + + attr_accessor full_name: String + + attr_accessor dns_checked_at: Time? + + attr_accessor dns_error: String? + + attr_accessor dns_record: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord? + + def initialize: ( + id: String, + dns_ok: bool, + dns_status: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::dns_status?, + full_name: String, + ?dns_checked_at: Time?, + ?dns_error: String?, + ?dns_record: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord? + ) -> void + + def to_hash: -> { + id: String, + dns_ok: bool, + dns_status: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::dns_status?, + full_name: String, + dns_checked_at: Time?, + dns_error: String?, + dns_record: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::DNSRecord? + } + + type dns_status = :ok | :missing | :invalid + + module DNSStatus + extend ArkEmail::Internal::Type::Enum + + OK: :ok + MISSING: :missing + INVALID: :invalid + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::TrackingVerifyResponse::Data::dns_status] + end + + type dns_record = { name: String, type: String, value: String } + + class DNSRecord < ArkEmail::Internal::Type::BaseModel + attr_reader name: String? + + def name=: (String) -> String + + attr_reader type: String? + + def type=: (String) -> String + + attr_reader value: String? + + def value=: (String) -> String + + def initialize: ( + ?name: String, + ?type: String, + ?value: String + ) -> void + + def to_hash: -> { name: String, type: String, value: String } + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/usage_retrieve_params.rbs b/sig/ark_email/models/tenants/usage_retrieve_params.rbs new file mode 100644 index 0000000..5fc6fb2 --- /dev/null +++ b/sig/ark_email/models/tenants/usage_retrieve_params.rbs @@ -0,0 +1,34 @@ +module ArkEmail + module Models + module Tenants + type usage_retrieve_params = + { period: String, timezone: String } + & ArkEmail::Internal::Type::request_parameters + + class UsageRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader period: String? + + def period=: (String) -> String + + attr_reader timezone: String? + + def timezone=: (String) -> String + + def initialize: ( + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/usage_retrieve_response.rbs b/sig/ark_email/models/tenants/usage_retrieve_response.rbs new file mode 100644 index 0000000..e4ae674 --- /dev/null +++ b/sig/ark_email/models/tenants/usage_retrieve_response.rbs @@ -0,0 +1,32 @@ +module ArkEmail + module Models + module Tenants + type usage_retrieve_response = + { + data: ArkEmail::Tenants::TenantUsage, + meta: ArkEmail::APIMeta, + success: true + } + + class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Tenants::TenantUsage + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Tenants::TenantUsage, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Tenants::TenantUsage, + meta: ArkEmail::APIMeta, + success: true + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/usage_retrieve_timeseries_params.rbs b/sig/ark_email/models/tenants/usage_retrieve_timeseries_params.rbs new file mode 100644 index 0000000..7f707bb --- /dev/null +++ b/sig/ark_email/models/tenants/usage_retrieve_timeseries_params.rbs @@ -0,0 +1,59 @@ +module ArkEmail + module Models + module Tenants + type usage_retrieve_timeseries_params = + { + granularity: ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::granularity, + period: String, + timezone: String + } + & ArkEmail::Internal::Type::request_parameters + + class UsageRetrieveTimeseriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader granularity: ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::granularity? + + def granularity=: ( + ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::granularity + ) -> ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::granularity + + attr_reader period: String? + + def period=: (String) -> String + + attr_reader timezone: String? + + def timezone=: (String) -> String + + def initialize: ( + ?granularity: ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::granularity, + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + granularity: ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::granularity, + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } + + type granularity = :hour | :day | :week | :month + + module Granularity + extend ArkEmail::Internal::Type::Enum + + HOUR: :hour + DAY: :day + WEEK: :week + MONTH: :month + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::granularity] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/usage_retrieve_timeseries_response.rbs b/sig/ark_email/models/tenants/usage_retrieve_timeseries_response.rbs new file mode 100644 index 0000000..53bae60 --- /dev/null +++ b/sig/ark_email/models/tenants/usage_retrieve_timeseries_response.rbs @@ -0,0 +1,32 @@ +module ArkEmail + module Models + module Tenants + type usage_retrieve_timeseries_response = + { + data: ArkEmail::Tenants::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + success: true + } + + class UsageRetrieveTimeseriesResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Tenants::TenantUsageTimeseries + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Tenants::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Tenants::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + success: true + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_create_params.rbs b/sig/ark_email/models/tenants/webhook_create_params.rbs new file mode 100644 index 0000000..0bb6d20 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_create_params.rbs @@ -0,0 +1,73 @@ +module ArkEmail + module Models + module Tenants + type webhook_create_params = + { + name: String, + url: String, + all_events: bool?, + enabled: bool?, + events: ::Array[ArkEmail::Models::Tenants::WebhookCreateParams::event]? + } + & ArkEmail::Internal::Type::request_parameters + + class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor name: String + + attr_accessor url: String + + attr_accessor all_events: bool? + + attr_accessor enabled: bool? + + attr_accessor events: ::Array[ArkEmail::Models::Tenants::WebhookCreateParams::event]? + + def initialize: ( + name: String, + url: String, + ?all_events: bool?, + ?enabled: bool?, + ?events: ::Array[ArkEmail::Models::Tenants::WebhookCreateParams::event]?, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + name: String, + url: String, + all_events: bool?, + enabled: bool?, + events: ::Array[ArkEmail::Models::Tenants::WebhookCreateParams::event]?, + request_options: ArkEmail::RequestOptions + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::WebhookCreateParams::event] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_create_response.rbs b/sig/ark_email/models/tenants/webhook_create_response.rbs new file mode 100644 index 0000000..b8c5341 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_create_response.rbs @@ -0,0 +1,109 @@ +module ArkEmail + module Models + module Tenants + type webhook_create_response = + { + data: ArkEmail::Models::Tenants::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::WebhookCreateResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookCreateResponse::Data::event], + name: String, + url: String, + uuid: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor all_events: bool + + attr_accessor created_at: Time + + attr_accessor enabled: bool + + attr_accessor events: ::Array[ArkEmail::Models::Tenants::WebhookCreateResponse::Data::event] + + attr_accessor name: String + + attr_accessor url: String + + attr_accessor uuid: String + + def initialize: ( + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookCreateResponse::Data::event], + name: String, + url: String, + uuid: String + ) -> void + + def to_hash: -> { + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookCreateResponse::Data::event], + name: String, + url: String, + uuid: String + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::WebhookCreateResponse::Data::event] + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_delete_params.rbs b/sig/ark_email/models/tenants/webhook_delete_params.rbs new file mode 100644 index 0000000..a8d4df2 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_delete_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type webhook_delete_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_delete_response.rbs b/sig/ark_email/models/tenants/webhook_delete_response.rbs new file mode 100644 index 0000000..78d5bba --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_delete_response.rbs @@ -0,0 +1,42 @@ +module ArkEmail + module Models + module Tenants + type webhook_delete_response = + { + data: ArkEmail::Models::Tenants::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::WebhookDeleteResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = { message: String } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor message: String + + def initialize: (message: String) -> void + + def to_hash: -> { message: String } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_list_deliveries_params.rbs b/sig/ark_email/models/tenants/webhook_list_deliveries_params.rbs new file mode 100644 index 0000000..d0de752 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_list_deliveries_params.rbs @@ -0,0 +1,97 @@ +module ArkEmail + module Models + module Tenants + type webhook_list_deliveries_params = + { + tenant_id: String, + after: Integer, + before: Integer, + event: ArkEmail::Models::Tenants::WebhookListDeliveriesParams::event, + page: Integer, + per_page: Integer, + success: bool + } + & ArkEmail::Internal::Type::request_parameters + + class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + attr_reader after: Integer? + + def after=: (Integer) -> Integer + + attr_reader before: Integer? + + def before=: (Integer) -> Integer + + attr_reader event: ArkEmail::Models::Tenants::WebhookListDeliveriesParams::event? + + def event=: ( + ArkEmail::Models::Tenants::WebhookListDeliveriesParams::event + ) -> ArkEmail::Models::Tenants::WebhookListDeliveriesParams::event + + attr_reader page: Integer? + + def page=: (Integer) -> Integer + + attr_reader per_page: Integer? + + def per_page=: (Integer) -> Integer + + attr_reader success: bool? + + def success=: (bool) -> bool + + def initialize: ( + tenant_id: String, + ?after: Integer, + ?before: Integer, + ?event: ArkEmail::Models::Tenants::WebhookListDeliveriesParams::event, + ?page: Integer, + ?per_page: Integer, + ?success: bool, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + after: Integer, + before: Integer, + event: ArkEmail::Models::Tenants::WebhookListDeliveriesParams::event, + page: Integer, + per_page: Integer, + success: bool, + request_options: ArkEmail::RequestOptions + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::WebhookListDeliveriesParams::event] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_list_deliveries_response.rbs b/sig/ark_email/models/tenants/webhook_list_deliveries_response.rbs new file mode 100644 index 0000000..d3655e3 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_list_deliveries_response.rbs @@ -0,0 +1,129 @@ +module ArkEmail + module Models + module Tenants + type webhook_list_deliveries_response = + { + data: ::Array[ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data], + meta: ArkEmail::APIMeta, + page: Integer, + per_page: Integer, + total: Integer, + total_pages: Integer + } + + class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ::Array[ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data] + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor page: Integer + + attr_accessor per_page: Integer + + attr_accessor total: Integer + + attr_accessor total_pages: Integer + + def initialize: ( + data: ::Array[ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data], + meta: ArkEmail::APIMeta, + page: Integer, + per_page: Integer, + total: Integer, + total_pages: Integer + ) -> void + + def to_hash: -> { + data: ::Array[ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data], + meta: ArkEmail::APIMeta, + page: Integer, + per_page: Integer, + total: Integer, + total_pages: Integer + } + + type data = + { + id: String, + attempt: Integer, + event: ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::event, + status_code: Integer?, + success: bool, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: bool + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor attempt: Integer + + attr_accessor event: ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::event + + attr_accessor status_code: Integer? + + attr_accessor success: bool + + attr_accessor timestamp: Time + + attr_accessor url: String + + attr_accessor webhook_id: String + + attr_accessor will_retry: bool + + def initialize: ( + id: String, + attempt: Integer, + event: ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::event, + status_code: Integer?, + success: bool, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: bool + ) -> void + + def to_hash: -> { + id: String, + attempt: Integer, + event: ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::event, + status_code: Integer?, + success: bool, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: bool + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data::event] + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_list_params.rbs b/sig/ark_email/models/tenants/webhook_list_params.rbs new file mode 100644 index 0000000..836e3a7 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_list_params.rbs @@ -0,0 +1,17 @@ +module ArkEmail + module Models + module Tenants + type webhook_list_params = + { } & ArkEmail::Internal::Type::request_parameters + + class WebhookListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_list_response.rbs b/sig/ark_email/models/tenants/webhook_list_response.rbs new file mode 100644 index 0000000..d41808c --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_list_response.rbs @@ -0,0 +1,86 @@ +module ArkEmail + module Models + module Tenants + type webhook_list_response = + { + data: ArkEmail::Models::Tenants::WebhookListResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookListResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::WebhookListResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::WebhookListResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::WebhookListResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + webhooks: ::Array[ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook] + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor webhooks: ::Array[ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook] + + def initialize: ( + webhooks: ::Array[ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook] + ) -> void + + def to_hash: -> { + webhooks: ::Array[ArkEmail::Models::Tenants::WebhookListResponse::Data::Webhook] + } + + type webhook = + { + id: String, + enabled: bool, + events: ::Array[String], + name: String, + url: String + } + + class Webhook < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor enabled: bool + + attr_accessor events: ::Array[String] + + attr_accessor name: String + + attr_accessor url: String + + def initialize: ( + id: String, + enabled: bool, + events: ::Array[String], + name: String, + url: String + ) -> void + + def to_hash: -> { + id: String, + enabled: bool, + events: ::Array[String], + name: String, + url: String + } + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_replay_delivery_params.rbs b/sig/ark_email/models/tenants/webhook_replay_delivery_params.rbs new file mode 100644 index 0000000..56d0b52 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_replay_delivery_params.rbs @@ -0,0 +1,30 @@ +module ArkEmail + module Models + module Tenants + type webhook_replay_delivery_params = + { tenant_id: String, webhook_id: String } + & ArkEmail::Internal::Type::request_parameters + + class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + attr_accessor webhook_id: String + + def initialize: ( + tenant_id: String, + webhook_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_replay_delivery_response.rbs b/sig/ark_email/models/tenants/webhook_replay_delivery_response.rbs new file mode 100644 index 0000000..099164f --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_replay_delivery_response.rbs @@ -0,0 +1,74 @@ +module ArkEmail + module Models + module Tenants + type webhook_replay_delivery_response = + { + data: ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: Integer?, + success: bool, + timestamp: Time + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor duration: Integer + + attr_accessor new_delivery_id: String + + attr_accessor original_delivery_id: String + + attr_accessor status_code: Integer? + + attr_accessor success: bool + + attr_accessor timestamp: Time + + def initialize: ( + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: Integer?, + success: bool, + timestamp: Time + ) -> void + + def to_hash: -> { + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: Integer?, + success: bool, + timestamp: Time + } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_retrieve_delivery_params.rbs b/sig/ark_email/models/tenants/webhook_retrieve_delivery_params.rbs new file mode 100644 index 0000000..fe51587 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_retrieve_delivery_params.rbs @@ -0,0 +1,30 @@ +module ArkEmail + module Models + module Tenants + type webhook_retrieve_delivery_params = + { tenant_id: String, webhook_id: String } + & ArkEmail::Internal::Type::request_parameters + + class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + attr_accessor webhook_id: String + + def initialize: ( + tenant_id: String, + webhook_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_retrieve_delivery_response.rbs b/sig/ark_email/models/tenants/webhook_retrieve_delivery_response.rbs new file mode 100644 index 0000000..ae3f9b2 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_retrieve_delivery_response.rbs @@ -0,0 +1,160 @@ +module ArkEmail + module Models + module Tenants + type webhook_retrieve_delivery_response = + { + data: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + attempt: Integer, + event: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::event, + request: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request, + response: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response, + status_code: Integer?, + success: bool, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: bool + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor attempt: Integer + + attr_accessor event: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::event + + attr_accessor request: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request + + attr_accessor response: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response + + attr_accessor status_code: Integer? + + attr_accessor success: bool + + attr_accessor timestamp: Time + + attr_accessor url: String + + attr_accessor webhook_id: String + + attr_accessor webhook_name: String + + attr_accessor will_retry: bool + + def initialize: ( + id: String, + attempt: Integer, + event: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::event, + request: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request, + response: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response, + status_code: Integer?, + success: bool, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: bool + ) -> void + + def to_hash: -> { + id: String, + attempt: Integer, + event: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::event, + request: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Request, + response: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::Response, + status_code: Integer?, + success: bool, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: bool + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data::event] + end + + type request = + { headers: ::Hash[Symbol, String], payload: ::Hash[Symbol, top] } + + class Request < ArkEmail::Internal::Type::BaseModel + attr_accessor headers: ::Hash[Symbol, String] + + attr_accessor payload: ::Hash[Symbol, top] + + def initialize: ( + headers: ::Hash[Symbol, String], + payload: ::Hash[Symbol, top] + ) -> void + + def to_hash: -> { + headers: ::Hash[Symbol, String], + payload: ::Hash[Symbol, top] + } + end + + type response = { status_code: Integer?, body: String? } + + class Response < ArkEmail::Internal::Type::BaseModel + attr_accessor status_code: Integer? + + attr_accessor body: String? + + def initialize: (status_code: Integer?, ?body: String?) -> void + + def to_hash: -> { status_code: Integer?, body: String? } + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_retrieve_params.rbs b/sig/ark_email/models/tenants/webhook_retrieve_params.rbs new file mode 100644 index 0000000..167c38d --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_retrieve_params.rbs @@ -0,0 +1,25 @@ +module ArkEmail + module Models + module Tenants + type webhook_retrieve_params = + { tenant_id: String } & ArkEmail::Internal::Type::request_parameters + + class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + def initialize: ( + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_retrieve_response.rbs b/sig/ark_email/models/tenants/webhook_retrieve_response.rbs new file mode 100644 index 0000000..03d8afb --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_retrieve_response.rbs @@ -0,0 +1,109 @@ +module ArkEmail + module Models + module Tenants + type webhook_retrieve_response = + { + data: ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::event], + name: String, + url: String, + uuid: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor all_events: bool + + attr_accessor created_at: Time + + attr_accessor enabled: bool + + attr_accessor events: ::Array[ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::event] + + attr_accessor name: String + + attr_accessor url: String + + attr_accessor uuid: String + + def initialize: ( + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::event], + name: String, + url: String, + uuid: String + ) -> void + + def to_hash: -> { + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::event], + name: String, + url: String, + uuid: String + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data::event] + end + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_test_params.rbs b/sig/ark_email/models/tenants/webhook_test_params.rbs new file mode 100644 index 0000000..42b43e6 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_test_params.rbs @@ -0,0 +1,58 @@ +module ArkEmail + module Models + module Tenants + type webhook_test_params = + { + tenant_id: String, + event: ArkEmail::Models::Tenants::WebhookTestParams::event + } + & ArkEmail::Internal::Type::request_parameters + + class WebhookTestParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + attr_accessor event: ArkEmail::Models::Tenants::WebhookTestParams::event + + def initialize: ( + tenant_id: String, + event: ArkEmail::Models::Tenants::WebhookTestParams::event, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + event: ArkEmail::Models::Tenants::WebhookTestParams::event, + request_options: ArkEmail::RequestOptions + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::WebhookTestParams::event] + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_test_response.rbs b/sig/ark_email/models/tenants/webhook_test_response.rbs new file mode 100644 index 0000000..8f40f20 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_test_response.rbs @@ -0,0 +1,74 @@ +module ArkEmail + module Models + module Tenants + type webhook_test_response = + { + data: ArkEmail::Models::Tenants::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::WebhookTestResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + duration: Integer, + event: String, + status_code: Integer?, + success: bool, + body: String?, + error: String? + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor duration: Integer + + attr_accessor event: String + + attr_accessor status_code: Integer? + + attr_accessor success: bool + + attr_accessor body: String? + + attr_accessor error: String? + + def initialize: ( + duration: Integer, + event: String, + status_code: Integer?, + success: bool, + ?body: String?, + ?error: String? + ) -> void + + def to_hash: -> { + duration: Integer, + event: String, + status_code: Integer?, + success: bool, + body: String?, + error: String? + } + end + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_update_params.rbs b/sig/ark_email/models/tenants/webhook_update_params.rbs new file mode 100644 index 0000000..90659a2 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_update_params.rbs @@ -0,0 +1,53 @@ +module ArkEmail + module Models + module Tenants + type webhook_update_params = + { + tenant_id: String, + all_events: bool?, + enabled: bool?, + events: ::Array[String]?, + name: String?, + url: String? + } + & ArkEmail::Internal::Type::request_parameters + + class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor tenant_id: String + + attr_accessor all_events: bool? + + attr_accessor enabled: bool? + + attr_accessor events: ::Array[String]? + + attr_accessor name: String? + + attr_accessor url: String? + + def initialize: ( + tenant_id: String, + ?all_events: bool?, + ?enabled: bool?, + ?events: ::Array[String]?, + ?name: String?, + ?url: String?, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + tenant_id: String, + all_events: bool?, + enabled: bool?, + events: ::Array[String]?, + name: String?, + url: String?, + request_options: ArkEmail::RequestOptions + } + end + end + end +end diff --git a/sig/ark_email/models/tenants/webhook_update_response.rbs b/sig/ark_email/models/tenants/webhook_update_response.rbs new file mode 100644 index 0000000..446ffa2 --- /dev/null +++ b/sig/ark_email/models/tenants/webhook_update_response.rbs @@ -0,0 +1,109 @@ +module ArkEmail + module Models + module Tenants + type webhook_update_response = + { + data: ArkEmail::Models::Tenants::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Tenants::WebhookUpdateResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Tenants::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Tenants::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::event], + name: String, + url: String, + uuid: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor all_events: bool + + attr_accessor created_at: Time + + attr_accessor enabled: bool + + attr_accessor events: ::Array[ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::event] + + attr_accessor name: String + + attr_accessor url: String + + attr_accessor uuid: String + + def initialize: ( + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::event], + name: String, + url: String, + uuid: String + ) -> void + + def to_hash: -> { + id: String, + all_events: bool, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::event], + name: String, + url: String, + uuid: String + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Tenants::WebhookUpdateResponse::Data::event] + end + end + end + end + end +end diff --git a/sig/ark_email/models/track_domain.rbs b/sig/ark_email/models/track_domain.rbs deleted file mode 100644 index 85f531d..0000000 --- a/sig/ark_email/models/track_domain.rbs +++ /dev/null @@ -1,122 +0,0 @@ -module ArkEmail - module Models - type track_domain = - { - id: String, - created_at: Time, - dns_ok: bool, - domain_id: String, - full_name: String, - name: String, - ssl_enabled: bool, - track_clicks: bool, - track_opens: bool, - dns_checked_at: Time?, - dns_error: String?, - dns_record: ArkEmail::TrackDomain::DNSRecord?, - dns_status: ArkEmail::Models::TrackDomain::dns_status?, - excluded_click_domains: String?, - updated_at: Time? - } - - class TrackDomain < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor created_at: Time - - attr_accessor dns_ok: bool - - attr_accessor domain_id: String - - attr_accessor full_name: String - - attr_accessor name: String - - attr_accessor ssl_enabled: bool - - attr_accessor track_clicks: bool - - attr_accessor track_opens: bool - - attr_accessor dns_checked_at: Time? - - attr_accessor dns_error: String? - - attr_accessor dns_record: ArkEmail::TrackDomain::DNSRecord? - - attr_accessor dns_status: ArkEmail::Models::TrackDomain::dns_status? - - attr_accessor excluded_click_domains: String? - - attr_accessor updated_at: Time? - - def initialize: ( - id: String, - created_at: Time, - dns_ok: bool, - domain_id: String, - full_name: String, - name: String, - ssl_enabled: bool, - track_clicks: bool, - track_opens: bool, - ?dns_checked_at: Time?, - ?dns_error: String?, - ?dns_record: ArkEmail::TrackDomain::DNSRecord?, - ?dns_status: ArkEmail::Models::TrackDomain::dns_status?, - ?excluded_click_domains: String?, - ?updated_at: Time? - ) -> void - - def to_hash: -> { - id: String, - created_at: Time, - dns_ok: bool, - domain_id: String, - full_name: String, - name: String, - ssl_enabled: bool, - track_clicks: bool, - track_opens: bool, - dns_checked_at: Time?, - dns_error: String?, - dns_record: ArkEmail::TrackDomain::DNSRecord?, - dns_status: ArkEmail::Models::TrackDomain::dns_status?, - excluded_click_domains: String?, - updated_at: Time? - } - - type dns_record = { name: String, type: String, value: String } - - class DNSRecord < ArkEmail::Internal::Type::BaseModel - attr_reader name: String? - - def name=: (String) -> String - - attr_reader type: String? - - def type=: (String) -> String - - attr_reader value: String? - - def value=: (String) -> String - - def initialize: (?name: String, ?type: String, ?value: String) -> void - - def to_hash: -> { name: String, type: String, value: String } - end - - type dns_status = :ok | :missing | :invalid - - module DNSStatus - extend ArkEmail::Internal::Type::Enum - - OK: :ok - MISSING: :missing - INVALID: :invalid - - def self?.values: -> ::Array[ArkEmail::Models::TrackDomain::dns_status] - end - end - end -end diff --git a/sig/ark_email/models/tracking_create_params.rbs b/sig/ark_email/models/tracking_create_params.rbs deleted file mode 100644 index e032894..0000000 --- a/sig/ark_email/models/tracking_create_params.rbs +++ /dev/null @@ -1,46 +0,0 @@ -module ArkEmail - module Models - type tracking_create_params = - { - domain_id: Integer, - name: String, - ssl_enabled: bool?, - track_clicks: bool?, - track_opens: bool? - } - & ArkEmail::Internal::Type::request_parameters - - class TrackingCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor domain_id: Integer - - attr_accessor name: String - - attr_accessor ssl_enabled: bool? - - attr_accessor track_clicks: bool? - - attr_accessor track_opens: bool? - - def initialize: ( - domain_id: Integer, - name: String, - ?ssl_enabled: bool?, - ?track_clicks: bool?, - ?track_opens: bool?, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - domain_id: Integer, - name: String, - ssl_enabled: bool?, - track_clicks: bool?, - track_opens: bool?, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/tracking_create_response.rbs b/sig/ark_email/models/tracking_create_response.rbs deleted file mode 100644 index 7a657bb..0000000 --- a/sig/ark_email/models/tracking_create_response.rbs +++ /dev/null @@ -1,26 +0,0 @@ -module ArkEmail - module Models - type tracking_create_response = - { data: ArkEmail::TrackDomain, meta: ArkEmail::APIMeta, success: true } - - class TrackingCreateResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::TrackDomain - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: true - } - end - end -end diff --git a/sig/ark_email/models/tracking_delete_params.rbs b/sig/ark_email/models/tracking_delete_params.rbs deleted file mode 100644 index 7c05f04..0000000 --- a/sig/ark_email/models/tracking_delete_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type tracking_delete_params = - { } & ArkEmail::Internal::Type::request_parameters - - class TrackingDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/tracking_delete_response.rbs b/sig/ark_email/models/tracking_delete_response.rbs deleted file mode 100644 index 63c2677..0000000 --- a/sig/ark_email/models/tracking_delete_response.rbs +++ /dev/null @@ -1,40 +0,0 @@ -module ArkEmail - module Models - type tracking_delete_response = - { - data: ArkEmail::Models::TrackingDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class TrackingDeleteResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::TrackingDeleteResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::TrackingDeleteResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::TrackingDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = { message: String } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor message: String - - def initialize: (message: String) -> void - - def to_hash: -> { message: String } - end - end - end -end diff --git a/sig/ark_email/models/tracking_list_params.rbs b/sig/ark_email/models/tracking_list_params.rbs deleted file mode 100644 index af00eef..0000000 --- a/sig/ark_email/models/tracking_list_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type tracking_list_params = - { } & ArkEmail::Internal::Type::request_parameters - - class TrackingListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/tracking_list_response.rbs b/sig/ark_email/models/tracking_list_response.rbs deleted file mode 100644 index 69e6df8..0000000 --- a/sig/ark_email/models/tracking_list_response.rbs +++ /dev/null @@ -1,40 +0,0 @@ -module ArkEmail - module Models - type tracking_list_response = - { - data: ArkEmail::Models::TrackingListResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class TrackingListResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::TrackingListResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::TrackingListResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::TrackingListResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = { track_domains: ::Array[ArkEmail::TrackDomain] } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor track_domains: ::Array[ArkEmail::TrackDomain] - - def initialize: (track_domains: ::Array[ArkEmail::TrackDomain]) -> void - - def to_hash: -> { track_domains: ::Array[ArkEmail::TrackDomain] } - end - end - end -end diff --git a/sig/ark_email/models/tracking_retrieve_params.rbs b/sig/ark_email/models/tracking_retrieve_params.rbs deleted file mode 100644 index de2bfa1..0000000 --- a/sig/ark_email/models/tracking_retrieve_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type tracking_retrieve_params = - { } & ArkEmail::Internal::Type::request_parameters - - class TrackingRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/tracking_retrieve_response.rbs b/sig/ark_email/models/tracking_retrieve_response.rbs deleted file mode 100644 index ed6095a..0000000 --- a/sig/ark_email/models/tracking_retrieve_response.rbs +++ /dev/null @@ -1,26 +0,0 @@ -module ArkEmail - module Models - type tracking_retrieve_response = - { data: ArkEmail::TrackDomain, meta: ArkEmail::APIMeta, success: true } - - class TrackingRetrieveResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::TrackDomain - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: true - } - end - end -end diff --git a/sig/ark_email/models/tracking_update_params.rbs b/sig/ark_email/models/tracking_update_params.rbs deleted file mode 100644 index ff63893..0000000 --- a/sig/ark_email/models/tracking_update_params.rbs +++ /dev/null @@ -1,41 +0,0 @@ -module ArkEmail - module Models - type tracking_update_params = - { - excluded_click_domains: String?, - ssl_enabled: bool?, - track_clicks: bool?, - track_opens: bool? - } - & ArkEmail::Internal::Type::request_parameters - - class TrackingUpdateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor excluded_click_domains: String? - - attr_accessor ssl_enabled: bool? - - attr_accessor track_clicks: bool? - - attr_accessor track_opens: bool? - - def initialize: ( - ?excluded_click_domains: String?, - ?ssl_enabled: bool?, - ?track_clicks: bool?, - ?track_opens: bool?, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - excluded_click_domains: String?, - ssl_enabled: bool?, - track_clicks: bool?, - track_opens: bool?, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/tracking_update_response.rbs b/sig/ark_email/models/tracking_update_response.rbs deleted file mode 100644 index 885cee6..0000000 --- a/sig/ark_email/models/tracking_update_response.rbs +++ /dev/null @@ -1,26 +0,0 @@ -module ArkEmail - module Models - type tracking_update_response = - { data: ArkEmail::TrackDomain, meta: ArkEmail::APIMeta, success: true } - - class TrackingUpdateResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::TrackDomain - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: true - } - end - end -end diff --git a/sig/ark_email/models/tracking_verify_params.rbs b/sig/ark_email/models/tracking_verify_params.rbs deleted file mode 100644 index dcc0695..0000000 --- a/sig/ark_email/models/tracking_verify_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type tracking_verify_params = - { } & ArkEmail::Internal::Type::request_parameters - - class TrackingVerifyParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/tracking_verify_response.rbs b/sig/ark_email/models/tracking_verify_response.rbs deleted file mode 100644 index 2dac0fb..0000000 --- a/sig/ark_email/models/tracking_verify_response.rbs +++ /dev/null @@ -1,109 +0,0 @@ -module ArkEmail - module Models - type tracking_verify_response = - { - data: ArkEmail::Models::TrackingVerifyResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class TrackingVerifyResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::TrackingVerifyResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::TrackingVerifyResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::TrackingVerifyResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - id: String, - dns_ok: bool, - dns_status: ArkEmail::Models::TrackingVerifyResponse::Data::dns_status?, - full_name: String, - dns_checked_at: Time?, - dns_error: String?, - dns_record: ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord? - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor dns_ok: bool - - attr_accessor dns_status: ArkEmail::Models::TrackingVerifyResponse::Data::dns_status? - - attr_accessor full_name: String - - attr_accessor dns_checked_at: Time? - - attr_accessor dns_error: String? - - attr_accessor dns_record: ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord? - - def initialize: ( - id: String, - dns_ok: bool, - dns_status: ArkEmail::Models::TrackingVerifyResponse::Data::dns_status?, - full_name: String, - ?dns_checked_at: Time?, - ?dns_error: String?, - ?dns_record: ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord? - ) -> void - - def to_hash: -> { - id: String, - dns_ok: bool, - dns_status: ArkEmail::Models::TrackingVerifyResponse::Data::dns_status?, - full_name: String, - dns_checked_at: Time?, - dns_error: String?, - dns_record: ArkEmail::Models::TrackingVerifyResponse::Data::DNSRecord? - } - - type dns_status = :ok | :missing | :invalid - - module DNSStatus - extend ArkEmail::Internal::Type::Enum - - OK: :ok - MISSING: :missing - INVALID: :invalid - - def self?.values: -> ::Array[ArkEmail::Models::TrackingVerifyResponse::Data::dns_status] - end - - type dns_record = { name: String, type: String, value: String } - - class DNSRecord < ArkEmail::Internal::Type::BaseModel - attr_reader name: String? - - def name=: (String) -> String - - attr_reader type: String? - - def type=: (String) -> String - - attr_reader value: String? - - def value=: (String) -> String - - def initialize: (?name: String, ?type: String, ?value: String) -> void - - def to_hash: -> { name: String, type: String, value: String } - end - end - end - end -end diff --git a/sig/ark_email/models/usage_export_params.rbs b/sig/ark_email/models/usage_export_params.rbs index ca379ba..f7abeb2 100644 --- a/sig/ark_email/models/usage_export_params.rbs +++ b/sig/ark_email/models/usage_export_params.rbs @@ -56,14 +56,13 @@ module ArkEmail request_options: ArkEmail::RequestOptions } - type format_ = :csv | :jsonl | :json + type format_ = :csv | :jsonl module Format extend ArkEmail::Internal::Type::Enum CSV: :csv JSONL: :jsonl - JSON: :json def self?.values: -> ::Array[ArkEmail::Models::UsageExportParams::format_] end diff --git a/sig/ark_email/models/usage_list_by_tenant_params.rbs b/sig/ark_email/models/usage_list_tenants_params.rbs similarity index 53% rename from sig/ark_email/models/usage_list_by_tenant_params.rbs rename to sig/ark_email/models/usage_list_tenants_params.rbs index 069467b..84702bf 100644 --- a/sig/ark_email/models/usage_list_by_tenant_params.rbs +++ b/sig/ark_email/models/usage_list_tenants_params.rbs @@ -1,71 +1,71 @@ module ArkEmail module Models - type usage_list_by_tenant_params = + type usage_list_tenants_params = { - limit: Integer, min_sent: Integer, - offset: Integer, + page: Integer, period: String, - sort: ArkEmail::Models::UsageListByTenantParams::sort, - status: ArkEmail::Models::UsageListByTenantParams::status, + per_page: Integer, + sort: ArkEmail::Models::UsageListTenantsParams::sort, + status: ArkEmail::Models::UsageListTenantsParams::status, timezone: String } & ArkEmail::Internal::Type::request_parameters - class UsageListByTenantParams < ArkEmail::Internal::Type::BaseModel + class UsageListTenantsParams < ArkEmail::Internal::Type::BaseModel extend ArkEmail::Internal::Type::RequestParameters::Converter include ArkEmail::Internal::Type::RequestParameters - attr_reader limit: Integer? - - def limit=: (Integer) -> Integer - attr_reader min_sent: Integer? def min_sent=: (Integer) -> Integer - attr_reader offset: Integer? + attr_reader page: Integer? - def offset=: (Integer) -> Integer + def page=: (Integer) -> Integer attr_reader period: String? def period=: (String) -> String - attr_reader sort: ArkEmail::Models::UsageListByTenantParams::sort? + attr_reader per_page: Integer? + + def per_page=: (Integer) -> Integer + + attr_reader sort: ArkEmail::Models::UsageListTenantsParams::sort? def sort=: ( - ArkEmail::Models::UsageListByTenantParams::sort - ) -> ArkEmail::Models::UsageListByTenantParams::sort + ArkEmail::Models::UsageListTenantsParams::sort + ) -> ArkEmail::Models::UsageListTenantsParams::sort - attr_reader status: ArkEmail::Models::UsageListByTenantParams::status? + attr_reader status: ArkEmail::Models::UsageListTenantsParams::status? def status=: ( - ArkEmail::Models::UsageListByTenantParams::status - ) -> ArkEmail::Models::UsageListByTenantParams::status + ArkEmail::Models::UsageListTenantsParams::status + ) -> ArkEmail::Models::UsageListTenantsParams::status attr_reader timezone: String? def timezone=: (String) -> String def initialize: ( - ?limit: Integer, ?min_sent: Integer, - ?offset: Integer, + ?page: Integer, ?period: String, - ?sort: ArkEmail::Models::UsageListByTenantParams::sort, - ?status: ArkEmail::Models::UsageListByTenantParams::status, + ?per_page: Integer, + ?sort: ArkEmail::Models::UsageListTenantsParams::sort, + ?status: ArkEmail::Models::UsageListTenantsParams::status, ?timezone: String, ?request_options: ArkEmail::request_opts ) -> void def to_hash: -> { - limit: Integer, min_sent: Integer, - offset: Integer, + page: Integer, period: String, - sort: ArkEmail::Models::UsageListByTenantParams::sort, - status: ArkEmail::Models::UsageListByTenantParams::status, + per_page: Integer, + sort: ArkEmail::Models::UsageListTenantsParams::sort, + status: ArkEmail::Models::UsageListTenantsParams::status, timezone: String, request_options: ArkEmail::RequestOptions } @@ -77,8 +77,10 @@ module ArkEmail | :"-delivered" | :bounce_rate | :"-bounce_rate" - | :name - | :"-name" + | :delivery_rate + | :"-delivery_rate" + | :tenant_name + | :"-tenant_name" module Sort extend ArkEmail::Internal::Type::Enum @@ -89,10 +91,12 @@ module ArkEmail MINUS_DELIVERED: :"-delivered" BOUNCE_RATE: :bounce_rate MINUS_BOUNCE_RATE: :"-bounce_rate" - NAME: :name - MINUS_NAME: :"-name" + DELIVERY_RATE: :delivery_rate + MINUS_DELIVERY_RATE: :"-delivery_rate" + TENANT_NAME: :tenant_name + MINUS_TENANT_NAME: :"-tenant_name" - def self?.values: -> ::Array[ArkEmail::Models::UsageListByTenantParams::sort] + def self?.values: -> ::Array[ArkEmail::Models::UsageListTenantsParams::sort] end type status = :active | :suspended | :archived @@ -104,7 +108,7 @@ module ArkEmail SUSPENDED: :suspended ARCHIVED: :archived - def self?.values: -> ::Array[ArkEmail::Models::UsageListByTenantParams::status] + def self?.values: -> ::Array[ArkEmail::Models::UsageListTenantsParams::status] end end end diff --git a/sig/ark_email/models/usage_retrieve_params.rbs b/sig/ark_email/models/usage_retrieve_params.rbs index b33064a..0547eff 100644 --- a/sig/ark_email/models/usage_retrieve_params.rbs +++ b/sig/ark_email/models/usage_retrieve_params.rbs @@ -1,15 +1,32 @@ module ArkEmail module Models type usage_retrieve_params = - { } & ArkEmail::Internal::Type::request_parameters + { period: String, timezone: String } + & ArkEmail::Internal::Type::request_parameters class UsageRetrieveParams < ArkEmail::Internal::Type::BaseModel extend ArkEmail::Internal::Type::RequestParameters::Converter include ArkEmail::Internal::Type::RequestParameters - def initialize: (?request_options: ArkEmail::request_opts) -> void + attr_reader period: String? - def to_hash: -> { request_options: ArkEmail::RequestOptions } + def period=: (String) -> String + + attr_reader timezone: String? + + def timezone=: (String) -> String + + def initialize: ( + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + period: String, + timezone: String, + request_options: ArkEmail::RequestOptions + } end end end diff --git a/sig/ark_email/models/usage_retrieve_response.rbs b/sig/ark_email/models/usage_retrieve_response.rbs deleted file mode 100644 index 3791e02..0000000 --- a/sig/ark_email/models/usage_retrieve_response.rbs +++ /dev/null @@ -1,26 +0,0 @@ -module ArkEmail - module Models - type usage_retrieve_response = - { data: ArkEmail::LimitsData, meta: ArkEmail::APIMeta, success: true } - - class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::LimitsData - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::LimitsData, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::LimitsData, - meta: ArkEmail::APIMeta, - success: true - } - end - end -end diff --git a/sig/ark_email/models/usage_retrieve_tenant_timeseries_params.rbs b/sig/ark_email/models/usage_retrieve_tenant_timeseries_params.rbs deleted file mode 100644 index 92c9b87..0000000 --- a/sig/ark_email/models/usage_retrieve_tenant_timeseries_params.rbs +++ /dev/null @@ -1,57 +0,0 @@ -module ArkEmail - module Models - type usage_retrieve_tenant_timeseries_params = - { - granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity, - period: String, - timezone: String - } - & ArkEmail::Internal::Type::request_parameters - - class UsageRetrieveTenantTimeseriesParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_reader granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity? - - def granularity=: ( - ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity - ) -> ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity - - attr_reader period: String? - - def period=: (String) -> String - - attr_reader timezone: String? - - def timezone=: (String) -> String - - def initialize: ( - ?granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity, - ?period: String, - ?timezone: String, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity, - period: String, - timezone: String, - request_options: ArkEmail::RequestOptions - } - - type granularity = :hour | :day | :week | :month - - module Granularity - extend ArkEmail::Internal::Type::Enum - - HOUR: :hour - DAY: :day - WEEK: :week - MONTH: :month - - def self?.values: -> ::Array[ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity] - end - end - end -end diff --git a/sig/ark_email/models/usage_retrieve_tenant_timeseries_response.rbs b/sig/ark_email/models/usage_retrieve_tenant_timeseries_response.rbs deleted file mode 100644 index a1578fc..0000000 --- a/sig/ark_email/models/usage_retrieve_tenant_timeseries_response.rbs +++ /dev/null @@ -1,30 +0,0 @@ -module ArkEmail - module Models - type usage_retrieve_tenant_timeseries_response = - { - data: ArkEmail::TenantUsageTimeseries, - meta: ArkEmail::APIMeta, - success: true - } - - class UsageRetrieveTenantTimeseriesResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::TenantUsageTimeseries - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::TenantUsageTimeseries, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::TenantUsageTimeseries, - meta: ArkEmail::APIMeta, - success: true - } - end - end -end diff --git a/sig/ark_email/models/usage_retrieve_tenant_usage_params.rbs b/sig/ark_email/models/usage_retrieve_tenant_usage_params.rbs deleted file mode 100644 index 43e1a12..0000000 --- a/sig/ark_email/models/usage_retrieve_tenant_usage_params.rbs +++ /dev/null @@ -1,32 +0,0 @@ -module ArkEmail - module Models - type usage_retrieve_tenant_usage_params = - { period: String, timezone: String } - & ArkEmail::Internal::Type::request_parameters - - class UsageRetrieveTenantUsageParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_reader period: String? - - def period=: (String) -> String - - attr_reader timezone: String? - - def timezone=: (String) -> String - - def initialize: ( - ?period: String, - ?timezone: String, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - period: String, - timezone: String, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/usage_retrieve_tenant_usage_response.rbs b/sig/ark_email/models/usage_retrieve_tenant_usage_response.rbs deleted file mode 100644 index d043420..0000000 --- a/sig/ark_email/models/usage_retrieve_tenant_usage_response.rbs +++ /dev/null @@ -1,26 +0,0 @@ -module ArkEmail - module Models - type usage_retrieve_tenant_usage_response = - { data: ArkEmail::TenantUsage, meta: ArkEmail::APIMeta, success: true } - - class UsageRetrieveTenantUsageResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::TenantUsage - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::TenantUsage, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::TenantUsage, - meta: ArkEmail::APIMeta, - success: true - } - end - end -end diff --git a/sig/ark_email/models/webhook_create_params.rbs b/sig/ark_email/models/webhook_create_params.rbs deleted file mode 100644 index 482ff6e..0000000 --- a/sig/ark_email/models/webhook_create_params.rbs +++ /dev/null @@ -1,71 +0,0 @@ -module ArkEmail - module Models - type webhook_create_params = - { - name: String, - url: String, - all_events: bool?, - enabled: bool?, - events: ::Array[ArkEmail::Models::WebhookCreateParams::event]? - } - & ArkEmail::Internal::Type::request_parameters - - class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor name: String - - attr_accessor url: String - - attr_accessor all_events: bool? - - attr_accessor enabled: bool? - - attr_accessor events: ::Array[ArkEmail::Models::WebhookCreateParams::event]? - - def initialize: ( - name: String, - url: String, - ?all_events: bool?, - ?enabled: bool?, - ?events: ::Array[ArkEmail::Models::WebhookCreateParams::event]?, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - name: String, - url: String, - all_events: bool?, - enabled: bool?, - events: ::Array[ArkEmail::Models::WebhookCreateParams::event]?, - request_options: ArkEmail::RequestOptions - } - - type event = - :MessageSent - | :MessageDelayed - | :MessageDeliveryFailed - | :MessageHeld - | :MessageBounced - | :MessageLinkClicked - | :MessageLoaded - | :DomainDNSError - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT: :MessageSent - MESSAGE_DELAYED: :MessageDelayed - MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed - MESSAGE_HELD: :MessageHeld - MESSAGE_BOUNCED: :MessageBounced - MESSAGE_LINK_CLICKED: :MessageLinkClicked - MESSAGE_LOADED: :MessageLoaded - DOMAIN_DNS_ERROR: :DomainDNSError - - def self?.values: -> ::Array[ArkEmail::Models::WebhookCreateParams::event] - end - end - end -end diff --git a/sig/ark_email/models/webhook_create_response.rbs b/sig/ark_email/models/webhook_create_response.rbs deleted file mode 100644 index ecc544d..0000000 --- a/sig/ark_email/models/webhook_create_response.rbs +++ /dev/null @@ -1,107 +0,0 @@ -module ArkEmail - module Models - type webhook_create_response = - { - data: ArkEmail::Models::WebhookCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::WebhookCreateResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::WebhookCreateResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::WebhookCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookCreateResponse::Data::event], - name: String, - url: String, - uuid: String - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor all_events: bool - - attr_accessor created_at: Time - - attr_accessor enabled: bool - - attr_accessor events: ::Array[ArkEmail::Models::WebhookCreateResponse::Data::event] - - attr_accessor name: String - - attr_accessor url: String - - attr_accessor uuid: String - - def initialize: ( - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookCreateResponse::Data::event], - name: String, - url: String, - uuid: String - ) -> void - - def to_hash: -> { - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookCreateResponse::Data::event], - name: String, - url: String, - uuid: String - } - - type event = - :MessageSent - | :MessageDelayed - | :MessageDeliveryFailed - | :MessageHeld - | :MessageBounced - | :MessageLinkClicked - | :MessageLoaded - | :DomainDNSError - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT: :MessageSent - MESSAGE_DELAYED: :MessageDelayed - MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed - MESSAGE_HELD: :MessageHeld - MESSAGE_BOUNCED: :MessageBounced - MESSAGE_LINK_CLICKED: :MessageLinkClicked - MESSAGE_LOADED: :MessageLoaded - DOMAIN_DNS_ERROR: :DomainDNSError - - def self?.values: -> ::Array[ArkEmail::Models::WebhookCreateResponse::Data::event] - end - end - end - end -end diff --git a/sig/ark_email/models/webhook_delete_params.rbs b/sig/ark_email/models/webhook_delete_params.rbs deleted file mode 100644 index 8e5984a..0000000 --- a/sig/ark_email/models/webhook_delete_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type webhook_delete_params = - { } & ArkEmail::Internal::Type::request_parameters - - class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/webhook_delete_response.rbs b/sig/ark_email/models/webhook_delete_response.rbs deleted file mode 100644 index a6d7b97..0000000 --- a/sig/ark_email/models/webhook_delete_response.rbs +++ /dev/null @@ -1,40 +0,0 @@ -module ArkEmail - module Models - type webhook_delete_response = - { - data: ArkEmail::Models::WebhookDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::WebhookDeleteResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::WebhookDeleteResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::WebhookDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = { message: String } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor message: String - - def initialize: (message: String) -> void - - def to_hash: -> { message: String } - end - end - end -end diff --git a/sig/ark_email/models/webhook_list_deliveries_params.rbs b/sig/ark_email/models/webhook_list_deliveries_params.rbs deleted file mode 100644 index 9cf74e4..0000000 --- a/sig/ark_email/models/webhook_list_deliveries_params.rbs +++ /dev/null @@ -1,90 +0,0 @@ -module ArkEmail - module Models - type webhook_list_deliveries_params = - { - after: Integer, - before: Integer, - event: ArkEmail::Models::WebhookListDeliveriesParams::event, - page: Integer, - per_page: Integer, - success: bool - } - & ArkEmail::Internal::Type::request_parameters - - class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_reader after: Integer? - - def after=: (Integer) -> Integer - - attr_reader before: Integer? - - def before=: (Integer) -> Integer - - attr_reader event: ArkEmail::Models::WebhookListDeliveriesParams::event? - - def event=: ( - ArkEmail::Models::WebhookListDeliveriesParams::event - ) -> ArkEmail::Models::WebhookListDeliveriesParams::event - - attr_reader page: Integer? - - def page=: (Integer) -> Integer - - attr_reader per_page: Integer? - - def per_page=: (Integer) -> Integer - - attr_reader success: bool? - - def success=: (bool) -> bool - - def initialize: ( - ?after: Integer, - ?before: Integer, - ?event: ArkEmail::Models::WebhookListDeliveriesParams::event, - ?page: Integer, - ?per_page: Integer, - ?success: bool, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - after: Integer, - before: Integer, - event: ArkEmail::Models::WebhookListDeliveriesParams::event, - page: Integer, - per_page: Integer, - success: bool, - request_options: ArkEmail::RequestOptions - } - - type event = - :MessageSent - | :MessageDelayed - | :MessageDeliveryFailed - | :MessageHeld - | :MessageBounced - | :MessageLinkClicked - | :MessageLoaded - | :DomainDNSError - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT: :MessageSent - MESSAGE_DELAYED: :MessageDelayed - MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed - MESSAGE_HELD: :MessageHeld - MESSAGE_BOUNCED: :MessageBounced - MESSAGE_LINK_CLICKED: :MessageLinkClicked - MESSAGE_LOADED: :MessageLoaded - DOMAIN_DNS_ERROR: :DomainDNSError - - def self?.values: -> ::Array[ArkEmail::Models::WebhookListDeliveriesParams::event] - end - end - end -end diff --git a/sig/ark_email/models/webhook_list_deliveries_response.rbs b/sig/ark_email/models/webhook_list_deliveries_response.rbs deleted file mode 100644 index 26f1c8f..0000000 --- a/sig/ark_email/models/webhook_list_deliveries_response.rbs +++ /dev/null @@ -1,127 +0,0 @@ -module ArkEmail - module Models - type webhook_list_deliveries_response = - { - data: ::Array[ArkEmail::Models::WebhookListDeliveriesResponse::Data], - meta: ArkEmail::APIMeta, - page: Integer, - per_page: Integer, - total: Integer, - total_pages: Integer - } - - class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ::Array[ArkEmail::Models::WebhookListDeliveriesResponse::Data] - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor page: Integer - - attr_accessor per_page: Integer - - attr_accessor total: Integer - - attr_accessor total_pages: Integer - - def initialize: ( - data: ::Array[ArkEmail::Models::WebhookListDeliveriesResponse::Data], - meta: ArkEmail::APIMeta, - page: Integer, - per_page: Integer, - total: Integer, - total_pages: Integer - ) -> void - - def to_hash: -> { - data: ::Array[ArkEmail::Models::WebhookListDeliveriesResponse::Data], - meta: ArkEmail::APIMeta, - page: Integer, - per_page: Integer, - total: Integer, - total_pages: Integer - } - - type data = - { - id: String, - attempt: Integer, - event: ArkEmail::Models::WebhookListDeliveriesResponse::Data::event, - status_code: Integer?, - success: bool, - timestamp: Time, - url: String, - webhook_id: String, - will_retry: bool - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor attempt: Integer - - attr_accessor event: ArkEmail::Models::WebhookListDeliveriesResponse::Data::event - - attr_accessor status_code: Integer? - - attr_accessor success: bool - - attr_accessor timestamp: Time - - attr_accessor url: String - - attr_accessor webhook_id: String - - attr_accessor will_retry: bool - - def initialize: ( - id: String, - attempt: Integer, - event: ArkEmail::Models::WebhookListDeliveriesResponse::Data::event, - status_code: Integer?, - success: bool, - timestamp: Time, - url: String, - webhook_id: String, - will_retry: bool - ) -> void - - def to_hash: -> { - id: String, - attempt: Integer, - event: ArkEmail::Models::WebhookListDeliveriesResponse::Data::event, - status_code: Integer?, - success: bool, - timestamp: Time, - url: String, - webhook_id: String, - will_retry: bool - } - - type event = - :MessageSent - | :MessageDelayed - | :MessageDeliveryFailed - | :MessageHeld - | :MessageBounced - | :MessageLinkClicked - | :MessageLoaded - | :DomainDNSError - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT: :MessageSent - MESSAGE_DELAYED: :MessageDelayed - MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed - MESSAGE_HELD: :MessageHeld - MESSAGE_BOUNCED: :MessageBounced - MESSAGE_LINK_CLICKED: :MessageLinkClicked - MESSAGE_LOADED: :MessageLoaded - DOMAIN_DNS_ERROR: :DomainDNSError - - def self?.values: -> ::Array[ArkEmail::Models::WebhookListDeliveriesResponse::Data::event] - end - end - end - end -end diff --git a/sig/ark_email/models/webhook_list_params.rbs b/sig/ark_email/models/webhook_list_params.rbs deleted file mode 100644 index 3b50d5e..0000000 --- a/sig/ark_email/models/webhook_list_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type webhook_list_params = - { } & ArkEmail::Internal::Type::request_parameters - - class WebhookListParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/webhook_list_response.rbs b/sig/ark_email/models/webhook_list_response.rbs deleted file mode 100644 index ab9c200..0000000 --- a/sig/ark_email/models/webhook_list_response.rbs +++ /dev/null @@ -1,84 +0,0 @@ -module ArkEmail - module Models - type webhook_list_response = - { - data: ArkEmail::Models::WebhookListResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class WebhookListResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::WebhookListResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::WebhookListResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::WebhookListResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - webhooks: ::Array[ArkEmail::Models::WebhookListResponse::Data::Webhook] - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor webhooks: ::Array[ArkEmail::Models::WebhookListResponse::Data::Webhook] - - def initialize: ( - webhooks: ::Array[ArkEmail::Models::WebhookListResponse::Data::Webhook] - ) -> void - - def to_hash: -> { - webhooks: ::Array[ArkEmail::Models::WebhookListResponse::Data::Webhook] - } - - type webhook = - { - id: String, - enabled: bool, - events: ::Array[String], - name: String, - url: String - } - - class Webhook < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor enabled: bool - - attr_accessor events: ::Array[String] - - attr_accessor name: String - - attr_accessor url: String - - def initialize: ( - id: String, - enabled: bool, - events: ::Array[String], - name: String, - url: String - ) -> void - - def to_hash: -> { - id: String, - enabled: bool, - events: ::Array[String], - name: String, - url: String - } - end - end - end - end -end diff --git a/sig/ark_email/models/webhook_replay_delivery_params.rbs b/sig/ark_email/models/webhook_replay_delivery_params.rbs deleted file mode 100644 index 64a3468..0000000 --- a/sig/ark_email/models/webhook_replay_delivery_params.rbs +++ /dev/null @@ -1,23 +0,0 @@ -module ArkEmail - module Models - type webhook_replay_delivery_params = - { webhook_id: String } & ArkEmail::Internal::Type::request_parameters - - class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor webhook_id: String - - def initialize: ( - webhook_id: String, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - webhook_id: String, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/webhook_replay_delivery_response.rbs b/sig/ark_email/models/webhook_replay_delivery_response.rbs deleted file mode 100644 index f6f1c8b..0000000 --- a/sig/ark_email/models/webhook_replay_delivery_response.rbs +++ /dev/null @@ -1,72 +0,0 @@ -module ArkEmail - module Models - type webhook_replay_delivery_response = - { - data: ArkEmail::Models::WebhookReplayDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::WebhookReplayDeliveryResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::WebhookReplayDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::WebhookReplayDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - duration: Integer, - new_delivery_id: String, - original_delivery_id: String, - status_code: Integer?, - success: bool, - timestamp: Time - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor duration: Integer - - attr_accessor new_delivery_id: String - - attr_accessor original_delivery_id: String - - attr_accessor status_code: Integer? - - attr_accessor success: bool - - attr_accessor timestamp: Time - - def initialize: ( - duration: Integer, - new_delivery_id: String, - original_delivery_id: String, - status_code: Integer?, - success: bool, - timestamp: Time - ) -> void - - def to_hash: -> { - duration: Integer, - new_delivery_id: String, - original_delivery_id: String, - status_code: Integer?, - success: bool, - timestamp: Time - } - end - end - end -end diff --git a/sig/ark_email/models/webhook_retrieve_delivery_params.rbs b/sig/ark_email/models/webhook_retrieve_delivery_params.rbs deleted file mode 100644 index d17773b..0000000 --- a/sig/ark_email/models/webhook_retrieve_delivery_params.rbs +++ /dev/null @@ -1,23 +0,0 @@ -module ArkEmail - module Models - type webhook_retrieve_delivery_params = - { webhook_id: String } & ArkEmail::Internal::Type::request_parameters - - class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor webhook_id: String - - def initialize: ( - webhook_id: String, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - webhook_id: String, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/webhook_retrieve_delivery_response.rbs b/sig/ark_email/models/webhook_retrieve_delivery_response.rbs deleted file mode 100644 index 732ab12..0000000 --- a/sig/ark_email/models/webhook_retrieve_delivery_response.rbs +++ /dev/null @@ -1,158 +0,0 @@ -module ArkEmail - module Models - type webhook_retrieve_delivery_response = - { - data: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - id: String, - attempt: Integer, - event: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::event, - request: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request, - response: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response, - status_code: Integer?, - success: bool, - timestamp: Time, - url: String, - webhook_id: String, - webhook_name: String, - will_retry: bool - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor attempt: Integer - - attr_accessor event: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::event - - attr_accessor request: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request - - attr_accessor response: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response - - attr_accessor status_code: Integer? - - attr_accessor success: bool - - attr_accessor timestamp: Time - - attr_accessor url: String - - attr_accessor webhook_id: String - - attr_accessor webhook_name: String - - attr_accessor will_retry: bool - - def initialize: ( - id: String, - attempt: Integer, - event: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::event, - request: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request, - response: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response, - status_code: Integer?, - success: bool, - timestamp: Time, - url: String, - webhook_id: String, - webhook_name: String, - will_retry: bool - ) -> void - - def to_hash: -> { - id: String, - attempt: Integer, - event: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::event, - request: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Request, - response: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Response, - status_code: Integer?, - success: bool, - timestamp: Time, - url: String, - webhook_id: String, - webhook_name: String, - will_retry: bool - } - - type event = - :MessageSent - | :MessageDelayed - | :MessageDeliveryFailed - | :MessageHeld - | :MessageBounced - | :MessageLinkClicked - | :MessageLoaded - | :DomainDNSError - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT: :MessageSent - MESSAGE_DELAYED: :MessageDelayed - MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed - MESSAGE_HELD: :MessageHeld - MESSAGE_BOUNCED: :MessageBounced - MESSAGE_LINK_CLICKED: :MessageLinkClicked - MESSAGE_LOADED: :MessageLoaded - DOMAIN_DNS_ERROR: :DomainDNSError - - def self?.values: -> ::Array[ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::event] - end - - type request = - { headers: ::Hash[Symbol, String], payload: ::Hash[Symbol, top] } - - class Request < ArkEmail::Internal::Type::BaseModel - attr_accessor headers: ::Hash[Symbol, String] - - attr_accessor payload: ::Hash[Symbol, top] - - def initialize: ( - headers: ::Hash[Symbol, String], - payload: ::Hash[Symbol, top] - ) -> void - - def to_hash: -> { - headers: ::Hash[Symbol, String], - payload: ::Hash[Symbol, top] - } - end - - type response = { status_code: Integer?, body: String? } - - class Response < ArkEmail::Internal::Type::BaseModel - attr_accessor status_code: Integer? - - attr_accessor body: String? - - def initialize: (status_code: Integer?, ?body: String?) -> void - - def to_hash: -> { status_code: Integer?, body: String? } - end - end - end - end -end diff --git a/sig/ark_email/models/webhook_retrieve_params.rbs b/sig/ark_email/models/webhook_retrieve_params.rbs deleted file mode 100644 index 25a199d..0000000 --- a/sig/ark_email/models/webhook_retrieve_params.rbs +++ /dev/null @@ -1,15 +0,0 @@ -module ArkEmail - module Models - type webhook_retrieve_params = - { } & ArkEmail::Internal::Type::request_parameters - - class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - def initialize: (?request_options: ArkEmail::request_opts) -> void - - def to_hash: -> { request_options: ArkEmail::RequestOptions } - end - end -end diff --git a/sig/ark_email/models/webhook_retrieve_response.rbs b/sig/ark_email/models/webhook_retrieve_response.rbs deleted file mode 100644 index 8c0d075..0000000 --- a/sig/ark_email/models/webhook_retrieve_response.rbs +++ /dev/null @@ -1,107 +0,0 @@ -module ArkEmail - module Models - type webhook_retrieve_response = - { - data: ArkEmail::Models::WebhookRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::WebhookRetrieveResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::WebhookRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::WebhookRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookRetrieveResponse::Data::event], - name: String, - url: String, - uuid: String - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor all_events: bool - - attr_accessor created_at: Time - - attr_accessor enabled: bool - - attr_accessor events: ::Array[ArkEmail::Models::WebhookRetrieveResponse::Data::event] - - attr_accessor name: String - - attr_accessor url: String - - attr_accessor uuid: String - - def initialize: ( - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookRetrieveResponse::Data::event], - name: String, - url: String, - uuid: String - ) -> void - - def to_hash: -> { - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookRetrieveResponse::Data::event], - name: String, - url: String, - uuid: String - } - - type event = - :MessageSent - | :MessageDelayed - | :MessageDeliveryFailed - | :MessageHeld - | :MessageBounced - | :MessageLinkClicked - | :MessageLoaded - | :DomainDNSError - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT: :MessageSent - MESSAGE_DELAYED: :MessageDelayed - MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed - MESSAGE_HELD: :MessageHeld - MESSAGE_BOUNCED: :MessageBounced - MESSAGE_LINK_CLICKED: :MessageLinkClicked - MESSAGE_LOADED: :MessageLoaded - DOMAIN_DNS_ERROR: :DomainDNSError - - def self?.values: -> ::Array[ArkEmail::Models::WebhookRetrieveResponse::Data::event] - end - end - end - end -end diff --git a/sig/ark_email/models/webhook_test_params.rbs b/sig/ark_email/models/webhook_test_params.rbs deleted file mode 100644 index 68561bd..0000000 --- a/sig/ark_email/models/webhook_test_params.rbs +++ /dev/null @@ -1,49 +0,0 @@ -module ArkEmail - module Models - type webhook_test_params = - { event: ArkEmail::Models::WebhookTestParams::event } - & ArkEmail::Internal::Type::request_parameters - - class WebhookTestParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor event: ArkEmail::Models::WebhookTestParams::event - - def initialize: ( - event: ArkEmail::Models::WebhookTestParams::event, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - event: ArkEmail::Models::WebhookTestParams::event, - request_options: ArkEmail::RequestOptions - } - - type event = - :MessageSent - | :MessageDelayed - | :MessageDeliveryFailed - | :MessageHeld - | :MessageBounced - | :MessageLinkClicked - | :MessageLoaded - | :DomainDNSError - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT: :MessageSent - MESSAGE_DELAYED: :MessageDelayed - MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed - MESSAGE_HELD: :MessageHeld - MESSAGE_BOUNCED: :MessageBounced - MESSAGE_LINK_CLICKED: :MessageLinkClicked - MESSAGE_LOADED: :MessageLoaded - DOMAIN_DNS_ERROR: :DomainDNSError - - def self?.values: -> ::Array[ArkEmail::Models::WebhookTestParams::event] - end - end - end -end diff --git a/sig/ark_email/models/webhook_test_response.rbs b/sig/ark_email/models/webhook_test_response.rbs deleted file mode 100644 index ee65812..0000000 --- a/sig/ark_email/models/webhook_test_response.rbs +++ /dev/null @@ -1,72 +0,0 @@ -module ArkEmail - module Models - type webhook_test_response = - { - data: ArkEmail::Models::WebhookTestResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::WebhookTestResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::WebhookTestResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::WebhookTestResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - duration: Integer, - event: String, - status_code: Integer?, - success: bool, - body: String?, - error: String? - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor duration: Integer - - attr_accessor event: String - - attr_accessor status_code: Integer? - - attr_accessor success: bool - - attr_accessor body: String? - - attr_accessor error: String? - - def initialize: ( - duration: Integer, - event: String, - status_code: Integer?, - success: bool, - ?body: String?, - ?error: String? - ) -> void - - def to_hash: -> { - duration: Integer, - event: String, - status_code: Integer?, - success: bool, - body: String?, - error: String? - } - end - end - end -end diff --git a/sig/ark_email/models/webhook_update_params.rbs b/sig/ark_email/models/webhook_update_params.rbs deleted file mode 100644 index 4aa359f..0000000 --- a/sig/ark_email/models/webhook_update_params.rbs +++ /dev/null @@ -1,46 +0,0 @@ -module ArkEmail - module Models - type webhook_update_params = - { - all_events: bool?, - enabled: bool?, - events: ::Array[String]?, - name: String?, - url: String? - } - & ArkEmail::Internal::Type::request_parameters - - class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel - extend ArkEmail::Internal::Type::RequestParameters::Converter - include ArkEmail::Internal::Type::RequestParameters - - attr_accessor all_events: bool? - - attr_accessor enabled: bool? - - attr_accessor events: ::Array[String]? - - attr_accessor name: String? - - attr_accessor url: String? - - def initialize: ( - ?all_events: bool?, - ?enabled: bool?, - ?events: ::Array[String]?, - ?name: String?, - ?url: String?, - ?request_options: ArkEmail::request_opts - ) -> void - - def to_hash: -> { - all_events: bool?, - enabled: bool?, - events: ::Array[String]?, - name: String?, - url: String?, - request_options: ArkEmail::RequestOptions - } - end - end -end diff --git a/sig/ark_email/models/webhook_update_response.rbs b/sig/ark_email/models/webhook_update_response.rbs deleted file mode 100644 index 1e9e596..0000000 --- a/sig/ark_email/models/webhook_update_response.rbs +++ /dev/null @@ -1,107 +0,0 @@ -module ArkEmail - module Models - type webhook_update_response = - { - data: ArkEmail::Models::WebhookUpdateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel - attr_accessor data: ArkEmail::Models::WebhookUpdateResponse::Data - - attr_accessor meta: ArkEmail::APIMeta - - attr_accessor success: true - - def initialize: ( - data: ArkEmail::Models::WebhookUpdateResponse::Data, - meta: ArkEmail::APIMeta, - ?success: true - ) -> void - - def to_hash: -> { - data: ArkEmail::Models::WebhookUpdateResponse::Data, - meta: ArkEmail::APIMeta, - success: true - } - - type data = - { - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookUpdateResponse::Data::event], - name: String, - url: String, - uuid: String - } - - class Data < ArkEmail::Internal::Type::BaseModel - attr_accessor id: String - - attr_accessor all_events: bool - - attr_accessor created_at: Time - - attr_accessor enabled: bool - - attr_accessor events: ::Array[ArkEmail::Models::WebhookUpdateResponse::Data::event] - - attr_accessor name: String - - attr_accessor url: String - - attr_accessor uuid: String - - def initialize: ( - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookUpdateResponse::Data::event], - name: String, - url: String, - uuid: String - ) -> void - - def to_hash: -> { - id: String, - all_events: bool, - created_at: Time, - enabled: bool, - events: ::Array[ArkEmail::Models::WebhookUpdateResponse::Data::event], - name: String, - url: String, - uuid: String - } - - type event = - :MessageSent - | :MessageDelayed - | :MessageDeliveryFailed - | :MessageHeld - | :MessageBounced - | :MessageLinkClicked - | :MessageLoaded - | :DomainDNSError - - module Event - extend ArkEmail::Internal::Type::Enum - - MESSAGE_SENT: :MessageSent - MESSAGE_DELAYED: :MessageDelayed - MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed - MESSAGE_HELD: :MessageHeld - MESSAGE_BOUNCED: :MessageBounced - MESSAGE_LINK_CLICKED: :MessageLinkClicked - MESSAGE_LOADED: :MessageLoaded - DOMAIN_DNS_ERROR: :DomainDNSError - - def self?.values: -> ::Array[ArkEmail::Models::WebhookUpdateResponse::Data::event] - end - end - end - end -end diff --git a/sig/ark_email/resources/domains.rbs b/sig/ark_email/resources/domains.rbs deleted file mode 100644 index bb2c56b..0000000 --- a/sig/ark_email/resources/domains.rbs +++ /dev/null @@ -1,33 +0,0 @@ -module ArkEmail - module Resources - class Domains - def create: ( - name: String, - tenant_id: String, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::DomainCreateResponse - - def retrieve: ( - String domain_id, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::DomainRetrieveResponse - - def list: ( - ?tenant_id: String, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::DomainListResponse - - def delete: ( - String domain_id, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::DomainDeleteResponse - - def verify: ( - String domain_id, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::DomainVerifyResponse - - def initialize: (client: ArkEmail::Client) -> void - end - end -end diff --git a/sig/ark_email/resources/suppressions.rbs b/sig/ark_email/resources/suppressions.rbs deleted file mode 100644 index c037219..0000000 --- a/sig/ark_email/resources/suppressions.rbs +++ /dev/null @@ -1,34 +0,0 @@ -module ArkEmail - module Resources - class Suppressions - def create: ( - address: String, - ?reason: String?, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::SuppressionCreateResponse - - def retrieve: ( - String email, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::SuppressionRetrieveResponse - - def list: ( - ?page: Integer, - ?per_page: Integer, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Internal::PageNumberPagination[ArkEmail::Models::SuppressionListResponse] - - def delete: ( - String email, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::SuppressionDeleteResponse - - def bulk_create: ( - suppressions: ::Array[ArkEmail::SuppressionBulkCreateParams::Suppression], - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::SuppressionBulkCreateResponse - - def initialize: (client: ArkEmail::Client) -> void - end - end -end diff --git a/sig/ark_email/resources/tenants.rbs b/sig/ark_email/resources/tenants.rbs index f8e634a..65685da 100644 --- a/sig/ark_email/resources/tenants.rbs +++ b/sig/ark_email/resources/tenants.rbs @@ -3,6 +3,16 @@ module ArkEmail class Tenants attr_reader credentials: ArkEmail::Resources::Tenants::Credentials + attr_reader domains: ArkEmail::Resources::Tenants::Domains + + attr_reader suppressions: ArkEmail::Resources::Tenants::Suppressions + + attr_reader webhooks: ArkEmail::Resources::Tenants::Webhooks + + attr_reader tracking: ArkEmail::Resources::Tenants::Tracking + + attr_reader usage: ArkEmail::Resources::Tenants::Usage + def create: ( name: String, ?metadata: ::Hash[Symbol, ArkEmail::Models::TenantCreateParams::metadata?]?, diff --git a/sig/ark_email/resources/tenants/domains.rbs b/sig/ark_email/resources/tenants/domains.rbs new file mode 100644 index 0000000..dd3a79d --- /dev/null +++ b/sig/ark_email/resources/tenants/domains.rbs @@ -0,0 +1,38 @@ +module ArkEmail + module Resources + class Tenants + class Domains + def create: ( + String tenant_id, + name: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::DomainCreateResponse + + def retrieve: ( + String domain_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::DomainRetrieveResponse + + def list: ( + String tenant_id, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::DomainListResponse + + def delete: ( + String domain_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::DomainDeleteResponse + + def verify: ( + String domain_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::DomainVerifyResponse + + def initialize: (client: ArkEmail::Client) -> void + end + end + end +end diff --git a/sig/ark_email/resources/tenants/suppressions.rbs b/sig/ark_email/resources/tenants/suppressions.rbs new file mode 100644 index 0000000..db840a9 --- /dev/null +++ b/sig/ark_email/resources/tenants/suppressions.rbs @@ -0,0 +1,35 @@ +module ArkEmail + module Resources + class Tenants + class Suppressions + def create: ( + String tenant_id, + address: String, + ?reason: String?, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::SuppressionCreateResponse + + def retrieve: ( + String email, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::SuppressionRetrieveResponse + + def list: ( + String tenant_id, + ?page: Integer, + ?per_page: Integer, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Internal::PageNumberPagination[ArkEmail::Models::Tenants::SuppressionListResponse] + + def delete: ( + String email, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::SuppressionDeleteResponse + + def initialize: (client: ArkEmail::Client) -> void + end + end + end +end diff --git a/sig/ark_email/resources/tenants/tracking.rbs b/sig/ark_email/resources/tenants/tracking.rbs new file mode 100644 index 0000000..1bb6910 --- /dev/null +++ b/sig/ark_email/resources/tenants/tracking.rbs @@ -0,0 +1,52 @@ +module ArkEmail + module Resources + class Tenants + class Tracking + def create: ( + String tenant_id, + domain_id: Integer, + name: String, + ?ssl_enabled: bool?, + ?track_clicks: bool?, + ?track_opens: bool?, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::TrackingCreateResponse + + def retrieve: ( + String tracking_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::TrackingRetrieveResponse + + def update: ( + String tracking_id, + tenant_id: String, + ?excluded_click_domains: String?, + ?ssl_enabled: bool?, + ?track_clicks: bool?, + ?track_opens: bool?, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::TrackingUpdateResponse + + def list: ( + String tenant_id, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::TrackingListResponse + + def delete: ( + String tracking_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::TrackingDeleteResponse + + def verify: ( + String tracking_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::TrackingVerifyResponse + + def initialize: (client: ArkEmail::Client) -> void + end + end + end +end diff --git a/sig/ark_email/resources/tenants/usage.rbs b/sig/ark_email/resources/tenants/usage.rbs new file mode 100644 index 0000000..b5b45d9 --- /dev/null +++ b/sig/ark_email/resources/tenants/usage.rbs @@ -0,0 +1,24 @@ +module ArkEmail + module Resources + class Tenants + class Usage + def retrieve: ( + String tenant_id, + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::UsageRetrieveResponse + + def retrieve_timeseries: ( + String tenant_id, + ?granularity: ArkEmail::Models::Tenants::UsageRetrieveTimeseriesParams::granularity, + ?period: String, + ?timezone: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::UsageRetrieveTimeseriesResponse + + def initialize: (client: ArkEmail::Client) -> void + end + end + end +end diff --git a/sig/ark_email/resources/tenants/webhooks.rbs b/sig/ark_email/resources/tenants/webhooks.rbs new file mode 100644 index 0000000..a0980bd --- /dev/null +++ b/sig/ark_email/resources/tenants/webhooks.rbs @@ -0,0 +1,80 @@ +module ArkEmail + module Resources + class Tenants + class Webhooks + def create: ( + String tenant_id, + name: String, + url: String, + ?all_events: bool?, + ?enabled: bool?, + ?events: ::Array[ArkEmail::Models::Tenants::WebhookCreateParams::event]?, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookCreateResponse + + def retrieve: ( + String webhook_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookRetrieveResponse + + def update: ( + String webhook_id, + tenant_id: String, + ?all_events: bool?, + ?enabled: bool?, + ?events: ::Array[String]?, + ?name: String?, + ?url: String?, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookUpdateResponse + + def list: ( + String tenant_id, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookListResponse + + def delete: ( + String webhook_id, + tenant_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookDeleteResponse + + def list_deliveries: ( + String webhook_id, + tenant_id: String, + ?after: Integer, + ?before: Integer, + ?event: ArkEmail::Models::Tenants::WebhookListDeliveriesParams::event, + ?page: Integer, + ?per_page: Integer, + ?success: bool, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookListDeliveriesResponse + + def replay_delivery: ( + String delivery_id, + tenant_id: String, + webhook_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse + + def retrieve_delivery: ( + String delivery_id, + tenant_id: String, + webhook_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse + + def test_: ( + String webhook_id, + tenant_id: String, + event: ArkEmail::Models::Tenants::WebhookTestParams::event, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Tenants::WebhookTestResponse + + def initialize: (client: ArkEmail::Client) -> void + end + end + end +end diff --git a/sig/ark_email/resources/tracking.rbs b/sig/ark_email/resources/tracking.rbs deleted file mode 100644 index 91f8b25..0000000 --- a/sig/ark_email/resources/tracking.rbs +++ /dev/null @@ -1,44 +0,0 @@ -module ArkEmail - module Resources - class Tracking - def create: ( - domain_id: Integer, - name: String, - ?ssl_enabled: bool?, - ?track_clicks: bool?, - ?track_opens: bool?, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::TrackingCreateResponse - - def retrieve: ( - String tracking_id, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::TrackingRetrieveResponse - - def update: ( - String tracking_id, - ?excluded_click_domains: String?, - ?ssl_enabled: bool?, - ?track_clicks: bool?, - ?track_opens: bool?, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::TrackingUpdateResponse - - def list: ( - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::TrackingListResponse - - def delete: ( - String tracking_id, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::TrackingDeleteResponse - - def verify: ( - String tracking_id, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::TrackingVerifyResponse - - def initialize: (client: ArkEmail::Client) -> void - end - end -end diff --git a/sig/ark_email/resources/usage.rbs b/sig/ark_email/resources/usage.rbs index 50afcdc..b16b81a 100644 --- a/sig/ark_email/resources/usage.rbs +++ b/sig/ark_email/resources/usage.rbs @@ -2,8 +2,10 @@ module ArkEmail module Resources class Usage def retrieve: ( + ?period: String, + ?timezone: String, ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::UsageRetrieveResponse + ) -> ArkEmail::OrgUsageSummary def export: ( ?format_: ArkEmail::Models::UsageExportParams::format_, @@ -14,31 +16,16 @@ module ArkEmail ?request_options: ArkEmail::request_opts ) -> ArkEmail::Models::usage_export_response - def list_by_tenant: ( - ?limit: Integer, + def list_tenants: ( ?min_sent: Integer, - ?offset: Integer, - ?period: String, - ?sort: ArkEmail::Models::UsageListByTenantParams::sort, - ?status: ArkEmail::Models::UsageListByTenantParams::status, - ?timezone: String, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Internal::OffsetPagination[ArkEmail::BulkTenantUsage::Tenant] - - def retrieve_tenant_timeseries: ( - String tenant_id, - ?granularity: ArkEmail::Models::UsageRetrieveTenantTimeseriesParams::granularity, - ?period: String, - ?timezone: String, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse - - def retrieve_tenant_usage: ( - String tenant_id, + ?page: Integer, ?period: String, + ?per_page: Integer, + ?sort: ArkEmail::Models::UsageListTenantsParams::sort, + ?status: ArkEmail::Models::UsageListTenantsParams::status, ?timezone: String, ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::UsageRetrieveTenantUsageResponse + ) -> ArkEmail::Internal::PageNumberPagination[ArkEmail::TenantUsageItem] def initialize: (client: ArkEmail::Client) -> void end diff --git a/sig/ark_email/resources/webhooks.rbs b/sig/ark_email/resources/webhooks.rbs deleted file mode 100644 index 81eebe0..0000000 --- a/sig/ark_email/resources/webhooks.rbs +++ /dev/null @@ -1,69 +0,0 @@ -module ArkEmail - module Resources - class Webhooks - def create: ( - name: String, - url: String, - ?all_events: bool?, - ?enabled: bool?, - ?events: ::Array[ArkEmail::Models::WebhookCreateParams::event]?, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookCreateResponse - - def retrieve: ( - String webhook_id, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookRetrieveResponse - - def update: ( - String webhook_id, - ?all_events: bool?, - ?enabled: bool?, - ?events: ::Array[String]?, - ?name: String?, - ?url: String?, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookUpdateResponse - - def list: ( - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookListResponse - - def delete: ( - String webhook_id, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookDeleteResponse - - def list_deliveries: ( - String webhook_id, - ?after: Integer, - ?before: Integer, - ?event: ArkEmail::Models::WebhookListDeliveriesParams::event, - ?page: Integer, - ?per_page: Integer, - ?success: bool, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookListDeliveriesResponse - - def replay_delivery: ( - String delivery_id, - webhook_id: String, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookReplayDeliveryResponse - - def retrieve_delivery: ( - String delivery_id, - webhook_id: String, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookRetrieveDeliveryResponse - - def test_: ( - String webhook_id, - event: ArkEmail::Models::WebhookTestParams::event, - ?request_options: ArkEmail::request_opts - ) -> ArkEmail::Models::WebhookTestResponse - - def initialize: (client: ArkEmail::Client) -> void - end - end -end diff --git a/test/ark_email/resources/domains_test.rb b/test/ark_email/resources/domains_test.rb deleted file mode 100644 index 847066e..0000000 --- a/test/ark_email/resources/domains_test.rb +++ /dev/null @@ -1,85 +0,0 @@ -# frozen_string_literal: true - -require_relative "../test_helper" - -class ArkEmail::Test::Resources::DomainsTest < ArkEmail::Test::ResourceTest - def test_create_required_params - response = @ark.domains.create(name: "notifications.myapp.com", tenant_id: "cm6abc123def456") - - assert_pattern do - response => ArkEmail::Models::DomainCreateResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::DomainCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_retrieve - response = @ark.domains.retrieve("domainId") - - assert_pattern do - response => ArkEmail::Models::DomainRetrieveResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::DomainRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_list - response = @ark.domains.list - - assert_pattern do - response => ArkEmail::Models::DomainListResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::DomainListResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_delete - response = @ark.domains.delete("domainId") - - assert_pattern do - response => ArkEmail::Models::DomainDeleteResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::DomainDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_verify - response = @ark.domains.verify("domainId") - - assert_pattern do - response => ArkEmail::Models::DomainVerifyResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::DomainVerifyResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end -end diff --git a/test/ark_email/resources/suppressions_test.rb b/test/ark_email/resources/suppressions_test.rb deleted file mode 100644 index 45e69a5..0000000 --- a/test/ark_email/resources/suppressions_test.rb +++ /dev/null @@ -1,93 +0,0 @@ -# frozen_string_literal: true - -require_relative "../test_helper" - -class ArkEmail::Test::Resources::SuppressionsTest < ArkEmail::Test::ResourceTest - def test_create_required_params - response = @ark.suppressions.create(address: "user@example.com") - - assert_pattern do - response => ArkEmail::Models::SuppressionCreateResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::SuppressionCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_retrieve - response = @ark.suppressions.retrieve("dev@stainless.com") - - assert_pattern do - response => ArkEmail::Models::SuppressionRetrieveResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::SuppressionRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_list - response = @ark.suppressions.list - - assert_pattern do - response => ArkEmail::Internal::PageNumberPagination - end - - row = response.to_enum.first - return if row.nil? - - assert_pattern do - row => ArkEmail::Models::SuppressionListResponse - end - - assert_pattern do - row => { - id: String, - address: String, - created_at: Time, - reason: String | nil - } - end - end - - def test_delete - response = @ark.suppressions.delete("dev@stainless.com") - - assert_pattern do - response => ArkEmail::Models::SuppressionDeleteResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::SuppressionDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_bulk_create_required_params - response = @ark.suppressions.bulk_create(suppressions: [{address: "dev@stainless.com"}]) - - assert_pattern do - response => ArkEmail::Models::SuppressionBulkCreateResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::SuppressionBulkCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end -end diff --git a/test/ark_email/resources/tenants/domains_test.rb b/test/ark_email/resources/tenants/domains_test.rb new file mode 100644 index 0000000..aee9b4f --- /dev/null +++ b/test/ark_email/resources/tenants/domains_test.rb @@ -0,0 +1,85 @@ +# frozen_string_literal: true + +require_relative "../../test_helper" + +class ArkEmail::Test::Resources::Tenants::DomainsTest < ArkEmail::Test::ResourceTest + def test_create_required_params + response = @ark.tenants.domains.create("cm6abc123def456", name: "notifications.myapp.com") + + assert_pattern do + response => ArkEmail::Models::Tenants::DomainCreateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::DomainCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_required_params + response = @ark.tenants.domains.retrieve("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::DomainRetrieveResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::DomainRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_list + response = @ark.tenants.domains.list("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::DomainListResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::DomainListResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_delete_required_params + response = @ark.tenants.domains.delete("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::DomainDeleteResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::DomainDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_verify_required_params + response = @ark.tenants.domains.verify("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::DomainVerifyResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::DomainVerifyResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end +end diff --git a/test/ark_email/resources/tenants/suppressions_test.rb b/test/ark_email/resources/tenants/suppressions_test.rb new file mode 100644 index 0000000..b4c4770 --- /dev/null +++ b/test/ark_email/resources/tenants/suppressions_test.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +require_relative "../../test_helper" + +class ArkEmail::Test::Resources::Tenants::SuppressionsTest < ArkEmail::Test::ResourceTest + def test_create_required_params + response = @ark.tenants.suppressions.create("cm6abc123def456", address: "user@example.com") + + assert_pattern do + response => ArkEmail::Models::Tenants::SuppressionCreateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::SuppressionCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_required_params + response = @ark.tenants.suppressions.retrieve("user@example.com", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::SuppressionRetrieveResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::SuppressionRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_list + response = @ark.tenants.suppressions.list("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Internal::PageNumberPagination + end + + row = response.to_enum.first + return if row.nil? + + assert_pattern do + row => ArkEmail::Models::Tenants::SuppressionListResponse + end + + assert_pattern do + row => { + id: String, + address: String, + created_at: Time, + reason: String | nil + } + end + end + + def test_delete_required_params + response = @ark.tenants.suppressions.delete("user@example.com", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::SuppressionDeleteResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::SuppressionDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end +end diff --git a/test/ark_email/resources/tenants/tracking_test.rb b/test/ark_email/resources/tenants/tracking_test.rb new file mode 100644 index 0000000..702fcb9 --- /dev/null +++ b/test/ark_email/resources/tenants/tracking_test.rb @@ -0,0 +1,101 @@ +# frozen_string_literal: true + +require_relative "../../test_helper" + +class ArkEmail::Test::Resources::Tenants::TrackingTest < ArkEmail::Test::ResourceTest + def test_create_required_params + response = @ark.tenants.tracking.create("cm6abc123def456", domain_id: 123, name: "track") + + assert_pattern do + response => ArkEmail::Models::Tenants::TrackingCreateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_required_params + response = @ark.tenants.tracking.retrieve("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::TrackingRetrieveResponse + end + + assert_pattern do + response => { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_update_required_params + response = @ark.tenants.tracking.update("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::TrackingUpdateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Tenants::TrackDomain, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_list + response = @ark.tenants.tracking.list("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::TrackingListResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::TrackingListResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_delete_required_params + response = @ark.tenants.tracking.delete("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::TrackingDeleteResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::TrackingDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_verify_required_params + response = @ark.tenants.tracking.verify("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::TrackingVerifyResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::TrackingVerifyResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end +end diff --git a/test/ark_email/resources/tenants/usage_test.rb b/test/ark_email/resources/tenants/usage_test.rb new file mode 100644 index 0000000..a27ffdc --- /dev/null +++ b/test/ark_email/resources/tenants/usage_test.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require_relative "../../test_helper" + +class ArkEmail::Test::Resources::Tenants::UsageTest < ArkEmail::Test::ResourceTest + def test_retrieve + response = @ark.tenants.usage.retrieve("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::UsageRetrieveResponse + end + + assert_pattern do + response => { + data: ArkEmail::Tenants::TenantUsage, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_timeseries + response = @ark.tenants.usage.retrieve_timeseries("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::UsageRetrieveTimeseriesResponse + end + + assert_pattern do + response => { + data: ArkEmail::Tenants::TenantUsageTimeseries, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end +end diff --git a/test/ark_email/resources/tenants/webhooks_test.rb b/test/ark_email/resources/tenants/webhooks_test.rb new file mode 100644 index 0000000..6325c1c --- /dev/null +++ b/test/ark_email/resources/tenants/webhooks_test.rb @@ -0,0 +1,167 @@ +# frozen_string_literal: true + +require_relative "../../test_helper" + +class ArkEmail::Test::Resources::Tenants::WebhooksTest < ArkEmail::Test::ResourceTest + def test_create_required_params + response = + @ark.tenants.webhooks.create( + "cm6abc123def456", + name: "My App Webhook", + url: "https://myapp.com/webhooks/email" + ) + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookCreateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_required_params + response = @ark.tenants.webhooks.retrieve("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookRetrieveResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_update_required_params + response = @ark.tenants.webhooks.update("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookUpdateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_list + response = @ark.tenants.webhooks.list("cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookListResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::WebhookListResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_delete_required_params + response = @ark.tenants.webhooks.delete("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookDeleteResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_list_deliveries_required_params + response = @ark.tenants.webhooks.list_deliveries("123", tenant_id: "cm6abc123def456") + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookListDeliveriesResponse + end + + assert_pattern do + response => { + data: ^(ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::Tenants::WebhookListDeliveriesResponse::Data]), + meta: ArkEmail::APIMeta, + page: Integer, + per_page: Integer, + total: Integer, + total_pages: Integer + } + end + end + + def test_replay_delivery_required_params + response = + @ark.tenants.webhooks.replay_delivery( + "whr_abc123def456", + tenant_id: "cm6abc123def456", + webhook_id: "123" + ) + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_delivery_required_params + response = + @ark.tenants.webhooks.retrieve_delivery( + "whr_abc123def456", + tenant_id: "cm6abc123def456", + webhook_id: "123" + ) + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_test__required_params + response = @ark.tenants.webhooks.test_("123", tenant_id: "cm6abc123def456", event: :MessageSent) + + assert_pattern do + response => ArkEmail::Models::Tenants::WebhookTestResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Tenants::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end +end diff --git a/test/ark_email/resources/tracking_test.rb b/test/ark_email/resources/tracking_test.rb deleted file mode 100644 index 73db8d9..0000000 --- a/test/ark_email/resources/tracking_test.rb +++ /dev/null @@ -1,101 +0,0 @@ -# frozen_string_literal: true - -require_relative "../test_helper" - -class ArkEmail::Test::Resources::TrackingTest < ArkEmail::Test::ResourceTest - def test_create_required_params - response = @ark.tracking.create(domain_id: 123, name: "track") - - assert_pattern do - response => ArkEmail::Models::TrackingCreateResponse - end - - assert_pattern do - response => { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_retrieve - response = @ark.tracking.retrieve("trackingId") - - assert_pattern do - response => ArkEmail::Models::TrackingRetrieveResponse - end - - assert_pattern do - response => { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_update - response = @ark.tracking.update("trackingId") - - assert_pattern do - response => ArkEmail::Models::TrackingUpdateResponse - end - - assert_pattern do - response => { - data: ArkEmail::TrackDomain, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_list - response = @ark.tracking.list - - assert_pattern do - response => ArkEmail::Models::TrackingListResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::TrackingListResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_delete - response = @ark.tracking.delete("trackingId") - - assert_pattern do - response => ArkEmail::Models::TrackingDeleteResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::TrackingDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_verify - response = @ark.tracking.verify("trackingId") - - assert_pattern do - response => ArkEmail::Models::TrackingVerifyResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::TrackingVerifyResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end -end diff --git a/test/ark_email/resources/usage_test.rb b/test/ark_email/resources/usage_test.rb index 98e800e..1bc32ce 100644 --- a/test/ark_email/resources/usage_test.rb +++ b/test/ark_email/resources/usage_test.rb @@ -7,12 +7,12 @@ def test_retrieve response = @ark.usage.retrieve assert_pattern do - response => ArkEmail::Models::UsageRetrieveResponse + response => ArkEmail::OrgUsageSummary end assert_pattern do response => { - data: ArkEmail::LimitsData, + data: ArkEmail::OrgUsageSummary::Data, meta: ArkEmail::APIMeta, success: true | false } @@ -27,61 +27,29 @@ def test_export end end - def test_list_by_tenant - response = @ark.usage.list_by_tenant + def test_list_tenants + response = @ark.usage.list_tenants assert_pattern do - response => ArkEmail::Internal::OffsetPagination + response => ArkEmail::Internal::PageNumberPagination end row = response.to_enum.first return if row.nil? assert_pattern do - row => ArkEmail::BulkTenantUsage::Tenant + row => ArkEmail::TenantUsageItem end assert_pattern do row => { emails: ArkEmail::EmailCounts, rates: ArkEmail::EmailRates, - status: ArkEmail::BulkTenantUsage::Tenant::Status, + status: ArkEmail::TenantUsageItem::Status, tenant_id: String, tenant_name: String, external_id: String | nil } end end - - def test_retrieve_tenant_timeseries - response = @ark.usage.retrieve_tenant_timeseries("cm6abc123def456") - - assert_pattern do - response => ArkEmail::Models::UsageRetrieveTenantTimeseriesResponse - end - - assert_pattern do - response => { - data: ArkEmail::TenantUsageTimeseries, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_retrieve_tenant_usage - response = @ark.usage.retrieve_tenant_usage("cm6abc123def456") - - assert_pattern do - response => ArkEmail::Models::UsageRetrieveTenantUsageResponse - end - - assert_pattern do - response => { - data: ArkEmail::TenantUsage, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end end diff --git a/test/ark_email/resources/webhooks_test.rb b/test/ark_email/resources/webhooks_test.rb deleted file mode 100644 index ccec17e..0000000 --- a/test/ark_email/resources/webhooks_test.rb +++ /dev/null @@ -1,152 +0,0 @@ -# frozen_string_literal: true - -require_relative "../test_helper" - -class ArkEmail::Test::Resources::WebhooksTest < ArkEmail::Test::ResourceTest - def test_create_required_params - response = @ark.webhooks.create(name: "My App Webhook", url: "https://myapp.com/webhooks/email") - - assert_pattern do - response => ArkEmail::Models::WebhookCreateResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::WebhookCreateResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_retrieve - response = @ark.webhooks.retrieve("webhookId") - - assert_pattern do - response => ArkEmail::Models::WebhookRetrieveResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::WebhookRetrieveResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_update - response = @ark.webhooks.update("webhookId") - - assert_pattern do - response => ArkEmail::Models::WebhookUpdateResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::WebhookUpdateResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_list - response = @ark.webhooks.list - - assert_pattern do - response => ArkEmail::Models::WebhookListResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::WebhookListResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_delete - response = @ark.webhooks.delete("webhookId") - - assert_pattern do - response => ArkEmail::Models::WebhookDeleteResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::WebhookDeleteResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_list_deliveries - response = @ark.webhooks.list_deliveries("webhookId") - - assert_pattern do - response => ArkEmail::Models::WebhookListDeliveriesResponse - end - - assert_pattern do - response => { - data: ^(ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::WebhookListDeliveriesResponse::Data]), - meta: ArkEmail::APIMeta, - page: Integer, - per_page: Integer, - total: Integer, - total_pages: Integer - } - end - end - - def test_replay_delivery_required_params - response = @ark.webhooks.replay_delivery("deliveryId", webhook_id: "webhookId") - - assert_pattern do - response => ArkEmail::Models::WebhookReplayDeliveryResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::WebhookReplayDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_retrieve_delivery_required_params - response = @ark.webhooks.retrieve_delivery("deliveryId", webhook_id: "webhookId") - - assert_pattern do - response => ArkEmail::Models::WebhookRetrieveDeliveryResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end - - def test_test__required_params - response = @ark.webhooks.test_("webhookId", event: :MessageSent) - - assert_pattern do - response => ArkEmail::Models::WebhookTestResponse - end - - assert_pattern do - response => { - data: ArkEmail::Models::WebhookTestResponse::Data, - meta: ArkEmail::APIMeta, - success: true | false - } - end - end -end From 56ac1617e16253ec182b5705621159edddb8791c Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 20:33:43 +0000 Subject: [PATCH 6/8] feat(api): add Platform webhooks --- .stats.yml | 8 +- lib/ark_email.rb | 20 ++ lib/ark_email/client.rb | 4 + lib/ark_email/models.rb | 2 + .../models/platform/webhook_create_params.rb | 57 ++++ .../platform/webhook_create_response.rb | 105 ++++++ .../models/platform/webhook_delete_params.rb | 16 + .../platform/webhook_delete_response.rb | 41 +++ .../webhook_list_deliveries_params.rb | 97 ++++++ .../webhook_list_deliveries_response.rb | 112 +++++++ .../models/platform/webhook_list_params.rb | 16 + .../models/platform/webhook_list_response.rb | 77 +++++ .../webhook_replay_delivery_params.rb | 16 + .../webhook_replay_delivery_response.rb | 84 +++++ .../webhook_retrieve_delivery_params.rb | 16 + .../webhook_retrieve_delivery_response.rb | 182 ++++++++++ .../platform/webhook_retrieve_params.rb | 16 + .../platform/webhook_retrieve_response.rb | 105 ++++++ .../models/platform/webhook_test_params.rb | 41 +++ .../models/platform/webhook_test_response.rb | 66 ++++ .../models/platform/webhook_update_params.rb | 65 ++++ .../platform/webhook_update_response.rb | 105 ++++++ lib/ark_email/resources/platform.rb | 18 + lib/ark_email/resources/platform/webhooks.rb | 289 ++++++++++++++++ rbi/ark_email/client.rbi | 3 + rbi/ark_email/models.rbi | 2 + .../models/platform/webhook_create_params.rbi | 145 ++++++++ .../platform/webhook_create_response.rbi | 215 ++++++++++++ .../models/platform/webhook_delete_params.rbi | 32 ++ .../platform/webhook_delete_response.rbi | 81 +++++ .../webhook_list_deliveries_params.rbi | 206 ++++++++++++ .../webhook_list_deliveries_response.rbi | 186 +++++++++++ .../models/platform/webhook_list_params.rbi | 32 ++ .../models/platform/webhook_list_response.rbi | 124 +++++++ .../webhook_replay_delivery_params.rbi | 32 ++ .../webhook_replay_delivery_response.rbi | 141 ++++++++ .../webhook_retrieve_delivery_params.rbi | 32 ++ .../webhook_retrieve_delivery_response.rbi | 315 ++++++++++++++++++ .../platform/webhook_retrieve_params.rbi | 32 ++ .../platform/webhook_retrieve_response.rbi | 217 ++++++++++++ .../models/platform/webhook_test_params.rbi | 110 ++++++ .../models/platform/webhook_test_response.rbi | 117 +++++++ .../models/platform/webhook_update_params.rbi | 162 +++++++++ .../platform/webhook_update_response.rbi | 215 ++++++++++++ rbi/ark_email/resources/platform.rbi | 15 + rbi/ark_email/resources/platform/webhooks.rbi | 246 ++++++++++++++ sig/ark_email/client.rbs | 2 + sig/ark_email/models.rbs | 2 + .../models/platform/webhook_create_params.rbs | 67 ++++ .../platform/webhook_create_response.rbs | 104 ++++++ .../models/platform/webhook_delete_params.rbs | 17 + .../platform/webhook_delete_response.rbs | 42 +++ .../webhook_list_deliveries_params.rbs | 106 ++++++ .../webhook_list_deliveries_response.rbs | 92 +++++ .../models/platform/webhook_list_params.rbs | 17 + .../models/platform/webhook_list_response.rbs | 74 ++++ .../webhook_replay_delivery_params.rbs | 17 + .../webhook_replay_delivery_response.rbs | 74 ++++ .../webhook_retrieve_delivery_params.rbs | 17 + .../webhook_retrieve_delivery_response.rbs | 146 ++++++++ .../platform/webhook_retrieve_params.rbs | 17 + .../platform/webhook_retrieve_response.rbs | 104 ++++++ .../models/platform/webhook_test_params.rbs | 51 +++ .../models/platform/webhook_test_response.rbs | 64 ++++ .../models/platform/webhook_update_params.rbs | 78 +++++ .../platform/webhook_update_response.rbs | 104 ++++++ sig/ark_email/resources/platform.rbs | 9 + sig/ark_email/resources/platform/webhooks.rbs | 67 ++++ test/ark_email/resource_namespaces.rb | 3 + .../resources/platform/webhooks_test.rb | 167 ++++++++++ test/ark_email/resources/platform_test.rb | 6 + 71 files changed, 5661 insertions(+), 4 deletions(-) create mode 100644 lib/ark_email/models/platform/webhook_create_params.rb create mode 100644 lib/ark_email/models/platform/webhook_create_response.rb create mode 100644 lib/ark_email/models/platform/webhook_delete_params.rb create mode 100644 lib/ark_email/models/platform/webhook_delete_response.rb create mode 100644 lib/ark_email/models/platform/webhook_list_deliveries_params.rb create mode 100644 lib/ark_email/models/platform/webhook_list_deliveries_response.rb create mode 100644 lib/ark_email/models/platform/webhook_list_params.rb create mode 100644 lib/ark_email/models/platform/webhook_list_response.rb create mode 100644 lib/ark_email/models/platform/webhook_replay_delivery_params.rb create mode 100644 lib/ark_email/models/platform/webhook_replay_delivery_response.rb create mode 100644 lib/ark_email/models/platform/webhook_retrieve_delivery_params.rb create mode 100644 lib/ark_email/models/platform/webhook_retrieve_delivery_response.rb create mode 100644 lib/ark_email/models/platform/webhook_retrieve_params.rb create mode 100644 lib/ark_email/models/platform/webhook_retrieve_response.rb create mode 100644 lib/ark_email/models/platform/webhook_test_params.rb create mode 100644 lib/ark_email/models/platform/webhook_test_response.rb create mode 100644 lib/ark_email/models/platform/webhook_update_params.rb create mode 100644 lib/ark_email/models/platform/webhook_update_response.rb create mode 100644 lib/ark_email/resources/platform.rb create mode 100644 lib/ark_email/resources/platform/webhooks.rb create mode 100644 rbi/ark_email/models/platform/webhook_create_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_create_response.rbi create mode 100644 rbi/ark_email/models/platform/webhook_delete_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_delete_response.rbi create mode 100644 rbi/ark_email/models/platform/webhook_list_deliveries_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_list_deliveries_response.rbi create mode 100644 rbi/ark_email/models/platform/webhook_list_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_list_response.rbi create mode 100644 rbi/ark_email/models/platform/webhook_replay_delivery_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_replay_delivery_response.rbi create mode 100644 rbi/ark_email/models/platform/webhook_retrieve_delivery_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_retrieve_delivery_response.rbi create mode 100644 rbi/ark_email/models/platform/webhook_retrieve_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_retrieve_response.rbi create mode 100644 rbi/ark_email/models/platform/webhook_test_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_test_response.rbi create mode 100644 rbi/ark_email/models/platform/webhook_update_params.rbi create mode 100644 rbi/ark_email/models/platform/webhook_update_response.rbi create mode 100644 rbi/ark_email/resources/platform.rbi create mode 100644 rbi/ark_email/resources/platform/webhooks.rbi create mode 100644 sig/ark_email/models/platform/webhook_create_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_create_response.rbs create mode 100644 sig/ark_email/models/platform/webhook_delete_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_delete_response.rbs create mode 100644 sig/ark_email/models/platform/webhook_list_deliveries_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_list_deliveries_response.rbs create mode 100644 sig/ark_email/models/platform/webhook_list_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_list_response.rbs create mode 100644 sig/ark_email/models/platform/webhook_replay_delivery_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_replay_delivery_response.rbs create mode 100644 sig/ark_email/models/platform/webhook_retrieve_delivery_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_retrieve_delivery_response.rbs create mode 100644 sig/ark_email/models/platform/webhook_retrieve_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_retrieve_response.rbs create mode 100644 sig/ark_email/models/platform/webhook_test_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_test_response.rbs create mode 100644 sig/ark_email/models/platform/webhook_update_params.rbs create mode 100644 sig/ark_email/models/platform/webhook_update_response.rbs create mode 100644 sig/ark_email/resources/platform.rbs create mode 100644 sig/ark_email/resources/platform/webhooks.rbs create mode 100644 test/ark_email/resources/platform/webhooks_test.rb create mode 100644 test/ark_email/resources/platform_test.rb diff --git a/.stats.yml b/.stats.yml index 8c774e8..f1de74b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 49 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-37bce0c9a4d738ca0eed70eb9c19cd4528a79eec733c2b4366217fb2c31abd78.yml -openapi_spec_hash: 7dbd1f812cf95dfa8ba631ced146e255 -config_hash: 1c0067ab4449e3fb20b923cd64edc829 +configured_endpoints: 58 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/ark%2Fark-ee4b9d190e3aaa146b08bc0ffed1c802dc353c3fdc37fc0097f2350ab3714b70.yml +openapi_spec_hash: 0dad8b2e562ba7ce879425ab92169d85 +config_hash: b70b11b10fc614f91f1c6f028b40780f diff --git a/lib/ark_email.rb b/lib/ark_email.rb index 7d2aa97..7f987aa 100644 --- a/lib/ark_email.rb +++ b/lib/ark_email.rb @@ -79,6 +79,24 @@ require_relative "ark_email/models/log_retrieve_params" require_relative "ark_email/models/log_retrieve_response" require_relative "ark_email/models/org_usage_summary" +require_relative "ark_email/models/platform/webhook_create_params" +require_relative "ark_email/models/platform/webhook_create_response" +require_relative "ark_email/models/platform/webhook_delete_params" +require_relative "ark_email/models/platform/webhook_delete_response" +require_relative "ark_email/models/platform/webhook_list_deliveries_params" +require_relative "ark_email/models/platform/webhook_list_deliveries_response" +require_relative "ark_email/models/platform/webhook_list_params" +require_relative "ark_email/models/platform/webhook_list_response" +require_relative "ark_email/models/platform/webhook_replay_delivery_params" +require_relative "ark_email/models/platform/webhook_replay_delivery_response" +require_relative "ark_email/models/platform/webhook_retrieve_delivery_params" +require_relative "ark_email/models/platform/webhook_retrieve_delivery_response" +require_relative "ark_email/models/platform/webhook_retrieve_params" +require_relative "ark_email/models/platform/webhook_retrieve_response" +require_relative "ark_email/models/platform/webhook_test_params" +require_relative "ark_email/models/platform/webhook_test_response" +require_relative "ark_email/models/platform/webhook_update_params" +require_relative "ark_email/models/platform/webhook_update_response" require_relative "ark_email/models/tenant" require_relative "ark_email/models/tenant_create_params" require_relative "ark_email/models/tenant_create_response" @@ -165,6 +183,8 @@ require_relative "ark_email/resources/emails" require_relative "ark_email/resources/limits" require_relative "ark_email/resources/logs" +require_relative "ark_email/resources/platform" +require_relative "ark_email/resources/platform/webhooks" require_relative "ark_email/resources/tenants" require_relative "ark_email/resources/tenants/credentials" require_relative "ark_email/resources/tenants/domains" diff --git a/lib/ark_email/client.rb b/lib/ark_email/client.rb index 39c2f67..273e93b 100644 --- a/lib/ark_email/client.rb +++ b/lib/ark_email/client.rb @@ -39,6 +39,9 @@ class Client < ArkEmail::Internal::Transport::BaseClient # @return [ArkEmail::Resources::Tenants] attr_reader :tenants + # @return [ArkEmail::Resources::Platform] + attr_reader :platform + # @api private # # @return [Hash{String=>String}] @@ -97,6 +100,7 @@ def initialize( @usage = ArkEmail::Resources::Usage.new(client: self) @limits = ArkEmail::Resources::Limits.new(client: self) @tenants = ArkEmail::Resources::Tenants.new(client: self) + @platform = ArkEmail::Resources::Platform.new(client: self) end end end diff --git a/lib/ark_email/models.rb b/lib/ark_email/models.rb index dbe20be..20f8976 100644 --- a/lib/ark_email/models.rb +++ b/lib/ark_email/models.rb @@ -73,6 +73,8 @@ module ArkEmail OrgUsageSummary = ArkEmail::Models::OrgUsageSummary + Platform = ArkEmail::Models::Platform + Tenant = ArkEmail::Models::Tenant TenantCreateParams = ArkEmail::Models::TenantCreateParams diff --git a/lib/ark_email/models/platform/webhook_create_params.rb b/lib/ark_email/models/platform/webhook_create_params.rb new file mode 100644 index 0000000..769f9a9 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_create_params.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#create + class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute name + # Display name for the webhook + # + # @return [String] + required :name, String + + # @!attribute url + # Webhook endpoint URL (must be HTTPS) + # + # @return [String] + required :url, String + + # @!attribute events + # Events to subscribe to. Empty array means all events. + # + # @return [Array, nil] + optional :events, + -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Platform::WebhookCreateParams::Event] } + + # @!method initialize(name:, url:, events: nil, request_options: {}) + # @param name [String] Display name for the webhook + # + # @param url [String] Webhook endpoint URL (must be HTTPS) + # + # @param events [Array] Events to subscribe to. Empty array means all events. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_create_response.rb b/lib/ark_email/models/platform/webhook_create_response.rb new file mode 100644 index 0000000..d0d873a --- /dev/null +++ b/lib/ark_email/models/platform/webhook_create_response.rb @@ -0,0 +1,105 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#create + class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Platform::WebhookCreateResponse::Data] + required :data, -> { ArkEmail::Models::Platform::WebhookCreateResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Platform::WebhookCreateResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Platform::WebhookCreateResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Platform webhook ID + # + # @return [String] + required :id, String + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute enabled + # Whether the webhook is active + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # Subscribed events (empty = all events) + # + # @return [Array] + required :events, + -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event] } + + # @!attribute name + # Webhook name for identification + # + # @return [String] + required :name, String + + # @!attribute updated_at + # + # @return [Time] + required :updated_at, Time, api_name: :updatedAt + + # @!attribute url + # Webhook endpoint URL + # + # @return [String] + required :url, String + + # @!method initialize(id:, created_at:, enabled:, events:, name:, updated_at:, url:) + # @param id [String] Platform webhook ID + # + # @param created_at [Time] + # + # @param enabled [Boolean] Whether the webhook is active + # + # @param events [Array] Subscribed events (empty = all events) + # + # @param name [String] Webhook name for identification + # + # @param updated_at [Time] + # + # @param url [String] Webhook endpoint URL + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_delete_params.rb b/lib/ark_email/models/platform/webhook_delete_params.rb new file mode 100644 index 0000000..0d0309b --- /dev/null +++ b/lib/ark_email/models/platform/webhook_delete_params.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#delete + class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_delete_response.rb b/lib/ark_email/models/platform/webhook_delete_response.rb new file mode 100644 index 0000000..7a5b85f --- /dev/null +++ b/lib/ark_email/models/platform/webhook_delete_response.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#delete + class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Platform::WebhookDeleteResponse::Data] + required :data, -> { ArkEmail::Models::Platform::WebhookDeleteResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Platform::WebhookDeleteResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Platform::WebhookDeleteResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute message + # + # @return [String] + required :message, String + + # @!method initialize(message:) + # @param message [String] + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_list_deliveries_params.rb b/lib/ark_email/models/platform/webhook_list_deliveries_params.rb new file mode 100644 index 0000000..dc845d9 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_list_deliveries_params.rb @@ -0,0 +1,97 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#list_deliveries + class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute after + # Only deliveries after this Unix timestamp + # + # @return [Integer, nil] + optional :after, Integer + + # @!attribute before + # Only deliveries before this Unix timestamp + # + # @return [Integer, nil] + optional :before, Integer + + # @!attribute event + # Filter by event type + # + # @return [Symbol, ArkEmail::Models::Platform::WebhookListDeliveriesParams::Event, nil] + optional :event, enum: -> { ArkEmail::Platform::WebhookListDeliveriesParams::Event } + + # @!attribute page + # Page number (default 1) + # + # @return [Integer, nil] + optional :page, Integer + + # @!attribute per_page + # Items per page (default 30, max 100) + # + # @return [Integer, nil] + optional :per_page, Integer + + # @!attribute success + # Filter by delivery success + # + # @return [Boolean, nil] + optional :success, ArkEmail::Internal::Type::Boolean + + # @!attribute tenant_id + # Filter by tenant ID + # + # @return [String, nil] + optional :tenant_id, String + + # @!attribute webhook_id + # Filter by platform webhook ID + # + # @return [String, nil] + optional :webhook_id, String + + # @!method initialize(after: nil, before: nil, event: nil, page: nil, per_page: nil, success: nil, tenant_id: nil, webhook_id: nil, request_options: {}) + # @param after [Integer] Only deliveries after this Unix timestamp + # + # @param before [Integer] Only deliveries before this Unix timestamp + # + # @param event [Symbol, ArkEmail::Models::Platform::WebhookListDeliveriesParams::Event] Filter by event type + # + # @param page [Integer] Page number (default 1) + # + # @param per_page [Integer] Items per page (default 30, max 100) + # + # @param success [Boolean] Filter by delivery success + # + # @param tenant_id [String] Filter by tenant ID + # + # @param webhook_id [String] Filter by platform webhook ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Filter by event type + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_list_deliveries_response.rb b/lib/ark_email/models/platform/webhook_list_deliveries_response.rb new file mode 100644 index 0000000..4c25588 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_list_deliveries_response.rb @@ -0,0 +1,112 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#list_deliveries + class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique delivery ID + # + # @return [String] + required :id, String + + # @!attribute attempt + # Attempt number (1 for first attempt, higher for retries) + # + # @return [Integer] + required :attempt, Integer + + # @!attribute event + # Event type + # + # @return [Symbol, ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event] + required :event, enum: -> { ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event } + + # @!attribute status_code + # HTTP status code returned by your endpoint (null if connection failed) + # + # @return [Integer, nil] + required :status_code, Integer, api_name: :statusCode, nil?: true + + # @!attribute success + # Whether delivery was successful (2xx response) + # + # @return [Boolean] + required :success, ArkEmail::Internal::Type::Boolean + + # @!attribute tenant_id + # Tenant that triggered the event + # + # @return [String] + required :tenant_id, String, api_name: :tenantId + + # @!attribute timestamp + # When the delivery was attempted + # + # @return [Time] + required :timestamp, Time + + # @!attribute url + # Endpoint URL the delivery was sent to + # + # @return [String] + required :url, String + + # @!attribute webhook_id + # Platform webhook ID + # + # @return [String] + required :webhook_id, String, api_name: :webhookId + + # @!attribute will_retry + # Whether this delivery will be retried + # + # @return [Boolean] + required :will_retry, ArkEmail::Internal::Type::Boolean, api_name: :willRetry + + # @!method initialize(id:, attempt:, event:, status_code:, success:, tenant_id:, timestamp:, url:, webhook_id:, will_retry:) + # Summary of a platform webhook delivery attempt + # + # @param id [String] Unique delivery ID + # + # @param attempt [Integer] Attempt number (1 for first attempt, higher for retries) + # + # @param event [Symbol, ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event] Event type + # + # @param status_code [Integer, nil] HTTP status code returned by your endpoint (null if connection failed) + # + # @param success [Boolean] Whether delivery was successful (2xx response) + # + # @param tenant_id [String] Tenant that triggered the event + # + # @param timestamp [Time] When the delivery was attempted + # + # @param url [String] Endpoint URL the delivery was sent to + # + # @param webhook_id [String] Platform webhook ID + # + # @param will_retry [Boolean] Whether this delivery will be retried + + # Event type + # + # @see ArkEmail::Models::Platform::WebhookListDeliveriesResponse#event + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_list_params.rb b/lib/ark_email/models/platform/webhook_list_params.rb new file mode 100644 index 0000000..8f9e215 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_list_params.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#list + class WebhookListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_list_response.rb b/lib/ark_email/models/platform/webhook_list_response.rb new file mode 100644 index 0000000..cf8353a --- /dev/null +++ b/lib/ark_email/models/platform/webhook_list_response.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#list + class WebhookListResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [Array] + required :data, + -> { ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::Platform::WebhookListResponse::Data] } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [Array] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Platform webhook ID + # + # @return [String] + required :id, String + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute enabled + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # + # @return [Array] + required :events, ArkEmail::Internal::Type::ArrayOf[String] + + # @!attribute name + # + # @return [String] + required :name, String + + # @!attribute url + # + # @return [String] + required :url, String + + # @!method initialize(id:, created_at:, enabled:, events:, name:, url:) + # @param id [String] Platform webhook ID + # + # @param created_at [Time] + # + # @param enabled [Boolean] + # + # @param events [Array] + # + # @param name [String] + # + # @param url [String] + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_replay_delivery_params.rb b/lib/ark_email/models/platform/webhook_replay_delivery_params.rb new file mode 100644 index 0000000..6f8ff7d --- /dev/null +++ b/lib/ark_email/models/platform/webhook_replay_delivery_params.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#replay_delivery + class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_replay_delivery_response.rb b/lib/ark_email/models/platform/webhook_replay_delivery_response.rb new file mode 100644 index 0000000..3d7d464 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_replay_delivery_response.rb @@ -0,0 +1,84 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#replay_delivery + class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data] + required :data, -> { ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # Result of replaying a platform webhook delivery + # + # @param data [ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Platform::WebhookReplayDeliveryResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute duration + # Request duration in milliseconds + # + # @return [Integer] + required :duration, Integer + + # @!attribute new_delivery_id + # ID of the new delivery created by the replay + # + # @return [String] + required :new_delivery_id, String, api_name: :newDeliveryId + + # @!attribute original_delivery_id + # ID of the original delivery that was replayed + # + # @return [String] + required :original_delivery_id, String, api_name: :originalDeliveryId + + # @!attribute status_code + # HTTP status code from your endpoint + # + # @return [Integer, nil] + required :status_code, Integer, api_name: :statusCode, nil?: true + + # @!attribute success + # Whether the replay was successful + # + # @return [Boolean] + required :success, ArkEmail::Internal::Type::Boolean + + # @!attribute timestamp + # When the replay was executed + # + # @return [Time] + required :timestamp, Time + + # @!method initialize(duration:, new_delivery_id:, original_delivery_id:, status_code:, success:, timestamp:) + # @param duration [Integer] Request duration in milliseconds + # + # @param new_delivery_id [String] ID of the new delivery created by the replay + # + # @param original_delivery_id [String] ID of the original delivery that was replayed + # + # @param status_code [Integer, nil] HTTP status code from your endpoint + # + # @param success [Boolean] Whether the replay was successful + # + # @param timestamp [Time] When the replay was executed + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_retrieve_delivery_params.rb b/lib/ark_email/models/platform/webhook_retrieve_delivery_params.rb new file mode 100644 index 0000000..e12e0c3 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_retrieve_delivery_params.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#retrieve_delivery + class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_retrieve_delivery_response.rb b/lib/ark_email/models/platform/webhook_retrieve_delivery_response.rb new file mode 100644 index 0000000..ad7436d --- /dev/null +++ b/lib/ark_email/models/platform/webhook_retrieve_delivery_response.rb @@ -0,0 +1,182 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#retrieve_delivery + class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data] + required :data, -> { ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Unique delivery ID + # + # @return [String] + required :id, String + + # @!attribute attempt + # Attempt number + # + # @return [Integer] + required :attempt, Integer + + # @!attribute event + # Event type + # + # @return [String] + required :event, String + + # @!attribute request + # Request details + # + # @return [ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request] + required :request, -> { ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request } + + # @!attribute response + # Response details + # + # @return [ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response] + required :response, -> { ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response } + + # @!attribute status_code + # HTTP status code from your endpoint + # + # @return [Integer, nil] + required :status_code, Integer, api_name: :statusCode, nil?: true + + # @!attribute success + # Whether delivery was successful + # + # @return [Boolean] + required :success, ArkEmail::Internal::Type::Boolean + + # @!attribute tenant_id + # Tenant that triggered the event + # + # @return [String] + required :tenant_id, String, api_name: :tenantId + + # @!attribute timestamp + # When delivery was attempted + # + # @return [Time] + required :timestamp, Time + + # @!attribute url + # Endpoint URL + # + # @return [String] + required :url, String + + # @!attribute webhook_id + # Platform webhook ID + # + # @return [String] + required :webhook_id, String, api_name: :webhookId + + # @!attribute webhook_name + # Platform webhook name + # + # @return [String] + required :webhook_name, String, api_name: :webhookName + + # @!attribute will_retry + # Whether this will be retried + # + # @return [Boolean] + required :will_retry, ArkEmail::Internal::Type::Boolean, api_name: :willRetry + + # @!method initialize(id:, attempt:, event:, request:, response:, status_code:, success:, tenant_id:, timestamp:, url:, webhook_id:, webhook_name:, will_retry:) + # @param id [String] Unique delivery ID + # + # @param attempt [Integer] Attempt number + # + # @param event [String] Event type + # + # @param request [ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request] Request details + # + # @param response [ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response] Response details + # + # @param status_code [Integer, nil] HTTP status code from your endpoint + # + # @param success [Boolean] Whether delivery was successful + # + # @param tenant_id [String] Tenant that triggered the event + # + # @param timestamp [Time] When delivery was attempted + # + # @param url [String] Endpoint URL + # + # @param webhook_id [String] Platform webhook ID + # + # @param webhook_name [String] Platform webhook name + # + # @param will_retry [Boolean] Whether this will be retried + + # @see ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data#request + class Request < ArkEmail::Internal::Type::BaseModel + # @!attribute headers + # Request headers including signature + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, ArkEmail::Internal::Type::HashOf[String] + + # @!attribute payload + # The complete webhook payload that was sent + # + # @return [Hash{Symbol=>Object}, nil] + optional :payload, ArkEmail::Internal::Type::HashOf[ArkEmail::Internal::Type::Unknown] + + # @!method initialize(headers: nil, payload: nil) + # Request details + # + # @param headers [Hash{Symbol=>String}] Request headers including signature + # + # @param payload [Hash{Symbol=>Object}] The complete webhook payload that was sent + end + + # @see ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data#response + class Response < ArkEmail::Internal::Type::BaseModel + # @!attribute body + # Response body (truncated if too large) + # + # @return [String, nil] + optional :body, String, nil?: true + + # @!attribute duration + # Response time in milliseconds + # + # @return [Integer, nil] + optional :duration, Integer + + # @!method initialize(body: nil, duration: nil) + # Response details + # + # @param body [String, nil] Response body (truncated if too large) + # + # @param duration [Integer] Response time in milliseconds + end + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_retrieve_params.rb b/lib/ark_email/models/platform/webhook_retrieve_params.rb new file mode 100644 index 0000000..669b86f --- /dev/null +++ b/lib/ark_email/models/platform/webhook_retrieve_params.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#retrieve + class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!method initialize(request_options: {}) + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_retrieve_response.rb b/lib/ark_email/models/platform/webhook_retrieve_response.rb new file mode 100644 index 0000000..0b48d80 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_retrieve_response.rb @@ -0,0 +1,105 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#retrieve + class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Platform::WebhookRetrieveResponse::Data] + required :data, -> { ArkEmail::Models::Platform::WebhookRetrieveResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Platform::WebhookRetrieveResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Platform::WebhookRetrieveResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Platform webhook ID + # + # @return [String] + required :id, String + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute enabled + # Whether the webhook is active + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # Subscribed events (empty = all events) + # + # @return [Array] + required :events, + -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event] } + + # @!attribute name + # Webhook name for identification + # + # @return [String] + required :name, String + + # @!attribute updated_at + # + # @return [Time] + required :updated_at, Time, api_name: :updatedAt + + # @!attribute url + # Webhook endpoint URL + # + # @return [String] + required :url, String + + # @!method initialize(id:, created_at:, enabled:, events:, name:, updated_at:, url:) + # @param id [String] Platform webhook ID + # + # @param created_at [Time] + # + # @param enabled [Boolean] Whether the webhook is active + # + # @param events [Array] Subscribed events (empty = all events) + # + # @param name [String] Webhook name for identification + # + # @param updated_at [Time] + # + # @param url [String] Webhook endpoint URL + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_test_params.rb b/lib/ark_email/models/platform/webhook_test_params.rb new file mode 100644 index 0000000..e4f2502 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_test_params.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#test_ + class WebhookTestParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute event + # Event type to simulate + # + # @return [Symbol, ArkEmail::Models::Platform::WebhookTestParams::Event] + required :event, enum: -> { ArkEmail::Platform::WebhookTestParams::Event } + + # @!method initialize(event:, request_options: {}) + # @param event [Symbol, ArkEmail::Models::Platform::WebhookTestParams::Event] Event type to simulate + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + # Event type to simulate + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_test_response.rb b/lib/ark_email/models/platform/webhook_test_response.rb new file mode 100644 index 0000000..e8712ca --- /dev/null +++ b/lib/ark_email/models/platform/webhook_test_response.rb @@ -0,0 +1,66 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#test_ + class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Platform::WebhookTestResponse::Data] + required :data, -> { ArkEmail::Models::Platform::WebhookTestResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Platform::WebhookTestResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Platform::WebhookTestResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute duration_ms + # Request duration in milliseconds + # + # @return [Integer] + required :duration_ms, Integer, api_name: :durationMs + + # @!attribute status_code + # HTTP status code from the webhook endpoint + # + # @return [Integer] + required :status_code, Integer, api_name: :statusCode + + # @!attribute success + # Whether the webhook endpoint responded with a 2xx status + # + # @return [Boolean] + required :success, ArkEmail::Internal::Type::Boolean + + # @!attribute error + # Error message if the request failed + # + # @return [String, nil] + optional :error, String, nil?: true + + # @!method initialize(duration_ms:, status_code:, success:, error: nil) + # @param duration_ms [Integer] Request duration in milliseconds + # + # @param status_code [Integer] HTTP status code from the webhook endpoint + # + # @param success [Boolean] Whether the webhook endpoint responded with a 2xx status + # + # @param error [String, nil] Error message if the request failed + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_update_params.rb b/lib/ark_email/models/platform/webhook_update_params.rb new file mode 100644 index 0000000..86240c7 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_update_params.rb @@ -0,0 +1,65 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#update + class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + # @!attribute enabled + # Enable or disable the webhook + # + # @return [Boolean, nil] + optional :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # Events to subscribe to. Empty array means all events. + # + # @return [Array, nil] + optional :events, + -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Platform::WebhookUpdateParams::Event] } + + # @!attribute name + # Display name for the webhook + # + # @return [String, nil] + optional :name, String + + # @!attribute url + # Webhook endpoint URL (must be HTTPS) + # + # @return [String, nil] + optional :url, String + + # @!method initialize(enabled: nil, events: nil, name: nil, url: nil, request_options: {}) + # @param enabled [Boolean] Enable or disable the webhook + # + # @param events [Array] Events to subscribe to. Empty array means all events. + # + # @param name [String] Display name for the webhook + # + # @param url [String] Webhook endpoint URL (must be HTTPS) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}] + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end +end diff --git a/lib/ark_email/models/platform/webhook_update_response.rb b/lib/ark_email/models/platform/webhook_update_response.rb new file mode 100644 index 0000000..c479e13 --- /dev/null +++ b/lib/ark_email/models/platform/webhook_update_response.rb @@ -0,0 +1,105 @@ +# frozen_string_literal: true + +module ArkEmail + module Models + module Platform + # @see ArkEmail::Resources::Platform::Webhooks#update + class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel + # @!attribute data + # + # @return [ArkEmail::Models::Platform::WebhookUpdateResponse::Data] + required :data, -> { ArkEmail::Models::Platform::WebhookUpdateResponse::Data } + + # @!attribute meta + # + # @return [ArkEmail::Models::APIMeta] + required :meta, -> { ArkEmail::APIMeta } + + # @!attribute success + # + # @return [Boolean, true] + required :success, const: true + + # @!method initialize(data:, meta:, success: true) + # @param data [ArkEmail::Models::Platform::WebhookUpdateResponse::Data] + # @param meta [ArkEmail::Models::APIMeta] + # @param success [Boolean, true] + + # @see ArkEmail::Models::Platform::WebhookUpdateResponse#data + class Data < ArkEmail::Internal::Type::BaseModel + # @!attribute id + # Platform webhook ID + # + # @return [String] + required :id, String + + # @!attribute created_at + # + # @return [Time] + required :created_at, Time, api_name: :createdAt + + # @!attribute enabled + # Whether the webhook is active + # + # @return [Boolean] + required :enabled, ArkEmail::Internal::Type::Boolean + + # @!attribute events + # Subscribed events (empty = all events) + # + # @return [Array] + required :events, + -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event] } + + # @!attribute name + # Webhook name for identification + # + # @return [String] + required :name, String + + # @!attribute updated_at + # + # @return [Time] + required :updated_at, Time, api_name: :updatedAt + + # @!attribute url + # Webhook endpoint URL + # + # @return [String] + required :url, String + + # @!method initialize(id:, created_at:, enabled:, events:, name:, updated_at:, url:) + # @param id [String] Platform webhook ID + # + # @param created_at [Time] + # + # @param enabled [Boolean] Whether the webhook is active + # + # @param events [Array] Subscribed events (empty = all events) + # + # @param name [String] Webhook name for identification + # + # @param updated_at [Time] + # + # @param url [String] Webhook endpoint URL + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT = :MessageSent + MESSAGE_DELAYED = :MessageDelayed + MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed + MESSAGE_HELD = :MessageHeld + MESSAGE_BOUNCED = :MessageBounced + MESSAGE_LINK_CLICKED = :MessageLinkClicked + MESSAGE_LOADED = :MessageLoaded + DOMAIN_DNS_ERROR = :DomainDNSError + + # @!method self.values + # @return [Array] + end + end + end + end + end +end diff --git a/lib/ark_email/resources/platform.rb b/lib/ark_email/resources/platform.rb new file mode 100644 index 0000000..2b5e941 --- /dev/null +++ b/lib/ark_email/resources/platform.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Platform + # @return [ArkEmail::Resources::Platform::Webhooks] + attr_reader :webhooks + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + @webhooks = ArkEmail::Resources::Platform::Webhooks.new(client: client) + end + end + end +end diff --git a/lib/ark_email/resources/platform/webhooks.rb b/lib/ark_email/resources/platform/webhooks.rb new file mode 100644 index 0000000..cacb738 --- /dev/null +++ b/lib/ark_email/resources/platform/webhooks.rb @@ -0,0 +1,289 @@ +# frozen_string_literal: true + +module ArkEmail + module Resources + class Platform + class Webhooks + # Create a platform webhook to receive email event notifications from all tenants. + # + # Platform webhooks receive events from **all tenants** in your organization. Each + # webhook payload includes a `tenant_id` field to identify which tenant the event + # belongs to. + # + # **Available events:** + # + # - `MessageSent` - Email accepted by recipient server + # - `MessageDeliveryFailed` - Delivery permanently failed + # - `MessageDelayed` - Delivery temporarily failed, will retry + # - `MessageBounced` - Email bounced + # - `MessageHeld` - Email held for review + # - `MessageLinkClicked` - Recipient clicked a link + # - `MessageLoaded` - Recipient opened the email + # - `DomainDNSError` - Domain DNS issue detected + # + # **Webhook payload includes:** + # + # - `event` - The event type + # - `tenant_id` - The tenant that sent the email + # - `timestamp` - Unix timestamp of the event + # - `payload` - Event-specific data (message details, status, etc.) + # + # @overload create(name:, url:, events: nil, request_options: {}) + # + # @param name [String] Display name for the webhook + # + # @param url [String] Webhook endpoint URL (must be HTTPS) + # + # @param events [Array] Events to subscribe to. Empty array means all events. + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Platform::WebhookCreateResponse] + # + # @see ArkEmail::Models::Platform::WebhookCreateParams + def create(params) + parsed, options = ArkEmail::Platform::WebhookCreateParams.dump_request(params) + @client.request( + method: :post, + path: "platform/webhooks", + body: parsed, + model: ArkEmail::Models::Platform::WebhookCreateResponse, + options: options + ) + end + + # Get detailed information about a specific platform webhook. + # + # @overload retrieve(webhook_id, request_options: {}) + # + # @param webhook_id [String] Platform webhook ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Platform::WebhookRetrieveResponse] + # + # @see ArkEmail::Models::Platform::WebhookRetrieveParams + def retrieve(webhook_id, params = {}) + @client.request( + method: :get, + path: ["platform/webhooks/%1$s", webhook_id], + model: ArkEmail::Models::Platform::WebhookRetrieveResponse, + options: params[:request_options] + ) + end + + # Update a platform webhook's configuration. + # + # You can update: + # + # - `name` - Display name for the webhook + # - `url` - The endpoint URL (must be HTTPS) + # - `events` - Array of event types to receive (empty array = all events) + # - `enabled` - Enable or disable the webhook + # + # @overload update(webhook_id, enabled: nil, events: nil, name: nil, url: nil, request_options: {}) + # + # @param webhook_id [String] Platform webhook ID + # + # @param enabled [Boolean] Enable or disable the webhook + # + # @param events [Array] Events to subscribe to. Empty array means all events. + # + # @param name [String] Display name for the webhook + # + # @param url [String] Webhook endpoint URL (must be HTTPS) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Platform::WebhookUpdateResponse] + # + # @see ArkEmail::Models::Platform::WebhookUpdateParams + def update(webhook_id, params = {}) + parsed, options = ArkEmail::Platform::WebhookUpdateParams.dump_request(params) + @client.request( + method: :patch, + path: ["platform/webhooks/%1$s", webhook_id], + body: parsed, + model: ArkEmail::Models::Platform::WebhookUpdateResponse, + options: options + ) + end + + # Get all platform webhook endpoints configured for your organization. + # + # Platform webhooks receive events from **all tenants** in your organization, + # unlike tenant webhooks which only receive events for a specific tenant. This is + # useful for centralized event processing and monitoring. + # + # @overload list(request_options: {}) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Platform::WebhookListResponse] + # + # @see ArkEmail::Models::Platform::WebhookListParams + def list(params = {}) + @client.request( + method: :get, + path: "platform/webhooks", + model: ArkEmail::Models::Platform::WebhookListResponse, + options: params[:request_options] + ) + end + + # Delete a platform webhook. This stops all event delivery to the webhook URL. + # This action cannot be undone. + # + # @overload delete(webhook_id, request_options: {}) + # + # @param webhook_id [String] Platform webhook ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Platform::WebhookDeleteResponse] + # + # @see ArkEmail::Models::Platform::WebhookDeleteParams + def delete(webhook_id, params = {}) + @client.request( + method: :delete, + path: ["platform/webhooks/%1$s", webhook_id], + model: ArkEmail::Models::Platform::WebhookDeleteResponse, + options: params[:request_options] + ) + end + + # Get a paginated list of platform webhook delivery attempts. + # + # Filter by: + # + # - `webhookId` - Specific webhook + # - `tenantId` - Specific tenant + # - `event` - Specific event type + # - `success` - Successful (2xx) or failed deliveries + # - `before`/`after` - Time range (Unix timestamps) + # + # Deliveries are returned in reverse chronological order. + # + # @overload list_deliveries(after: nil, before: nil, event: nil, page: nil, per_page: nil, success: nil, tenant_id: nil, webhook_id: nil, request_options: {}) + # + # @param after [Integer] Only deliveries after this Unix timestamp + # + # @param before [Integer] Only deliveries before this Unix timestamp + # + # @param event [Symbol, ArkEmail::Models::Platform::WebhookListDeliveriesParams::Event] Filter by event type + # + # @param page [Integer] Page number (default 1) + # + # @param per_page [Integer] Items per page (default 30, max 100) + # + # @param success [Boolean] Filter by delivery success + # + # @param tenant_id [String] Filter by tenant ID + # + # @param webhook_id [String] Filter by platform webhook ID + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Internal::PageNumberPagination] + # + # @see ArkEmail::Models::Platform::WebhookListDeliveriesParams + def list_deliveries(params = {}) + parsed, options = ArkEmail::Platform::WebhookListDeliveriesParams.dump_request(params) + @client.request( + method: :get, + path: "platform/webhooks/deliveries", + query: parsed.transform_keys(per_page: "perPage", tenant_id: "tenantId", webhook_id: "webhookId"), + page: ArkEmail::Internal::PageNumberPagination, + model: ArkEmail::Models::Platform::WebhookListDeliveriesResponse, + options: options + ) + end + + # Replay a previous platform webhook delivery. + # + # This re-sends the original payload with a new timestamp and delivery ID. Useful + # for recovering from temporary endpoint failures. + # + # @overload replay_delivery(delivery_id, request_options: {}) + # + # @param delivery_id [String] Delivery ID to replay + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Platform::WebhookReplayDeliveryResponse] + # + # @see ArkEmail::Models::Platform::WebhookReplayDeliveryParams + def replay_delivery(delivery_id, params = {}) + @client.request( + method: :post, + path: ["platform/webhooks/deliveries/%1$s/replay", delivery_id], + model: ArkEmail::Models::Platform::WebhookReplayDeliveryResponse, + options: params[:request_options] + ) + end + + # Get detailed information about a specific platform webhook delivery. + # + # Returns the complete request payload, headers, response, and timing info. + # + # @overload retrieve_delivery(delivery_id, request_options: {}) + # + # @param delivery_id [String] Delivery ID (UUID) + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse] + # + # @see ArkEmail::Models::Platform::WebhookRetrieveDeliveryParams + def retrieve_delivery(delivery_id, params = {}) + @client.request( + method: :get, + path: ["platform/webhooks/deliveries/%1$s", delivery_id], + model: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse, + options: params[:request_options] + ) + end + + # Send a test payload to your platform webhook endpoint. + # + # Use this to: + # + # - Verify your webhook URL is accessible + # - Test your payload handling code + # - Ensure your server responds correctly + # + # The test payload is marked with `_test: true` so you can distinguish test events + # from real events. + # + # @overload test_(webhook_id, event:, request_options: {}) + # + # @param webhook_id [String] Platform webhook ID + # + # @param event [Symbol, ArkEmail::Models::Platform::WebhookTestParams::Event] Event type to simulate + # + # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [ArkEmail::Models::Platform::WebhookTestResponse] + # + # @see ArkEmail::Models::Platform::WebhookTestParams + def test_(webhook_id, params) + parsed, options = ArkEmail::Platform::WebhookTestParams.dump_request(params) + @client.request( + method: :post, + path: ["platform/webhooks/%1$s/test", webhook_id], + body: parsed, + model: ArkEmail::Models::Platform::WebhookTestResponse, + options: options + ) + end + + # @api private + # + # @param client [ArkEmail::Client] + def initialize(client:) + @client = client + end + end + end + end +end diff --git a/rbi/ark_email/client.rbi b/rbi/ark_email/client.rbi index 1452273..8c89907 100644 --- a/rbi/ark_email/client.rbi +++ b/rbi/ark_email/client.rbi @@ -34,6 +34,9 @@ module ArkEmail sig { returns(ArkEmail::Resources::Tenants) } attr_reader :tenants + sig { returns(ArkEmail::Resources::Platform) } + attr_reader :platform + # @api private sig { override.returns(T::Hash[String, String]) } private def auth_headers diff --git a/rbi/ark_email/models.rbi b/rbi/ark_email/models.rbi index 802e04a..ddca85e 100644 --- a/rbi/ark_email/models.rbi +++ b/rbi/ark_email/models.rbi @@ -36,6 +36,8 @@ module ArkEmail OrgUsageSummary = ArkEmail::Models::OrgUsageSummary + Platform = ArkEmail::Models::Platform + Tenant = ArkEmail::Models::Tenant TenantCreateParams = ArkEmail::Models::TenantCreateParams diff --git a/rbi/ark_email/models/platform/webhook_create_params.rbi b/rbi/ark_email/models/platform/webhook_create_params.rbi new file mode 100644 index 0000000..bf19dd5 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_create_params.rbi @@ -0,0 +1,145 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookCreateParams, + ArkEmail::Internal::AnyHash + ) + end + + # Display name for the webhook + sig { returns(String) } + attr_accessor :name + + # Webhook endpoint URL (must be HTTPS) + sig { returns(String) } + attr_accessor :url + + # Events to subscribe to. Empty array means all events. + sig do + returns( + T.nilable( + T::Array[ArkEmail::Platform::WebhookCreateParams::Event::OrSymbol] + ) + ) + end + attr_reader :events + + sig do + params( + events: + T::Array[ArkEmail::Platform::WebhookCreateParams::Event::OrSymbol] + ).void + end + attr_writer :events + + sig do + params( + name: String, + url: String, + events: + T::Array[ + ArkEmail::Platform::WebhookCreateParams::Event::OrSymbol + ], + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Display name for the webhook + name:, + # Webhook endpoint URL (must be HTTPS) + url:, + # Events to subscribe to. Empty array means all events. + events: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + name: String, + url: String, + events: + T::Array[ + ArkEmail::Platform::WebhookCreateParams::Event::OrSymbol + ], + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Platform::WebhookCreateParams::Event) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Platform::WebhookCreateParams::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_create_response.rbi b/rbi/ark_email/models/platform/webhook_create_response.rbi new file mode 100644 index 0000000..f475d51 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_create_response.rbi @@ -0,0 +1,215 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookCreateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Platform::WebhookCreateResponse::Data) } + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookCreateResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookCreateResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Platform::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookCreateResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Platform webhook ID + sig { returns(String) } + attr_accessor :id + + sig { returns(Time) } + attr_accessor :created_at + + # Whether the webhook is active + sig { returns(T::Boolean) } + attr_accessor :enabled + + # Subscribed events (empty = all events) + sig do + returns( + T::Array[ + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ] + ) + end + attr_accessor :events + + # Webhook name for identification + sig { returns(String) } + attr_accessor :name + + sig { returns(Time) } + attr_accessor :updated_at + + # Webhook endpoint URL + sig { returns(String) } + attr_accessor :url + + sig do + params( + id: String, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::OrSymbol + ], + name: String, + updated_at: Time, + url: String + ).returns(T.attached_class) + end + def self.new( + # Platform webhook ID + id:, + created_at:, + # Whether the webhook is active + enabled:, + # Subscribed events (empty = all events) + events:, + # Webhook name for identification + name:, + updated_at:, + # Webhook endpoint URL + url: + ) + end + + sig do + override.returns( + { + id: String, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ], + name: String, + updated_at: Time, + url: String + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Platform::WebhookCreateResponse::Data::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_delete_params.rbi b/rbi/ark_email/models/platform/webhook_delete_params.rbi new file mode 100644 index 0000000..c94f5a9 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_delete_params.rbi @@ -0,0 +1,32 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookDeleteParams, + ArkEmail::Internal::AnyHash + ) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_delete_response.rbi b/rbi/ark_email/models/platform/webhook_delete_response.rbi new file mode 100644 index 0000000..d742953 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_delete_response.rbi @@ -0,0 +1,81 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookDeleteResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Platform::WebhookDeleteResponse::Data) } + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookDeleteResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookDeleteResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Platform::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookDeleteResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :message + + sig { params(message: String).returns(T.attached_class) } + def self.new(message:) + end + + sig { override.returns({ message: String }) } + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_list_deliveries_params.rbi b/rbi/ark_email/models/platform/webhook_list_deliveries_params.rbi new file mode 100644 index 0000000..0ec6d8b --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_list_deliveries_params.rbi @@ -0,0 +1,206 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookListDeliveriesParams, + ArkEmail::Internal::AnyHash + ) + end + + # Only deliveries after this Unix timestamp + sig { returns(T.nilable(Integer)) } + attr_reader :after + + sig { params(after: Integer).void } + attr_writer :after + + # Only deliveries before this Unix timestamp + sig { returns(T.nilable(Integer)) } + attr_reader :before + + sig { params(before: Integer).void } + attr_writer :before + + # Filter by event type + sig do + returns( + T.nilable( + ArkEmail::Platform::WebhookListDeliveriesParams::Event::OrSymbol + ) + ) + end + attr_reader :event + + sig do + params( + event: + ArkEmail::Platform::WebhookListDeliveriesParams::Event::OrSymbol + ).void + end + attr_writer :event + + # Page number (default 1) + sig { returns(T.nilable(Integer)) } + attr_reader :page + + sig { params(page: Integer).void } + attr_writer :page + + # Items per page (default 30, max 100) + sig { returns(T.nilable(Integer)) } + attr_reader :per_page + + sig { params(per_page: Integer).void } + attr_writer :per_page + + # Filter by delivery success + sig { returns(T.nilable(T::Boolean)) } + attr_reader :success + + sig { params(success: T::Boolean).void } + attr_writer :success + + # Filter by tenant ID + sig { returns(T.nilable(String)) } + attr_reader :tenant_id + + sig { params(tenant_id: String).void } + attr_writer :tenant_id + + # Filter by platform webhook ID + sig { returns(T.nilable(String)) } + attr_reader :webhook_id + + sig { params(webhook_id: String).void } + attr_writer :webhook_id + + sig do + params( + after: Integer, + before: Integer, + event: + ArkEmail::Platform::WebhookListDeliveriesParams::Event::OrSymbol, + page: Integer, + per_page: Integer, + success: T::Boolean, + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Only deliveries after this Unix timestamp + after: nil, + # Only deliveries before this Unix timestamp + before: nil, + # Filter by event type + event: nil, + # Page number (default 1) + page: nil, + # Items per page (default 30, max 100) + per_page: nil, + # Filter by delivery success + success: nil, + # Filter by tenant ID + tenant_id: nil, + # Filter by platform webhook ID + webhook_id: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + after: Integer, + before: Integer, + event: + ArkEmail::Platform::WebhookListDeliveriesParams::Event::OrSymbol, + page: Integer, + per_page: Integer, + success: T::Boolean, + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Filter by event type + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Platform::WebhookListDeliveriesParams::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Platform::WebhookListDeliveriesParams::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_list_deliveries_response.rbi b/rbi/ark_email/models/platform/webhook_list_deliveries_response.rbi new file mode 100644 index 0000000..233a80a --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_list_deliveries_response.rbi @@ -0,0 +1,186 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookListDeliveriesResponse, + ArkEmail::Internal::AnyHash + ) + end + + # Unique delivery ID + sig { returns(String) } + attr_accessor :id + + # Attempt number (1 for first attempt, higher for retries) + sig { returns(Integer) } + attr_accessor :attempt + + # Event type + sig do + returns( + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + end + attr_accessor :event + + # HTTP status code returned by your endpoint (null if connection failed) + sig { returns(T.nilable(Integer)) } + attr_accessor :status_code + + # Whether delivery was successful (2xx response) + sig { returns(T::Boolean) } + attr_accessor :success + + # Tenant that triggered the event + sig { returns(String) } + attr_accessor :tenant_id + + # When the delivery was attempted + sig { returns(Time) } + attr_accessor :timestamp + + # Endpoint URL the delivery was sent to + sig { returns(String) } + attr_accessor :url + + # Platform webhook ID + sig { returns(String) } + attr_accessor :webhook_id + + # Whether this delivery will be retried + sig { returns(T::Boolean) } + attr_accessor :will_retry + + # Summary of a platform webhook delivery attempt + sig do + params( + id: String, + attempt: Integer, + event: + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::OrSymbol, + status_code: T.nilable(Integer), + success: T::Boolean, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Unique delivery ID + id:, + # Attempt number (1 for first attempt, higher for retries) + attempt:, + # Event type + event:, + # HTTP status code returned by your endpoint (null if connection failed) + status_code:, + # Whether delivery was successful (2xx response) + success:, + # Tenant that triggered the event + tenant_id:, + # When the delivery was attempted + timestamp:, + # Endpoint URL the delivery was sent to + url:, + # Platform webhook ID + webhook_id:, + # Whether this delivery will be retried + will_retry: + ) + end + + sig do + override.returns( + { + id: String, + attempt: Integer, + event: + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol, + status_code: T.nilable(Integer), + success: T::Boolean, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: T::Boolean + } + ) + end + def to_hash + end + + # Event type + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_list_params.rbi b/rbi/ark_email/models/platform/webhook_list_params.rbi new file mode 100644 index 0000000..5c36132 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_list_params.rbi @@ -0,0 +1,32 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookListParams, + ArkEmail::Internal::AnyHash + ) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_list_response.rbi b/rbi/ark_email/models/platform/webhook_list_response.rbi new file mode 100644 index 0000000..43d5f43 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_list_response.rbi @@ -0,0 +1,124 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookListResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookListResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns( + T::Array[ArkEmail::Models::Platform::WebhookListResponse::Data] + ) + end + attr_accessor :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + T::Array[ + ArkEmail::Models::Platform::WebhookListResponse::Data::OrHash + ], + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: + T::Array[ArkEmail::Models::Platform::WebhookListResponse::Data], + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookListResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Platform webhook ID + sig { returns(String) } + attr_accessor :id + + sig { returns(Time) } + attr_accessor :created_at + + sig { returns(T::Boolean) } + attr_accessor :enabled + + sig { returns(T::Array[String]) } + attr_accessor :events + + sig { returns(String) } + attr_accessor :name + + sig { returns(String) } + attr_accessor :url + + sig do + params( + id: String, + created_at: Time, + enabled: T::Boolean, + events: T::Array[String], + name: String, + url: String + ).returns(T.attached_class) + end + def self.new( + # Platform webhook ID + id:, + created_at:, + enabled:, + events:, + name:, + url: + ) + end + + sig do + override.returns( + { + id: String, + created_at: Time, + enabled: T::Boolean, + events: T::Array[String], + name: String, + url: String + } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_replay_delivery_params.rbi b/rbi/ark_email/models/platform/webhook_replay_delivery_params.rbi new file mode 100644 index 0000000..5aabcd8 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_replay_delivery_params.rbi @@ -0,0 +1,32 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookReplayDeliveryParams, + ArkEmail::Internal::AnyHash + ) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_replay_delivery_response.rbi b/rbi/ark_email/models/platform/webhook_replay_delivery_response.rbi new file mode 100644 index 0000000..7d297dd --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_replay_delivery_response.rbi @@ -0,0 +1,141 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookReplayDeliveryResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns( + ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data + ) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + # Result of replaying a platform webhook delivery + sig do + params( + data: + ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: + ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Request duration in milliseconds + sig { returns(Integer) } + attr_accessor :duration + + # ID of the new delivery created by the replay + sig { returns(String) } + attr_accessor :new_delivery_id + + # ID of the original delivery that was replayed + sig { returns(String) } + attr_accessor :original_delivery_id + + # HTTP status code from your endpoint + sig { returns(T.nilable(Integer)) } + attr_accessor :status_code + + # Whether the replay was successful + sig { returns(T::Boolean) } + attr_accessor :success + + # When the replay was executed + sig { returns(Time) } + attr_accessor :timestamp + + sig do + params( + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: T.nilable(Integer), + success: T::Boolean, + timestamp: Time + ).returns(T.attached_class) + end + def self.new( + # Request duration in milliseconds + duration:, + # ID of the new delivery created by the replay + new_delivery_id:, + # ID of the original delivery that was replayed + original_delivery_id:, + # HTTP status code from your endpoint + status_code:, + # Whether the replay was successful + success:, + # When the replay was executed + timestamp: + ) + end + + sig do + override.returns( + { + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: T.nilable(Integer), + success: T::Boolean, + timestamp: Time + } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_retrieve_delivery_params.rbi b/rbi/ark_email/models/platform/webhook_retrieve_delivery_params.rbi new file mode 100644 index 0000000..1889af8 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_retrieve_delivery_params.rbi @@ -0,0 +1,32 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookRetrieveDeliveryParams, + ArkEmail::Internal::AnyHash + ) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_retrieve_delivery_response.rbi b/rbi/ark_email/models/platform/webhook_retrieve_delivery_response.rbi new file mode 100644 index 0000000..c6fa77b --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_retrieve_delivery_response.rbi @@ -0,0 +1,315 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns( + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data + ) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Unique delivery ID + sig { returns(String) } + attr_accessor :id + + # Attempt number + sig { returns(Integer) } + attr_accessor :attempt + + # Event type + sig { returns(String) } + attr_accessor :event + + # Request details + sig do + returns( + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request + ) + end + attr_reader :request + + sig do + params( + request: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request::OrHash + ).void + end + attr_writer :request + + # Response details + sig do + returns( + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response + ) + end + attr_reader :response + + sig do + params( + response: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response::OrHash + ).void + end + attr_writer :response + + # HTTP status code from your endpoint + sig { returns(T.nilable(Integer)) } + attr_accessor :status_code + + # Whether delivery was successful + sig { returns(T::Boolean) } + attr_accessor :success + + # Tenant that triggered the event + sig { returns(String) } + attr_accessor :tenant_id + + # When delivery was attempted + sig { returns(Time) } + attr_accessor :timestamp + + # Endpoint URL + sig { returns(String) } + attr_accessor :url + + # Platform webhook ID + sig { returns(String) } + attr_accessor :webhook_id + + # Platform webhook name + sig { returns(String) } + attr_accessor :webhook_name + + # Whether this will be retried + sig { returns(T::Boolean) } + attr_accessor :will_retry + + sig do + params( + id: String, + attempt: Integer, + event: String, + request: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request::OrHash, + response: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response::OrHash, + status_code: T.nilable(Integer), + success: T::Boolean, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Unique delivery ID + id:, + # Attempt number + attempt:, + # Event type + event:, + # Request details + request:, + # Response details + response:, + # HTTP status code from your endpoint + status_code:, + # Whether delivery was successful + success:, + # Tenant that triggered the event + tenant_id:, + # When delivery was attempted + timestamp:, + # Endpoint URL + url:, + # Platform webhook ID + webhook_id:, + # Platform webhook name + webhook_name:, + # Whether this will be retried + will_retry: + ) + end + + sig do + override.returns( + { + id: String, + attempt: Integer, + event: String, + request: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request, + response: + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response, + status_code: T.nilable(Integer), + success: T::Boolean, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: T::Boolean + } + ) + end + def to_hash + end + + class Request < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request, + ArkEmail::Internal::AnyHash + ) + end + + # Request headers including signature + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # The complete webhook payload that was sent + sig { returns(T.nilable(T::Hash[Symbol, T.anything])) } + attr_reader :payload + + sig { params(payload: T::Hash[Symbol, T.anything]).void } + attr_writer :payload + + # Request details + sig do + params( + headers: T::Hash[Symbol, String], + payload: T::Hash[Symbol, T.anything] + ).returns(T.attached_class) + end + def self.new( + # Request headers including signature + headers: nil, + # The complete webhook payload that was sent + payload: nil + ) + end + + sig do + override.returns( + { + headers: T::Hash[Symbol, String], + payload: T::Hash[Symbol, T.anything] + } + ) + end + def to_hash + end + end + + class Response < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response, + ArkEmail::Internal::AnyHash + ) + end + + # Response body (truncated if too large) + sig { returns(T.nilable(String)) } + attr_accessor :body + + # Response time in milliseconds + sig { returns(T.nilable(Integer)) } + attr_reader :duration + + sig { params(duration: Integer).void } + attr_writer :duration + + # Response details + sig do + params(body: T.nilable(String), duration: Integer).returns( + T.attached_class + ) + end + def self.new( + # Response body (truncated if too large) + body: nil, + # Response time in milliseconds + duration: nil + ) + end + + sig do + override.returns({ body: T.nilable(String), duration: Integer }) + end + def to_hash + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_retrieve_params.rbi b/rbi/ark_email/models/platform/webhook_retrieve_params.rbi new file mode 100644 index 0000000..ab9f1a2 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_retrieve_params.rbi @@ -0,0 +1,32 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookRetrieveParams, + ArkEmail::Internal::AnyHash + ) + end + + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + T.attached_class + ) + end + def self.new(request_options: {}) + end + + sig { override.returns({ request_options: ArkEmail::RequestOptions }) } + def to_hash + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_retrieve_response.rbi b/rbi/ark_email/models/platform/webhook_retrieve_response.rbi new file mode 100644 index 0000000..aa671ec --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_retrieve_response.rbi @@ -0,0 +1,217 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookRetrieveResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig do + returns(ArkEmail::Models::Platform::WebhookRetrieveResponse::Data) + end + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Platform::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Platform webhook ID + sig { returns(String) } + attr_accessor :id + + sig { returns(Time) } + attr_accessor :created_at + + # Whether the webhook is active + sig { returns(T::Boolean) } + attr_accessor :enabled + + # Subscribed events (empty = all events) + sig do + returns( + T::Array[ + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ] + ) + end + attr_accessor :events + + # Webhook name for identification + sig { returns(String) } + attr_accessor :name + + sig { returns(Time) } + attr_accessor :updated_at + + # Webhook endpoint URL + sig { returns(String) } + attr_accessor :url + + sig do + params( + id: String, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::OrSymbol + ], + name: String, + updated_at: Time, + url: String + ).returns(T.attached_class) + end + def self.new( + # Platform webhook ID + id:, + created_at:, + # Whether the webhook is active + enabled:, + # Subscribed events (empty = all events) + events:, + # Webhook name for identification + name:, + updated_at:, + # Webhook endpoint URL + url: + ) + end + + sig do + override.returns( + { + id: String, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ], + name: String, + updated_at: Time, + url: String + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_test_params.rbi b/rbi/ark_email/models/platform/webhook_test_params.rbi new file mode 100644 index 0000000..251cc4b --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_test_params.rbi @@ -0,0 +1,110 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookTestParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookTestParams, + ArkEmail::Internal::AnyHash + ) + end + + # Event type to simulate + sig { returns(ArkEmail::Platform::WebhookTestParams::Event::OrSymbol) } + attr_accessor :event + + sig do + params( + event: ArkEmail::Platform::WebhookTestParams::Event::OrSymbol, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Event type to simulate + event:, + request_options: {} + ) + end + + sig do + override.returns( + { + event: ArkEmail::Platform::WebhookTestParams::Event::OrSymbol, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + # Event type to simulate + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Platform::WebhookTestParams::Event) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Platform::WebhookTestParams::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_test_response.rbi b/rbi/ark_email/models/platform/webhook_test_response.rbi new file mode 100644 index 0000000..6647434 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_test_response.rbi @@ -0,0 +1,117 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookTestResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Platform::WebhookTestResponse::Data) } + attr_reader :data + + sig do + params( + data: ArkEmail::Models::Platform::WebhookTestResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: ArkEmail::Models::Platform::WebhookTestResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Platform::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookTestResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Request duration in milliseconds + sig { returns(Integer) } + attr_accessor :duration_ms + + # HTTP status code from the webhook endpoint + sig { returns(Integer) } + attr_accessor :status_code + + # Whether the webhook endpoint responded with a 2xx status + sig { returns(T::Boolean) } + attr_accessor :success + + # Error message if the request failed + sig { returns(T.nilable(String)) } + attr_accessor :error + + sig do + params( + duration_ms: Integer, + status_code: Integer, + success: T::Boolean, + error: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # Request duration in milliseconds + duration_ms:, + # HTTP status code from the webhook endpoint + status_code:, + # Whether the webhook endpoint responded with a 2xx status + success:, + # Error message if the request failed + error: nil + ) + end + + sig do + override.returns( + { + duration_ms: Integer, + status_code: Integer, + success: T::Boolean, + error: T.nilable(String) + } + ) + end + def to_hash + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_update_params.rbi b/rbi/ark_email/models/platform/webhook_update_params.rbi new file mode 100644 index 0000000..57d4390 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_update_params.rbi @@ -0,0 +1,162 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any( + ArkEmail::Platform::WebhookUpdateParams, + ArkEmail::Internal::AnyHash + ) + end + + # Enable or disable the webhook + sig { returns(T.nilable(T::Boolean)) } + attr_reader :enabled + + sig { params(enabled: T::Boolean).void } + attr_writer :enabled + + # Events to subscribe to. Empty array means all events. + sig do + returns( + T.nilable( + T::Array[ArkEmail::Platform::WebhookUpdateParams::Event::OrSymbol] + ) + ) + end + attr_reader :events + + sig do + params( + events: + T::Array[ArkEmail::Platform::WebhookUpdateParams::Event::OrSymbol] + ).void + end + attr_writer :events + + # Display name for the webhook + sig { returns(T.nilable(String)) } + attr_reader :name + + sig { params(name: String).void } + attr_writer :name + + # Webhook endpoint URL (must be HTTPS) + sig { returns(T.nilable(String)) } + attr_reader :url + + sig { params(url: String).void } + attr_writer :url + + sig do + params( + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Platform::WebhookUpdateParams::Event::OrSymbol + ], + name: String, + url: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Enable or disable the webhook + enabled: nil, + # Events to subscribe to. Empty array means all events. + events: nil, + # Display name for the webhook + name: nil, + # Webhook endpoint URL (must be HTTPS) + url: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Platform::WebhookUpdateParams::Event::OrSymbol + ], + name: String, + url: String, + request_options: ArkEmail::RequestOptions + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all(Symbol, ArkEmail::Platform::WebhookUpdateParams::Event) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Platform::WebhookUpdateParams::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end +end diff --git a/rbi/ark_email/models/platform/webhook_update_response.rbi b/rbi/ark_email/models/platform/webhook_update_response.rbi new file mode 100644 index 0000000..366ea45 --- /dev/null +++ b/rbi/ark_email/models/platform/webhook_update_response.rbi @@ -0,0 +1,215 @@ +# typed: strong + +module ArkEmail + module Models + module Platform + class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookUpdateResponse, + ArkEmail::Internal::AnyHash + ) + end + + sig { returns(ArkEmail::Models::Platform::WebhookUpdateResponse::Data) } + attr_reader :data + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::OrHash + ).void + end + attr_writer :data + + sig { returns(ArkEmail::APIMeta) } + attr_reader :meta + + sig { params(meta: ArkEmail::APIMeta::OrHash).void } + attr_writer :meta + + sig { returns(T::Boolean) } + attr_accessor :success + + sig do + params( + data: + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::OrHash, + meta: ArkEmail::APIMeta::OrHash, + success: T::Boolean + ).returns(T.attached_class) + end + def self.new(data:, meta:, success: true) + end + + sig do + override.returns( + { + data: ArkEmail::Models::Platform::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: T::Boolean + } + ) + end + def to_hash + end + + class Data < ArkEmail::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + ArkEmail::Models::Platform::WebhookUpdateResponse::Data, + ArkEmail::Internal::AnyHash + ) + end + + # Platform webhook ID + sig { returns(String) } + attr_accessor :id + + sig { returns(Time) } + attr_accessor :created_at + + # Whether the webhook is active + sig { returns(T::Boolean) } + attr_accessor :enabled + + # Subscribed events (empty = all events) + sig do + returns( + T::Array[ + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ] + ) + end + attr_accessor :events + + # Webhook name for identification + sig { returns(String) } + attr_accessor :name + + sig { returns(Time) } + attr_accessor :updated_at + + # Webhook endpoint URL + sig { returns(String) } + attr_accessor :url + + sig do + params( + id: String, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::OrSymbol + ], + name: String, + updated_at: Time, + url: String + ).returns(T.attached_class) + end + def self.new( + # Platform webhook ID + id:, + created_at:, + # Whether the webhook is active + enabled:, + # Subscribed events (empty = all events) + events:, + # Webhook name for identification + name:, + updated_at:, + # Webhook endpoint URL + url: + ) + end + + sig do + override.returns( + { + id: String, + created_at: Time, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ], + name: String, + updated_at: Time, + url: String + } + ) + end + def to_hash + end + + module Event + extend ArkEmail::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + MESSAGE_SENT = + T.let( + :MessageSent, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELAYED = + T.let( + :MessageDelayed, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_DELIVERY_FAILED = + T.let( + :MessageDeliveryFailed, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_HELD = + T.let( + :MessageHeld, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_BOUNCED = + T.let( + :MessageBounced, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LINK_CLICKED = + T.let( + :MessageLinkClicked, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + MESSAGE_LOADED = + T.let( + :MessageLoaded, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + DOMAIN_DNS_ERROR = + T.let( + :DomainDNSError, + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + ArkEmail::Models::Platform::WebhookUpdateResponse::Data::Event::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + end +end diff --git a/rbi/ark_email/resources/platform.rbi b/rbi/ark_email/resources/platform.rbi new file mode 100644 index 0000000..6708d57 --- /dev/null +++ b/rbi/ark_email/resources/platform.rbi @@ -0,0 +1,15 @@ +# typed: strong + +module ArkEmail + module Resources + class Platform + sig { returns(ArkEmail::Resources::Platform::Webhooks) } + attr_reader :webhooks + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end +end diff --git a/rbi/ark_email/resources/platform/webhooks.rbi b/rbi/ark_email/resources/platform/webhooks.rbi new file mode 100644 index 0000000..ce07a27 --- /dev/null +++ b/rbi/ark_email/resources/platform/webhooks.rbi @@ -0,0 +1,246 @@ +# typed: strong + +module ArkEmail + module Resources + class Platform + class Webhooks + # Create a platform webhook to receive email event notifications from all tenants. + # + # Platform webhooks receive events from **all tenants** in your organization. Each + # webhook payload includes a `tenant_id` field to identify which tenant the event + # belongs to. + # + # **Available events:** + # + # - `MessageSent` - Email accepted by recipient server + # - `MessageDeliveryFailed` - Delivery permanently failed + # - `MessageDelayed` - Delivery temporarily failed, will retry + # - `MessageBounced` - Email bounced + # - `MessageHeld` - Email held for review + # - `MessageLinkClicked` - Recipient clicked a link + # - `MessageLoaded` - Recipient opened the email + # - `DomainDNSError` - Domain DNS issue detected + # + # **Webhook payload includes:** + # + # - `event` - The event type + # - `tenant_id` - The tenant that sent the email + # - `timestamp` - Unix timestamp of the event + # - `payload` - Event-specific data (message details, status, etc.) + sig do + params( + name: String, + url: String, + events: + T::Array[ + ArkEmail::Platform::WebhookCreateParams::Event::OrSymbol + ], + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Platform::WebhookCreateResponse) + end + def create( + # Display name for the webhook + name:, + # Webhook endpoint URL (must be HTTPS) + url:, + # Events to subscribe to. Empty array means all events. + events: nil, + request_options: {} + ) + end + + # Get detailed information about a specific platform webhook. + sig do + params( + webhook_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Platform::WebhookRetrieveResponse) + end + def retrieve( + # Platform webhook ID + webhook_id, + request_options: {} + ) + end + + # Update a platform webhook's configuration. + # + # You can update: + # + # - `name` - Display name for the webhook + # - `url` - The endpoint URL (must be HTTPS) + # - `events` - Array of event types to receive (empty array = all events) + # - `enabled` - Enable or disable the webhook + sig do + params( + webhook_id: String, + enabled: T::Boolean, + events: + T::Array[ + ArkEmail::Platform::WebhookUpdateParams::Event::OrSymbol + ], + name: String, + url: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Platform::WebhookUpdateResponse) + end + def update( + # Platform webhook ID + webhook_id, + # Enable or disable the webhook + enabled: nil, + # Events to subscribe to. Empty array means all events. + events: nil, + # Display name for the webhook + name: nil, + # Webhook endpoint URL (must be HTTPS) + url: nil, + request_options: {} + ) + end + + # Get all platform webhook endpoints configured for your organization. + # + # Platform webhooks receive events from **all tenants** in your organization, + # unlike tenant webhooks which only receive events for a specific tenant. This is + # useful for centralized event processing and monitoring. + sig do + params(request_options: ArkEmail::RequestOptions::OrHash).returns( + ArkEmail::Models::Platform::WebhookListResponse + ) + end + def list(request_options: {}) + end + + # Delete a platform webhook. This stops all event delivery to the webhook URL. + # This action cannot be undone. + sig do + params( + webhook_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Platform::WebhookDeleteResponse) + end + def delete( + # Platform webhook ID + webhook_id, + request_options: {} + ) + end + + # Get a paginated list of platform webhook delivery attempts. + # + # Filter by: + # + # - `webhookId` - Specific webhook + # - `tenantId` - Specific tenant + # - `event` - Specific event type + # - `success` - Successful (2xx) or failed deliveries + # - `before`/`after` - Time range (Unix timestamps) + # + # Deliveries are returned in reverse chronological order. + sig do + params( + after: Integer, + before: Integer, + event: + ArkEmail::Platform::WebhookListDeliveriesParams::Event::OrSymbol, + page: Integer, + per_page: Integer, + success: T::Boolean, + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns( + ArkEmail::Internal::PageNumberPagination[ + ArkEmail::Models::Platform::WebhookListDeliveriesResponse + ] + ) + end + def list_deliveries( + # Only deliveries after this Unix timestamp + after: nil, + # Only deliveries before this Unix timestamp + before: nil, + # Filter by event type + event: nil, + # Page number (default 1) + page: nil, + # Items per page (default 30, max 100) + per_page: nil, + # Filter by delivery success + success: nil, + # Filter by tenant ID + tenant_id: nil, + # Filter by platform webhook ID + webhook_id: nil, + request_options: {} + ) + end + + # Replay a previous platform webhook delivery. + # + # This re-sends the original payload with a new timestamp and delivery ID. Useful + # for recovering from temporary endpoint failures. + sig do + params( + delivery_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Platform::WebhookReplayDeliveryResponse) + end + def replay_delivery( + # Delivery ID to replay + delivery_id, + request_options: {} + ) + end + + # Get detailed information about a specific platform webhook delivery. + # + # Returns the complete request payload, headers, response, and timing info. + sig do + params( + delivery_id: String, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse) + end + def retrieve_delivery( + # Delivery ID (UUID) + delivery_id, + request_options: {} + ) + end + + # Send a test payload to your platform webhook endpoint. + # + # Use this to: + # + # - Verify your webhook URL is accessible + # - Test your payload handling code + # - Ensure your server responds correctly + # + # The test payload is marked with `_test: true` so you can distinguish test events + # from real events. + sig do + params( + webhook_id: String, + event: ArkEmail::Platform::WebhookTestParams::Event::OrSymbol, + request_options: ArkEmail::RequestOptions::OrHash + ).returns(ArkEmail::Models::Platform::WebhookTestResponse) + end + def test_( + # Platform webhook ID + webhook_id, + # Event type to simulate + event:, + request_options: {} + ) + end + + # @api private + sig { params(client: ArkEmail::Client).returns(T.attached_class) } + def self.new(client:) + end + end + end + end +end diff --git a/sig/ark_email/client.rbs b/sig/ark_email/client.rbs index e710cd8..8c3dd6e 100644 --- a/sig/ark_email/client.rbs +++ b/sig/ark_email/client.rbs @@ -20,6 +20,8 @@ module ArkEmail attr_reader tenants: ArkEmail::Resources::Tenants + attr_reader platform: ArkEmail::Resources::Platform + private def auth_headers: -> ::Hash[String, String] def initialize: ( diff --git a/sig/ark_email/models.rbs b/sig/ark_email/models.rbs index 370e968..77182b1 100644 --- a/sig/ark_email/models.rbs +++ b/sig/ark_email/models.rbs @@ -33,6 +33,8 @@ module ArkEmail class OrgUsageSummary = ArkEmail::Models::OrgUsageSummary + module Platform = ArkEmail::Models::Platform + class Tenant = ArkEmail::Models::Tenant class TenantCreateParams = ArkEmail::Models::TenantCreateParams diff --git a/sig/ark_email/models/platform/webhook_create_params.rbs b/sig/ark_email/models/platform/webhook_create_params.rbs new file mode 100644 index 0000000..59eab76 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_create_params.rbs @@ -0,0 +1,67 @@ +module ArkEmail + module Models + module Platform + type webhook_create_params = + { + name: String, + url: String, + events: ::Array[ArkEmail::Models::Platform::WebhookCreateParams::event] + } + & ArkEmail::Internal::Type::request_parameters + + class WebhookCreateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor name: String + + attr_accessor url: String + + attr_reader events: ::Array[ArkEmail::Models::Platform::WebhookCreateParams::event]? + + def events=: ( + ::Array[ArkEmail::Models::Platform::WebhookCreateParams::event] + ) -> ::Array[ArkEmail::Models::Platform::WebhookCreateParams::event] + + def initialize: ( + name: String, + url: String, + ?events: ::Array[ArkEmail::Models::Platform::WebhookCreateParams::event], + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + name: String, + url: String, + events: ::Array[ArkEmail::Models::Platform::WebhookCreateParams::event], + request_options: ArkEmail::RequestOptions + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Platform::WebhookCreateParams::event] + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_create_response.rbs b/sig/ark_email/models/platform/webhook_create_response.rbs new file mode 100644 index 0000000..b65266a --- /dev/null +++ b/sig/ark_email/models/platform/webhook_create_response.rbs @@ -0,0 +1,104 @@ +module ArkEmail + module Models + module Platform + type webhook_create_response = + { + data: ArkEmail::Models::Platform::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookCreateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Platform::WebhookCreateResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Platform::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Platform::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookCreateResponse::Data::event], + name: String, + updated_at: Time, + url: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor created_at: Time + + attr_accessor enabled: bool + + attr_accessor events: ::Array[ArkEmail::Models::Platform::WebhookCreateResponse::Data::event] + + attr_accessor name: String + + attr_accessor updated_at: Time + + attr_accessor url: String + + def initialize: ( + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookCreateResponse::Data::event], + name: String, + updated_at: Time, + url: String + ) -> void + + def to_hash: -> { + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookCreateResponse::Data::event], + name: String, + updated_at: Time, + url: String + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Platform::WebhookCreateResponse::Data::event] + end + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_delete_params.rbs b/sig/ark_email/models/platform/webhook_delete_params.rbs new file mode 100644 index 0000000..88456b7 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_delete_params.rbs @@ -0,0 +1,17 @@ +module ArkEmail + module Models + module Platform + type webhook_delete_params = + { } & ArkEmail::Internal::Type::request_parameters + + class WebhookDeleteParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_delete_response.rbs b/sig/ark_email/models/platform/webhook_delete_response.rbs new file mode 100644 index 0000000..39f18d0 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_delete_response.rbs @@ -0,0 +1,42 @@ +module ArkEmail + module Models + module Platform + type webhook_delete_response = + { + data: ArkEmail::Models::Platform::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookDeleteResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Platform::WebhookDeleteResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Platform::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Platform::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = { message: String } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor message: String + + def initialize: (message: String) -> void + + def to_hash: -> { message: String } + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_list_deliveries_params.rbs b/sig/ark_email/models/platform/webhook_list_deliveries_params.rbs new file mode 100644 index 0000000..2972123 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_list_deliveries_params.rbs @@ -0,0 +1,106 @@ +module ArkEmail + module Models + module Platform + type webhook_list_deliveries_params = + { + after: Integer, + before: Integer, + event: ArkEmail::Models::Platform::WebhookListDeliveriesParams::event, + page: Integer, + per_page: Integer, + success: bool, + tenant_id: String, + webhook_id: String + } + & ArkEmail::Internal::Type::request_parameters + + class WebhookListDeliveriesParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader after: Integer? + + def after=: (Integer) -> Integer + + attr_reader before: Integer? + + def before=: (Integer) -> Integer + + attr_reader event: ArkEmail::Models::Platform::WebhookListDeliveriesParams::event? + + def event=: ( + ArkEmail::Models::Platform::WebhookListDeliveriesParams::event + ) -> ArkEmail::Models::Platform::WebhookListDeliveriesParams::event + + attr_reader page: Integer? + + def page=: (Integer) -> Integer + + attr_reader per_page: Integer? + + def per_page=: (Integer) -> Integer + + attr_reader success: bool? + + def success=: (bool) -> bool + + attr_reader tenant_id: String? + + def tenant_id=: (String) -> String + + attr_reader webhook_id: String? + + def webhook_id=: (String) -> String + + def initialize: ( + ?after: Integer, + ?before: Integer, + ?event: ArkEmail::Models::Platform::WebhookListDeliveriesParams::event, + ?page: Integer, + ?per_page: Integer, + ?success: bool, + ?tenant_id: String, + ?webhook_id: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + after: Integer, + before: Integer, + event: ArkEmail::Models::Platform::WebhookListDeliveriesParams::event, + page: Integer, + per_page: Integer, + success: bool, + tenant_id: String, + webhook_id: String, + request_options: ArkEmail::RequestOptions + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Platform::WebhookListDeliveriesParams::event] + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_list_deliveries_response.rbs b/sig/ark_email/models/platform/webhook_list_deliveries_response.rbs new file mode 100644 index 0000000..32362b5 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_list_deliveries_response.rbs @@ -0,0 +1,92 @@ +module ArkEmail + module Models + module Platform + type webhook_list_deliveries_response = + { + id: String, + attempt: Integer, + event: ArkEmail::Models::Platform::WebhookListDeliveriesResponse::event, + status_code: Integer?, + success: bool, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: bool + } + + class WebhookListDeliveriesResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor attempt: Integer + + attr_accessor event: ArkEmail::Models::Platform::WebhookListDeliveriesResponse::event + + attr_accessor status_code: Integer? + + attr_accessor success: bool + + attr_accessor tenant_id: String + + attr_accessor timestamp: Time + + attr_accessor url: String + + attr_accessor webhook_id: String + + attr_accessor will_retry: bool + + def initialize: ( + id: String, + attempt: Integer, + event: ArkEmail::Models::Platform::WebhookListDeliveriesResponse::event, + status_code: Integer?, + success: bool, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: bool + ) -> void + + def to_hash: -> { + id: String, + attempt: Integer, + event: ArkEmail::Models::Platform::WebhookListDeliveriesResponse::event, + status_code: Integer?, + success: bool, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: bool + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Platform::WebhookListDeliveriesResponse::event] + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_list_params.rbs b/sig/ark_email/models/platform/webhook_list_params.rbs new file mode 100644 index 0000000..dbe4339 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_list_params.rbs @@ -0,0 +1,17 @@ +module ArkEmail + module Models + module Platform + type webhook_list_params = + { } & ArkEmail::Internal::Type::request_parameters + + class WebhookListParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_list_response.rbs b/sig/ark_email/models/platform/webhook_list_response.rbs new file mode 100644 index 0000000..e1fb868 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_list_response.rbs @@ -0,0 +1,74 @@ +module ArkEmail + module Models + module Platform + type webhook_list_response = + { + data: ::Array[ArkEmail::Models::Platform::WebhookListResponse::Data], + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookListResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ::Array[ArkEmail::Models::Platform::WebhookListResponse::Data] + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ::Array[ArkEmail::Models::Platform::WebhookListResponse::Data], + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ::Array[ArkEmail::Models::Platform::WebhookListResponse::Data], + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + created_at: Time, + enabled: bool, + events: ::Array[String], + name: String, + url: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor created_at: Time + + attr_accessor enabled: bool + + attr_accessor events: ::Array[String] + + attr_accessor name: String + + attr_accessor url: String + + def initialize: ( + id: String, + created_at: Time, + enabled: bool, + events: ::Array[String], + name: String, + url: String + ) -> void + + def to_hash: -> { + id: String, + created_at: Time, + enabled: bool, + events: ::Array[String], + name: String, + url: String + } + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_replay_delivery_params.rbs b/sig/ark_email/models/platform/webhook_replay_delivery_params.rbs new file mode 100644 index 0000000..fc820b6 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_replay_delivery_params.rbs @@ -0,0 +1,17 @@ +module ArkEmail + module Models + module Platform + type webhook_replay_delivery_params = + { } & ArkEmail::Internal::Type::request_parameters + + class WebhookReplayDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_replay_delivery_response.rbs b/sig/ark_email/models/platform/webhook_replay_delivery_response.rbs new file mode 100644 index 0000000..12f8ed8 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_replay_delivery_response.rbs @@ -0,0 +1,74 @@ +module ArkEmail + module Models + module Platform + type webhook_replay_delivery_response = + { + data: ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookReplayDeliveryResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: Integer?, + success: bool, + timestamp: Time + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor duration: Integer + + attr_accessor new_delivery_id: String + + attr_accessor original_delivery_id: String + + attr_accessor status_code: Integer? + + attr_accessor success: bool + + attr_accessor timestamp: Time + + def initialize: ( + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: Integer?, + success: bool, + timestamp: Time + ) -> void + + def to_hash: -> { + duration: Integer, + new_delivery_id: String, + original_delivery_id: String, + status_code: Integer?, + success: bool, + timestamp: Time + } + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_retrieve_delivery_params.rbs b/sig/ark_email/models/platform/webhook_retrieve_delivery_params.rbs new file mode 100644 index 0000000..61b13a8 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_retrieve_delivery_params.rbs @@ -0,0 +1,17 @@ +module ArkEmail + module Models + module Platform + type webhook_retrieve_delivery_params = + { } & ArkEmail::Internal::Type::request_parameters + + class WebhookRetrieveDeliveryParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_retrieve_delivery_response.rbs b/sig/ark_email/models/platform/webhook_retrieve_delivery_response.rbs new file mode 100644 index 0000000..ffde110 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_retrieve_delivery_response.rbs @@ -0,0 +1,146 @@ +module ArkEmail + module Models + module Platform + type webhook_retrieve_delivery_response = + { + data: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookRetrieveDeliveryResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + attempt: Integer, + event: String, + request: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request, + response: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response, + status_code: Integer?, + success: bool, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: bool + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor attempt: Integer + + attr_accessor event: String + + attr_accessor request: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request + + attr_accessor response: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response + + attr_accessor status_code: Integer? + + attr_accessor success: bool + + attr_accessor tenant_id: String + + attr_accessor timestamp: Time + + attr_accessor url: String + + attr_accessor webhook_id: String + + attr_accessor webhook_name: String + + attr_accessor will_retry: bool + + def initialize: ( + id: String, + attempt: Integer, + event: String, + request: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request, + response: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response, + status_code: Integer?, + success: bool, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: bool + ) -> void + + def to_hash: -> { + id: String, + attempt: Integer, + event: String, + request: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Request, + response: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data::Response, + status_code: Integer?, + success: bool, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + webhook_name: String, + will_retry: bool + } + + type request = + { headers: ::Hash[Symbol, String], payload: ::Hash[Symbol, top] } + + class Request < ArkEmail::Internal::Type::BaseModel + attr_reader headers: ::Hash[Symbol, String]? + + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + + attr_reader payload: ::Hash[Symbol, top]? + + def payload=: (::Hash[Symbol, top]) -> ::Hash[Symbol, top] + + def initialize: ( + ?headers: ::Hash[Symbol, String], + ?payload: ::Hash[Symbol, top] + ) -> void + + def to_hash: -> { + headers: ::Hash[Symbol, String], + payload: ::Hash[Symbol, top] + } + end + + type response = { body: String?, duration: Integer } + + class Response < ArkEmail::Internal::Type::BaseModel + attr_accessor body: String? + + attr_reader duration: Integer? + + def duration=: (Integer) -> Integer + + def initialize: (?body: String?, ?duration: Integer) -> void + + def to_hash: -> { body: String?, duration: Integer } + end + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_retrieve_params.rbs b/sig/ark_email/models/platform/webhook_retrieve_params.rbs new file mode 100644 index 0000000..7980ea1 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_retrieve_params.rbs @@ -0,0 +1,17 @@ +module ArkEmail + module Models + module Platform + type webhook_retrieve_params = + { } & ArkEmail::Internal::Type::request_parameters + + class WebhookRetrieveParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + def initialize: (?request_options: ArkEmail::request_opts) -> void + + def to_hash: -> { request_options: ArkEmail::RequestOptions } + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_retrieve_response.rbs b/sig/ark_email/models/platform/webhook_retrieve_response.rbs new file mode 100644 index 0000000..34b57be --- /dev/null +++ b/sig/ark_email/models/platform/webhook_retrieve_response.rbs @@ -0,0 +1,104 @@ +module ArkEmail + module Models + module Platform + type webhook_retrieve_response = + { + data: ArkEmail::Models::Platform::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookRetrieveResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Platform::WebhookRetrieveResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Platform::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Platform::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::event], + name: String, + updated_at: Time, + url: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor created_at: Time + + attr_accessor enabled: bool + + attr_accessor events: ::Array[ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::event] + + attr_accessor name: String + + attr_accessor updated_at: Time + + attr_accessor url: String + + def initialize: ( + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::event], + name: String, + updated_at: Time, + url: String + ) -> void + + def to_hash: -> { + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::event], + name: String, + updated_at: Time, + url: String + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Platform::WebhookRetrieveResponse::Data::event] + end + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_test_params.rbs b/sig/ark_email/models/platform/webhook_test_params.rbs new file mode 100644 index 0000000..66f78a4 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_test_params.rbs @@ -0,0 +1,51 @@ +module ArkEmail + module Models + module Platform + type webhook_test_params = + { event: ArkEmail::Models::Platform::WebhookTestParams::event } + & ArkEmail::Internal::Type::request_parameters + + class WebhookTestParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_accessor event: ArkEmail::Models::Platform::WebhookTestParams::event + + def initialize: ( + event: ArkEmail::Models::Platform::WebhookTestParams::event, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + event: ArkEmail::Models::Platform::WebhookTestParams::event, + request_options: ArkEmail::RequestOptions + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Platform::WebhookTestParams::event] + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_test_response.rbs b/sig/ark_email/models/platform/webhook_test_response.rbs new file mode 100644 index 0000000..b1e28ca --- /dev/null +++ b/sig/ark_email/models/platform/webhook_test_response.rbs @@ -0,0 +1,64 @@ +module ArkEmail + module Models + module Platform + type webhook_test_response = + { + data: ArkEmail::Models::Platform::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Platform::WebhookTestResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Platform::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Platform::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + duration_ms: Integer, + status_code: Integer, + success: bool, + error: String? + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor duration_ms: Integer + + attr_accessor status_code: Integer + + attr_accessor success: bool + + attr_accessor error: String? + + def initialize: ( + duration_ms: Integer, + status_code: Integer, + success: bool, + ?error: String? + ) -> void + + def to_hash: -> { + duration_ms: Integer, + status_code: Integer, + success: bool, + error: String? + } + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_update_params.rbs b/sig/ark_email/models/platform/webhook_update_params.rbs new file mode 100644 index 0000000..c23f34b --- /dev/null +++ b/sig/ark_email/models/platform/webhook_update_params.rbs @@ -0,0 +1,78 @@ +module ArkEmail + module Models + module Platform + type webhook_update_params = + { + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookUpdateParams::event], + name: String, + url: String + } + & ArkEmail::Internal::Type::request_parameters + + class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel + extend ArkEmail::Internal::Type::RequestParameters::Converter + include ArkEmail::Internal::Type::RequestParameters + + attr_reader enabled: bool? + + def enabled=: (bool) -> bool + + attr_reader events: ::Array[ArkEmail::Models::Platform::WebhookUpdateParams::event]? + + def events=: ( + ::Array[ArkEmail::Models::Platform::WebhookUpdateParams::event] + ) -> ::Array[ArkEmail::Models::Platform::WebhookUpdateParams::event] + + attr_reader name: String? + + def name=: (String) -> String + + attr_reader url: String? + + def url=: (String) -> String + + def initialize: ( + ?enabled: bool, + ?events: ::Array[ArkEmail::Models::Platform::WebhookUpdateParams::event], + ?name: String, + ?url: String, + ?request_options: ArkEmail::request_opts + ) -> void + + def to_hash: -> { + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookUpdateParams::event], + name: String, + url: String, + request_options: ArkEmail::RequestOptions + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Platform::WebhookUpdateParams::event] + end + end + end + end +end diff --git a/sig/ark_email/models/platform/webhook_update_response.rbs b/sig/ark_email/models/platform/webhook_update_response.rbs new file mode 100644 index 0000000..f0c2890 --- /dev/null +++ b/sig/ark_email/models/platform/webhook_update_response.rbs @@ -0,0 +1,104 @@ +module ArkEmail + module Models + module Platform + type webhook_update_response = + { + data: ArkEmail::Models::Platform::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel + attr_accessor data: ArkEmail::Models::Platform::WebhookUpdateResponse::Data + + attr_accessor meta: ArkEmail::APIMeta + + attr_accessor success: true + + def initialize: ( + data: ArkEmail::Models::Platform::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + ?success: true + ) -> void + + def to_hash: -> { + data: ArkEmail::Models::Platform::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true + } + + type data = + { + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookUpdateResponse::Data::event], + name: String, + updated_at: Time, + url: String + } + + class Data < ArkEmail::Internal::Type::BaseModel + attr_accessor id: String + + attr_accessor created_at: Time + + attr_accessor enabled: bool + + attr_accessor events: ::Array[ArkEmail::Models::Platform::WebhookUpdateResponse::Data::event] + + attr_accessor name: String + + attr_accessor updated_at: Time + + attr_accessor url: String + + def initialize: ( + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookUpdateResponse::Data::event], + name: String, + updated_at: Time, + url: String + ) -> void + + def to_hash: -> { + id: String, + created_at: Time, + enabled: bool, + events: ::Array[ArkEmail::Models::Platform::WebhookUpdateResponse::Data::event], + name: String, + updated_at: Time, + url: String + } + + type event = + :MessageSent + | :MessageDelayed + | :MessageDeliveryFailed + | :MessageHeld + | :MessageBounced + | :MessageLinkClicked + | :MessageLoaded + | :DomainDNSError + + module Event + extend ArkEmail::Internal::Type::Enum + + MESSAGE_SENT: :MessageSent + MESSAGE_DELAYED: :MessageDelayed + MESSAGE_DELIVERY_FAILED: :MessageDeliveryFailed + MESSAGE_HELD: :MessageHeld + MESSAGE_BOUNCED: :MessageBounced + MESSAGE_LINK_CLICKED: :MessageLinkClicked + MESSAGE_LOADED: :MessageLoaded + DOMAIN_DNS_ERROR: :DomainDNSError + + def self?.values: -> ::Array[ArkEmail::Models::Platform::WebhookUpdateResponse::Data::event] + end + end + end + end + end +end diff --git a/sig/ark_email/resources/platform.rbs b/sig/ark_email/resources/platform.rbs new file mode 100644 index 0000000..bcd6dfd --- /dev/null +++ b/sig/ark_email/resources/platform.rbs @@ -0,0 +1,9 @@ +module ArkEmail + module Resources + class Platform + attr_reader webhooks: ArkEmail::Resources::Platform::Webhooks + + def initialize: (client: ArkEmail::Client) -> void + end + end +end diff --git a/sig/ark_email/resources/platform/webhooks.rbs b/sig/ark_email/resources/platform/webhooks.rbs new file mode 100644 index 0000000..4e9f804 --- /dev/null +++ b/sig/ark_email/resources/platform/webhooks.rbs @@ -0,0 +1,67 @@ +module ArkEmail + module Resources + class Platform + class Webhooks + def create: ( + name: String, + url: String, + ?events: ::Array[ArkEmail::Models::Platform::WebhookCreateParams::event], + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Platform::WebhookCreateResponse + + def retrieve: ( + String webhook_id, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Platform::WebhookRetrieveResponse + + def update: ( + String webhook_id, + ?enabled: bool, + ?events: ::Array[ArkEmail::Models::Platform::WebhookUpdateParams::event], + ?name: String, + ?url: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Platform::WebhookUpdateResponse + + def list: ( + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Platform::WebhookListResponse + + def delete: ( + String webhook_id, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Platform::WebhookDeleteResponse + + def list_deliveries: ( + ?after: Integer, + ?before: Integer, + ?event: ArkEmail::Models::Platform::WebhookListDeliveriesParams::event, + ?page: Integer, + ?per_page: Integer, + ?success: bool, + ?tenant_id: String, + ?webhook_id: String, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Internal::PageNumberPagination[ArkEmail::Models::Platform::WebhookListDeliveriesResponse] + + def replay_delivery: ( + String delivery_id, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Platform::WebhookReplayDeliveryResponse + + def retrieve_delivery: ( + String delivery_id, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse + + def test_: ( + String webhook_id, + event: ArkEmail::Models::Platform::WebhookTestParams::event, + ?request_options: ArkEmail::request_opts + ) -> ArkEmail::Models::Platform::WebhookTestResponse + + def initialize: (client: ArkEmail::Client) -> void + end + end + end +end diff --git a/test/ark_email/resource_namespaces.rb b/test/ark_email/resource_namespaces.rb index 7f22369..df5697d 100644 --- a/test/ark_email/resource_namespaces.rb +++ b/test/ark_email/resource_namespaces.rb @@ -3,6 +3,9 @@ module ArkEmail module Test module Resources + module Platform + end + module Tenants end end diff --git a/test/ark_email/resources/platform/webhooks_test.rb b/test/ark_email/resources/platform/webhooks_test.rb new file mode 100644 index 0000000..352105c --- /dev/null +++ b/test/ark_email/resources/platform/webhooks_test.rb @@ -0,0 +1,167 @@ +# frozen_string_literal: true + +require_relative "../../test_helper" + +class ArkEmail::Test::Resources::Platform::WebhooksTest < ArkEmail::Test::ResourceTest + def test_create_required_params + response = + @ark.platform.webhooks.create( + name: "Central Event Processor", + url: "https://myplatform.com/webhooks/email-events" + ) + + assert_pattern do + response => ArkEmail::Models::Platform::WebhookCreateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Platform::WebhookCreateResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve + response = @ark.platform.webhooks.retrieve("pwh_abc123def456") + + assert_pattern do + response => ArkEmail::Models::Platform::WebhookRetrieveResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Platform::WebhookRetrieveResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_update + response = @ark.platform.webhooks.update("pwh_abc123def456") + + assert_pattern do + response => ArkEmail::Models::Platform::WebhookUpdateResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Platform::WebhookUpdateResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_list + response = @ark.platform.webhooks.list + + assert_pattern do + response => ArkEmail::Models::Platform::WebhookListResponse + end + + assert_pattern do + response => { + data: ^(ArkEmail::Internal::Type::ArrayOf[ArkEmail::Models::Platform::WebhookListResponse::Data]), + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_delete + response = @ark.platform.webhooks.delete("pwh_abc123def456") + + assert_pattern do + response => ArkEmail::Models::Platform::WebhookDeleteResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Platform::WebhookDeleteResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_list_deliveries + response = @ark.platform.webhooks.list_deliveries + + assert_pattern do + response => ArkEmail::Internal::PageNumberPagination + end + + row = response.to_enum.first + return if row.nil? + + assert_pattern do + row => ArkEmail::Models::Platform::WebhookListDeliveriesResponse + end + + assert_pattern do + row => { + id: String, + attempt: Integer, + event: ArkEmail::Models::Platform::WebhookListDeliveriesResponse::Event, + status_code: Integer | nil, + success: ArkEmail::Internal::Type::Boolean, + tenant_id: String, + timestamp: Time, + url: String, + webhook_id: String, + will_retry: ArkEmail::Internal::Type::Boolean + } + end + end + + def test_replay_delivery + response = @ark.platform.webhooks.replay_delivery("pwd_abc123def456") + + assert_pattern do + response => ArkEmail::Models::Platform::WebhookReplayDeliveryResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Platform::WebhookReplayDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_retrieve_delivery + response = @ark.platform.webhooks.retrieve_delivery("pwd_abc123def456") + + assert_pattern do + response => ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Platform::WebhookRetrieveDeliveryResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end + + def test_test__required_params + response = @ark.platform.webhooks.test_("pwh_abc123def456", event: :MessageSent) + + assert_pattern do + response => ArkEmail::Models::Platform::WebhookTestResponse + end + + assert_pattern do + response => { + data: ArkEmail::Models::Platform::WebhookTestResponse::Data, + meta: ArkEmail::APIMeta, + success: true | false + } + end + end +end diff --git a/test/ark_email/resources/platform_test.rb b/test/ark_email/resources/platform_test.rb new file mode 100644 index 0000000..76de3c6 --- /dev/null +++ b/test/ark_email/resources/platform_test.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +require_relative "../test_helper" + +class ArkEmail::Test::Resources::PlatformTest < ArkEmail::Test::ResourceTest +end From 209ac6701b972d01b0d83ec8319bb6a36812909d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 7 Feb 2026 09:10:44 +0000 Subject: [PATCH 7/8] fix(client): loosen json header parsing --- lib/ark_email/internal/util.rb | 2 +- rbi/ark_email/internal/util.rbi | 2 +- test/ark_email/internal/util_test.rb | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/ark_email/internal/util.rb b/lib/ark_email/internal/util.rb index 31204f8..a4034ae 100644 --- a/lib/ark_email/internal/util.rb +++ b/lib/ark_email/internal/util.rb @@ -485,7 +485,7 @@ def writable_enum(&blk) end # @type [Regexp] - JSON_CONTENT = %r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)} + JSON_CONTENT = %r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)} # @type [Regexp] JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)} diff --git a/rbi/ark_email/internal/util.rbi b/rbi/ark_email/internal/util.rbi index a201a49..6e00cf4 100644 --- a/rbi/ark_email/internal/util.rbi +++ b/rbi/ark_email/internal/util.rbi @@ -296,7 +296,7 @@ module ArkEmail end JSON_CONTENT = - T.let(%r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}, Regexp) + T.let(%r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)}, Regexp) JSONL_CONTENT = T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp) diff --git a/test/ark_email/internal/util_test.rb b/test/ark_email/internal/util_test.rb index bc3a891..a8e0303 100644 --- a/test/ark_email/internal/util_test.rb +++ b/test/ark_email/internal/util_test.rb @@ -171,6 +171,8 @@ def test_json_content cases = { "application/json" => true, "application/jsonl" => false, + "application/arbitrary+json" => true, + "application/ARBITRARY+json" => true, "application/vnd.github.v3+json" => true, "application/vnd.api+json" => true } From f3eb7c5a8cbeb8ff8156e7f14663db911535d1f2 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 7 Feb 2026 09:11:02 +0000 Subject: [PATCH 8/8] release: 0.19.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 22 ++++++++++++++++++++++ Gemfile.lock | 2 +- README.md | 2 +- lib/ark_email/version.rb | 2 +- 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4ad3fef..e756293 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.18.0" + ".": "0.19.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 00d4869..07afb71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## 0.19.0 (2026-02-07) + +Full Changelog: [v0.18.0...v0.19.0](https://github.com/ArkHQ-io/ark-ruby/compare/v0.18.0...v0.19.0) + +### Features + +* **api:** add Credentials endpoint ([e1b4536](https://github.com/ArkHQ-io/ark-ruby/commit/e1b45361e3a4e4cfd9de4648def64e2622baea81)) +* **api:** add Platform webhooks ([56ac161](https://github.com/ArkHQ-io/ark-ruby/commit/56ac1617e16253ec182b5705621159edddb8791c)) +* **api:** endpoint updates ([f492b2e](https://github.com/ArkHQ-io/ark-ruby/commit/f492b2e39082aed03ef6d104a1e3d9695e3d66b6)) +* **api:** standardization improvements ([b187d9b](https://github.com/ArkHQ-io/ark-ruby/commit/b187d9b397de264ac9dbf6d7b882b28e6850ddf6)) +* **api:** tenant usage ([b3aca3d](https://github.com/ArkHQ-io/ark-ruby/commit/b3aca3dfd1957992552c18d94bba4cd6e1db31f3)) + + +### Bug Fixes + +* **client:** loosen json header parsing ([209ac67](https://github.com/ArkHQ-io/ark-ruby/commit/209ac6701b972d01b0d83ec8319bb6a36812909d)) + + +### Chores + +* **docs:** remove www prefix ([80b201f](https://github.com/ArkHQ-io/ark-ruby/commit/80b201fff6de57f5d2496f488e137ac1535304ef)) + ## 0.18.0 (2026-02-03) Full Changelog: [v0.17.0...v0.18.0](https://github.com/ArkHQ-io/ark-ruby/compare/v0.17.0...v0.18.0) diff --git a/Gemfile.lock b/Gemfile.lock index 2bdab20..346b817 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - ark-email (0.18.0) + ark-email (0.19.0) cgi connection_pool diff --git a/README.md b/README.md index bad80e4..641bcd0 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application ```ruby -gem "ark-email", "~> 0.18.0" +gem "ark-email", "~> 0.19.0" ``` diff --git a/lib/ark_email/version.rb b/lib/ark_email/version.rb index 300e477..bad5e57 100644 --- a/lib/ark_email/version.rb +++ b/lib/ark_email/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module ArkEmail - VERSION = "0.18.0" + VERSION = "0.19.0" end