Difference between revisions of "stoney mail: Mail Resource - REST API"

From stoney cloud
Jump to: navigation, search
[unchecked revision][unchecked revision]
(Permission & Ownership object)
(Permission & Ownership object)
Line 17: Line 17:
 
== Permission & Ownership object ==
 
== 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:
 
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.
 
* 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 roles are available and can be set on which level
Line 22: Line 23:
 
* Do we want to reference the location URI or the UID of a role
 
* Do we want to reference the location URI or the UID of a role
 
* Does anyone have a better name for the <code>roles</code> object? :)
 
* Does anyone have a better name for the <code>roles</code> object? :)
 +
 
<source lang="javascript">
 
<source lang="javascript">
 
"roles":
 
"roles":
Line 27: Line 29:
 
   [
 
   [
 
     {
 
     {
 +
      /* The user 3000000 has the Admin role for this service */
 
       "location": "https://api.example.com/v1/users/3000000",
 
       "location": "https://api.example.com/v1/users/3000000",
 
       "role": "Admin"
 
       "role": "Admin"
 
     },
 
     },
 
     {
 
     {
 +
      /* The user 3000001 has the Admin role for this service */
 
       "location": "https://api.example.com/v1/users/3000001",
 
       "location": "https://api.example.com/v1/users/3000001",
 
       "role": "Admin"
 
       "role": "Admin"
 
     },
 
     },
 
     {
 
     {
 +
      /* The user 3000002 has the User role for this service */
 
       "location": "https://api.example.com/v1/users/3000002",
 
       "location": "https://api.example.com/v1/users/3000002",
 
       "role": "User"
 
       "role": "User"
Line 47: Line 52:
 
The opposite while querying a users resource, for example https://api.example.com/v1/users/3000000
 
The opposite while querying a users resource, for example https://api.example.com/v1/users/3000000
 
<source lang="javascript">
 
<source lang="javascript">
 +
"roles":
 
{
 
{
 
   [
 
   [

Revision as of 15:26, 30 January 2014

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"
    },
    { 
      /* ... */
    }
  ]
}