Managing Groups
  • 10 Oct 2024
  • 15 Minutes to read
  • Dark
    Light
  • PDF

Managing Groups

  • Dark
    Light
  • PDF

Article summary

Java SDK.NET SDKREST API

Java SDK

To download the full code sample see our Code Share site.

Sometimes it's convenient to share requests for signatures among the members of a group. For example, it might be convenient to treat the pharmacists in a particular pharmacy as a group, so that any available member of the group can sign the paperwork for a patient's prescriptions.

In OneSpan Sign, a Signer Group is a set of OneSpan Sign users who can act as a single signer from the perspective of a transaction's creator. Users who can become group members must already be members of the associated OneSpan Sign account.

OneSpan Sign group members receive an email invitation to sign a transaction. Among those members, signing is on a "First Come, First Serve" basis. When one member is signing, all other members are locked out.

Any member who signs does so on behalf of the group, but their name will be stamped on the documents they sign. Anyone verifying a document through the Audit Trail will see the individual member's signature information and identity.

All group members can monitor the progress of the group's transactions, which helps to ensure that those transactions are completed on time.

Finding Your Groups in the UI

First, locate your Groups in the OneSpan Sign Web UI. To do this, log into your OneSpan Sign account and click Admin > Groups. After running your code, all your groups will appear here. If you do not see the Groups option in the toolbar, it could be because they have not been enabled on your account. To enable them, please contact our Support Team.

For more information, see Administering Groups.

Creating Groups

The sample code below will create a group called Java Developers, with two members. It is important to note that these members have to be Senders in your account. The withIndividualMemberEmailing() method will send emails to the members of the group instead of the specified group email. If you wish to send emails to the group email instead, use withoutIndividualEmailing().

Group group1 = GroupBuilder.newGroup( "Java Developers" )
            .withEmail( "mygroup@aol.com" )
            .withIndividualMemberEmailing()
            .withMember( GroupMemberBuilder.newGroupMember( "manager@mycompany.com" )
                .as( GroupMemberType.REGULAR ) )
            .withMember( GroupMemberBuilder.newGroupMember( "group-member@mycompany.com" )
                    .as( GroupMemberType.REGULAR ) )
                .build();

Once you have done this, you can call on your OneSpan Sign GroupService to create your group.

Group createdGroup1 = eslClient.getGroupService().createGroup( group1 );

You can also create an empty group, and invite members to join your group at a later date.

esl.getGroupService().inviteMember( createdEmptyGroup.getId(),
            GroupMemberBuilder.newGroupMember( "member1@example.com" )
                .as( GroupMemberType.REGULAR )
                .build() );

Retrieving Groups

Retrieving your groups can come in handy when you wish to invite members to your group. It is important to note that the group id is required when sending invitations. The first line in the sample code below will retrieve your groups as a list. Then, for each group object in the list, the group name, email, and id are retrieved. With your group ids, you can retrieve each member, along with their email, first name, and last name.

List<Group> allGroups = esl.getGroupService().getMyGroups();
for ( Group group : allGroups ) {
     System.out.println( group.getName() + " with email " + group.getEmail() + " and id " + group.getId() );
     List<GroupMember> allMembers = esl.getGroupService().getGroupMembers( group.getId() );
     for ( GroupMember member : allMembers ) {
          System.out.println( member.getGroupMemberType().toString() + " " + member.getFirstName() + " " + member.getLastName() + " with email " + member.getEmail());
     }
}

Adding a Group Signer

Once your group has been created, you can now then add a group signer to your package. The code below shows you how to edit the signer block in order to add a group signer.

If you need a comparison to a basic document object creation, or if this is the first time creating a package with the Java SDK, see this topic.

DocumentPackage myPackage = newPackageNamed( "My Package with Group Signers Java Developers" )
                .withSigner( SignerBuilder.newSignerFromGroup( myGroup.getId() )
                    .canChangeSigner()
                    .deliverSignedDocumentsByEmail() )
                .withDocument( newDocumentWithName( "My Document" )
                    .fromFile("DOCUMENT_FILE_PATH" )
                    .withSignature( signatureFor( myGroup.getId() )
                         .onPage( 0 )
                         .atPosition( 370, 680 ) ) )
                .build();
              
PackageId packageId = esl.createAndSendPackage( myPackage );

Results

After executing your code, you will find your newly created groups in your OneSpan Sign account. To see these groups, log into your OneSpan Sign account and click Admin > Groups. You will also find your group signature in your list of recipients.

If you used the sample code in this topic to retrieve your groups, here is the output:

.NET SDK

To download the full code sample see our Code Share site.

Sometimes it's convenient to share requests for signatures among the members of a group. For example, it might be convenient to treat the pharmacists in a particular pharmacy as a group, so that any available member of the group can sign the paperwork for a patient's prescriptions.

In OneSpan Sign, a Signer Group is a set of OneSpan Sign users who can act as a single signer from the perspective of a transaction's creator. Users who can become group members must already be members of the associated OneSpan Sign account.

OneSpan Sign group members receive an email invitation to sign a transaction. Among those members, signing is on a "First Come, First Serve" basis. When one member is signing, all other members are locked out.

Any member who signs does so on behalf of the group, but their name will be stamped on the documents they sign. Anyone verifying a document through the Audit Trail will see the individual member's signature information and identity.

All group members can monitor the progress of the group's transactions, which helps to ensure that those transactions are completed on time.

Finding Your Groups in the UI

First, locate your Groups in the OneSpan Sign Web UI. To do this, log into your OneSpan Sign account and click Admin > Groups. After running your code, all your groups will appear here. If you do not see the Groups option in the toolbar, it could be because they have not been enabled on your account. To enable them, please contact our Support Team.

For more information, see Administering Groups.

Creating Groups

The sample code below will create a group called Java Developers, with two members. It is important to note that these members have to be Senders in your account. The withIndividualMemberEmailing() method will send emails to the members of the group instead of the specified group email. If you wish to send emails to the group email instead, use withoutIndividualEmailing().

Group group1 = GroupBuilder.NewGroup("My Group")
               .WithCustomId(new GroupId(Guid.NewGuid().ToString()))
               .WithMember(GroupMemberBuilder.NewGroupMember("robert.paulson@email.com")
                    .AsMemberType(GroupMemberType.MANAGER))
               .WithMember(GroupMemberBuilder.NewGroupMember("tyler.durden@email.com")
                    .AsMemberType(GroupMemberType.REGULAR))
               .WithEmail("bob@aol.com")
               .WithIndividualMemberEmailing()
               .Build();

Once you have done this, you can call on your OneSpan Sign GroupService to create your group.

Group createdGroup1 = eslClient.GroupService.CreateGroup(group1);

You can also create an empty group, and invite members to join your group at a later date.

eslClient.GroupService.InviteMember(createdEmptyGroup.Id, GroupMemberBuilder.NewGroupMember("bob@aol.com")
            .AsMemberType(GroupMemberType.REGULAR)
            .Build());

Retrieving Groups

Retrieving your groups can come in handy when you wish to invite members to your group. It is important to note that the group id is required when sending invitations. The first line in the sample code below will retrieve your groups as a list. Then, for each group object in the list, the group name, email, and id are retrieved. With your group ids, you can retrieve each member, along with their email, first name, and last name.

List<Group> allGroups = eslClient.GroupService.GetMyGroups();
        foreach (Group group in allGroups)
        {
            Debug.WriteLine(group.Name + " with email " + group.Email + " and id " + group.Id.Id);
            List<GroupMember> allMembers = eslClient.GroupService.GetGroupMembers(group.Id);
            foreach (GroupMember member in allMembers)
            {
                Debug.WriteLine(member.GroupMemberType.ToString() + " " + member.FirstName + " " + member.LastName + " with email " + member.Email);
            }
        }

Adding a Group Signer

Once your group has been created, you can now then add a group signer to your package. The code below shows you how to edit the signer block in order to add a group signer.

DocumentPackage superDuperPackage = PackageBuilder.NewPackageNamed("My Package with Group Signers .NET Developers")
            .WithSigner(SignerBuilder.NewSignerFromGroup(myGroup.Id)
                .CanChangeSigner()
                .DeliverSignedDocumentsByEmail())
            .WithDocument(DocumentBuilder.NewDocumentNamed("My Document")
                .FromFile("DOCUMENT_FILE_PATH")
                .WithSignature(SignatureBuilder.SignatureFor(myGroup.Id)
                  .OnPage(0)
                  .AtPosition(370, 680)))
            .Build();
 
PackageId packageId = eslClient.CreateAndSendPackage(superDuperPackage);

Results

After executing your code, you will find your newly created groups in your OneSpan Sign account. To see these groups, log into your OneSpan Sign account and click Admin > Groups. You will also find your group signature in your list of recipients.

If you used the sample code in this topic to retrieve your groups, here is the output:

