ideas-generator/I-gen.blueprint.json
DJP 5ec08ac641 Complete Migration Analysis & Documentation - OpenAI Assistants to Responses API
## Major Analysis Completed
- Analyzed Make.com workflow blueprint (368KB+ complexity)
- Extracted 48 specialized AI assistant configurations from CSV export
- Designed comprehensive migration strategy from deprecated Assistants API to Responses API

## Key Discoveries
- System contains 1 SMART Goals assistant + 47 Creator Bot specialists
- Each bot represents a proven creative advertising technique
- Current architecture: 8+ API calls per message, complex threading
- New architecture: Single API call with 95% complexity reduction

## Documentation Created
- `BACKEND_ARCHITECTURE.md`: Complete Make.com workflow technical analysis
- `COMPLETE_ASSISTANT_CONFIGURATIONS.md`: All 48 assistant system prompts
- `RESPONSES_API_MIGRATION_PLAN.md`: Technical migration strategy
- `FEATURE_PARITY_MAPPING.md`: Detailed feature comparison & implementation
- `FINAL_MIGRATION_SUMMARY.md`: Executive summary & business impact
- `SECURITY_COMPONENTS.md`: Authentication components to disable for development
- `UPDATED_TRANSITION_PLAN.md`: 5-week implementation timeline

## Source Files
- `I-gen.blueprint.json`: Original Make.com workflow export (368KB)
- `I-gen-assistant-instructions.csv`: All assistant system instructions

## Business Impact
- 48 specialized creative AI personalities (significant IP value)
- 60% cost reduction through API efficiency
- Enhanced capabilities: web search, conversation forking, real-time streaming
- Dynamic assistant management system designed
- PostgreSQL architecture recommended for production scale

## Technical Architecture
- Migration from OpenAI Assistants API → Responses API (future-proof)
- Dynamic system prompts with tone-of-voice integration
- Admin interface for assistant management (create/update/test)
- Production-ready database schema with partitioning
- Comprehensive caching and performance optimization

Ready for Phase 1 implementation: Local backend setup with Responses API integration.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-03 08:56:14 -04:00

