### Functionality The Aprimo Execution Connector syncs **Activity Cells** with external integration platforms. It updates fields such as **Execution ID**, **Status**, and **Latest Version** in real time. :::warning[Rate Limiting] Before you begin developing, read about [Aprimo Rate Limiting](./../rate-limiting.md). ::: --- ### Configuration | **Field** | **Description** | **Details** | |------------------------|-------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| | **System Type** | Type of the Execution System. | Defines the execution connector displayed in the Activity Cell under the Execution Information tab. | | **System Name** | Name of the Execution System. | Displayed in the Activity Cell under Execution Information. | | **API URL** | URL used to authenticate users and request integration platform information. | Authenticated users can view this in the Activity Cell Execution section. | | **Hashing Secret** | Used along with the API URL to authenticate API calls. | Stored encrypted; hashes payloads using SHA256. | | **Access List** | Specifies which users/groups can use the Execution System. | Only selected user groups can link an Activity Cell to the Execution System. | | **Is Active** | Status of the Execution System. | Options: `YES` (active) or `NO` (inactive). | --- ### Implementation: Outgoing Routes Aprimo sends HTTP requests to the configured API endpoint and expects specific responses. #### **POST /executions** - Aprimo expects a response containing a list of all executions. - The response body must adhere to a predefined JSON object model. ```json { [ { "ExecutionId": "{string, maxlength(36)}", "ExecutionName": "{string, maxlength(100)}" } ] } ``` #### **POST /execution/** - Triggered when: 1. A user selects an execution system on an Activity Cell. 2. A user enters edit mode after an execution system has already been set. - **Request Body**: ```json { "ExecutionSystemId": "{integer}", "ExecutionId": "{string}", "UserId": "{integer}", "ActivityCellId": "{integer, nullable}" } ``` - `ExecutionSystemId`: ID of the execution system. - `ExecutionId`: Unique identifier for the execution. - `UserId`: ID of the user making the request. - `ActivityCellId` : Nullable ID of the Activity Cell. - **Expected Response Body**: ```json { "ExecutionName": "{string, maxlength(100)}", "ExecutionLink": "{string, hyperlink, maxlength(??)}", "ExecutionVersion": "{string, maxlength(10)}", "ExecutionStatus": "{string, maxlength(100)}", "LastSyncTime": "{string, ISO datetime}" } ``` - `ExecutionName`: Name of the execution (max length: 100). - `ExecutionLink`: URL hyperlink for the execution details. - `ExecutionVersion`: Version of the execution (max length: 10). - `ExecutionStatus`: Status of the execution (max length: 100). - `LastSyncTime`: Last sync timestamp in ISO datetime format. --- ### Implementation: Incoming Routes The following endpoints expose or update information about Activity Cells. --- #### Get Integration Record By Activity Cell `GET activity-cells/{actCellId}/integration` Returns the integration record for a specific Activity Cell. **Aprimo’s Response**: ```json { "activityCellId": "{integer}", "executionId": "{string, nullable}", "executionName": "{string, nullable}", "executionLink": "{string, hyperlink, nullable}", "executionVersion": "{string, nullable}", "executionStatus": "{string, nullable}", "lastSyncTime": "{string, ISO datetime, nullable}" } ``` ### Get Integration Record By Execution ID `GET activity-cells/integration/{executionId}` Returns a list of integration records for Activity Cells associated with a specific Execution ID. **Aprimo’s Response**: ```json [ { "activityCellId": "{integer}", "executionId": "{string, nullable}", "executionName": "{string, nullable}", "executionLink": "{string, hyperlink, nullable}", "executionVersion": "{string, nullable}", "executionStatus": "{string, nullable}", "lastSyncTime": "{string, ISO datetime, nullable}" } ] ``` ### Update Integration Record `PUT /activity-cells/{actCellId}/integration` Updates the integration record for a specific Activity Cell. **Response**: ```json { "activityCellId": "{integer}", "executionId": "{string, nullable, maxlength(36)}", "executionName": "{string, nullable, maxlength(100)}", "executionLink": "{string, hyperlink, nullable, maxlength(??)}", "executionVersion": "{string, nullable, maxlength(10)}", "executionStatus": "{string, nullable, maxlength(100)}", "lastSyncTime": "{string, ISO datetime, nullable}" }