When using the Deputy webhook system, a significant amount of data may be generated to consume. Parallel requests can also arrive from Deputy which may cause a race condition in your software depending on how it is handled. To help alleviate this, recommends that you setup a AWS SQS (Simple Queue Service) messaging queue on the AWS platform.

AWS SQS

Sample setup

You will also need to ensure that Deputy has permission to save data to the AWS SQS.

AWS IAM Security Policy needs to include following configuration

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1508814629000",
            "Effect": "Allow",
            "Action": [
                "sqs:GetQueueAttributes",
                "sqs:SendMessage",
                "sqs:SendMessageBatch"
            ],
            "Resource": [
                "YOUR_SQS_ARN_HERE_COPIED_FROM_ABOVE"
            ]
        }
    ]
}

The following permissions are required:

  • SendMessage
  • SendMessageBatch
  • GetQueueAttributes

🚧

Size limits

Due to the 256kb data limit of SQS, this process is not suitable for Roster.Publish or Timesheet.Export Webhooks as these can contain large data sets.

Deputy SQS Hook

In order to configure the Webhook on the Deputy side, you will need the aws_access_key_id and aws_secret_access_key

If you are sending to a FIFO (first in first out) SQS queue you will also need the MessageGroupId. Ensure that if your AWS SQS is not setup for FIFO that you do not include a MessageGroupId because this will result in errors and the data will not save.

Sample Webhook setup call

Below is a sample payload setting up a Deputy webhook to transmit data to an AWS SQS Queue

$.post(
  "/api/v1/resource/Webhook",
  JSON.stringify({
    Topic: "Timesheet.Insert",
    Enabled: 1,
    Type: "SQS",
    Address:
      "https://sqs.us-west-2.amazonaws.com/YOUR_AWS_ACCOUNT_ID/YOUR_HOOK_NAME",
    Headers: "aws_access_key_id: XXXXXXXXX\naws_secret_access_key:YYYYYYYYYY",
  }),
  function (x) {
    console.log(x);
  }
);