REST API

To download the full code sample see our Code Share site.

Sometimes it's convenient to share requests for signatures among the members of a group. For example, it might be convenient to treat the pharmacists in a particular pharmacy as a group, so that any available member of the group can sign the paperwork for a patient's prescriptions.

In OneSpan Sign, a Signer Group is a set of OneSpan Sign users who can act as a single signer from the perspective of a transaction's creator. Users who can become group members must already be members of the associated OneSpan Sign account.

OneSpan Sign group members receive an email invitation to sign a transaction. Among those members, signing is on a "First Come, First Serve" basis. When one member is signing, all other members are locked out.

Any member who signs does so on behalf of the group, but their name will be stamped on the documents they sign. Anyone verifying a document through the Audit Trail will see the individual member's signature information and identity.

All group members can monitor the progress of the group's transactions, which helps to ensure that those transactions are completed on time.

Finding Your Groups in the UI

First, locate your Groups in the OneSpan Sign Web UI. To do this, log into your OneSpan Sign account and click Admin > Groups. After running your code, all your groups will appear here. If you do not see the Groups option in the toolbar, it could be because they have not been enabled on your account. To enable them, please contact our Support Team.

For more information, see Administering Groups.

Creating Groups

The sample code below will create a group with two members. It is important to note that these members have to be Senders in your account.

HTTP Request

POST /api/groups

HTTP Headers

Accept: application/json
Content-Type: application/json
Authorization: Basic api_key

Request Payload

{
  "email": "your_group_email@example.com",
  "name": "your_group_name",
        "members": [
    {
      "pending": true,
      "email": "mail55@example.com",
      "memberType": "REGULAR",
      "firstName": "Max",
      "lastName": "Domi"
    },
    {
      "pending": true,
      "email": "mail72@example.com",
      "memberType": "REGULAR",
      "firstName": "John",
      "lastName": "Smith"
    }
  ]
}

Response Payload

{
    "id": "bc65203e-99df-47b4-a51c-33e8082780c5",
    "members": [
        {
            "userId": "2q37oSloj5AD",
            "pending": false,
            "lastName": "Tango",
            "email": "mail72@example.com",
            "firstName": "Mike",
            "memberType": "REGULAR"
        },
        {
            "userId": "FxktNzFzmkIY",
            "pending": false,
            "lastName": "Domi",
            "email": "mail55@example.com",
            "firstName": "Max",
            "memberType": "REGULAR"
        }
    ],
    "emailMembers": false,
    "reciprocalDelegation": false,
    "data": null,
    "account": {
        "id": "3vD0Dc9Fh7wQ",
        "data": null,
        "updated": "2017-11-20T19:03:28Z",
        "company": {
            "id": "",
            "data": null,
            "address": null,
            "name": ""
        },
        "licenses": [],
        "logoUrl": "",
        "providers": null,
        "customFields": [],
        "created": "2017-11-20T19:03:28Z",
        "owner": "",
        "name": ""
    },
    "updated": "2017-11-20T19:03:28Z",
    "email": "your_group_email@example.com",
    "created": "2017-11-20T19:03:28Z",
    "name": "your_group_name"
}

You can also create an empty group, and invite members to join your group at a later date.

HTTP Request

POST /api/groups

HTTP Headers

Accept: application/json
Content-Type: application/json
Authorization: Basic api_key

Request Payload

{
    "email": "invitee@email.com",
    "name": "REST Developers"
}

Response Payload

{
    "id": "540b86f9-2d93-4498-bdb4-b7b320540bb6",
    "members": [],
    "emailMembers": false,
    "reciprocalDelegation": false,
    "data": null,
    "account": {
        "id": "3vD0Dc9Fh7wQ",
        "data": null,
        "updated": "2017-11-20T19:04:38Z",
        "company": {
            "id": "",
            "data": null,
            "address": null,
            "name": ""
        },
        "licenses": [],
        "logoUrl": "",
        "providers": null,
        "customFields": [],
        "created": "2017-11-20T19:04:38Z",
        "owner": "",
        "name": ""
    },
    "updated": "2017-11-20T19:04:38Z",
    "email": "invitee@email.com",
    "created": "2017-11-20T19:04:38Z",
    "name": "REST Developers"
}

Retrieving Groups

Retrieving your groups can come in handy when you wish to invite members to your group. It is important to note that the group id is required when sending invitations.

HTTP Request

GET /api/groups

HTTP Headers

