Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## Unreleased
- Add Account Accesses API

## [2.7.0] - 2026-02-24
- Add Sandbox Messages API
- Add Sending Domains API
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ General:
- Templates CRUD – [`email_templates_api.rb`](examples/email_templates_api.rb)
- Action Mailer – [`action_mailer.rb`](examples/action_mailer.rb)
- Accounts API – [`accounts_api.rb`](examples/accounts_api.rb)
- Account Accesses – [`account_accesses_api.rb`](examples/account_accesses_api.rb)

## Migration guide v1 → v2

Expand Down
21 changes: 21 additions & 0 deletions examples/account_accesses_api.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
require 'mailtrap'

account_id = 3229
client = Mailtrap::Client.new(api_key: 'your-api-key')
account_accesses = Mailtrap::AccountAccessesAPI.new(account_id, client)

# List all account accesses
account_accesses.list
# => [#<struct Mailtrap::AccountAccess id=1, specifier_type="User", specifier={...}, ...>]

# List with optional filters: domain_ids, inbox_ids, project_ids
account_accesses.list(domain_ids: [1, 2])
account_accesses.list(inbox_ids: [12, 34])
account_accesses.list(project_ids: [100, 200])

# Combine multiple filters
account_accesses.list(domain_ids: [1], inbox_ids: [12], project_ids: [100])

# Delete an account access
account_access_id = 123
account_accesses.delete(account_access_id)
1 change: 1 addition & 0 deletions lib/mailtrap.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
require_relative 'mailtrap/errors'
require_relative 'mailtrap/version'
require_relative 'mailtrap/accounts_api'
require_relative 'mailtrap/account_accesses_api'
require_relative 'mailtrap/email_templates_api'
require_relative 'mailtrap/contacts_api'
require_relative 'mailtrap/contact_lists_api'
Expand Down
20 changes: 20 additions & 0 deletions lib/mailtrap/account_access.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# frozen_string_literal: true

module Mailtrap
# Data Transfer Object for AccountAccess
# @see https://docs.mailtrap.io/developers/account-management/access-control
# @attr_reader id [Integer] The access ID
# @attr_reader specifier_type [String] The type of the specifier
# @attr_reader specifier [Hash] The specifier for the access
# @attr_reader resources [Array<Hash>] The resources this access applies to
# @attr_reader permissions [Hash] The permissions granted
#
AccountAccess = Struct.new(
:id,
:specifier_type,
:specifier,
:resources,
:permissions,
keyword_init: true
)
end
43 changes: 43 additions & 0 deletions lib/mailtrap/account_accesses_api.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# frozen_string_literal: true

require_relative 'base_api'
require_relative 'account_access'

module Mailtrap
class AccountAccessesAPI
include BaseAPI

attr_reader :account_id

self.response_class = AccountAccess

# Retrieves a list of account accesses with optional filtering by domain, inbox, or project IDs
# @param domain_ids [Array<Integer>] Optional array of domain IDs to filter by
# @param inbox_ids [Array<Integer>] Optional array of inbox IDs to filter by
# @param project_ids [Array<Integer>] Optional array of project IDs to filter by
# @return [Array<AccountAccess>] List of account access objects
# @!macro api_errors
def list(domain_ids: [], inbox_ids: [], project_ids: [])
query_params = {}
query_params[:domain_ids] = domain_ids unless domain_ids.empty?
query_params[:inbox_ids] = inbox_ids unless inbox_ids.empty?
query_params[:project_ids] = project_ids unless project_ids.empty?

base_list(query_params)
end

# Deletes an account access
# @param account_access_id [Integer] The account access ID
# @return [Hash]
# @!macro api_errors
def delete(account_access_id)
base_delete(account_access_id)
end

private

def base_path
"/api/accounts/#{account_id}/account_accesses"
end
end
end

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading