Tines now supports running Python scripts in your stories. This guide enables you to integrate Python code into your workflows without needing an external API endpoint.
The event data, input and output of your script, is stored in a separate tenant managed by Tines. We recommend not passing sensitive data through the event and testing your script thoroughly before integrating it into your workflows.
Getting started with Python scripts
To start running scripts:
Go into templates and search for the 'Run Python Script' action template
Pull this onto your storyboard
Populate the necessary script parameters
The template action expects two objects: input and script. The input object is the first object which contains key-value fields that will send to your code as parameters. The script object is the second object which contains the code to execute.
Try it out:
Copy and paste the below into your storyboard to see a simple example.
{"standardLibVersion":"28","actionRuntimeVersion":"4","agents":[{"disabled":false,"name":"generate data","description":null,"options":"{\"mode\":\"message_only\",\"loop\":false,\"payload\":{\"message\":\"Please do not share your credit card number (1234-5678-9012-3456) or your social security number (123-45-6789). You can contact us at example@example.com.\"}}","position":{"x":660,"y":525},"type":"eventTransformation","timeSavedUnit":"minutes","timeSavedValue":0,"monitorAllEvents":false,"monitorFailures":false,"monitorNoEventsEmitted":null,"recordType":null,"spotlightWriters":[],"form":null,"cardIconName":null,"createdFromTemplateGuid":null,"createdFromTemplateVersion":null},{"disabled":false,"name":"result","description":null,"options":"{\"mode\":\"message_only\",\"loop\":false,\"payload\":{\"output\":\"=execute_python_script.output\"}}","position":{"x":660,"y":705},"type":"eventTransformation","timeSavedUnit":"minutes","timeSavedValue":0,"monitorAllEvents":false,"monitorFailures":false,"monitorNoEventsEmitted":null,"recordType":null,"spotlightWriters":[],"form":null,"cardIconName":null,"createdFromTemplateGuid":null,"createdFromTemplateVersion":null},{"disabled":false,"name":"Execute Python script","description":"Runs a Python script, passing in input from received events.","options":"{\"input\":{\"message\":\"<<generate_data.message>>\"},\"script\":\"import re\\n\\ndef main(input):\\n message = input['message']\\n # Remove credit card numbers\\n message = re.sub(r\\\"\\\\b(?:\\\\d[ -]*?){13,16}\\\\b\\\", \\\"[CREDIT CARD]\\\", message)\\n \\n # Remove social security numbers\\n message = re.sub(r\\\"\\\\b\\\\d{3}-?\\\\d{2}-?\\\\d{4}\\\\b\\\", \\\"[SSN]\\\", message)\\n \\n # Remove email addresses\\n message = re.sub(r\\\"\\\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}\\\\b\\\", \\\"[EMAIL]\\\", message)\\n \\n return message\"}","position":{"x":660,"y":600},"type":"group","group":{"name":"","description":null,"actions":[{"type":"httpRequest","name":"Execute script using Toolkit","description":"This is an API endpoint that expects a POST request with a JSON object in the following format:\n\n{\n \"input\": {\n \"key\": \"value\"\n },\n \"script\": \"def main(input):\n your python script\"\n}\n\n\nThe input object contains key value fields, these will be send to your python code as parameters.\n\nThe script field in the input object is expected to contain a string that represents a Python script, which defines a function called main with a single parameter called input. The input parameter is expected to be a dictionary object.\n\nWhen the endpoint receives a valid POST request, it executes the provided Python script with the given input and returns a JSON object with the returning value.","disabled":false,"options":"{\"url\":\"https://toolkit.tines.com/api/public/execute-code\",\"content_type\":\"application_json\",\"method\":\"post\",\"payload\":{\"input\":\"=input.input\",\"script\":\"<<input.script>>\"}}","position":{"x":750,"y":-750},"timeSavedUnit":"minutes","timeSavedValue":0,"monitorAllEvents":false,"monitorFailures":false,"monitorNoEventsEmitted":null},{"type":"groupInput","name":"Input","description":null,"disabled":false,"options":"{\"options\":[{\"name\":\"Input\",\"type\":\"OBJECT\",\"description\":\"The input data which will be passed into your script.\"},{\"name\":\"Script\",\"type\":\"TEXT\",\"description\":\"The source code of your script. The logic of the script should be in a function called 'main'.\"}]}","position":{"x":750,"y":-915},"timeSavedUnit":"minutes","timeSavedValue":0,"monitorAllEvents":false,"monitorFailures":false,"monitorNoEventsEmitted":null},{"type":"groupOutput","name":"Output","description":null,"disabled":false,"options":"{\"payload\":{\"output\":\"=execute_script_using_toolkit.body.output\",\"logs\":\"<<execute_script_using_toolkit.body.logs>>\"}}","position":{"x":750,"y":-615},"timeSavedUnit":"minutes","timeSavedValue":0,"monitorAllEvents":false,"monitorFailures":false,"monitorNoEventsEmitted":null}],"links":[{"sourceIdentifier":1,"receiverIdentifier":0},{"sourceIdentifier":0,"receiverIdentifier":2}],"annotations":[]},"timeSavedUnit":"minutes","timeSavedValue":0,"monitorAllEvents":false,"monitorFailures":false,"monitorNoEventsEmitted":null,"recordType":null,"spotlightWriters":[],"form":null,"cardIconName":null,"cardIconImageContents":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxv\nbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8v\nd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB2ZXJzaW9uPSIxLjAi\nCiAgIGlkPSJzdmcyIgogICBzb2RpcG9kaTp2ZXJzaW9uPSIwLjMyIgogICBp\nbmtzY2FwZTp2ZXJzaW9uPSIxLjIuMSAoOWM2ZDQxZTQxMCwgMjAyMi0wNy0x\nNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InB5dGhvbi1sb2dvLW9ubHkuc3Zn\nIgogICB3aWR0aD0iOTIuMDcwMjM2cHQiCiAgIGhlaWdodD0iMTAxLjAwMTA4\ncHQiCiAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0icHl0aG9uLWxvZ28t\nb25seS5wbmciCiAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSIyMzIuNDQiCiAg\nIGlua3NjYXBlOmV4cG9ydC15ZHBpPSIyMzIuNDQiCiAgIHhtbG5zOmlua3Nj\nYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3Nj\nYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJj\nZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOnhsaW5r\nPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICB4bWxucz0iaHR0\ncDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDov\nL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3\ndy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6\nY2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIKICAgeG1sbnM6\nZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICA8bWV0\nYWRhdGEKICAgICBpZD0ibWV0YWRhdGEzNzEiPgogICAgPHJkZjpSREY+CiAg\nICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8\nZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8\nZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwu\nb3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgIDwvY2M6V29y\naz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxzb2RpcG9kaTpu\nYW1lZHZpZXcKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIyMDgwIgog\nICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTk3NiIKICAgICBpbmtzY2Fw\nZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIw\nLjAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwLjAiCiAgICAgZ3JpZHRvbGVy\nYW5jZT0iMTAuMCIKICAgICBvYmplY3R0b2xlcmFuY2U9IjEwLjAiCiAgICAg\nYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2\nIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBpZD0iYmFzZSIKICAg\nICBpbmtzY2FwZTp6b29tPSIyLjE0NjE2NDIiCiAgICAgaW5rc2NhcGU6Y3g9\nIjkxLjU1ODY5OCIKICAgICBpbmtzY2FwZTpjeT0iNDcuOTkyNiIKICAgICBp\nbmtzY2FwZTp3aW5kb3cteD0iMTA5MiIKICAgICBpbmtzY2FwZTp3aW5kb3ct\neT0iNzIiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMiIKICAg\nICB3aWR0aD0iMjEwbW0iCiAgICAgaGVpZ2h0PSI0MG1tIgogICAgIHVuaXRz\nPSJtbSIKICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0iMiIKICAgICBp\nbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICAgIGlua3NjYXBlOmRl\nc2tjb2xvcj0iI2QxZDFkMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0\ncz0icHQiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndp\nbmRvdy1tYXhpbWl6ZWQ9IjAiIC8+CiAgPGRlZnMKICAgICBpZD0iZGVmczQi\nPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0ibGluZWFyR3JhZGll\nbnQyNzk1Ij4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29s\nb3I6I2I4YjhiODtzdG9wLW9wYWNpdHk6MC40OTgwMzkyMjsiCiAgICAgICAg\nIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3AyNzk3IiAvPgogICAgICA8\nc3RvcAogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojN2Y3ZjdmO3N0b3At\nb3BhY2l0eTowOyIKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBpZD0i\nc3RvcDI3OTkiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVh\nckdyYWRpZW50CiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQyNzg3Ij4KICAg\nICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzdmN2Y3Zjtz\ndG9wLW9wYWNpdHk6MC41OyIKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAg\nICBpZD0ic3RvcDI3ODkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIHN0eWxl\nPSJzdG9wLWNvbG9yOiM3ZjdmN2Y7c3RvcC1vcGFjaXR5OjA7IgogICAgICAg\nICBvZmZzZXQ9IjEiCiAgICAgICAgIGlkPSJzdG9wMjc5MSIgLz4KICAgIDwv\nbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlk\nPSJsaW5lYXJHcmFkaWVudDM2NzYiPgogICAgICA8c3RvcAogICAgICAgICBz\ndHlsZT0ic3RvcC1jb2xvcjojYjJiMmIyO3N0b3Atb3BhY2l0eTowLjU7Igog\nICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIGlkPSJzdG9wMzY3OCIgLz4K\nICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I2IzYjNi\nMztzdG9wLW9wYWNpdHk6MDsiCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAg\nICAgaWQ9InN0b3AzNjgwIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAg\nIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MzIz\nNiI+CiAgICAgIDxzdG9wCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNm\nNGY0ZjQ7c3RvcC1vcGFjaXR5OjEiCiAgICAgICAgIG9mZnNldD0iMCIKICAg\nICAgICAgaWQ9InN0b3AzMjQ0IiAvPgogICAgICA8c3RvcAogICAgICAgICBz\ndHlsZT0ic3RvcC1jb2xvcjp3aGl0ZTtzdG9wLW9wYWNpdHk6MSIKICAgICAg\nICAgb2Zmc2V0PSIxIgogICAgICAgICBpZD0ic3RvcDMyNDAiIC8+CiAgICA8\nL2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBp\nZD0ibGluZWFyR3JhZGllbnQ0NjcxIj4KICAgICAgPHN0b3AKICAgICAgICAg\nc3R5bGU9InN0b3AtY29sb3I6I2ZmZDQzYjtzdG9wLW9wYWNpdHk6MTsiCiAg\nICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0NjczIiAvPgog\nICAgICA8c3RvcAogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojZmZlODcz\nO3N0b3Atb3BhY2l0eToxIgogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAg\nIGlkPSJzdG9wNDY3NSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8\nbGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQ2ODki\nPgogICAgICA8c3RvcAogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojNWE5\nZmQ0O3N0b3Atb3BhY2l0eToxOyIKICAgICAgICAgb2Zmc2V0PSIwIgogICAg\nICAgICBpZD0ic3RvcDQ2OTEiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIHN0\neWxlPSJzdG9wLWNvbG9yOiMzMDY5OTg7c3RvcC1vcGFjaXR5OjE7IgogICAg\nICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIGlkPSJzdG9wNDY5MyIgLz4KICAg\nIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAg\nIHgxPSIyMjQuMjM5OTYiCiAgICAgICB5MT0iMTQ0Ljc1NzE3IgogICAgICAg\neDI9Ii02NS4zMDg1MDIiCiAgICAgICB5Mj0iMTQ0Ljc1NzE3IgogICAgICAg\naWQ9ImxpbmVhckdyYWRpZW50Mjk4NyIKICAgICAgIHhsaW5rOmhyZWY9IiNs\naW5lYXJHcmFkaWVudDQ2NzEiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2Vy\nU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xh\ndGUoMTAwLjI3MDIsOTkuNjExMTYpIiAvPgogICAgPGxpbmVhckdyYWRpZW50\nCiAgICAgICB4MT0iMTcyLjk0MjA4IgogICAgICAgeTE9Ijc3LjQ3NTk4MyIK\nICAgICAgIHgyPSIyNi42NzAyOTgiCiAgICAgICB5Mj0iNzYuMzEzMTMzIgog\nICAgICAgaWQ9ImxpbmVhckdyYWRpZW50Mjk5MCIKICAgICAgIHhsaW5rOmhy\nZWY9IiNsaW5lYXJHcmFkaWVudDQ2ODkiCiAgICAgICBncmFkaWVudFVuaXRz\nPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0\ncmFuc2xhdGUoMTAwLjI3MDIsOTkuNjExMTYpIiAvPgogICAgPGxpbmVhckdy\nYWRpZW50CiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAg\nICB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0Njg5IgogICAgICAgaWQ9\nImxpbmVhckdyYWRpZW50MjU4NyIKICAgICAgIGdyYWRpZW50VW5pdHM9InVz\nZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5z\nbGF0ZSgxMDAuMjcwMiw5OS42MTExNikiCiAgICAgICB4MT0iMTcyLjk0MjA4\nIgogICAgICAgeTE9Ijc3LjQ3NTk4MyIKICAgICAgIHgyPSIyNi42NzAyOTgi\nCiAgICAgICB5Mj0iNzYuMzEzMTMzIiAvPgogICAgPGxpbmVhckdyYWRpZW50\nCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICB4bGlu\nazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NjcxIgogICAgICAgaWQ9ImxpbmVh\nckdyYWRpZW50MjU4OSIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFj\nZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgx\nMDAuMjcwMiw5OS42MTExNikiCiAgICAgICB4MT0iMjI0LjIzOTk2IgogICAg\nICAgeTE9IjE0NC43NTcxNyIKICAgICAgIHgyPSItNjUuMzA4NTAyIgogICAg\nICAgeTI9IjE0NC43NTcxNyIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAg\nICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIgogICAgICAgeGxpbms6aHJl\nZj0iI2xpbmVhckdyYWRpZW50NDY4OSIKICAgICAgIGlkPSJsaW5lYXJHcmFk\naWVudDIyNDgiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVz\nZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjI3\nMDIsOTkuNjExMTYpIgogICAgICAgeDE9IjE3Mi45NDIwOCIKICAgICAgIHkx\nPSI3Ny40NzU5ODMiCiAgICAgICB4Mj0iMjYuNjcwMjk4IgogICAgICAgeTI9\nIjc2LjMxMzEzMyIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaW5r\nc2NhcGU6Y29sbGVjdD0iYWx3YXlzIgogICAgICAgeGxpbms6aHJlZj0iI2xp\nbmVhckdyYWRpZW50NDY3MSIKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDIy\nNTAiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAg\nICAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjI3MDIsOTku\nNjExMTYpIgogICAgICAgeDE9IjIyNC4yMzk5NiIKICAgICAgIHkxPSIxNDQu\nNzU3MTciCiAgICAgICB4Mj0iLTY1LjMwODUwMiIKICAgICAgIHkyPSIxNDQu\nNzU3MTciIC8+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlua3NjYXBl\nOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHhsaW5rOmhyZWY9IiNsaW5lYXJH\ncmFkaWVudDQ2NzEiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQyMjU1Igog\nICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICBn\ncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNTYyNTQxLDAsMCwwLjU2Nzk3\nMiwtMTEuNTk3NCwtNy42MDk1NCkiCiAgICAgICB4MT0iMjI0LjIzOTk2Igog\nICAgICAgeTE9IjE0NC43NTcxNyIKICAgICAgIHgyPSItNjUuMzA4NTAyIgog\nICAgICAgeTI9IjE0NC43NTcxNyIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAog\nICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIgogICAgICAgeGxpbms6\naHJlZj0iI2xpbmVhckdyYWRpZW50NDY4OSIKICAgICAgIGlkPSJsaW5lYXJH\ncmFkaWVudDIyNTgiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VP\nblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC41NjI1\nNDEsMCwwLDAuNTY3OTcyLC0xMS41OTc0LC03LjYwOTU0KSIKICAgICAgIHgx\nPSIxNzIuOTQyMDgiCiAgICAgICB5MT0iNzYuMTc2MjI0IgogICAgICAgeDI9\nIjI2LjY3MDI5OCIKICAgICAgIHkyPSI3Ni4zMTMxMzMiIC8+CiAgICA8cmFk\naWFsR3JhZGllbnQKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIK\nICAgICAgIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDI3OTUiCiAgICAg\nICBpZD0icmFkaWFsR3JhZGllbnQyODAxIgogICAgICAgY3g9IjYxLjUxODg4\nMyIKICAgICAgIGN5PSIxMzIuMjg1NzUiCiAgICAgICBmeD0iNjEuNTE4ODgz\nIgogICAgICAgZnk9IjEzMi4yODU3NSIKICAgICAgIHI9IjI5LjAzNjkxMyIK\nICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMC4xNzc5\nNjYsMCwxMDguNzQzNCkiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3Bh\nY2VPblVzZSIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaW5rc2Nh\ncGU6Y29sbGVjdD0iYWx3YXlzIgogICAgICAgeGxpbms6aHJlZj0iI2xpbmVh\nckdyYWRpZW50NDY3MSIKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDE0NzUi\nCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAg\nIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC41NjI1NDEsMCwwLDAuNTY3\nOTcyLC0xNC45OTExMiwtMTEuNzAyMzcxKSIKICAgICAgIHgxPSIxNTAuOTYx\nMTEiCiAgICAgICB5MT0iMTkyLjM1MTc2IgogICAgICAgeDI9IjExMi4wMzE0\nNCIKICAgICAgIHkyPSIxMzcuMjcyOTkiIC8+CiAgICA8bGluZWFyR3JhZGll\nbnQKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHhs\naW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDQ2ODkiCiAgICAgICBpZD0ibGlu\nZWFyR3JhZGllbnQxNDc4IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNw\nYWNlT25Vc2UiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAu\nNTYyNTQxLDAsMCwwLjU2Nzk3MiwtMTQuOTkxMTIsLTExLjcwMjM3MSkiCiAg\nICAgICB4MT0iMjYuNjQ4OTM3IgogICAgICAgeTE9IjIwLjYwMzc4MSIKICAg\nICAgIHgyPSIxMzUuNjY1MjUiCiAgICAgICB5Mj0iMTE0LjM5NzY3IiAvPgog\nICAgPHJhZGlhbEdyYWRpZW50CiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJh\nbHdheXMiCiAgICAgICB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQyNzk1\nIgogICAgICAgaWQ9InJhZGlhbEdyYWRpZW50MTQ4MCIKICAgICAgIGdyYWRp\nZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFu\nc2Zvcm09Im1hdHJpeCgxLjc0OTA1NjVlLTgsLTAuMjM5OTQ2OTYsMS4wNTQ2\nNjgsMy43OTE1NDU3ZS03LC04My43MDA4LDE0Mi40NjIwMSkiCiAgICAgICBj\neD0iNjEuNTE4ODgzIgogICAgICAgY3k9IjEzMi4yODU3NSIKICAgICAgIGZ4\nPSI2MS41MTg4ODMiCiAgICAgICBmeT0iMTMyLjI4NTc1IgogICAgICAgcj0i\nMjkuMDM2OTEzIiAvPgogIDwvZGVmcz4KICA8cGF0aAogICAgIHN0eWxlPSJm\naWxsOnVybCgjbGluZWFyR3JhZGllbnQxNDc4KTtmaWxsLW9wYWNpdHk6MSIK\nICAgICBkPSJNIDU0LjkxODc4NSw5LjE5MjczODllLTQgQyA1MC4zMzUxMzIs\nMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4w\nOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0Nzcx\nNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYg\nMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0\nLjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYx\nODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1\nIDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0\nOTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5\nMDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43\nODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYy\nNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4\nLC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0\nOCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUs\nOS4xOTI3Mzg5ZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNjExIGMgMi43Njk1\nNDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUt\nNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1\nIC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUs\nLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2\nIDUuMDMxMjUsLTUuMTI0OTk5NiB6IgogICAgIGlkPSJwYXRoMTk0OCIgLz4K\nICA8cGF0aAogICAgIHN0eWxlPSJmaWxsOnVybCgjbGluZWFyR3JhZGllbnQx\nNDc1KTtmaWxsLW9wYWNpdHk6MSIKICAgICBkPSJtIDg1LjYzNzUzNSwyOC42\nNTcxNjkgdiAxMS45MDYyNSBjIDAsOS4yMzA3NTUgLTcuODI1ODk1LDE2Ljk5\nOTk5OSAtMTYuNzUsMTcgaCAtMjYuNzgxMjUgYyAtNy4zMzU4MzMsMCAtMTMu\nNDA2MjQ5LDYuMjc4NDgzIC0xMy40MDYyNSwxMy42MjUgdiAyNS41MzEyNDcg\nYyAwLDcuMjY2MzQ0IDYuMzE4NTg4LDExLjU0MDMyNCAxMy40MDYyNSwxMy42\nMjUwMDQgOC40ODczMzEsMi40OTU2MSAxNi42MjYyMzcsMi45NDY2MyAyNi43\nODEyNSwwIDYuNzUwMTU1LC0xLjk1NDM5IDEzLjQwNjI1MywtNS44ODc2MSAx\nMy40MDYyNSwtMTMuNjI1MDA0IFYgODYuNTAwOTE5IGggLTI2Ljc4MTI1IHYg\nLTMuNDA2MjUgaCAyNi43ODEyNSAxMy40MDYyNTQgYyA3Ljc5MjQ2MSwwIDEw\nLjY5NjI1MSwtNS40MzU0MDggMTMuNDA2MjQxLC0xMy41OTM3NSAyLjc5OTMz\nLC04LjM5ODg4NiAyLjY4MDIyLC0xNi40NzU3NzYgMCwtMjcuMjUgLTEuOTI1\nNzgsLTcuNzU3NDQxIC01LjYwMzg3LC0xMy41OTM3NSAtMTMuNDA2MjQxLC0x\nMy41OTM3NSB6IG0gLTE1LjA2MjUsNjQuNjU2MjUgYyAyLjc3OTQ3OCwzZS02\nIDUuMDMxMjUsMi4yNzc0MTcgNS4wMzEyNSw1LjA5Mzc0NyAtMmUtNiwyLjgy\nNjM1NCAtMi4yNTE3NzUsNS4xMjUwMDQgLTUuMDMxMjUsNS4xMjUwMDQgLTIu\nNzY5NTUsMCAtNS4wMzEyNSwtMi4yOTg2NSAtNS4wMzEyNSwtNS4xMjUwMDQg\nMmUtNiwtMi44MTYzMyAyLjI2MTY5NywtNS4wOTM3NDcgNS4wMzEyNSwtNS4w\nOTM3NDcgeiIKICAgICBpZD0icGF0aDE5NTAiIC8+CiAgPGVsbGlwc2UKICAg\nICBzdHlsZT0ib3BhY2l0eTowLjQ0MzgyO2ZpbGw6dXJsKCNyYWRpYWxHcmFk\naWVudDE0ODApO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0\ncm9rZTpub25lO3N0cm9rZS13aWR0aDoxNS40MTc0O3N0cm9rZS1taXRlcmxp\nbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEi\nCiAgICAgaWQ9InBhdGgxODk0IgogICAgIGN4PSI1NS44MTY3NjEiCiAgICAg\nY3k9IjEyNy43MDA3OSIKICAgICByeD0iMzUuOTMwOTc3IgogICAgIHJ5PSI2\nLjk2NzMxMTkiIC8+Cjwvc3ZnPgo=\n","cardIconImageFilename":"Python-logo-notext.svg","createdFromTemplateGuid":null,"createdFromTemplateVersion":null}],"links":[{"sourceIdentifier":0,"receiverIdentifier":2},{"sourceIdentifier":2,"receiverIdentifier":1}],"diagramNotes":[]}
Let's dig into a practical example
The Python script below takes in a dictionary object with a message
key and replaces any credit card numbers, social security numbers, and email addresses in the message with placeholders.
import re
def main(input):
message = input['message']
# Remove credit card numbers
message = re.sub(r"\\b(?:\\d[ -]*?){13,16}\\b", "[CREDIT CARD]", message)
# Remove social security numbers
message = re.sub(r"\\b\\d{3}-?\\d{2}-?\\d{4}\\b", "[SSN]", message)
# Remove email addresses
message = re.sub(r"\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b", "[EMAIL]", message)
return message
Running the script
To run this script using the template action, populate the script
field with the given script and input
field with an object that has a message
key. The value for message
should be the text you want to process.
After running the script, the processed text will be returned with any credit card numbers, social security numbers, and email addresses replaced with placeholders.
Limitations and considerations
There are four limitations to keep in mind.
Rate limiting. For script runs originating from your Tines tenant, the rate limit is 10 per minute. For anonymous requests, the limit is set to 5 per hour.
Timeout. The feature employs a 10-second timeout window.
Programming languages. This feature is limited to Python scripts. It does not run other programming languages.
Third party modules and libraries. The feature does not support third-party modules or libraries. Before running a script, confirm your code does not rely on any external dependencies.
Before deploying code, confirm it meets the the following:
[ ] Executes within 10-seconds
[ ] Accounts for rate limiting
[ ] Written in Python
[ ] Not reliant on third party libraries or modules
This is a great way for highly technical users to run scripts in Tines.