Modify response for POST /{source}/:id/members API and /{source}/:id/invitations for promotion scenario

Adds a member to a source (doc) (code) (supports multiple members)

  • POST /groups/:id/members
  • POST /projects/:id/members
  • Returns a member json

TODO: Need to validate and return a meaningful response when member gets queued.

And

Invitations (doc) (code)

  • POST /groups/:id/invitations
  • POST /projects/:id/invitations
  • Returns success:true, or errors

TODO: Need to validate and return a meaningful response when member gets queued.

Proposed response change:

As shared here,

For API

  • POST /groups/:id/invitations
  • POST /projects/:id/invitations

Existing Response

When single or multiple members are passed

Here there are three possible scenarios:

  • All created [api returns success]
  • All errored [api returns error]
  • Some created, some errored [api returns error]
success partial or full failure

http status: 201

{

status: success

}

http status: 201

{

status: error,

message: {username1: error_msg, username2: error_msg..}

}

For Queued Scenario:

When single or multiple members are passed

Here we can have three scenarios:

  • All created [api returns success] same as now
  • All queued [api returns queued]
  • Partial queued, and partial created [api returns queued]
  • Some errors and some queued + some created [api returns error]
    • same as now
All or partial queued

http status: 201

{

status: queued,

queued_users: [username1, username2]

}


For API

  • POST /groups/:id/members
  • POST /projects/:id/members

Existing Response

When single member is passed
success failure

http status: 201

{

member object

}

http status: 400

{

message : { 'base' => [error_msg] }

}

When multiple members are passed

Here there are three possible scenarios:

  • All created [api returns success]
  • All errored [api returns error]
  • Some created, some errored [api returns error]
success partial or full failure

http status: 201

{

status: success

}

http status: 201

{

status: error,

message: {username1: error_msg, username2: error_msg..}

}

For Queued Scenario:

When single member is passed
successfully queued

http status: 202

{

message: "Request was queued for Admin"

}

When multiple members is passed

Here we can have three scenarios:

  • All created [api returns success] same as now
  • All queued [api returns queued]
  • Partial queued, and partial created [api returns queued]
  • Some errors and some queued + some created [api returns error]
    • same as now
All or partial queued

http status: 201

{

status: queued,

queued_users: [username1, username2]

}


Implementation

Update API and docs to account for non-billable... (!167020 - merged)

Edited by Sheldon Led