Accept: application/json
Content-Type: application/json
Authorization: Basic api_key

Response Payload

{
  "count": 1,
  "results": [
    {
      "account": {
        "providers": null,
        "updated": "2016-01-07T18:49:19Z",
        "company": {
          "id": "",
          "address": null,
          "data": null,
          "name": ""
        },
        "licenses": [],
        "logoUrl": "",
        "customFields": [],
        "created": "2016-01-07T18:49:19Z",
        "owner": "",
        "id": "zRcJCHV3ztIB",
        "data": null,
        "name": ""
      },
      "updated": "2016-01-07T13:58:33Z",
      "email": "group@email.com",
      "members": [
        {
          "userId": "1XyqlkXM9uIX",
          "email": "member.1@email.com",
          "firstName": "John",
          "lastName": "Doe",
          "memberType": "REGULAR",
          "pending": false
        },
        {
          "userId": "kVooKpofKuUK",
          "email": "member.2@email.com",
          "firstName": "Mary",
          "lastName": "Doe",
          "memberType": "REGULAR",
          "pending": false
        }
      ],
      "emailMembers": false,
      "reciprocalDelegation": false,
      "created": "2016-01-07T13:58:33Z",
      "id": "4a8868d7-1968-4172-aedb-0a9dc8edb683",
      "data": null,
      "name": "REST Developers"
    }
  ]
}

Adding a Group signer

Once your group has been created, you can now then add a group signer to your package. The code below shows you how to edit the signer block in order to add a group signer.

If you need a comparison to the basic document object creation or if this is the first time creating a package with the REST API, see this guide.

HTTP Request

POST /api/packages

HTTP Headers

Accept: application/json
Content-Type: multipart/form-data
Authorization: Basic api_key

Request Payload

------WebKitFormBoundary1bNO60n7FqP5WO4t
Content-Disposition: form-data; name="file"; filename="testDocumentExtraction.pdf"
Content-Type: application/pdf
%PDF-1.5
%µµµµ
1 0 obj
<>>>
endobj.... 
------WebKitFormBoundary1bNO60n7FqP5WO4t
Content-Disposition: form-data; name="payload"
{
  "roles": [
    {
      "id": "1945f2e1-3390-4297-bc3b-89af3c92e567",
      "type": "SIGNER",
      "index": 0,
      "signers": [
        {
          "group": {
            "id": "540b86f9-2d93-4498-bdb4-b7b320540bb6",
            "email": "invitee@email.com",
            "name": "REST Developers"
          },
          "id": "98b9db64-39ca-4b5b-a1eb-629e49c46dec",
          "email": "540b86f9-2d93-4498-bdb4-b7b320540bb6@groups.e-signlive.com",
          "firstName": "REST Developers",
          "lastName": ""
        }
      ],
      "name": "Signer1"
    }
  ],
  "status": "DRAFT",
  "language": "en",
  "documents": [
    {
      "id": "90277a614bf73b783fe2a5e04b68a99d4badf449b33ecfbf",
      "approvals": [
        {
          "id": "cVvJzBDX7lwP",
          "role": "1945f2e1-3390-4297-bc3b-89af3c92e567",
          "fields": [
            {
              "subtype": "FULLNAME",
              "height": 52,
              "extract": false,
              "width": 235,
              "left": 217,
              "top": 512,
              "type": "SIGNATURE"
            }
          ]
        }
      ],
      "name": "sample_contract"
    }
  ],
  "visibility": "ACCOUNT",
  "type": "PACKAGE",
  "name": "Group Signature Example"
}
------WebKitFormBoundary1bNO60n7FqP5WO4t--

Response Payload

{
    "id": "9sKhW-h-qS9m6Ho3zRv3n2a-rkI="
}

Results

After executing your code, you will find your newly created groups in your OneSpan Sign account. To see these groups, log into your OneSpan Sign account and click Admin > Groups. You will also find your group signature in your list of recipients.

Request Payload Table

Property

Type

Editable

Required

Default

Sample Values

email

string

Yes

No

n/a

your_group_email@example.com

name

string

Yes

No

n/a

your_group_name

members

pending

boolean

No

No

n/a

true / false

email

string

Yes

No

n/a

mail55@example.com

memberType

string

Yes

No

REGULAR

REGULAR / MANAGER

firstName

string

Yes

No

n/a

Max

lastName

string

Yes

No

n/a

Domi


Was this article helpful?

What's Next
Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.
ESC

Eddy AI, facilitating knowledge discovery through conversational intelligence