Workspaces

Rindap (Process) Workspace is a customizable place enabling you to create your Tasks, Workers, TaskQueues and Workflows elements in it to access and manage your business processes. The elements defined in one Workspace are specific to it and cannot be shared with other Workspace.

Various tasks with different attributes, specific and modifiable workflow, various skilled workers can be defined in one Workspace to orchestrate your business processes efficiently in the lowest time. Business Process Workspace helps organizations to improve their internal processes management by providing a single container to manage, control and monitor the whole elements needed in one place. With Rindap, managing the inner operational processes of a company in a purpose-built Workspace and defining your strategies and policies for the company in a single Workspace can be done.

Workspace Properties

Properties
field description
sid The unique string that we created to identify the Workspace resource.
account_sid The SID of the Account that created the Workspace resource.
friendly_name The string that you assigned to describe the resource.
event_callback_url The URL we call when an event occurs. If provided, the Workspace will publish events to this URL, for example, to collect data for reporting. See Workspace Events for more information.
event_callback_method The HTTP Request Method for calling the EventCallbackUrl
default_activity The Activity that will be used when new Workers are created in the Workspace.
timeout_activity The Activity that will be assigned to a Worker when a Task reservation times out without a response
date_created The date and time in GMT when the resource was created, specified in ISO 8601 format.
date_updated The date and time in GMT when the resource was last updated, specified in ISO 8601 format.
url The absolute URL of the resource
links The URLs of related resources.

Create A Workspace

POST /v1/rindap-rest-gw/Workspaces/

You can create a Workspace by simply providing a friendly name

Query Parameters
Parameter Type Default Description
FriendlyName String “” A descriptive string that you create to describe the Workspace resource. It can be up to 512 characters long
EventCallbackUrl URL “” (Optional) The URL we call when an event occurs. If provided, the Workspace will publish events to this URL, for example, to collect data for reporting. See Workspace Events for more information.
EventCallbackMethod String POST (Optional) The HTTP Request Method for calling the EventCallbackUrl
DefaultActivity String offline (Optional) The Activity that will be used when new Workers are created in the Workspace.
TimeoutActivity String offline (Optional) The Activity that will be assigned to a Worker when a Task reservation times out without a response

Example code pieces using SDKs

Shell

curl -X POST https://api.rindap.com/v1/rindap-rest-gw/Workspaces \
--data-urlencode 'FriendlyName=my test workspace' \
--data-urlencode 'EventCallbackUrl=https://my-backbone.mydomain.org' \
--data-urlencode 'EventCallMethod=GET' \
--data-urlencode 'DefaultActivity=busy' \
--data-urlencode 'TimeoutActivity=offline'
-H "Authorization: Bearer {YOUR_ACCOUNT_SID}.{YOUR_AUTH_TOKEN}" \
-H "Content-Type:application/x-www-form-urlencoded"

Java

// Install the Java helper library from rindap.com/docs/java/install

import com.rindap.Rindap;
import com.rindap.rest.v1.workspace.Task;

public class Example {
    // Find your Account Sid and Token at rindap.com/console

