Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This article describes how to extend the Workflow Studio supports extending the default EmpowerID REST API and create a simple API endpoint that returns a string in Workflow Studio. 

...

by allowing you to create your own custom API endpoints using the API Item Type. In Workflow Studio, Item Types are templated class libraries that provide a base starting point for building an implementation of a specific type. The API Item Type provides a starting point for creating a REST API endpoint.

This tutorial walks through the basics of creating an API endpoint that can be consumed in EmpowerID.

In this tutorial, you will learn how to do the following:

▪ Create an API project in Workflow Studio

▪ Add a controller class

▪ Open the project in Visual Studio

▪ Add logic to the business layer, controller and route

▪ Publish and call the API in EmpowerID

To follow the tutorial, you need to have Visual Studio as it is the development tool used for writing class library code.

Create API project in Workflow Studio

  1. In Workflow Studio, right-click the folder where you want to create the endpoint API project and select New Extension or Library > Class LibraryAPI (.NET Framework).

    Image Removed

    In the Solution pane to the right of the C# Editor that opens, click the Properties tab and then click the Ellipsis button for the Supports property.

    Image Removed

    Select WebApi from the Supported Types dialog that opens and then click OK to close the dialog.

    Image RemovedYou should see the value of the Supports property update to WebApi.Image Removed
  2. Click the Solution tab to return to the default Solution view.

  3. In the code tree for the solution, right-click the class library node and select Add New Implementation > Add New WebApi Implementation.

    Image Removed

    Name the class TestCustomAPIEndPoint and then click OK.

    Image RemovedImage Added



    Workflow Studio generates a stub for the API project and opens the base class for it in the C# Editor.

    Image Added


  4. Click the Save above the C# Editor.

    Image Added


  5. Name the API HelloAPI and click Save.

    Image Added



    Workflow Studio generates a stub for the new API class.

    Image Added



    Next, add a controller to the API to receive incoming HTTP requests and send the response back.

Add a controller

  1. In the Code Tree, right-click the project and select Add New Controller.

    Image Added


  2. Name the controller HelloAPI and click OK.

    Image Added



    Workflow Studio creates the new class and opens it in the C# Editor. Notice the class is decorated with the RBACProtectedAttribute and the RelatedApplicationAttribute.

    RBACProtectedAttribute — This attribute is used to secure access to the endpoint using the RBAC authorization framework. It should not be removed.
    RelatedApplicationAttribute — This attribute specifies the parent application for the endpoint, which is set to the EmpowerID Web application by default (GUID). You can alter the parent to specify another application by setting the value of the GUID to that application. This allows you to publish APIs for users specific to the applications they use. For example, you could publish an API for customers or partners who use a CRM application that is registered in EmpowerID. By relating the endpoint to the CRM application, your customers or partners only need to have access to the application to consume the endpoint.

    Image Removed

    In the Code Tree, expand the classes node. You should see four new classes:

  3. A business object class for adding methods

  4. A controller for handling the HTTP requests

  5. A Image Added



    Additionally, notice that Workflow Studio generated the following classes in addition to the controller:
    ✔ A route for routing incoming HTTP requests to a specific action method on the controller
    A model

    Image Removed

    Open the controller class and in the C# Editor, add the to represent data

  6. Close the project.

    Next, we will open the API project in Visual Studio and add logic to the controller and route.

Open the project in Visual Studio

  1. In the Source Control tree of Workflow Studio, locate the API project and double-click it.

    Image Added



    You should see the project open as a solution in Visual Studio.

    Image Added


  2. Open the HelloAPI class and add a new method to the class that returns a string named GetHelloString().

    Code Block
    public dynamic GetHelloString(dynamic data)
    {
         string helloString = "Hello API!";
         return helloString;
    }

  3. Open the HelloAPIController class and add the following code to create the stub for a new anonymous method , the GetCustomStringnamed GetHelloAPIString() method. Decorate the method with ApiAllowAnonymous to allow anonymous access and use GET as the HTTP method.

    Code Block
    languagec#
    [ApiAllowAnonymous]
    [HttpGet]
    public IHttpActionResult GetCustomStringGetHelloAPIString(TestCustomAPIEndPointInputModelHelloAPIInputModel model)
    {
        var results = _implInstance.GetCustomStringGetHelloString(model);
        // Return object as JSON
        return Json((object)results);
    }

  4. Open the TestCustomAPIEndPoint class and add the GetCustomString() method to it to return a string.

    Code Block
    languagec#
    public dynamic GetCustomString(dynamic data)
    {
         string customString = "Hello Custom API End Point!";
         return customString;
    }

    Open the TestCustomAPIEndPointRoutes.cs file and in the C# editor HelloAPIRoutes.cs file and uncomment the route code and edit .

  5. Edit the default route so that it looks like the following code.

    Code Block
    languagec#
    public IEnumerable<KeyValuePair<string, MapRouteModel>> GetRouteMaps()
    {
        var routeMaps = new Dictionary<string, MapRouteModel>();
        var testmap = new MapRouteModel();
        testmap.Name = 'TestCustomAPIEndPointHelloAPI';
        testmap.Route = 'services/v1/TestCustomAPIEndPointHelloAPI/maps/{id}';
        testmap.Defaults = new { controller = 'TestCustomAPIEndPointControllerHelloAPIController',action = 'GetCustomStringGetHelloAPIString', id = RouteParameter.Optional };
        routes['mapApi'] = testmap;
    
        return routeMaps;
    } 

  6. Compile the class library.


  7. Click Close to close the Operations log. If you see any errors, check your code and then compile the class library again.


  8. Compile and publish the class library.


  9. Select No when prompted about restarting services.

  10. Reset IIS.

...