MailLandDocs
Hesap

Ekip Yönetimi

Ekip üyelerini davet edin, roller atayın ve çalışma alanınızdaki izinleri yönetin

Üyeleri çalışma alanınıza davet ederek ekibinizle iş birliği yapın. Her üyeye izinlerini belirleyen bir rol atanır.

Roller

RolDeğerAçıklama
Owner0Tam erişim, faturalandırma, sahiplik devri yapabilir
Admin1Faturalandırma ve sahiplik devri dışında tam erişim
Member2E-posta gönderme, alan adlarını yönetme, analizleri görüntüleme
Viewer3Tüm kaynaklara salt okunur erişim

Rol İzinleri

Member salt okunur değildir ve anahtar yönetiminden hariç tutulmamıştır: neredeyse her şeyi oluşturabilir ve düzenleyebilir. Yalnızca API anahtarlarını, alan adlarını ve webhook'ları silmek, ayrıca ekip/sahiplik yönetimi Admin'e özeldir.

İzinOwnerAdminMemberViewer
E-posta göndermeEvetEvetEvetHayır
Alan adlarını yönetmeEvetEvetEvetHayır
Aboneleri yönetmeEvetEvetEvetHayır
Analizleri görüntülemeEvetEvetEvetEvet
API anahtarları oluşturma/döndürmeEvetEvetEvetHayır
API anahtarlarını / alan adlarını / webhook'ları silmeEvetEvetHayırHayır
Webhook oluşturma/düzenlemeEvetEvetEvetHayır
Ayarları düzenleme (izleme dahil)EvetEvetEvetHayır
Üye davet etmeEvetEvetHayırHayır
Üye kaldırmaEvetEvetHayırHayır
Rol güncellemeEvetEvetHayırHayır
Faturalandırmayı yönetmeEvetHayırHayırHayır
Sahiplik devriEvetHayırHayırHayır
Çalışma alanını silmeEvetHayırHayırHayır

Ekip Genel Bakış

Mevcut ekip üyelerini ve bekleyen davetleri alın:

GET https://api.mail.land/v1/account/team
List team members
curl https://api.mail.land/v1/account/team \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Team overview response
{
  "members": [
    {
      "publicId": "mbr_a1b2c3d4e5",
      "email": "[email protected]",
      "fullName": "John Doe",
      "role": "owner",
      "status": "active",
      "joinedAt": "2026-01-15T08:00:00Z",
      "invitedByEmail": null,
      "isCurrentUser": true
    },
    {
      "publicId": "mbr_f6g7h8i9j0",
      "email": "[email protected]",
      "fullName": "Jane Smith",
      "role": "admin",
      "status": "active",
      "joinedAt": "2026-01-20T10:00:00Z",
      "invitedByEmail": "[email protected]",
      "isCurrentUser": false
    }
  ],
  "pendingInvitations": [
    {
      "publicId": "inv_k1l2m3n4o5",
      "email": "[email protected]",
      "role": "member",
      "status": "pending",
      "createdAt": "2026-02-17T08:00:00Z",
      "expiresAt": "2026-02-24T08:00:00Z",
      "invitedByEmail": "[email protected]",
      "invitedByName": "John Doe",
      "isExpired": false
    }
  ],
  "totalMembers": 2,
  "totalPendingInvitations": 1,
  "maxMembers": 10
}

Bu yanıtta id, userId, firstName/lastName, roleName/statusName, invitedBy, memberCount veya invitationCount yoktur: bunun yerine yukarıdaki alan adlarını kullanın. maxMembers workspace'in planını yansıtır: Free ve Pro'da 10, Max'te sınırsız. Bir koltuk, aktif bir üye (owner dahil) veya süresi dolmamış, bekleyen bir davettir; askıya alınmış üyeler ile süresi dolmuş, iptal edilmiş veya kabul edilmiş davetler koltuk saymaz. Limitteyken davet etme, kabul etme, yeniden etkinleştirme ve ilk SSO girişi 400 PLAN_LIMIT_REACHED döner. Plan düşürüldüğünde kimse çıkarılmaz veya askıya alınmaz: bu yalnızca workspace yeni limitin üzerindeyken yeni katılımları engeller.

Üye Durumları

DurumAçıklama
activeAktif ekip üyesi
suspendedBir yönetici tarafından askıya alındı

Davet Durumları

Küçük harfli dizeler olarak döner:

DurumAçıklama
pendingKabul bekleniyor
acceptedDavet kabul edildi
expiredDavet süresi doldu (7 gün)
revokedDavet iptal edildi ("cancelled" değil)

Ekip Üyesi Davet Etme

POST https://api.mail.land/v1/account/team/invite
Invite request
{
  "email": "[email protected]",
  "role": 2
}
AlanTürZorunluAçıklama
emailstringEvetDavet edilecek e-posta adresi
roleintEvetAtanacak rol (1–3, Owner olarak davet edilemez)
Invite a team member
curl -X POST https://api.mail.land/v1/account/team/invite \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]", "role": 2 }'

Davet edilen kullanıcı, daveti kabul etmek için bir bağlantı içeren e-posta alır. Davetler 7 gün sonra sona erer.

Daveti Kabul Etme

Bir daveti kabul etmek için tek bir genel rota vardır: sürümlenmemiştir (/v1 yolun bir parçası değildir) ve bir id yerine davet tokenıyla anahtarlanır:

POST https://api.mail.land/invitations/{token}/accept

Mevcut bir MailLand kullanıcısı için önce davet edilen e-posta adresiyle oturum açın, ardından bu rotayı boş veya minimal bir gövdeyle çağırın, firstName/lastName/password gerekmez. Tamamen yeni bir kullanıcı için, hesabı oluşturmak ve tek adımda kabul etmek üzere aynı çağrıda fullName ve password gönderin.

Davet kabul isteği (yeni kullanıcı)
{
  "fullName": "New Member",
  "password": "SecureP@ssw0rd!"
}
Daveti kabul et
curl -X POST https://api.mail.land/invitations/invitation-token-from-email/accept \
  -H "Content-Type: application/json" \
  -d '{"fullName": "New Member", "password": "SecureP@ssw0rd!"}'

POST /v1/account/team/invitations/{id}/accept, ayrı bir /accept-public rotası veya GET /v1/team/invitations/{id}?token= yoktur. Hem "mevcut kullanıcı" hem de "yeni kullanıcı" kabulü, bu tek genel /invitations/{token}/accept uç noktasından geçer (Controllers/Public/InvitationsController.cs).

Davet Bilgilerini Alma

Kabul etmeden önce davet ayrıntılarını alın (genel, kimlik doğrulama gerekmez, token ile anahtarlanır, /v1 değil):

GET https://api.mail.land/invitations/{token}
Davet bilgilerini al
curl "https://api.mail.land/invitations/invitation-token-from-email"
Invitation info response
{
  "tenantName": "My Company",
  "role": "member",
  "invitedByName": "John Doe",
  "expiresAt": "2026-02-24T08:00:00Z",
  "isExpired": false,
  "alreadyAccepted": false,
  "existingUserEmail": "[email protected]"
}

Davetleri Yönetme

Daveti İptal Etme

DELETE https://api.mail.land/v1/account/team/invitations/{id}
Cancel an invitation
curl -X DELETE https://api.mail.land/v1/account/team/invitations/{id} \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Başarılı olursa 204 No Content döner.

Daveti Yeniden Gönderme

POST https://api.mail.land/v1/account/team/invitations/{id}/resend
Resend an invitation
curl -X POST https://api.mail.land/v1/account/team/invitations/{id}/resend \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Daveti yeniden göndermek, 7 günlük son kullanma süresini sıfırlar.

Üye Rolünü Güncelleme

PATCH https://api.mail.land/v1/account/team/members/{id}/role
Update role request
{
  "role": 1
}
Update member role
curl -X PATCH https://api.mail.land/v1/account/team/members/{id}/role \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{ "role": 1 }'

Rolleri yalnızca Sahipler ve Yöneticiler güncelleyebilir. Kendi rolünüzü değiştiremez veya birini Sahip olarak terfi ettiremezsiniz (bunun yerine sahiplik devrini kullanın).

Adminler yalnızca Member/Viewer rollerini yönetebilir: bir üyeyi Admin'e yükseltemez veya başka bir Admin'in rolünü değiştiremezler. Bunu yalnızca Owner yapabilir.

Askıya Alma ve Askıyı Kaldırma

Bir üyenin erişimini geçici olarak askıya alın:

POST https://api.mail.land/v1/account/team/members/{id}/suspend

Bir { reason?, credentialDecision?, transferToMemberId? } gövdesi, askıya alma sırasında o üyenin API anahtarlarına ne olacağını kontrol eder. credentialDecision, yalnızca üyenin en az bir canlı API anahtarı varsa zorunludur: bu durumda gönderilmezse çağrı, açığa çıkan anahtarları details içinde listeleyerek 400 CREDENTIAL_DECISION_REQUIRED döner. Aksi hâlde gövdenin tamamı atlanabilir.

AlanDeğerler
reasonoffboarding, compromise, abuse, other
credentialDecisionrevoke, keep, transfer
transferToMemberIdcredentialDecision değeri transfer olduğunda zorunludur
Suspend a member
curl -X POST https://api.mail.land/v1/account/team/members/{id}/suspend \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Askıya alınan bir üyeyi geri yükleyin:

POST https://api.mail.land/v1/account/team/members/{id}/reactivate
Unsuspend a member
curl -X POST https://api.mail.land/v1/account/team/members/{id}/reactivate \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Askıya alınan üyeler çalışma alanında oturum açamaz; API anahtarları, askıya alma sırasında verilen kimlik bilgisi kararını izler: keep ile üyenin anahtarları çalışmaya devam eder.

Üye Kaldırma

DELETE https://api.mail.land/v1/account/team/members/{id}

Kaldırma işlemi aynı kimlik bilgisi kararını sorgu parametreleri olarak kabul eder:

DELETE https://api.mail.land/v1/account/team/members/{id}?reason=offboarding&credentialDecision=revoke&transferToMemberId=mbr_f6g7h8i9j0

Askıya almada olduğu gibi, üye canlı bir API anahtarına sahipse credentialDecision zorunludur; aksi hâlde çağrı 400 CREDENTIAL_DECISION_REQUIRED döner.

Remove a member
curl -X DELETE https://api.mail.land/v1/account/team/members/{id} \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Üye, çalışma alanından kaldırılır ve tüm çalışma alanı kaynaklarına erişimi anında sona erer.

Sahiplik Devri

Çalışma alanı sahipliğini başka bir üyeye devredin:

POST https://api.mail.land/v1/account/team/transfer-ownership
Transfer ownership request
{
  "newOwnerMemberId": "mbr_f6g7h8i9j0"
}
Transfer ownership
curl -X POST https://api.mail.land/v1/account/team/transfer-ownership \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{ "newOwnerMemberId": "mbr_f6g7h8i9j0" }'

Sahiplik devri geri alınamaz. Mevcut sahip Yöneticiye düşürülür ve hedef üye yeni Sahip olur.

Hedef, aktif bir Admin olmalıdır (bir Member veya Viewer değil).

Hata Yanıtları

DurumKodAçıklama
400VALIDATION_FAILEDGeçersiz e-posta veya rol
400INVALID_REQUESTBu çalışma alanı için 50'den fazla bekleyen davet
400CREDENTIAL_DECISION_REQUIREDAskıya alma/kaldırma hedefinin canlı API anahtarları var ve credentialDecision gönderilmedi
400CREDENTIAL_TRANSFER_TARGET_INVALIDEksik veya geçersiz transferToMemberId ile credentialDecision: transfer
403FORBIDDENBu eylem için yetersiz izinler
404RESOURCE_NOT_FOUNDÜye veya davet bulunamadı
400PLAN_LIMIT_REACHEDWorkspace planının koltuk limitine ulaştı (davet etme, kabul etme, yeniden etkinleştirme veya ilk SSO girişi)
409CONFLICTKullanıcı zaten üye veya zaten bekleyen bir daveti var

MEMBER_ALREADY_EXISTS diye bir kod yoktur: hem "zaten üye" hem de "davet zaten var" 409 CONFLICT döner.

POST /v1/account/team/leave (çalışma alanından kendiniz ayrılma) ve GET /v1/account/team/me (kendi üyelik kaydınız) da mevcuttur ve bu sayfanın başka bir yerinde belgelenmemiştir.

Sonraki Adımlar

Bu sayfada