    public static void main(String[] args) {

        Rindap.init("YOUR_ACCOUNT_SID","YOUR_AUTH_TOKEN");

        Workspace ws = Workspace.creator("my test workspace")
            .setEventCallbackUrl("https://my-backbone.mydomain.org")
            .setEventCallbackMethod(HttpMethod.GET)
            .setDefaultActivity("busy")
            .setTimeoutActivity("idle)
            .create();

        System.out.println(ws);
    }
}

Phyton

from rindap.rest import Client
from rindap.rest import Rindap

client = Client("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN")
rindap = Rindap(client)

ws = rindap.workspaces.create("my test workspace",
                            event_callback_url="https://my-backbone.mydomain.org",
                            event_callback_method="GET",
                            default_activity="busy",
                            timeout_activity="idle")

print("FriendlyName: {}".format(ws.friendly_name))

JS

var Rindap = require('rindap');

// Authenticate
var rindap = new Rindap("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

// Create a workspace
rindap.workspaces.create({
friendlyName: "Friendly Name",
eventCallbackUrl: "https://my-backbone.mydomain.org",
eventCallbackMethod: "GET",
defaultActivity: "busy",
timeoutActivity: "idle"
}, function(err, workspace) {
// Print workspace content
console.log('Workspace Created');
console.log(workspace.sid);
console.log(workspace.friendlyName);
console.log(workspace.eventCallbackUrl);
console.log(workspace.eventCallbackMethod);
console.log(workspace.defaultActivity);
console.log(workspace.timeoutActivity);
});

CSharp

using System;
using Rindap;
using Rindap.Rest.V1;

class Program
{
    static void Main(string[] args)
    {
        // Authenticate
        RindapClient.Init("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

        // Create a workspace
        WorkspaceResource ws = WorkspaceResource.Create(
            friendlyName: "Very Friendly Name From C#",
            eventCallbackUrl: new Uri("https://my-backbone.mydomain.org"),
            eventCallbackMethod: "GET",
            defaultActivity: "busy",
            timeoutActivity: "offline"
            );

        Console.WriteLine("Workspace Friendly Name        : " + ws.FriendlyName);
        Console.WriteLine("Workspace Sid                  : " + ws.Sid);
        Console.WriteLine("Workspace Default Activity     : " + ws.DefaultActivity);
        Console.WriteLine("Workspace Timeout Activity     : " + ws.TimeoutActivity);
        Console.WriteLine("Workspace Event Calllback Url  : " + ws.EventCallbackUrl);
        Console.WriteLine("Workspace Event callback Method: " + ws.EventCallbackMethod);
    }
}

The above command returns JSON structured like this:

{
    "sid": "WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "friendly_name": "my test workspace",
    "account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "default_activity": "busy",
    "timeout_activity": "idle",
    "date_created": "2020-05-04T01:36:02+03:00",
    "date_updated": "2020-05-04T01:36:02+03:00",
    "event_callback_url": "https:my-backbone.mydomain.org",
    "event_callback_method": "GET",
    "url": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "links": {
        "tasks": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Tasks",
        "workers": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Workers",
        "workflows": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Workflows",
        "task_queues": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/TaskQueues"
    }
}

Get All Workspaces

This endpoint retrives all Workspaces

Query Parameters
Parameter Type Default Description
FriendlyName String “” Human readable friendly name
PageSize Integer 50 Page size for paging
FriendlyName Integer 0 Page number for paging

Example code pieces using SDKs

CSharp

using System;
using Rindap;
using Rindap.Rest.V1;

class Program
{
    static void Main(string[] args)
    {
        // Authenticate
        RindapClient.Init("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

        // Fetch all workspaces
        var workspaces = WorkspaceResource.Read(limit: 100, pageSize: 100);

        // Iterate all workspaces
        foreach (var ws in workspaces)
        {
            // Print workspace content
            Console.WriteLine("Workspace Friendly Name        : " + ws.FriendlyName);
            Console.WriteLine("Workspace Sid                  : " + ws.Sid);
            Console.WriteLine("Workspace Default Activity     : " + ws.DefaultActivity);
            Console.WriteLine("Workspace Timeout Activity     : " + ws.TimeoutActivity);
            Console.WriteLine("Workspace Event Calllback Url  : " + ws.EventCallbackUrl);
            Console.WriteLine("Workspace Event callback Method: " + ws.EventCallbackMethod);
        }
    }
}

Phyton

from rindap.rest import Client
from rindap.rest import Rindap

client = Client("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN")
rindap = Rindap(client)

lists = rindap.workspaces.list(friendly_name=None, limit=10, page_size=5)
workspace = lists.pop()
print(workspace.friendly_name)

JS

var Rindap = require('rindap');

// Authenticate
var rindap = new Rindap("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

// Get all workspaces
rindap.workspaces.list({
limit: 100,
page_size: 100
}, function(err, result) {
result.forEach(function(workspace) {

    console.log(workspace.sid);
    console.log(workspace.friendlyName);
    console.log(workspace.eventCallbackUrl);
    console.log(workspace.eventCallbackMethod);
    console.log(workspace.defaultActivity);
    console.log(workspace.timeoutActivity);
});
});

The above command returns JSON structured like this:

{
"meta": {
    "page_size": 50,
    "page": 0,
    "first_page_url": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/?Page=0&PageSize=50",
    "previous_page_url": null,
    "url": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/?Page=0&PageSize=50",
    "key": "workspaces",
    "next_page_url": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/?Page=1&PageSize=50"
},
"workspaces": [
    {
    "sid": "WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "friendly_name": "my test workspace",
    "account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "default_activity": "busy",
    "timeout_activity": "idle",
    "date_created": "2020-05-04T01:36:02+03:00",
    "date_updated": "2020-05-04T01:36:02+03:00",
    "event_callback_url": "https:my-backbone.mydomain.org",
    "event_callback_method": "GET",
    "url": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "links": {
        "tasks": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Tasks",
        "workers": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Workers",
        "workflows": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Workflows",
        "task_queues": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/TaskQueues"
    }
    }
]
}

Fetch A Workspace

This endpoint fetches a single Workspace with all Its details

GET /v1/rindap-rest-gw/Workspaces/{WorkspaceSID}
Query Parameters
Parameter Type Default Description
WorkspaceSID String “” The SID of the Workspace

Example code pieces using SDKs

Shell

curl -X GET https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxx
-H "Authorization: Bearer {YOUR_ACCOUNT_SID}.{YOUR_AUTH_TOKEN}" \
-H "Content-Type:application/x-www-form-urlencoded"

Java

// Install the Java helper library from rindap.com/docs/java/install

import com.rindap.Rindap;
import com.rindap.rest.v1.workspace.Task;

public class Example {
    // Find your Account Sid and Token at rindap.com/console


    public static void main(String[] args) {

        Rindap.init("YOUR_ACCOUNT_SID","YOUR_AUTH_TOKEN");

        Workspace ws = Workspace.fetcher("WSxxxxxxxxxxxxxxxxxxxxxxxx")
            .fetch();

        System.out.println(ws);
    }
}

Phyton

from rindap.rest import Client
from rindap.rest import Rindap

client = Client("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN")
rindap = Rindap(client)

ws_fetcher = rindap.workspaces.get("WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
workspace = ws_fetcher.fetch()
print(workspace.friendly_name)

JS

var Rindap = require('rindap');

// Authenticate
var rindap = new Rindap("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

// Get a workspaces with SID
rindap.workspaces('WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx').fetch(
function(err, workspace) {
    console.log(err);
    console.log(workspace.sid);
    console.log(workspace.friendlyName);
    console.log(workspace.eventCallbackUrl);
    console.log(workspace.eventCallbackMethod);
    console.log(workspace.defaultActivity);
    console.log(workspace.timeoutActivity);
});

CSharp

using System;
using Rindap;
using Rindap.Rest.V1;

class Program
{
    static void Main(string[] args)
    {
        // Authenticate
        RindapClient.Init("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

        // Get a workspace with SID
        var ws = WorkspaceResource.Fetch(
            pathSid: "WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
            );

        // Print workspace content
        Console.WriteLine("Workspace Friendly Name        : " + ws.FriendlyName);
        Console.WriteLine("Workspace Sid                  : " + ws.Sid);
        Console.WriteLine("Workspace Default Activity     : " + ws.DefaultActivity);
        Console.WriteLine("Workspace Timeout Activity     : " + ws.TimeoutActivity);
        Console.WriteLine("Workspace Event Calllback Url  : " + ws.EventCallbackUrl);
        Console.WriteLine("Workspace Event callback Method: " + ws.EventCallbackMethod);
    }
}

The above command returns JSON structured like this:

{
"sid": "WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"friendly_name": "my test workspace",
"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"default_activity": "busy",
"timeout_activity": "idle",
"date_created": "2020-05-04T01:36:02+03:00",
"date_updated": "2020-05-04T01:36:02+03:00",
"event_callback_url": "https:my-backbone.mydomain.org",
"event_callback_method": "GET",
"url": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"links": {
    "tasks": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Tasks",
    "workers": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Workers",
    "workflows": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Workflows",
    "task_queues": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/TaskQueues"
}
}

Update a Workspace

PUT /v1/rindap-rest-gw/Workspaces/{WorkspaceSID}
Query Parameters
Parameter Type Default Description
WorkspaceSID String “” The SID of the Workspace
FriendlyName String “” (Optional) A descriptive string that you create to describe the Workspace resource. It can be up to 512 characters long
EventCallbackUrl URL “” (Optional) The URL we call when an event occurs. If provided, the Workspace will publish events to this URL, for example, to collect data for reporting. See Workspace Events for more information.
EventCallbackMethod String POST (Optional) The HTTP Request Method for calling the EventCallbackUrl
DefaultActivity String “” (Optional) The Activity that will be used when new Workers are created in the Workspace.
TimeoutActivity String “” (Optional) The Activity that will be assigned to a Worker when a Task reservation times out without a response

Example code pieces using SDKs

Shell

curl -X PUT https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
--data-urlencode 'FriendlyName=my test workspace updated' \
--data-urlencode 'EventCallbackUrl=https://my-backbone.my-new-domain.org' \
--data-urlencode 'EventCallMethod=POST' \
--data-urlencode 'DefaultActivity=idle' \
--data-urlencode 'TimeoutActivity=busy'
-H "Authorization: Bearer {YOUR_ACCOUNT_SID}.{YOUR_AUTH_TOKEN}" \
-H "Content-Type:application/x-www-form-urlencoded"

Java

// Install the Java helper library from rindap.com/docs/java/install

import com.rindap.Rindap;
import com.rindap.rest.v1.workspace.Task;

public class Example {
    // Find your Account Sid and Token at rindap.com/console

    public static void main(String[] args) {

        Rindap.init("YOUR_ACCOUNT_SID","YOUR_AUTH_TOKEN");

        Workspace ws = Workspace
            .updater("WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
            .setFriendlyName("my test workspace updated")
            .setEventCallbackUrl("https://my-backbone.my-new-domain.org")
            .setEventCallbackMethod("POST")
            .setDefaultActivity("idle")
            .setTimeoutActivity("offline")
            .update();

        System.out.println(ws);
    }
}

Phyton

from rindap.rest import Client
from rindap.rest import Rindap

client = Client("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN")
rindap = Rindap(client)

ws_fetcher = rindap.workspaces.get("WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
ws_fetcher.update(friendly_name="New Friendly Name", default_activity="offline",
                timeout_activity="offline", event_callback_url="https://domain.com",
                event_callback_method="POST")

JS

var Rindap = require('rindap');

// Authenticate
var rindap = new Rindap("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

// Update a workspaces with SID
rindap.workspaces('WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx').update({
friendlyName: "New Friendly Name",
eventCallbackUrl: "https://my-backbone.mydomain.com",
defaultActivity: "offline",
timeoutActivity: "offline"
}, function(err, workspace) {
console.log(workspace.sid);
console.log(workspace.friendlyName);
console.log(workspace.eventCallbackUrl);
console.log(workspace.eventCallbackMethod);
console.log(workspace.defaultActivity);
console.log(workspace.timeoutActivity);
});

CSharp

using System;
using System.ComponentModel.DataAnnotations;
using Rindap;
using Rindap.Rest.V1;

class Program
{
    static void Main(string[] args)
    {
        // Authenticate
        RindapClient.Init("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

        // Update a workspace with SID
        var ws = WorkspaceResource.Update(
            pathSid: "WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            friendlyName: "New Workspace Name",
            eventCallbackUrl: new Uri("https://my-backbone.mydomain.com"),
            eventCallbackMethod: "POST",
            defaultActivity: "busy",
            timeoutActivity: "busy"
            );

        // Print workspace content
        Console.WriteLine("Workspace Friendly Name        : " + ws.FriendlyName);
        Console.WriteLine("Workspace Sid                  : " + ws.Sid);
        Console.WriteLine("Workspace Default Activity     : " + ws.DefaultActivity);
        Console.WriteLine("Workspace Timeout Activity     : " + ws.TimeoutActivity);
        Console.WriteLine("Workspace Event Calllback Url  : " + ws.EventCallbackUrl);
        Console.WriteLine("Workspace Event callback Method: " + ws.EventCallbackMethod);
    }
}

The above command returns JSON structured like this:

{
"sid": "WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"friendly_name": "my test workspace updated",
"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"default_activity": "idle",
"timeout_activity": "offline",
"date_created": "2020-05-04T01:36:02+03:00",
"date_updated": "2020-05-04T01:36:02+03:00",
"event_callback_url": "https:my-backbone.my-new-domain.org",
"event_callback_method": "POST",
"url": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "links": {
        "tasks": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Tasks",
        "workers": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Workers",
        "workflows": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Workflows",
        "task_queues": "https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/TaskQueues"
    }
}

Delete a Workspace

DELETE /v1/rindap-rest-gw/Workspaces/{WorkspaceSID}
Query Parameters
Parameter Type Default Description
WorkspaceSID String “” The SID of the Workspace

Example code pieces using SDKs

Shell

curl -X DEL https://api.rindap.com/v1/rindap-rest-gw/Workspaces/WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
-H "Authorization: Bearer {YOUR_ACCOUNT_SID}.{YOUR_AUTH_TOKEN}" \
-H "Content-Type:application/x-www-form-urlencoded"

Java

// Install the Java helper library from rindap.com/docs/java/install

import com.rindap.Rindap;
import com.rindap.rest.v1.workspace.Task;

public class Example {
    // Find your Account Sid and Token at rindap.com/console

    public static void main(String[] args) {

        Rindap.init("YOUR_ACCOUNT_SID","YOUR_AUTH_TOKEN");

        Workspace.deleter("WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx").delete();
    }
}

Phyton

from rindap.rest import Client
from rindap.rest import Rindap

client = Client("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN")
rindap = Rindap(client)

ww_fetcher = rindap.workspaces.get("WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
if ww_fetcher.delete():
    print("Workspaces have been deleted!")

JS

var Rindap = require('rindap');

// Authenticate
var rindap = new Rindap("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

// Delete a workspaces with SID
rindap.workspaces('WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx').remove();

CSharp

using System;
using System.ComponentModel.DataAnnotations;
using Rindap;
using Rindap.Rest.V1;

class Program
{
    static void Main(string[] args)
    {
        // Authenticate
        RindapClient.Init("YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN");

        // Delete a workspace with SID
        var isDeleted = WorkspaceResource.Delete(
            pathSid: "WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
            );

        if (isDeleted)
        {
            Console.WriteLine("Workspace has been deleted!");
        }
    }
}