stoney mail: Mail Resource - REST API

stoney mail

https://api.example.com/v1/services/mail
https://api.example.com/v1/services/mail/domains
https://api.example.com/v1/services/mail/domains/5000000
https://api.example.com/v1/services/mail/domains/5000000/accounts
https://api.example.com/v1/services/mail/domains/5000000/accounts/5000001
https://api.example.com/v1/services/mail/domains/5000000/aliases/5000002
https://api.example.com/v1/services/mail/domainaliases
https://api.example.com/v1/services/mail/domainaliases/5000003
https://api.example.com/v1/services/mail/accounts
https://api.example.com/v1/services/mail/accounts/5000001
https://api.example.com/v1/services/mail/aliases
https://api.example.com/v1/services/mail/aliases/5000002

Permission & Ownership object

We need a generic permission & ownership object which can be added to all service creation and modification requests. The following points needs to be clarified:

  • Shall the roles be set during the service creation / modification or on the users resource?
  • Is this object always mandatory, or can the roles be defined via some clever inherited default values if missing.
  • Which roles are available and can be set on which level
  • Which informations apart from the user (people) and the role name are necessary?
  • Do we want to reference the location URI or the UID of a role
  • Does anyone have a better name for the roles object? :)
"roles":
{
  [
    {
      /* The user 3000000 has the Admin role for this service */
      "location": "https://api.example.com/v1/users/3000000",
      "role": "Admin"
    },
    {
      /* The user 3000001 has the Admin role for this service */
      "location": "https://api.example.com/v1/users/3000001",
      "role": "Admin"
    },
    {
      /* The user 3000002 has the User role for this service */
      "location": "https://api.example.com/v1/users/3000002",
      "role": "User"
    },
    { 
      /* ... */
    }
  ]
}

The opposite while querying a users resource, for example https://api.example.com/v1/users/3000000

"roles":
{
  [
    {
      /* MailAccountAdmin role for the mail account 5000001 */
      "location": "https://api.example.com/v1/services/mail/domains/5000000/accounts/5000001",
      "role": "Admin"
    },
    {
      /* BackupAdmin role for all backup products of the customer 1000001 */
      "location": "https://api.example.com/v1/services/backups/accounts/?customerUid=1000001",
      "role": "Admin"
    },
    {
      /* VirtualizationUser role for the VM 6000001 */
      "location": "https://api.example.com/v1/services/virtualization/vms/6000001",
      "role": "User"
    },
    { 
      /* ... */
    }
  ]
}

Notes

  • We need to be able to query the size of the mailbox and the used space. Do we also return the percentage of used space or do we let the client calculate this value?
Last modified on 19 March 2014, at 10:42