Targetprocess

The Targetprocess Developer Hub

Welcome to the Targetprocess developer hub. Here you'll find comprehensive guides and documentation to help you start working with Targetprocess as quickly as possible and support you if you get stuck. Let's jump right in!

Docs

Send notifications to Slack

👍

You can find more examples at the Integration with Slack page

📘

How to apply these rules?

🚧

Warning: sample URLs!

Please make sure to replace https://hooks.slack.com/services/some/slack/endpoint with your Slack Webhook URL and https://youraccount.tpondemand.com/ with your Targetprocess URL

Basic template

This basic template can be used in order to receive notifications about created, modified and deleted work items.

[
  {
    "type": "source:targetprocess:EntityChanged",
    "entityTypes": [
      "Request"
    ],
    "modifications": {
      "created": true,
      "deleted": true,
      "updated": [
        "ModifyDate"
      ]
    }
  },
  {
    "type": "action:SendHttpRequest",
    "body": {
      "type": "concat",
      "operands": [
        {
          "type": "constant",
          "value": "{\n  \"text\": \""
        },
        {
          "type": "field",
          "name": "Name",
          "target": {
            "type": "field",
            "name": "EntityType",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": "/"
        },
        {
          "type": "field",
          "name": "Id",
          "target": {
            "type": "pipelineBlockOutput"
          }
        },
        {
          "type": "constant",
          "value": " "
        },
        {
          "type": "field",
          "name": "EntityUri",
          "target": {
            "type": "pipelineBlockOutput"
          }
        },
        {
          "type": "constant",
          "value": " was "
        },
        {
          "type": "field",
          "name": "Modification",
          "target": {
            "type": "pipelineBlockOutput"
          }
        },
        {
          "type": "constant",
          "value": " by "
        },
        {
          "type": "field",
          "name": "FullName",
          "target": {
            "type": "field",
            "name": "Author",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": "\",\n  \"username\": \"Targetprocess\"\n}"
        }
      ]
    },
    "url": {
      "type": "constant",
      "value": "https://hooks.slack.com/services/some/slack/endpoint"
    }
  }
]

Information about changed Effort

[
  {
    "type": "source:targetprocess:EntityChanged",
    "entityTypes": [
      "UserStory",
      "Task",
      "Bug"
    ],
    "modifications": {
      "created": false,
      "deleted": false,
      "updated": [
        "Effort"
      ]
    }
  },
  {
    "or": [
      {
        "and": [
          {
            "value": {
              "type": "constant",
              "value": "Kanban"
            },
            "target": {
              "name": "Name",
              "type": "field",
              "target": {
                "name": "Project",
                "type": "field",
                "target": {
                  "type": "pipelineBlockOutput"
                }
              }
            },
            "operator": {
              "type": "is"
            }
          }
        ]
      }
    ],
    "type": "filter:Relational"
  },
  {
    "type": "action:JavaScript",
    "script": "const link = `<https://youraccount.tpondemand.com/entity/${args.ResourceId}|${args.Current.Name}>`;\nlet message = ``;\nif (args.Previous.Effort == 0) {\n  message = `:black_circle_for_record: Entity# ${args.ResourceId} ${link} was estimated ${args.Current.Effort} points`;\n}\nelse if (args.Current.Effort > args.Previous.Effort) {\n  message = `:arrow_up: Entity #${args.ResourceId} ${link}. Effort increased from ${args.Previous.Effort} to ${args.Current.Effort} points`;\n}\nelse {\n  message = `Entity #${args.ResourceId} ${link}. Effort decreased from ${args.Previous.Effort} to ${args.Current.Effort} points`;\n}\n\nreturn {\n  command: \"SendHttpRequest\",\n  payload: {\n    url: \"https://hooks.slack.com/services/some/slack/endpoint\",\n    body: {\n      \"text\": message,\n      \"icon_emoji\": \":bee:\",\n      \"username\": \"Targetprocess\"\n    }\n  }\n};"
  }
]

Information about changed state

[
  {
    "type": "source:targetprocess:EntityChanged",
    "entityTypes": [
      "UserStory",
      "Task",
      "Bug",
      "Feature",
      "Epic",
      "Request"
    ],
    "modifications": {
      "created": true,
      "deleted": false,
      "updated": [
        "EntityState"
      ]
    }
  },
  {
    "or": [
      {
        "and": [
          {
            "value": {
              "type": "constant",
              "value": "Kanban"
            },
            "target": {
              "name": "Name",
              "type": "field",
              "target": {
                "name": "Project",
                "type": "field",
                "target": {
                  "type": "pipelineBlockOutput"
                }
              }
            },
            "operator": {
              "type": "is"
            }
          }
        ]
      }
    ],
    "type": "filter:Relational"
  },
  {
    "type": "action:SendHttpRequest",
    "body": {
      "type": "concat",
      "operands": [
        {
          "type": "constant",
          "value": "{ \n   \"text\": \"Change state for #"
        },
        {
          "type": "field",
          "name": "ID",
          "target": {
            "type": "pipelineBlockOutput"
          }
        },
        {
          "type": "constant",
          "value": " <"
        },
        {
          "type": "field",
          "name": "EntityUri",
          "target": {
            "type": "pipelineBlockOutput"
          }
        },
        {
          "type": "constant",
          "value": "|"
        },
        {
          "type": "field",
          "name": "Name",
          "target": {
            "type": "pipelineBlockOutput"
          }
        },
        {
          "type": "constant",
          "value": "> by "
        },
        {
          "type": "field",
          "name": "FullName",
          "target": {
            "type": "field",
            "name": "Author",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": " ["
        },
        {
          "type": "field",
          "name": "Name",
          "target": {
            "type": "field",
            "name": "EntityState",
            "target": {
              "type": "field",
              "name": "Previous",
              "target": {
                "type": "pipelineBlockOutput"
              }
            }
          }
        },
        {
          "type": "constant",
          "value": "] -> ["
        },
        {
          "type": "field",
          "name": "Name",
          "target": {
            "type": "field",
            "name": "EntityState",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": "]\",\n   \"username\": \"Targetprocess\"\n}"
        }
      ]
    },
    "url": {
      "type": "constant",
      "value": "https://hooks.slack.com/services/some/slack/endpoint"
    }
  }
]

A user is assigned to an entity

Don't use any filter if you'd like to post notifications even if the user assigns an entity to himself.

[
  {
    "type": "source:targetprocess:EntityChanged",
    "entityTypes": [
      "Assignment"
    ],
    "modifications": {
      "created": true,
      "deleted": false,
      "updated": false
    }
  },
  {
    "or": [
      {
        "and": [
          {
            "target": {
              "type": "field",
              "name": "Id",
              "target": {
                "type": "field",
                "name": "Author",
                "target": {
                  "type": "pipelineBlockOutput"
                }
              }
            },
            "value": {
              "type": "field",
              "name": "Id",
              "target": {
                "type": "field",
                "name": "GeneralUser",
                "target": {
                  "type": "pipelineBlockOutput"
                }
              }
            },
            "operator": {
              "type": "is not"
            }
          }
        ]
      }
    ],
    "type": "filter:Relational"
  },
  {
    "url": {
      "type": "constant",
      "value": "https://hooks.slack.com/services/some/slack/endpoint"
    },
    "body": {
      "type": "concat",
      "operands": [
        {
          "type": "constant",
          "value": "{ \n   \"text\": \""
        },
        {
          "type": "field",
          "name": "Name",
          "target": {
            "type": "field",
            "name": "EntityType",
            "target": {
              "type": "field",
              "name": "Assignable",
              "target": {
                "type": "pipelineBlockOutput"
              }
            }
          }
        },
        {
          "type": "constant",
          "value": " #"
        },
        {
          "type": "field",
          "name": "Id",
          "target": {
            "type": "field",
            "name": "Assignable",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": " "
        },
        {
          "type": "field",
          "name": "Name",
          "target": {
            "type": "field",
            "name": "Assignable",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": " assigned to "
        },
        {
          "type": "field",
          "name": "FirstName",
          "target": {
            "type": "field",
            "name": "GeneralUser",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": " "
        },
        {
          "type": "field",
          "name": "LastName",
          "target": {
            "type": "field",
            "name": "GeneralUser",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": " by "
        },
        {
          "type": "field",
          "name": "FullName",
          "target": {
            "type": "field",
            "name": "Author",
            "target": {
              "type": "pipelineBlockOutput"
            }
          }
        },
        {
          "type": "constant",
          "value": " \",\n   \"username\": \"Targetprocess\",\n}"
        }
      ]
    },
    "type": "action:SendHttpRequest"
  }
]

📘

Available fields

In the filter and template, you can use Fields of Assignment resource.

Updated 2 years ago

Send notifications to Slack


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.