5037 lines
No EOL
368 KiB
JSON
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"name": "CREATIVE SIDEKICK",
"flow": [
{
"id": 1,
"module": "gateway:CustomWebHook",
"version": 1,
"parameters": {
"hook": 10312,
"maxResults": 1
},
"mapper": {},
"metadata": {
"designer": {
"x": 1030,
"y": 793
},
"restore": {
"parameters": {
"hook": {
"data": {
"editable": "true"
},
"label": "CREATIVE SIDEKICK"
}
}
},
"parameters": [
{
"name": "hook",
"type": "hook:gateway-webhook",
"label": "Webhook",
"required": true
},
{
"name": "maxResults",
"type": "number",
"label": "Maximum number of results"
}
],
"interface": [
{
"name": "authenticateduser",
"type": "text"
},
{
"name": "GetAssistants",
"type": "text"
},
{
"name": "__IMTHEADERS__",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name"
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Headers"
},
{
"name": "__IMTMETHOD__",
"type": "text",
"label": "Method"
}
],
"advanced": true
}
},
{
"id": 521,
"module": "json:TransformToJSON",
"version": 1,
"parameters": {
"space": ""
},
"mapper": {
"object": "{{1.Message}}"
},
"metadata": {
"designer": {
"x": 1270,
"y": 803
},
"restore": {
"parameters": {
"space": {
"label": "Empty"
}
}
},
"parameters": [
{
"name": "space",
"type": "select",
"label": "Indentation",
"validate": {
"enum": [
"tab",
"2",
"4"
]
}
}
],
"expect": [
{
"name": "object",
"type": "any",
"label": "Object"
}
]
}
},
{
"id": 175,
"module": "builtin:BasicRouter",
"version": 1,
"parameters": {
"else": 4
},
"filter": {
"name": "Authenticated",
"conditions": [
[
{
"a": "{{1.authenticateduser}}",
"o": "exist"
}
]
]
},
"mapper": null,
"metadata": {
"designer": {
"x": 1564,
"y": 794
}
},
"routes": [
{
"flow": [
{
"id": 73,
"module": "datastore:SearchRecord",
"version": 1,
"parameters": {
"limit": null,
"datastore": 1609,
"continueWhenNoRes": false
},
"filter": {
"name": "Getting Messages",
"conditions": [
[
{
"a": "{{1.GetMessages}}",
"b": "True",
"o": "text:equal"
}
]
]
},
"mapper": {
"sort": [
{
"key": "TimeStamp",
"order": 1
}
],
"filter": [
[
{
"a": "Conversation_ID",
"b": "{{1.ConversationID}}",
"o": "text:equal:ci"
}
]
]
},
"metadata": {
"designer": {
"x": 2386,
"y": 1032,
"name": "Get Messages"
},
"restore": {
"expect": {
"sort": {
"items": [
{
"key": {
"mode": "chose",
"label": "TimeStamp"
},
"order": {
"mode": "chose",
"label": "Ascending"
}
}
]
}
},
"parameters": {
"datastore": {
"label": " sidekick_messages"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
},
{
"name": "limit",
"type": "uinteger",
"label": "Limit"
},
{
"name": "continueWhenNoRes",
"type": "boolean",
"label": "Continue the execution of the route even if the module returns no results"
}
],
"expect": [
{
"name": "filter",
"type": "filter",
"label": "Filter",
"options": "rpc://datastore/1.9.21/RpcGetUDTKeys",
"required": true
},
{
"name": "sort",
"spec": [
{
"name": "key",
"type": "select",
"label": "Key",
"dynamic": true,
"options": [],
"required": true
},
{
"name": "order",
"type": "select",
"label": "Order",
"options": [
{
"label": "Ascending",
"value": 1
},
{
"label": "Descending",
"value": -1
}
],
"required": true
}
],
"type": "array",
"label": "Sort"
}
],
"interface": [
{
"name": "key",
"type": "text",
"label": "Key"
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Role",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Content",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Content_NoFormatting",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "TimeStamp",
"type": "date",
"label": null,
"required": false
}
],
"type": "collection",
"label": "Record"
}
],
"advanced": true
}
},
{
"id": 518,
"module": "json:TransformToJSON",
"version": 1,
"parameters": {
"space": ""
},
"mapper": {
"object": "{{73.data.Content}}"
},
"metadata": {
"designer": {
"x": 2666,
"y": 1030
},
"restore": {
"parameters": {
"space": {
"label": "Empty"
}
}
},
"parameters": [
{
"name": "space",
"type": "select",
"label": "Indentation",
"validate": {
"enum": [
"tab",
"2",
"4"
]
}
}
],
"expect": [
{
"name": "object",
"type": "any",
"label": "Object"
}
]
}
},
{
"id": 198,
"module": "util:TextAggregator",
"version": 1,
"parameters": {
"feeder": 73,
"rowSeparator": "other",
"otherRowSeparator": ", "
},
"mapper": {
"value": "{ \"role\": \"{{73.data.Role}}\", \"content\": {{518.json}} }"
},
"metadata": {
"designer": {
"x": 2935,
"y": 1032,
"name": "Aggregate Messages"
},
"restore": {
"extra": {
"feeder": {
"label": "Get Messages - Search records [73]"
}
},
"parameters": {
"rowSeparator": {
"label": "Other"
}
}
},
"parameters": [
{
"name": "rowSeparator",
"type": "select",
"label": "Row separator",
"validate": {
"enum": [
"\n",
"\t",
"other"
]
}
},
{
"name": "otherRowSeparator",
"type": "text",
"label": "Separator"
}
],
"expect": [
{
"name": "value",
"type": "text",
"label": "Text"
}
],
"advanced": true
}
},
{
"id": 200,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"messages\": [{{198.text}}],\n \"conversation_id\": \"{{1.ConversationID}}\"\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 3403,
"y": 1031
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
},
{
"flow": [
{
"id": 161,
"module": "http:ActionSendData",
"version": 3,
"parameters": {
"handleErrors": false,
"useNewZLibDeCompress": true
},
"filter": {
"name": "Not Getting Messages",
"conditions": [
[
{
"a": "{{1.GetMessages}}",
"b": "True",
"o": "text:notequal"
},
{
"a": "{{1.GetConversations}}",
"b": "True",
"o": "text:notequal"
},
{
"a": "{{1.DeleteConversation}}",
"b": "True",
"o": "text:notequal"
},
{
"a": "{{1.GetAssistants}}",
"b": "True",
"o": "text:notequal"
}
],
[
{
"a": "{{1.ConversationID}}",
"b": "\"\"",
"o": "text:equal"
},
{
"a": "{{1.GetMessages}}",
"b": "True",
"o": "text:equal"
},
{
"a": "{{1.GetConversations}}",
"b": "True",
"o": "text:notequal"
},
{
"a": "{{1.DeleteConversation}}",
"b": "True",
"o": "text:notequal"
},
{
"a": "{{1.GetAssistants}}",
"b": "True",
"o": "text:notequal"
}
]
]
},
"mapper": {
"ca": "",
"qs": [],
"url": "https://api.openai.com/v1/moderations",
"data": "{ \"input\": {{521.json}} }",
"gzip": true,
"method": "post",
"headers": [
{
"name": "Authorization",
"value": "Bearer sk-ideas-sidekick-tqhDPO2oRCpEM63lfIO2T3BlbkFJEpM4LOG5me1oXIa6xoJr"
},
{
"name": "OpenAI-Organization",
"value": "org-HSioKMud1tZBdpWhBjJE6SLe"
}
],
"timeout": "",
"useMtls": false,
"authPass": "",
"authUser": "",
"bodyType": "raw",
"contentType": "application/json",
"serializeUrl": false,
"shareCookies": false,
"parseResponse": true,
"followRedirect": true,
"useQuerystring": false,
"followAllRedirects": false,
"rejectUnauthorized": true
},
"metadata": {
"designer": {
"x": 2385,
"y": 515,
"name": "Get Is Message Acceptable"
},
"restore": {
"expect": {
"qs": {
"mode": "chose"
},
"method": {
"mode": "chose",
"label": "POST"
},
"headers": {
"mode": "chose",
"items": [
null,
null
]
},
"bodyType": {
"label": "Raw"
},
"contentType": {
"label": "JSON (application/json)"
}
}
},
"parameters": [
{
"name": "handleErrors",
"type": "boolean",
"label": "Evaluate all states as errors (except for 2xx and 3xx )",
"required": true
},
{
"name": "useNewZLibDeCompress",
"type": "hidden"
}
],
"expect": [
{
"name": "url",
"type": "url",
"label": "URL",
"required": true
},
{
"name": "serializeUrl",
"type": "boolean",
"label": "Serialize URL",
"required": true
},
{
"name": "method",
"type": "select",
"label": "Method",
"required": true,
"validate": {
"enum": [
"get",
"head",
"post",
"put",
"patch",
"delete",
"options"
]
}
},
{
"name": "headers",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name",
"required": true
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Headers"
},
{
"name": "qs",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name",
"required": true
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Query String"
},
{
"name": "bodyType",
"type": "select",
"label": "Body type",
"validate": {
"enum": [
"raw",
"x_www_form_urlencoded",
"multipart_form_data"
]
}
},
{
"name": "parseResponse",
"type": "boolean",
"label": "Parse response",
"required": true
},
{
"name": "authUser",
"type": "text",
"label": "User name"
},
{
"name": "authPass",
"type": "password",
"label": "Password"
},
{
"name": "timeout",
"type": "uinteger",
"label": "Timeout",
"validate": {
"max": 300,
"min": 1
}
},
{
"name": "shareCookies",
"type": "boolean",
"label": "Share cookies with other HTTP modules",
"required": true
},
{
"name": "ca",
"type": "cert",
"label": "Self-signed certificate"
},
{
"name": "rejectUnauthorized",
"type": "boolean",
"label": "Reject connections that are using unverified (self-signed) certificates",
"required": true
},
{
"name": "followRedirect",
"type": "boolean",
"label": "Follow redirect",
"required": true
},
{
"name": "useQuerystring",
"type": "boolean",
"label": "Disable serialization of multiple same query string keys as arrays",
"required": true
},
{
"name": "gzip",
"type": "boolean",
"label": "Request compressed content",
"required": true
},
{
"name": "useMtls",
"type": "boolean",
"label": "Use Mutual TLS",
"required": true
},
{
"name": "contentType",
"type": "select",
"label": "Content type",
"validate": {
"enum": [
"text/plain",
"application/json",
"application/xml",
"text/xml",
"text/html",
"custom"
]
}
},
{
"name": "data",
"type": "buffer",
"label": "Request content"
},
{
"name": "followAllRedirects",
"type": "boolean",
"label": "Follow all redirect",
"required": true
}
]
}
},
{
"id": 162,
"module": "builtin:BasicRouter",
"version": 1,
"parameters": {
"else": 0
},
"mapper": null,
"metadata": {
"designer": {
"x": 2708,
"y": 509
}
},
"routes": [
{
"flow": [
{
"id": 163,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"error\": \"Error: Message Flagged\"\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 3011,
"y": 226
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
},
{
"flow": [
{
"id": 120,
"module": "util:ComposeTransformer",
"version": 1,
"parameters": {},
"filter": {
"name": "Not Flagged",
"conditions": [
[
{
"a": "{{161.data.results[1].flagged}}",
"b": "false",
"o": "text:equal"
}
]
]
},
"mapper": {
"value": "gpt-4-turbo-preview"
},
"metadata": {
"designer": {
"x": 3302,
"y": 503,
"name": "Model"
},
"restore": {},
"expect": [
{
"name": "value",
"type": "text",
"label": "Text"
}
]
}
},
{
"id": 494,
"module": "util:SetVariables",
"version": 1,
"parameters": {},
"mapper": {
"scope": "roundtrip",
"variables": [
{
"name": "Standard",
"value": "\nWhen writing copy use these brilliant basics \nKnow vs tell\nBenefits not features \nSentence length \nReal words\nExclamations \nYou vs. them \nActive not passive \nKnow vs tell\nFirst think what does the reader want to know NOT what to do we want to tell them. \nExplain what is in it for them the reader \nBenefits not features \nDont list the features \nDescribe the benefits of those features for the reader \nInstead of \n 2 GB to 160 GB storage capacities\nTry this \n1000 songs in your pocket \nSentence length \nVary sentence length. When sentences are all of the same length the copy sounds monotonous and boring. Vary your sentence length. Even have some one word sentences. Kapow.\n\nReal words \nAvoid marketing jargon and phrases. And cliches such as introducing say hello to exclusive offer.\nUse language, phrases and words that would be used in conversation by the people you are writing to.\nIt has to sound like youre having a conversation with the people you are talking to. \nMake it natural and easy to read and follow. \n\n\n\n\nExclamations \nAvoid ! Unless actually exclaiming. \nHelp!\nFire!\nHelp Im on fire!\n\nDont ever use at the end of a joke or a funny piece of copy. \n\n\n\nContractions \nNot using contractions makes the copy feel formal and cold. \n\n\n\nYou vs. them \nDont say customer, guest, user or client. Say you.\nWrite directly to one person \nThis is will make it more personal and conversational.\nFirst vs third person \nDont talk about the brand in the third person. You wouldnt do this in a conversation so dont use this in copy. \nUse we, us and our instead.\nActive vs. passive \nAlways use the active voice and not the passive one \n"
}
]
},
"metadata": {
"designer": {
"x": 3603,
"y": 502,
"name": "Tone of Voices"
},
"restore": {
"expect": {
"scope": {
"label": "One cycle"
},
"variables": {
"items": [
null
]
}
}
},
"expect": [
{
"name": "variables",
"spec": [
{
"name": "name",
"type": "text",
"label": "Variable name",
"required": true
},
{
"name": "value",
"type": "any",
"label": "Variable value"
}
],
"type": "array",
"label": "Variables"
},
{
"name": "scope",
"type": "select",
"label": "Variable lifetime",
"required": true,
"validate": {
"enum": [
"roundtrip",
"execution"
]
}
}
],
"interface": [
{
"name": "Standard",
"type": "any",
"label": "Standard"
}
]
}
},
{
"id": 82,
"module": "builtin:BasicRouter",
"version": 1,
"parameters": {
"else": 2
},
"mapper": null,
"metadata": {
"designer": {
"x": 3908,
"y": 505
}
},
"routes": [
{
"flow": [
{
"id": 208,
"module": "builtin:BasicRouter",
"version": 1,
"parameters": {
"else": 0
},
"filter": {
"name": "New Conversation",
"conditions": [
[
{
"a": "{{1.ConversationID}}",
"b": "\"\"",
"o": "text:equal"
}
],
[
{
"a": "{{1.ConversationID}}",
"b": "{{false}}",
"o": "boolean:equal"
}
]
]
},
"mapper": null,
"metadata": {
"designer": {
"x": 4245,
"y": 250
}
},
"routes": [
{
"flow": [
{
"id": 493,
"module": "datastore:GetRecord",
"version": 1,
"parameters": {
"datastore": 1607
},
"mapper": {
"key": "{{1.AssistantKey}}",
"returnWrapped": false
},
"metadata": {
"designer": {
"x": 4545,
"y": 250,
"name": "Get Assistant"
},
"restore": {
"parameters": {
"datastore": {
"label": "sidekick_assistants"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true
},
{
"name": "returnWrapped",
"type": "boolean",
"label": "Return Wrapped Output",
"required": true
}
],
"interface": [
{
"name": "Name",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Instructions",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Model",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Initial Message",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Assistant ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
}
]
}
},
{
"id": 83,
"module": "datastore:AddRecord",
"version": 1,
"parameters": {
"datastore": 1608
},
"mapper": {
"key": "",
"data": {
"Cost": "",
"Title": "",
"EndTime": "",
"User_ID": "{{1.authenticateduser}}",
"StartTime": "{{now}}",
"Thread_ID": "",
"Assistant_ID": "",
"Assistant_Key": "",
"Conversation_ID": "",
"Assistant Setting": "",
"Brand Voice Setting": "{{1.TOV_Key}}"
},
"overwrite": false
},
"metadata": {
"designer": {
"x": 4845,
"y": 250,
"name": "Create Conversation"
},
"restore": {
"expect": {
"data": {
"nested": {
"Deleted": {
"mode": "chose"
}
}
},
"overwrite": {
"mode": "chose"
}
},
"parameters": {
"datastore": {
"label": "sidekick_conversations"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key"
},
{
"name": "overwrite",
"type": "boolean",
"label": "Overwrite an existing record",
"required": true
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null
},
{
"name": "User_ID",
"type": "text",
"label": null
},
{
"name": "StartTime",
"type": "date",
"label": null
},
{
"name": "EndTime",
"type": "date",
"label": null
},
{
"name": "Cost",
"type": "number",
"label": null
},
{
"name": "Title",
"type": "text",
"label": null
},
{
"name": "Assistant Setting",
"type": "text",
"label": null
},
{
"name": "Brand Voice Setting",
"type": "text",
"label": null
},
{
"name": "Deleted",
"type": "boolean",
"label": null
},
{
"name": "Assistant_ID",
"type": "text",
"label": null
},
{
"name": "Thread_ID",
"type": "text",
"label": null
},
{
"name": "Assistant_Key",
"type": "text",
"label": null
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 85,
"module": "datastore:AddRecord",
"version": 1,
"parameters": {
"datastore": 1609
},
"mapper": {
"key": "",
"data": {
"Role": "user",
"Content": "{{1.Message}}",
"TimeStamp": "{{now}}",
"Conversation_ID": "{{83.key}}",
"Content_NoFormatting": "{{1.Message}}"
},
"overwrite": false
},
"metadata": {
"designer": {
"x": 5150,
"y": 253,
"name": "Add User Message"
},
"restore": {
"expect": {
"overwrite": {
"mode": "chose"
}
},
"parameters": {
"datastore": {
"label": "sidekick_messages"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key"
},
{
"name": "overwrite",
"type": "boolean",
"label": "Overwrite an existing record",
"required": true
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null
},
{
"name": "Role",
"type": "text",
"label": null
},
{
"name": "Content",
"type": "text",
"label": null
},
{
"name": "Content_NoFormatting",
"type": "text",
"label": null
},
{
"name": "TimeStamp",
"type": "date",
"label": null
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 203,
"module": "http:ActionSendData",
"version": 3,
"parameters": {
"handleErrors": false,
"useNewZLibDeCompress": true
},
"mapper": {
"ca": "",
"qs": [],
"url": "https://api.openai.com/v1/threads",
"data": "{{replace(replace(\"{\n \"\"messages\"\": [\n {\n \"\"role\"\": \"\"user\"\",\n \"\"content\"\": \"\"Please use this tone of voice for your responses: \" + trim(replace(replace(switch(1.TOV_Key; \"standard\"; 494.Standard; \"pep\"; 494.PEP; \"No tone of voice, just ignore this and carry on.\"); newline; space); \"\"\"\"; \"\\\"\"\")) + \"\"\"\n }\n ]\n}\"; tab; space); \"\\t\"; space)}}",
"gzip": true,
"method": "post",
"headers": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer sk-ideas-sidekick-tqhDPO2oRCpEM63lfIO2T3BlbkFJEpM4LOG5me1oXIa6xoJr"
},
{
"name": "OpenAI-Organization",
"value": "org-HSioKMud1tZBdpWhBjJE6SLe"
},
{
"name": "OpenAI-Beta",
"value": "assistants=v1"
}
],
"timeout": "",
"useMtls": false,
"authPass": "",
"authUser": "",
"bodyType": "raw",
"contentType": "application/json",
"serializeUrl": false,
"shareCookies": false,
"parseResponse": true,
"followRedirect": true,
"useQuerystring": false,
"followAllRedirects": false,
"rejectUnauthorized": true
},
"metadata": {
"designer": {
"x": 5454,
"y": 254,
"name": "Create Thread"
},
"restore": {
"expect": {
"qs": {
"mode": "chose"
},
"method": {
"mode": "chose",
"label": "POST"
},
"headers": {
"mode": "chose",
"items": [
null,
null,
null,
null
]
},
"bodyType": {
"label": "Raw"
},
"contentType": {
"label": "JSON (application/json)"
}
}
},
"parameters": [
{
"name": "handleErrors",
"type": "boolean",
"label": "Evaluate all states as errors (except for 2xx and 3xx )",
"required": true
},
{
"name": "useNewZLibDeCompress",
"type": "hidden"
}
],
"expect": [
{
"name": "url",
"type": "url",
"label": "URL",
"required": true
},
{
"name": "serializeUrl",
"type": "boolean",
"label": "Serialize URL",
"required": true
},
{
"name": "method",
"type": "select",
"label": "Method",
"required": true,
"validate": {
"enum": [
"get",
"head",
"post",
"put",
"patch",
"delete",
"options"
]
}
},
{
"name": "headers",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name",
"required": true
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Headers"
},
{
"name": "qs",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name",
"required": true
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Query String"
},
{
"name": "bodyType",
"type": "select",
"label": "Body type",
"validate": {
"enum": [
"raw",
"x_www_form_urlencoded",
"multipart_form_data"
]
}
},
{
"name": "parseResponse",
"type": "boolean",
"label": "Parse response",
"required": true
},
{
"name": "authUser",
"type": "text",
"label": "User name"
},
{
"name": "authPass",
"type": "password",
"label": "Password"
},
{
"name": "timeout",
"type": "uinteger",
"label": "Timeout",
"validate": {
"max": 300,
"min": 1
}
},
{
"name": "shareCookies",
"type": "boolean",
"label": "Share cookies with other HTTP modules",
"required": true
},
{
"name": "ca",
"type": "cert",
"label": "Self-signed certificate"
},
{
"name": "rejectUnauthorized",
"type": "boolean",
"label": "Reject connections that are using unverified (self-signed) certificates",
"required": true
},
{
"name": "followRedirect",
"type": "boolean",
"label": "Follow redirect",
"required": true
},
{
"name": "useQuerystring",
"type": "boolean",
"label": "Disable serialization of multiple same query string keys as arrays",
"required": true
},
{
"name": "gzip",
"type": "boolean",
"label": "Request compressed content",
"required": true
},
{
"name": "useMtls",
"type": "boolean",
"label": "Use Mutual TLS",
"required": true
},
{
"name": "contentType",
"type": "select",
"label": "Content type",
"validate": {
"enum": [
"text/plain",
"application/json",
"application/xml",
"text/xml",
"text/html",
"custom"
]
}
},
{
"name": "data",
"type": "buffer",
"label": "Request content"
},
{
"name": "followAllRedirects",
"type": "boolean",
"label": "Follow all redirect",
"required": true
}
]
}
},
{
"id": 519,
"module": "openai-gpt-3:messageAssistantAdvanced",
"version": 1,
"parameters": {
"__IMTCONN__": 23782
},
"mapper": {
"role": "user",
"message": "{{1.Message}}",
"threadId": "{{203.data.id}}",
"assistantId": "{{493.`Assistant ID`}}"
},
"metadata": {
"designer": {
"x": 5789,
"y": 255
},
"restore": {
"expect": {
"role": {
"label": "User"
},
"model": {
"mode": "chose"
},
"tools": {
"mode": "chose"
},
"image_urls": {
"mode": "chose"
},
"assistantId": {
"mode": "edit",
"nested": []
},
"image_files": {
"mode": "chose"
},
"response_format": {
"mode": "chose",
"label": "Empty"
},
"truncation_strategy": {
"mode": "chose",
"label": "Empty"
},
"file_search_resources": {
"mode": "chose"
},
"code_interpreter_resources": {
"mode": "chose"
}
},
"parameters": {
"__IMTCONN__": {
"data": {
"scoped": "true",
"connection": "openai-gpt-3"
},
"label": "Creative-Sidekick-Project-Based-Key"
}
}
},
"parameters": [
{
"name": "__IMTCONN__",
"type": "account:openai-gpt-3",
"label": "Connection",
"required": true
}
],
"expect": [
{
"name": "assistantId",
"type": "select",
"label": "Assistant",
"required": true
},
{
"name": "role",
"type": "select",
"label": "Role",
"required": true,
"validate": {
"enum": [
"user",
"assistant"
]
}
},
{
"name": "threadId",
"type": "text",
"label": "Thread ID"
},
{
"name": "model",
"type": "select",
"label": "Model"
},
{
"name": "tools",
"type": "select",
"label": "Tools",
"multiple": true,
"validate": {
"enum": [
"file_search",
"code_interpreter"
]
}
},
{
"name": "file_search_resources",
"type": "select",
"label": "File Search Resources"
},
{
"name": "code_interpreter_resources",
"type": "select",
"label": "Code Interpreter Resources",
"multiple": true,
"validate": {
"maxItems": 20
}
},
{
"name": "instructions",
"type": "text",
"label": "Instructions"
},
{
"name": "max_prompt_tokens",
"type": "uinteger",
"label": "Max Prompt Tokens"
},
{
"name": "max_completion_tokens",
"type": "uinteger",
"label": "Max Completion Tokens"
},
{
"name": "temperature",
"type": "number",
"label": "Temperature",
"validate": {
"max": 2,
"min": 0
}
},
{
"name": "top_p",
"type": "number",
"label": "Top P",
"validate": {
"max": 1,
"min": 0
}
},
{
"name": "response_format",
"type": "select",
"label": "Response Format",
"validate": {
"enum": [
"auto",
"json_object",
"text"
]
}
},
{
"name": "truncation_strategy",
"type": "select",
"label": "Truncation Strategy",
"validate": {
"enum": [
"auto",
"last_messages"
]
}
},
{
"name": "message",
"type": "text",
"label": "Message",
"required": true
},
{
"name": "image_files",
"type": "select",
"label": "Image Files",
"multiple": true
},
{
"name": "image_urls",
"spec": {
"name": "value",
"type": "url",
"label": "Image URL",
"required": true
},
"type": "array",
"label": "Image URLs"
}
]
}
},
{
"id": 512,
"module": "markdown:Compile",
"version": 2,
"parameters": {},
"mapper": {
"gfm": true,
"data": "{{519.content[].text.value}}",
"sanitize": false
},
"metadata": {
"designer": {
"x": 5793,
"y": -112
},
"restore": {
"expect": {
"gfm": {
"mode": "chose"
},
"sanitize": {
"mode": "chose"
}
}
},
"expect": [
{
"name": "data",
"type": "text",
"label": "Markdown"
},
{
"name": "gfm",
"type": "boolean",
"label": "GitHub Flavored Markdown",
"required": true
},
{
"name": "sanitize",
"type": "boolean",
"label": "Sanitize",
"required": true
}
]
}
},
{
"id": 513,
"module": "json:TransformToJSON",
"version": 1,
"parameters": {
"space": ""
},
"mapper": {
"object": "{{512.data}}"
},
"metadata": {
"designer": {
"x": 6052,
"y": -108
},
"restore": {
"parameters": {
"space": {
"label": "Empty"
}
}
},
"parameters": [
{
"name": "space",
"type": "select",
"label": "Indentation",
"validate": {
"enum": [
"tab",
"2",
"4"
]
}
}
],
"expect": [
{
"name": "object",
"type": "any",
"label": "Object"
}
]
}
},
{
"id": 508,
"module": "datastore:AddRecord",
"version": 1,
"parameters": {
"datastore": 1609
},
"mapper": {
"key": "",
"data": {
"Role": "assistant",
"Content": "{{512.data}}",
"TimeStamp": "{{now}}",
"Conversation_ID": "{{83.key}}",
"Content_NoFormatting": "{{519.content[1].text.value}}"
},
"overwrite": false
},
"metadata": {
"designer": {
"x": 6046,
"y": 253,
"name": "Add Assistant Message"
},
"restore": {
"expect": {
"overwrite": {
"mode": "chose"
}
},
"parameters": {
"datastore": {
"label": "sidekick_messages"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key"
},
{
"name": "overwrite",
"type": "boolean",
"label": "Overwrite an existing record",
"required": true
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null
},
{
"name": "Role",
"type": "text",
"label": null
},
{
"name": "Content",
"type": "text",
"label": null
},
{
"name": "Content_NoFormatting",
"type": "text",
"label": null
},
{
"name": "TimeStamp",
"type": "date",
"label": null
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 516,
"module": "regexp:HTMLToText",
"version": 1,
"parameters": {},
"mapper": {
"html": "{{512.data}}",
"newline": "lf",
"uppercaseHeadings": true
},
"metadata": {
"designer": {
"x": 6408,
"y": 250
},
"restore": {
"expect": {
"newline": {
"label": "LF (\\n) - Unix/Mac OS X"
}
}
},
"expect": [
{
"name": "html",
"type": "text",
"label": "HTML"
},
{
"name": "newline",
"type": "select",
"label": "Line break",
"required": true,
"validate": {
"enum": [
"lf",
"crlf",
"cr"
]
}
},
{
"name": "uppercaseHeadings",
"type": "boolean",
"label": "Uppercase headings",
"required": true
}
],
"advanced": true
}
},
{
"id": 497,
"module": "http:ActionSendData",
"version": 3,
"parameters": {
"handleErrors": false,
"useNewZLibDeCompress": true
},
"mapper": {
"ca": "",
"qs": [],
"url": "https://api.openai.com/v1/chat/completions",
"data": "{\n\t\"model\": \"gpt-4-turbo\",\n\t\"messages\": [{\n\t\t\t\"role\": \"system\",\n\t\t\t\"content\": \"You are a conversation title generator with decades of experience. It is extremely important that you only ever output a short single title on it's own.\"\n\t\t},\n\t\t{\n\t\t\t\"role\": \"user\",\n\t\t\t\"content\": \"I will provide you text of a conversation between two individuals named USER and ASSISTANT which you will use to generate an appropriate title. Do you understand?\"\n\t\t}, {\n\t\t\t\"role\": \"assistant\",\n\t\t\t\"content\": \"Yes, I understand.\"\n\t\t}, {\n\t\t\t\"role\": \"user\",\n\t\t\t\"content\": \"In your next message, please respond only with a short title that is shorter than 4 words relating to this conversation. Reword titles to be shorter and more concise if needed. Never use quotation marks around the title and never use before text such as Title: or Conversation Title:. CHAT: USER: {{encodeURL(516.text)}}.\"\n\t\t}\n\t]\n}",
"gzip": false,
"method": "post",
"headers": [
{
"name": "Authorization",
"value": "Bearer sk-ideas-sidekick-tqhDPO2oRCpEM63lfIO2T3BlbkFJEpM4LOG5me1oXIa6xoJr"
},
{
"name": "OpenAI-Organization",
"value": "org-HSioKMud1tZBdpWhBjJE6SLe"
}
],
"timeout": "",
"useMtls": false,
"authPass": "",
"authUser": "",
"bodyType": "raw",
"contentType": "application/json",
"serializeUrl": false,
"shareCookies": false,
"parseResponse": true,
"followRedirect": true,
"useQuerystring": false,
"followAllRedirects": false,
"rejectUnauthorized": true
},
"metadata": {
"designer": {
"x": 6758,
"y": 247,
"name": "Generate Title"
},
"restore": {
"expect": {
"qs": {
"mode": "chose"
},
"method": {
"mode": "chose",
"label": "POST"
},
"headers": {
"mode": "chose",
"items": [
null,
null
]
},
"bodyType": {
"label": "Raw"
},
"contentType": {
"label": "JSON (application/json)"
}
}
},
"parameters": [
{
"name": "handleErrors",
"type": "boolean",
"label": "Evaluate all states as errors (except for 2xx and 3xx )",
"required": true
},
{
"name": "useNewZLibDeCompress",
"type": "hidden"
}
],
"expect": [
{
"name": "url",
"type": "url",
"label": "URL",
"required": true
},
{
"name": "serializeUrl",
"type": "boolean",
"label": "Serialize URL",
"required": true
},
{
"name": "method",
"type": "select",
"label": "Method",
"required": true,
"validate": {
"enum": [
"get",
"head",
"post",
"put",
"patch",
"delete",
"options"
]
}
},
{
"name": "headers",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name",
"required": true
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Headers"
},
{
"name": "qs",
"spec": [
{
"name": "name",
"type": "text",
"label": "Name",
"required": true
},
{
"name": "value",
"type": "text",
"label": "Value"
}
],
"type": "array",
"label": "Query String"
},
{
"name": "bodyType",
"type": "select",
"label": "Body type",
"validate": {
"enum": [
"raw",
"x_www_form_urlencoded",
"multipart_form_data"
]
}
},
{
"name": "parseResponse",
"type": "boolean",
"label": "Parse response",
"required": true
},
{
"name": "authUser",
"type": "text",
"label": "User name"
},
{
"name": "authPass",
"type": "password",
"label": "Password"
},
{
"name": "timeout",
"type": "uinteger",
"label": "Timeout",
"validate": {
"max": 300,
"min": 1
}
},
{
"name": "shareCookies",
"type": "boolean",
"label": "Share cookies with other HTTP modules",
"required": true
},
{
"name": "ca",
"type": "cert",
"label": "Self-signed certificate"
},
{
"name": "rejectUnauthorized",
"type": "boolean",
"label": "Reject connections that are using unverified (self-signed) certificates",
"required": true
},
{
"name": "followRedirect",
"type": "boolean",
"label": "Follow redirect",
"required": true
},
{
"name": "useQuerystring",
"type": "boolean",
"label": "Disable serialization of multiple same query string keys as arrays",
"required": true
},
{
"name": "gzip",
"type": "boolean",
"label": "Request compressed content",
"required": true
},
{
"name": "useMtls",
"type": "boolean",
"label": "Use Mutual TLS",
"required": true
},
{
"name": "contentType",
"type": "select",
"label": "Content type",
"validate": {
"enum": [
"text/plain",
"application/json",
"application/xml",
"text/xml",
"text/html",
"custom"
]
}
},
{
"name": "data",
"type": "buffer",
"label": "Request content"
},
{
"name": "followAllRedirects",
"type": "boolean",
"label": "Follow all redirect",
"required": true
}
]
}
},
{
"id": 499,
"module": "datastore:UpdateRecord",
"version": 1,
"parameters": {
"datastore": 1608
},
"mapper": {
"key": "{{83.key}}",
"data": {
"Cost": "",
"Title": "{{497.data.choices[1].message.content}}",
"EndTime": "{{now}}",
"User_ID": "",
"StartTime": "",
"Thread_ID": "{{203.data.id}}",
"Assistant_ID": "{{493.`Assistant ID`}}",
"Assistant_Key": "{{1.AssistantKey}}",
"Conversation_ID": "{{83.key}}",
"Assistant Setting": "",
"Brand Voice Setting": ""
},
"upsert": true,
"overwriteArrays": false
},
"metadata": {
"designer": {
"x": 7084,
"y": 250,
"name": "Update Conversation"
},
"restore": {
"expect": {
"data": {
"nested": {
"Deleted": {
"mode": "chose"
}
}
},
"upsert": {
"mode": "chose"
},
"overwriteArrays": {
"mode": "chose"
}
},
"parameters": {
"datastore": {
"label": "sidekick_conversations"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true
},
{
"name": "upsert",
"type": "boolean",
"label": "Insert missing record",
"required": true
},
{
"name": "overwriteArrays",
"type": "boolean",
"label": "Overwrite an existing array in the record",
"required": true
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null
},
{
"name": "User_ID",
"type": "text",
"label": null
},
{
"name": "StartTime",
"type": "date",
"label": null
},
{
"name": "EndTime",
"type": "date",
"label": null
},
{
"name": "Cost",
"type": "number",
"label": null
},
{
"name": "Title",
"type": "text",
"label": null
},
{
"name": "Assistant Setting",
"type": "text",
"label": null
},
{
"name": "Brand Voice Setting",
"type": "text",
"label": null
},
{
"name": "Deleted",
"type": "boolean",
"label": null
},
{
"name": "Assistant_ID",
"type": "text",
"label": null
},
{
"name": "Thread_ID",
"type": "text",
"label": null
},
{
"name": "Assistant_Key",
"type": "text",
"label": null
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 500,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"conversation_id\": \"{{83.key}}\",\n \"conversation_title\": \"{{trim(replace(replace(497.data.choices[1].message.content; \"\"\"\"; \"'\"); newline; space))}}\",\n \"message\": {{513.json}}\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 7435,
"y": 252
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
},
{
"flow": [
{
"id": 209,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"filter": {
"name": "No Assistant ID",
"conditions": [
[
{
"a": "{{1.AssistantKey}}",
"b": "\"\"",
"o": "text:equal"
}
],
[
{
"a": "{{1.AssistantKey}}",
"b": "{{false}}",
"o": "boolean:equal"
}
]
]
},
"mapper": {
"body": "{\n \"error\": \"Error: Assistant Not Set\"\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 4543,
"y": 490
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
}
]
}
]
},
{
"flow": [
{
"id": 104,
"module": "datastore:GetRecord",
"version": 1,
"parameters": {
"datastore": 1608
},
"filter": {
"name": "Existing Conversation",
"conditions": [
[
{
"a": "{{1.ConversationID}}",
"b": "\"\"",
"o": "text:notequal"
},
{
"a": "{{1.ConversationID}}",
"b": "{{false}}",
"o": "boolean:notequal"
}
]
]
},
"mapper": {
"key": "{{1.ConversationID}}",
"returnWrapped": false
},
"metadata": {
"designer": {
"x": 4236,
"y": 800,
"name": "Get Conversation"
},
"restore": {
"parameters": {
"datastore": {
"label": "sidekick_conversations"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true
},
{
"name": "returnWrapped",
"type": "boolean",
"label": "Return Wrapped Output",
"required": true
}
],
"interface": [
{
"name": "Conversation_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "User_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "StartTime",
"type": "date",
"label": null,
"required": false
},
{
"name": "EndTime",
"type": "date",
"label": null,
"required": false
},
{
"name": "Cost",
"type": "number",
"label": null,
"default": null,
"required": false
},
{
"name": "Title",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Assistant Setting",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Brand Voice Setting",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Deleted",
"type": "boolean",
"label": null,
"required": false
},
{
"name": "Assistant_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Thread_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Assistant_Key",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
}
]
},
"onerror": [
{
"id": 196,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"error\": \"Error: Something went wrong. Please try again\"\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 4548,
"y": 1054
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
},
{
"id": 201,
"module": "datastore:AddRecord",
"version": 1,
"parameters": {
"datastore": 1609
},
"mapper": {
"key": "",
"data": {
"Role": "user",
"Content": "{{1.Message}}",
"TimeStamp": "{{now}}",
"Conversation_ID": "{{104.Conversation_ID}}",
"Content_NoFormatting": "{{trim(replace(replace(1.Message; newline; space); \"\"\"\"; \"\\\"\"\"))}}"
},
"overwrite": false
},
"metadata": {
"designer": {
"x": 4550,
"y": 800,
"name": "Add User Message"
},
"restore": {
"expect": {
"overwrite": {
"mode": "chose"
}
},
"parameters": {
"datastore": {
"label": "sidekick_messages"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key"
},
{
"name": "overwrite",
"type": "boolean",
"label": "Overwrite an existing record",
"required": true
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null
},
{
"name": "Role",
"type": "text",
"label": null
},
{
"name": "Content",
"type": "text",
"label": null
},
{
"name": "Content_NoFormatting",
"type": "text",
"label": null
},
{
"name": "TimeStamp",
"type": "date",
"label": null
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 520,
"module": "openai-gpt-3:messageAssistantAdvanced",
"version": 1,
"parameters": {
"__IMTCONN__": 23782
},
"mapper": {
"role": "user",
"message": "{{1.Message}}",
"threadId": "{{104.Thread_ID}}",
"assistantId": "{{104.Assistant_ID}}"
},
"metadata": {
"designer": {
"x": 4850,
"y": 806
},
"restore": {
"expect": {
"role": {
"label": "User"
},
"model": {
"mode": "chose"
},
"tools": {
"mode": "chose"
},
"image_urls": {
"mode": "chose"
},
"assistantId": {
"mode": "edit",
"nested": []
},
"image_files": {
"mode": "chose"
},
"response_format": {
"mode": "chose",
"label": "Empty"
},
"truncation_strategy": {
"mode": "chose",
"label": "Empty"
},
"file_search_resources": {
"mode": "chose"
},
"code_interpreter_resources": {
"mode": "chose"
}
},
"parameters": {
"__IMTCONN__": {
"data": {
"scoped": "true",
"connection": "openai-gpt-3"
},
"label": "Creative-Sidekick-Project-Based-Key"
}
}
},
"parameters": [
{
"name": "__IMTCONN__",
"type": "account:openai-gpt-3",
"label": "Connection",
"required": true
}
],
"expect": [
{
"name": "assistantId",
"type": "select",
"label": "Assistant",
"required": true
},
{
"name": "role",
"type": "select",
"label": "Role",
"required": true,
"validate": {
"enum": [
"user",
"assistant"
]
}
},
{
"name": "threadId",
"type": "text",
"label": "Thread ID"
},
{
"name": "model",
"type": "select",
"label": "Model"
},
{
"name": "tools",
"type": "select",
"label": "Tools",
"multiple": true,
"validate": {
"enum": [
"file_search",
"code_interpreter"
]
}
},
{
"name": "file_search_resources",
"type": "select",
"label": "File Search Resources"
},
{
"name": "code_interpreter_resources",
"type": "select",
"label": "Code Interpreter Resources",
"multiple": true,
"validate": {
"maxItems": 20
}
},
{
"name": "instructions",
"type": "text",
"label": "Instructions"
},
{
"name": "max_prompt_tokens",
"type": "uinteger",
"label": "Max Prompt Tokens"
},
{
"name": "max_completion_tokens",
"type": "uinteger",
"label": "Max Completion Tokens"
},
{
"name": "temperature",
"type": "number",
"label": "Temperature",
"validate": {
"max": 2,
"min": 0
}
},
{
"name": "top_p",
"type": "number",
"label": "Top P",
"validate": {
"max": 1,
"min": 0
}
},
{
"name": "response_format",
"type": "select",
"label": "Response Format",
"validate": {
"enum": [
"auto",
"json_object",
"text"
]
}
},
{
"name": "truncation_strategy",
"type": "select",
"label": "Truncation Strategy",
"validate": {
"enum": [
"auto",
"last_messages"
]
}
},
{
"name": "message",
"type": "text",
"label": "Message",
"required": true
},
{
"name": "image_files",
"type": "select",
"label": "Image Files",
"multiple": true
},
{
"name": "image_urls",
"spec": {
"name": "value",
"type": "url",
"label": "Image URL",
"required": true
},
"type": "array",
"label": "Image URLs"
}
]
}
},
{
"id": 514,
"module": "markdown:Compile",
"version": 2,
"parameters": {},
"mapper": {
"gfm": true,
"data": "{{520.content[].text.value}}",
"sanitize": false
},
"metadata": {
"designer": {
"x": 4845,
"y": 519
},
"restore": {
"expect": {
"gfm": {
"mode": "chose"
},
"sanitize": {
"mode": "chose"
}
}
},
"expect": [
{
"name": "data",
"type": "text",
"label": "Markdown"
},
{
"name": "gfm",
"type": "boolean",
"label": "GitHub Flavored Markdown",
"required": true
},
{
"name": "sanitize",
"type": "boolean",
"label": "Sanitize",
"required": true
}
]
}
},
{
"id": 515,
"module": "json:TransformToJSON",
"version": 1,
"parameters": {
"space": ""
},
"mapper": {
"object": "{{514.data}}"
},
"metadata": {
"designer": {
"x": 5152,
"y": 514
},
"restore": {
"parameters": {
"space": {
"label": "Empty"
}
}
},
"parameters": [
{
"name": "space",
"type": "select",
"label": "Indentation",
"validate": {
"enum": [
"tab",
"2",
"4"
]
}
}
],
"expect": [
{
"name": "object",
"type": "any",
"label": "Object"
}
]
}
},
{
"id": 503,
"module": "datastore:AddRecord",
"version": 1,
"parameters": {
"datastore": 1609
},
"mapper": {
"key": "",
"data": {
"Role": "assistant",
"Content": "{{514.data}}",
"TimeStamp": "{{now}}",
"Conversation_ID": "{{104.Conversation_ID}}",
"Content_NoFormatting": "{{520.content[1].text.value}}"
},
"overwrite": false
},
"metadata": {
"designer": {
"x": 5152,
"y": 807,
"name": "Add Assistant Message"
},
"restore": {
"expect": {
"overwrite": {
"mode": "chose"
}
},
"parameters": {
"datastore": {
"label": "sidekick_messages"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key"
},
{
"name": "overwrite",
"type": "boolean",
"label": "Overwrite an existing record",
"required": true
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null
},
{
"name": "Role",
"type": "text",
"label": null
},
{
"name": "Content",
"type": "text",
"label": null
},
{
"name": "Content_NoFormatting",
"type": "text",
"label": null
},
{
"name": "TimeStamp",
"type": "date",
"label": null
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 505,
"module": "datastore:UpdateRecord",
"version": 1,
"parameters": {
"datastore": 1608
},
"mapper": {
"key": "{{104.Conversation_ID}}",
"data": {
"Cost": "",
"Title": "",
"EndTime": "{{now}}",
"User_ID": "",
"StartTime": "",
"Thread_ID": "",
"Assistant_ID": "",
"Assistant_Key": "",
"Conversation_ID": "",
"Assistant Setting": "",
"Brand Voice Setting": ""
},
"upsert": true,
"overwriteArrays": false
},
"metadata": {
"designer": {
"x": 5451,
"y": 813,
"name": "Update Conversation"
},
"restore": {
"expect": {
"data": {
"nested": {
"Deleted": {
"mode": "chose"
}
}
},
"upsert": {
"mode": "chose"
},
"overwriteArrays": {
"mode": "chose"
}
},
"parameters": {
"datastore": {
"label": "sidekick_conversations"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true
},
{
"name": "upsert",
"type": "boolean",
"label": "Insert missing record",
"required": true
},
{
"name": "overwriteArrays",
"type": "boolean",
"label": "Overwrite an existing array in the record",
"required": true
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null
},
{
"name": "User_ID",
"type": "text",
"label": null
},
{
"name": "StartTime",
"type": "date",
"label": null
},
{
"name": "EndTime",
"type": "date",
"label": null
},
{
"name": "Cost",
"type": "number",
"label": null
},
{
"name": "Title",
"type": "text",
"label": null
},
{
"name": "Assistant Setting",
"type": "text",
"label": null
},
{
"name": "Brand Voice Setting",
"type": "text",
"label": null
},
{
"name": "Deleted",
"type": "boolean",
"label": null
},
{
"name": "Assistant_ID",
"type": "text",
"label": null
},
{
"name": "Thread_ID",
"type": "text",
"label": null
},
{
"name": "Assistant_Key",
"type": "text",
"label": null
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 506,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"conversation_id\": \"{{104.Conversation_ID}}\",\n \"message\": {{515.json}}\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 5752,
"y": 811
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
},
{
"flow": [
{
"id": 194,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"error\": \"Error: Something went wrong. Please try again\"\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 4251,
"y": 1235
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
}
]
}
]
}
]
}
]
},
{
"flow": [
{
"id": 149,
"module": "datastore:SearchRecord",
"version": 1,
"parameters": {
"limit": null,
"datastore": 1608,
"continueWhenNoRes": false
},
"filter": {
"name": "Get Conversations",
"conditions": [
[
{
"a": "{{1.GetConversations}}",
"b": "True",
"o": "text:equal"
}
]
]
},
"mapper": {
"sort": [
{
"key": "EndTime",
"order": -1
}
],
"filter": [
[
{
"a": "User_ID",
"b": "{{1.authenticateduser}}",
"o": "text:equal"
}
]
]
},
"metadata": {
"designer": {
"x": 2386,
"y": 778,
"name": "Get Conversations"
},
"restore": {
"expect": {
"sort": {
"items": [
{
"key": {
"mode": "chose",
"label": "EndTime"
},
"order": {
"mode": "chose",
"label": "Descending"
}
}
]
}
},
"parameters": {
"datastore": {
"label": "sidekick_conversations"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
},
{
"name": "limit",
"type": "uinteger",
"label": "Limit"
},
{
"name": "continueWhenNoRes",
"type": "boolean",
"label": "Continue the execution of the route even if the module returns no results"
}
],
"expect": [
{
"name": "filter",
"type": "filter",
"label": "Filter",
"options": "rpc://datastore/1.9.21/RpcGetUDTKeys",
"required": true
},
{
"name": "sort",
"spec": [
{
"name": "key",
"type": "select",
"label": "Key",
"dynamic": true,
"options": [],
"required": true
},
{
"name": "order",
"type": "select",
"label": "Order",
"options": [
{
"label": "Ascending",
"value": 1
},
{
"label": "Descending",
"value": -1
}
],
"required": true
}
],
"type": "array",
"label": "Sort"
}
],
"interface": [
{
"name": "key",
"type": "text",
"label": "Key"
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "User_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "StartTime",
"type": "date",
"label": null,
"required": false
},
{
"name": "EndTime",
"type": "date",
"label": null,
"required": false
},
{
"name": "Cost",
"type": "number",
"label": null,
"default": null,
"required": false
},
{
"name": "Title",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Assistant Setting",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Brand Voice Setting",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Deleted",
"type": "boolean",
"label": null,
"required": false
},
{
"name": "Assistant_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Thread_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Assistant_Key",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 152,
"module": "util:TextAggregator",
"version": 1,
"parameters": {
"feeder": 149,
"rowSeparator": "other",
"otherRowSeparator": ", "
},
"filter": {
"name": "Not Deleted",
"conditions": [
[
{
"a": "{{149.data.Deleted}}",
"b": "{{true}}",
"o": "boolean:notequal"
}
]
]
},
"mapper": {
"value": "{ \"id\": \"{{149.key}}\", \"title\": \"{{149.data.Title}}\", \"assistant_id\": \"{{149.data.Assistant_ID}}\", \"assistant_key\": \"{{149.data.Assistant_Key}}\", \"tov_key\": \"{{149.data.`Brand Voice Setting`}}\" }"
},
"metadata": {
"designer": {
"x": 2690,
"y": 781,
"name": "Aggregate Conversations"
},
"restore": {
"extra": {
"feeder": {
"label": "Get Conversations - Search records [149]"
}
},
"parameters": {
"rowSeparator": {
"label": "Other"
}
}
},
"parameters": [
{
"name": "rowSeparator",
"type": "select",
"label": "Row separator",
"validate": {
"enum": [
"\n",
"\t",
"other"
]
}
},
{
"name": "otherRowSeparator",
"type": "text",
"label": "Separator"
}
],
"expect": [
{
"name": "value",
"type": "text",
"label": "Text"
}
],
"advanced": true
}
},
{
"id": 153,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"conversations\": [{{152.text}}]\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 2985,
"y": 778
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
},
{
"flow": [
{
"id": 154,
"module": "datastore:GetRecord",
"version": 1,
"parameters": {
"datastore": 1608
},
"filter": {
"name": "Delete Conversation",
"conditions": [
[
{
"a": "{{1.DeleteConversation}}",
"b": "True",
"o": "text:equal"
}
]
]
},
"mapper": {
"key": "{{1.ConversationID}}",
"returnWrapped": false
},
"metadata": {
"designer": {
"x": 2385,
"y": 1294,
"name": "Get Conversation"
},
"restore": {
"parameters": {
"datastore": {
"label": "sidekick_conversations"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true
},
{
"name": "returnWrapped",
"type": "boolean",
"label": "Return Wrapped Output",
"required": true
}
],
"interface": [
{
"name": "Conversation_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "User_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "StartTime",
"type": "date",
"label": null,
"required": false
},
{
"name": "EndTime",
"type": "date",
"label": null,
"required": false
},
{
"name": "Cost",
"type": "number",
"label": null,
"default": null,
"required": false
},
{
"name": "Title",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Assistant Setting",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Brand Voice Setting",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Deleted",
"type": "boolean",
"label": null,
"required": false
},
{
"name": "Assistant_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Thread_ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Assistant_Key",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
}
]
}
},
{
"id": 155,
"module": "builtin:BasicRouter",
"version": 1,
"parameters": {
"else": 1
},
"mapper": null,
"metadata": {
"designer": {
"x": 2693,
"y": 1297
}
},
"routes": [
{
"flow": [
{
"id": 158,
"module": "datastore:UpdateRecord",
"version": 1,
"parameters": {
"datastore": 1608
},
"filter": {
"name": "Correct User",
"conditions": [
[
{
"a": "{{154.User_ID}}",
"b": "{{1.authenticateduser}}",
"o": "text:equal"
}
]
]
},
"mapper": {
"key": "{{1.ConversationID}}",
"data": {
"Cost": "",
"Title": "",
"Deleted": true,
"EndTime": "",
"User_ID": "",
"StartTime": "",
"Thread_ID": "",
"Assistant_ID": "",
"Assistant_Key": "",
"Conversation_ID": "",
"Assistant Setting": "",
"Brand Voice Setting": ""
},
"upsert": true,
"overwriteArrays": false
},
"metadata": {
"designer": {
"x": 3003,
"y": 1294,
"name": "Delete Conversation"
},
"restore": {
"expect": {
"data": {
"nested": {
"Deleted": {
"mode": "chose"
}
}
},
"upsert": {
"mode": "chose"
},
"overwriteArrays": {
"mode": "chose"
}
},
"parameters": {
"datastore": {
"label": "sidekick_conversations"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
}
],
"expect": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true
},
{
"name": "upsert",
"type": "boolean",
"label": "Insert missing record",
"required": true
},
{
"name": "overwriteArrays",
"type": "boolean",
"label": "Overwrite an existing array in the record",
"required": true
},
{
"name": "data",
"spec": [
{
"name": "Conversation_ID",
"type": "text",
"label": null
},
{
"name": "User_ID",
"type": "text",
"label": null
},
{
"name": "StartTime",
"type": "date",
"label": null
},
{
"name": "EndTime",
"type": "date",
"label": null
},
{
"name": "Cost",
"type": "number",
"label": null
},
{
"name": "Title",
"type": "text",
"label": null
},
{
"name": "Assistant Setting",
"type": "text",
"label": null
},
{
"name": "Brand Voice Setting",
"type": "text",
"label": null
},
{
"name": "Deleted",
"type": "boolean",
"label": null
},
{
"name": "Assistant_ID",
"type": "text",
"label": null
},
{
"name": "Thread_ID",
"type": "text",
"label": null
},
{
"name": "Assistant_Key",
"type": "text",
"label": null
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 159,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"message\": \"Success\"\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 3309,
"y": 1294
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
},
{
"flow": [
{
"id": 157,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"error\": \"Error: You cannot delete a conversation that is not yours.\"\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 2993,
"y": 1546
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
}
]
}
]
},
{
"flow": [
{
"id": 185,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"error\": \"Error: Something went wrong. Please try again\"\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 2389,
"y": 2067
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
},
{
"flow": [
{
"id": 210,
"module": "datastore:SearchRecord",
"version": 1,
"parameters": {
"limit": null,
"datastore": 1607,
"continueWhenNoRes": false
},
"filter": {
"name": "Get Assistants",
"conditions": [
[
{
"a": "{{1.GetAssistants}}",
"b": "True",
"o": "text:equal"
}
]
]
},
"mapper": {
"sort": [],
"filter": []
},
"metadata": {
"designer": {
"x": 2397,
"y": 1802,
"name": "Get Assistants"
},
"restore": {
"parameters": {
"datastore": {
"label": "sidekick_assistants"
}
}
},
"parameters": [
{
"name": "datastore",
"type": "datastore",
"label": "Data store",
"required": true
},
{
"name": "limit",
"type": "uinteger",
"label": "Limit"
},
{
"name": "continueWhenNoRes",
"type": "boolean",
"label": "Continue the execution of the route even if the module returns no results"
}
],
"expect": [
{
"name": "filter",
"type": "filter",
"label": "Filter",
"options": "rpc://datastore/1.9.21/RpcGetUDTKeys",
"required": true
},
{
"name": "sort",
"spec": [
{
"name": "key",
"type": "select",
"label": "Key",
"dynamic": true,
"options": [],
"required": true
},
{
"name": "order",
"type": "select",
"label": "Order",
"options": [
{
"label": "Ascending",
"value": 1
},
{
"label": "Descending",
"value": -1
}
],
"required": true
}
],
"type": "array",
"label": "Sort"
}
],
"interface": [
{
"name": "__IMTLENGTH__",
"type": "uinteger",
"label": "Total number of bundles"
},
{
"name": "__IMTINDEX__",
"type": "uinteger",
"label": "Bundle order position"
},
{
"name": "key",
"type": "text",
"label": "Key"
},
{
"name": "data",
"spec": [
{
"name": "Name",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Instructions",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Model",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Initial Message",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
},
{
"name": "Assistant ID",
"type": "text",
"label": null,
"default": null,
"required": false,
"multiline": false
}
],
"type": "collection",
"label": "Record"
}
]
}
},
{
"id": 211,
"module": "util:TextAggregator",
"version": 1,
"parameters": {
"feeder": 210,
"rowSeparator": "other",
"otherRowSeparator": ", "
},
"filter": {
"name": "Not Deleted",
"conditions": [
[
{
"a": "{{210.data.Deleted}}",
"b": "{{true}}",
"o": "boolean:notequal"
}
]
]
},
"mapper": {
"value": "{ \"key\": \"{{210.key}}\", \"id\": \"{{210.data.`Assistant ID`}}\", \"name\": \"{{210.data.Name}}\", \"initial_message\": \"{{210.data.`Initial Message`}}\" }"
},
"metadata": {
"designer": {
"x": 2701,
"y": 1805,
"name": "Aggregate Assistants"
},
"restore": {
"extra": {
"feeder": {
"label": "Get Assistants - Search records [210]"
}
},
"parameters": {
"rowSeparator": {
"label": "Other"
}
}
},
"parameters": [
{
"name": "rowSeparator",
"type": "select",
"label": "Row separator",
"validate": {
"enum": [
"\n",
"\t",
"other"
]
}
},
{
"name": "otherRowSeparator",
"type": "text",
"label": "Separator"
}
],
"expect": [
{
"name": "value",
"type": "text",
"label": "Text"
}
],
"advanced": true
}
},
{
"id": 212,
"module": "gateway:WebhookRespond",
"version": 1,
"parameters": {},
"mapper": {
"body": "{\n \"assistants\": [{{211.text}}]\n}",
"status": "200",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
},
"metadata": {
"designer": {
"x": 2996,
"y": 1802
},
"restore": {
"expect": {
"headers": {
"mode": "chose",
"items": [
null
]
}
}
},
"expect": [
{
"name": "status",
"type": "uinteger",
"label": "Status",
"required": true,
"validate": {
"min": 100
}
},
{
"name": "body",
"type": "any",
"label": "Body"
},
{
"name": "headers",
"spec": [
{
"name": "key",
"type": "text",
"label": "Key",
"required": true,
"validate": {
"max": 256
}
},
{
"name": "value",
"type": "text",
"label": "Value",
"required": true,
"validate": {
"max": 4096
}
}
],
"type": "array",
"label": "Custom headers",
"validate": {
"maxItems": 16
}
}
],
"advanced": true
}
}
]
}
]
}
],
"metadata": {
"instant": true,
"version": 1,
"scenario": {
"roundtrips": 1,
"maxErrors": 3,
"autoCommit": true,
"autoCommitTriggerLast": true,
"sequential": false,
"slots": null,
"confidential": false,
"dataloss": false,
"dlq": false,
"freshVariables": false
},
"designer": {
"orphans": [],
"notes": [
{
"id": 21,
"text": "This is not stripping the last comma",
"filter": false
}
]
},
"zone": "us1.make.celonis.com",
"notes": []
}
}