From 867842d4735a73ce117ae418ea49db4f1f567c94 Mon Sep 17 00:00:00 2001 From: shortstacked Date: Tue, 20 May 2025 07:24:56 +0100 Subject: [PATCH] feat: Migrate Test Workflows to Main Repo (#15504) --- .github/actions/setup-and-build/action.yml | 49 + .github/workflows/test-workflows-callable.yml | 217 ++ .github/workflows/test-workflows-nightly.yml | 45 + .../workflows/test-workflows-pr-approved.yml | 25 + .../workflows/test-workflows-pr-comment.yml | 78 + .gitignore | 1 + .vscode/settings.default.json | 3 +- packages/@n8n/decorators/src/index.ts | 1 + packages/cli/src/commands/execute-batch.ts | 24 +- test-workflows/README.md | 2 + test-workflows/credentials.json | 3022 +++++++++++++++++ test-workflows/skipList.json | 926 +++++ test-workflows/snapshots/1-snapshot.json | 397 +++ test-workflows/snapshots/10-snapshot.json | 708 ++++ test-workflows/snapshots/101-snapshot.json | 132 + test-workflows/snapshots/103-snapshot.json | 213 ++ test-workflows/snapshots/104-snapshot.json | 126 + test-workflows/snapshots/105-snapshot.json | 191 ++ test-workflows/snapshots/107-snapshot.json | 63 + test-workflows/snapshots/108-snapshot.json | 1363 ++++++++ test-workflows/snapshots/109-snapshot.json | 423 +++ test-workflows/snapshots/11-snapshot.json | 642 ++++ test-workflows/snapshots/110-snapshot.json | 105 + test-workflows/snapshots/111-snapshot.json | 320 ++ test-workflows/snapshots/112-snapshot.json | 172 + test-workflows/snapshots/113-snapshot.json | 94 + test-workflows/snapshots/114-snapshot.json | 619 ++++ test-workflows/snapshots/115-snapshot.json | 186 + test-workflows/snapshots/116-snapshot.json | 611 ++++ test-workflows/snapshots/117-snapshot.json | 130 + test-workflows/snapshots/118-snapshot.json | 554 +++ test-workflows/snapshots/119-snapshot.json | 166 + test-workflows/snapshots/120-snapshot.json | 223 ++ test-workflows/snapshots/124-snapshot.json | 139 + test-workflows/snapshots/125-snapshot.json | 338 ++ test-workflows/snapshots/128-snapshot.json | 137 + test-workflows/snapshots/130-snapshot.json | 815 +++++ test-workflows/snapshots/131-snapshot.json | 71 + test-workflows/snapshots/132-snapshot.json | 112 + test-workflows/snapshots/133-snapshot.json | 99 + test-workflows/snapshots/139-snapshot.json | 1081 ++++++ test-workflows/snapshots/140-snapshot.json | 73 + test-workflows/snapshots/143-snapshot.json | 278 ++ test-workflows/snapshots/145-snapshot.json | 105 + test-workflows/snapshots/146-snapshot.json | 198 ++ test-workflows/snapshots/147-snapshot.json | 613 ++++ test-workflows/snapshots/148-snapshot.json | 96 + test-workflows/snapshots/15-snapshot.json | 644 ++++ test-workflows/snapshots/150-snapshot.json | 184 + test-workflows/snapshots/151-snapshot.json | 799 +++++ test-workflows/snapshots/152-snapshot.json | 171 + test-workflows/snapshots/153-snapshot.json | 100 + test-workflows/snapshots/154-snapshot.json | 109 + test-workflows/snapshots/155-snapshot.json | 523 +++ test-workflows/snapshots/156-snapshot.json | 72 + test-workflows/snapshots/16-snapshot.json | 132 + test-workflows/snapshots/161-snapshot.json | 75 + test-workflows/snapshots/162-snapshot.json | 105 + test-workflows/snapshots/163-snapshot.json | 302 ++ test-workflows/snapshots/164-snapshot.json | 1007 ++++++ test-workflows/snapshots/166-snapshot.json | 1263 +++++++ test-workflows/snapshots/169-snapshot.json | 94 + test-workflows/snapshots/17-snapshot.json | 120 + test-workflows/snapshots/172-snapshot.json | 187 + test-workflows/snapshots/174-snapshot.json | 305 ++ test-workflows/snapshots/177-snapshot.json | 1047 ++++++ test-workflows/snapshots/182-snapshot.json | 244 ++ test-workflows/snapshots/184-snapshot.json | 1341 ++++++++ test-workflows/snapshots/185-snapshot.json | 1588 +++++++++ test-workflows/snapshots/186-snapshot.json | 919 +++++ test-workflows/snapshots/187-snapshot.json | 253 ++ test-workflows/snapshots/190-snapshot.json | 1258 +++++++ test-workflows/snapshots/191-snapshot.json | 283 ++ test-workflows/snapshots/192-snapshot.json | 729 ++++ test-workflows/snapshots/194-snapshot.json | 142 + test-workflows/snapshots/195-snapshot.json | 330 ++ test-workflows/snapshots/197-snapshot.json | 142 + test-workflows/snapshots/198-snapshot.json | 301 ++ test-workflows/snapshots/199-snapshot.json | 77 + test-workflows/snapshots/20-snapshot.json | 578 ++++ test-workflows/snapshots/202-snapshot.json | 260 ++ test-workflows/snapshots/203-snapshot.json | 327 ++ test-workflows/snapshots/205-snapshot.json | 74 + test-workflows/snapshots/208-snapshot.json | 72 + test-workflows/snapshots/209-snapshot.json | 246 ++ test-workflows/snapshots/21-snapshot.json | 473 +++ test-workflows/snapshots/212-snapshot.json | 546 +++ test-workflows/snapshots/216-snapshot.json | 169 + test-workflows/snapshots/223-snapshot.json | 73 + test-workflows/snapshots/229-snapshot.json | 664 ++++ test-workflows/snapshots/230-snapshot.json | 79 + test-workflows/snapshots/231-snapshot.json | 164 + test-workflows/snapshots/232-snapshot.json | 126 + test-workflows/snapshots/233-snapshot.json | 961 ++++++ test-workflows/snapshots/234-snapshot.json | 146 + test-workflows/snapshots/235-snapshot.json | 324 ++ test-workflows/snapshots/236-snapshot.json | 630 ++++ test-workflows/snapshots/237-snapshot.json | 150 + test-workflows/snapshots/238-snapshot.json | 149 + test-workflows/snapshots/239-snapshot.json | 583 ++++ test-workflows/snapshots/240-snapshot.json | 391 +++ test-workflows/snapshots/241-snapshot.json | 296 ++ test-workflows/snapshots/242-snapshot.json | 212 ++ test-workflows/snapshots/243-snapshot.json | 305 ++ test-workflows/snapshots/244-snapshot.json | 431 +++ test-workflows/snapshots/245-snapshot.json | 145 + test-workflows/snapshots/246-snapshot.json | 152 + test-workflows/snapshots/247-snapshot.json | 380 +++ test-workflows/snapshots/248-snapshot.json | 946 ++++++ test-workflows/snapshots/249-snapshot.json | 324 ++ test-workflows/snapshots/250-snapshot.json | 946 ++++++ test-workflows/snapshots/251-snapshot.json | 276 ++ test-workflows/snapshots/252-snapshot.json | 1719 ++++++++++ test-workflows/snapshots/253-snapshot.json | 1821 ++++++++++ test-workflows/snapshots/254-snapshot.json | 1763 ++++++++++ test-workflows/snapshots/255-snapshot.json | 179 + test-workflows/snapshots/256-snapshot.json | 535 +++ test-workflows/snapshots/257-snapshot.json | 734 ++++ test-workflows/snapshots/258-snapshot.json | 980 ++++++ test-workflows/snapshots/259-snapshot.json | 1380 ++++++++ test-workflows/snapshots/26-snapshot.json | 408 +++ test-workflows/snapshots/29-snapshot.json | 561 +++ test-workflows/snapshots/32-snapshot.json | 168 + test-workflows/snapshots/33-snapshot.json | 220 ++ test-workflows/snapshots/34-snapshot.json | 544 +++ test-workflows/snapshots/35-snapshot.json | 476 +++ test-workflows/snapshots/36-snapshot.json | 1007 ++++++ test-workflows/snapshots/37-snapshot.json | 1205 +++++++ test-workflows/snapshots/38-snapshot.json | 107 + test-workflows/snapshots/40-snapshot.json | 620 ++++ test-workflows/snapshots/41-snapshot.json | 299 ++ test-workflows/snapshots/42-snapshot.json | 214 ++ test-workflows/snapshots/43-snapshot.json | 265 ++ test-workflows/snapshots/44-snapshot.json | 380 +++ test-workflows/snapshots/45-snapshot.json | 427 +++ test-workflows/snapshots/46-snapshot.json | 731 ++++ test-workflows/snapshots/48-snapshot.json | 1071 ++++++ test-workflows/snapshots/49-snapshot.json | 173 + test-workflows/snapshots/5-snapshot.json | 184 + test-workflows/snapshots/51-snapshot.json | 644 ++++ test-workflows/snapshots/52-snapshot.json | 629 ++++ test-workflows/snapshots/53-snapshot.json | 411 +++ test-workflows/snapshots/55-snapshot.json | 201 ++ test-workflows/snapshots/58-snapshot.json | 314 ++ test-workflows/snapshots/6-snapshot.json | 177 + test-workflows/snapshots/60-snapshot.json | 426 +++ test-workflows/snapshots/61-snapshot.json | 800 +++++ test-workflows/snapshots/62-snapshot.json | 243 ++ test-workflows/snapshots/63-snapshot.json | 156 + test-workflows/snapshots/66-snapshot.json | 439 +++ test-workflows/snapshots/67-snapshot.json | 1348 ++++++++ test-workflows/snapshots/70-snapshot.json | 395 +++ test-workflows/snapshots/71-snapshot.json | 395 +++ test-workflows/snapshots/72-snapshot.json | 852 +++++ test-workflows/snapshots/73-snapshot.json | 965 ++++++ test-workflows/snapshots/78-snapshot.json | 879 +++++ test-workflows/snapshots/81-snapshot.json | 197 ++ test-workflows/snapshots/83-snapshot.json | 933 +++++ test-workflows/snapshots/84-snapshot.json | 425 +++ test-workflows/snapshots/86-snapshot.json | 875 +++++ test-workflows/snapshots/87-snapshot.json | 829 +++++ test-workflows/snapshots/88-snapshot.json | 704 ++++ test-workflows/snapshots/90-snapshot.json | 241 ++ test-workflows/snapshots/91-snapshot.json | 229 ++ test-workflows/snapshots/93-snapshot.json | 184 + test-workflows/snapshots/95-snapshot.json | 101 + test-workflows/snapshots/96-snapshot.json | 126 + test-workflows/snapshots/97-snapshot.json | 551 +++ test-workflows/snapshots/98-snapshot.json | 322 ++ test-workflows/testData/pdfs/04-valid.pdf | Bin 0 -> 80953 bytes .../testData/pdfs/05-versions-space.pdf | Bin 0 -> 186557 bytes test-workflows/workflows/1.json | 183 + test-workflows/workflows/10.json | 325 ++ test-workflows/workflows/101.json | 120 + test-workflows/workflows/102.json | 81 + test-workflows/workflows/103.json | 167 + test-workflows/workflows/104.json | 80 + test-workflows/workflows/105.json | 133 + test-workflows/workflows/106.json | 412 +++ test-workflows/workflows/107.json | 81 + test-workflows/workflows/108.json | 1080 ++++++ test-workflows/workflows/109.json | 310 ++ test-workflows/workflows/11.json | 433 +++ test-workflows/workflows/110.json | 79 + test-workflows/workflows/111.json | 148 + test-workflows/workflows/112.json | 210 ++ test-workflows/workflows/113.json | 102 + test-workflows/workflows/114.json | 618 ++++ test-workflows/workflows/115.json | 202 ++ test-workflows/workflows/116.json | 260 ++ test-workflows/workflows/117.json | 124 + test-workflows/workflows/118.json | 240 ++ test-workflows/workflows/119.json | 199 ++ test-workflows/workflows/120.json | 230 ++ test-workflows/workflows/121.json | 463 +++ test-workflows/workflows/122.json | 514 +++ test-workflows/workflows/123.json | 234 ++ test-workflows/workflows/124.json | 166 + test-workflows/workflows/125.json | 231 ++ test-workflows/workflows/126.json | 97 + test-workflows/workflows/127.json | 95 + test-workflows/workflows/128.json | 124 + test-workflows/workflows/129.json | 835 +++++ test-workflows/workflows/130.json | 883 +++++ test-workflows/workflows/131.json | 65 + test-workflows/workflows/132.json | 91 + test-workflows/workflows/133.json | 61 + test-workflows/workflows/134.json | 262 ++ test-workflows/workflows/135.json | 225 ++ test-workflows/workflows/136.json | 155 + test-workflows/workflows/137.json | 1230 +++++++ test-workflows/workflows/138.json | 1375 ++++++++ test-workflows/workflows/139.json | 367 ++ test-workflows/workflows/140.json | 62 + test-workflows/workflows/141.json | 444 +++ test-workflows/workflows/142.json | 1141 +++++++ test-workflows/workflows/143.json | 122 + test-workflows/workflows/144.json | 138 + test-workflows/workflows/145.json | 84 + test-workflows/workflows/146.json | 232 ++ test-workflows/workflows/147.json | 447 +++ test-workflows/workflows/148.json | 89 + test-workflows/workflows/149.json | 664 ++++ test-workflows/workflows/15.json | 543 +++ test-workflows/workflows/150.json | 215 ++ test-workflows/workflows/151.json | 480 +++ test-workflows/workflows/152.json | 110 + test-workflows/workflows/153.json | 84 + test-workflows/workflows/154.json | 85 + test-workflows/workflows/155.json | 512 +++ test-workflows/workflows/156.json | 61 + test-workflows/workflows/157.json | 495 +++ test-workflows/workflows/158.json | 260 ++ test-workflows/workflows/159.json | 457 +++ test-workflows/workflows/16.json | 93 + test-workflows/workflows/160.json | 293 ++ test-workflows/workflows/161.json | 62 + test-workflows/workflows/162.json | 110 + test-workflows/workflows/163.json | 277 ++ test-workflows/workflows/164.json | 812 +++++ test-workflows/workflows/165.json | 264 ++ test-workflows/workflows/166.json | 520 +++ test-workflows/workflows/167.json | 370 ++ test-workflows/workflows/168.json | 153 + test-workflows/workflows/169.json | 90 + test-workflows/workflows/17.json | 56 + test-workflows/workflows/170.json | 311 ++ test-workflows/workflows/171.json | 202 ++ test-workflows/workflows/172.json | 166 + test-workflows/workflows/173.json | 221 ++ test-workflows/workflows/174.json | 337 ++ test-workflows/workflows/176.json | 1192 +++++++ test-workflows/workflows/177.json | 825 +++++ test-workflows/workflows/179.json | 363 ++ test-workflows/workflows/180.json | 1351 ++++++++ test-workflows/workflows/182.json | 232 ++ test-workflows/workflows/183.json | 617 ++++ test-workflows/workflows/184.json | 930 +++++ test-workflows/workflows/185.json | 966 ++++++ test-workflows/workflows/186.json | 618 ++++ test-workflows/workflows/187.json | 266 ++ test-workflows/workflows/188.json | 86 + test-workflows/workflows/189.json | 534 +++ test-workflows/workflows/19.json | 794 +++++ test-workflows/workflows/190.json | 561 +++ test-workflows/workflows/191.json | 157 + test-workflows/workflows/192.json | 650 ++++ test-workflows/workflows/193.json | 159 + test-workflows/workflows/194.json | 125 + test-workflows/workflows/195.json | 233 ++ test-workflows/workflows/196.json | 1222 +++++++ test-workflows/workflows/197.json | 144 + test-workflows/workflows/198.json | 329 ++ test-workflows/workflows/199.json | 66 + test-workflows/workflows/20.json | 583 ++++ test-workflows/workflows/200.json | 1121 ++++++ test-workflows/workflows/201.json | 296 ++ test-workflows/workflows/202.json | 192 ++ test-workflows/workflows/203.json | 340 ++ test-workflows/workflows/204.json | 459 +++ test-workflows/workflows/205.json | 63 + test-workflows/workflows/206.json | 490 +++ test-workflows/workflows/207.json | 531 +++ test-workflows/workflows/208.json | 69 + test-workflows/workflows/209.json | 212 ++ test-workflows/workflows/21.json | 469 +++ test-workflows/workflows/212.json | 456 +++ test-workflows/workflows/214.json | 54 + test-workflows/workflows/215.json | 392 +++ test-workflows/workflows/216.json | 101 + test-workflows/workflows/217.json | 160 + test-workflows/workflows/218.json | 159 + test-workflows/workflows/219.json | 393 +++ test-workflows/workflows/22.json | 207 ++ test-workflows/workflows/220.json | 348 ++ test-workflows/workflows/221.json | 930 +++++ test-workflows/workflows/222.json | 336 ++ test-workflows/workflows/223.json | 63 + test-workflows/workflows/224.json | 404 +++ test-workflows/workflows/225.json | 546 +++ test-workflows/workflows/226.json | 118 + test-workflows/workflows/227.json | 165 + test-workflows/workflows/229.json | 731 ++++ test-workflows/workflows/230.json | 73 + test-workflows/workflows/231.json | 171 + test-workflows/workflows/233.json | 586 ++++ test-workflows/workflows/234.json | 91 + test-workflows/workflows/235.json | 231 ++ test-workflows/workflows/236.json | 258 ++ test-workflows/workflows/237.json | 91 + test-workflows/workflows/238.json | 95 + test-workflows/workflows/239.json | 116 + test-workflows/workflows/240.json | 237 ++ test-workflows/workflows/241.json | 157 + test-workflows/workflows/242.json | 115 + test-workflows/workflows/243.json | 157 + test-workflows/workflows/244.json | 351 ++ test-workflows/workflows/245.json | 91 + test-workflows/workflows/246.json | 91 + test-workflows/workflows/247.json | 256 ++ test-workflows/workflows/248.json | 521 +++ test-workflows/workflows/249.json | 236 ++ test-workflows/workflows/250.json | 564 +++ test-workflows/workflows/251.json | 116 + test-workflows/workflows/252.json | 899 +++++ test-workflows/workflows/253.json | 1074 ++++++ test-workflows/workflows/254.json | 1131 ++++++ test-workflows/workflows/255.json | 86 + test-workflows/workflows/256.json | 193 ++ test-workflows/workflows/257.json | 262 ++ test-workflows/workflows/258.json | 263 ++ test-workflows/workflows/259.json | 499 +++ test-workflows/workflows/26.json | 729 ++++ test-workflows/workflows/27.json | 892 +++++ test-workflows/workflows/28.json | 619 ++++ test-workflows/workflows/29.json | 470 +++ test-workflows/workflows/30.json | 471 +++ test-workflows/workflows/31.json | 831 +++++ test-workflows/workflows/32.json | 158 + test-workflows/workflows/33.json | 190 ++ test-workflows/workflows/34.json | 253 ++ test-workflows/workflows/35.json | 422 +++ test-workflows/workflows/36.json | 753 ++++ test-workflows/workflows/37.json | 466 +++ test-workflows/workflows/38.json | 90 + test-workflows/workflows/39.json | 938 +++++ test-workflows/workflows/4.json | 158 + test-workflows/workflows/40.json | 598 ++++ test-workflows/workflows/41.json | 231 ++ test-workflows/workflows/42.json | 197 ++ test-workflows/workflows/43.json | 233 ++ test-workflows/workflows/44.json | 389 +++ test-workflows/workflows/45.json | 417 +++ test-workflows/workflows/46.json | 332 ++ test-workflows/workflows/47.json | 268 ++ test-workflows/workflows/48.json | 603 ++++ test-workflows/workflows/49.json | 127 + test-workflows/workflows/5.json | 105 + test-workflows/workflows/50.json | 192 ++ test-workflows/workflows/51.json | 479 +++ test-workflows/workflows/52.json | 653 ++++ test-workflows/workflows/53.json | 410 +++ test-workflows/workflows/54.json | 852 +++++ test-workflows/workflows/55.json | 125 + test-workflows/workflows/56.json | 1145 +++++++ test-workflows/workflows/57.json | 141 + test-workflows/workflows/58.json | 220 ++ test-workflows/workflows/59.json | 381 +++ test-workflows/workflows/6.json | 78 + test-workflows/workflows/60.json | 193 ++ test-workflows/workflows/61.json | 582 ++++ test-workflows/workflows/62.json | 117 + test-workflows/workflows/63.json | 160 + test-workflows/workflows/64.json | 93 + test-workflows/workflows/65.json | 122 + test-workflows/workflows/66.json | 162 + test-workflows/workflows/67.json | 791 +++++ test-workflows/workflows/68.json | 129 + test-workflows/workflows/69.json | 255 ++ test-workflows/workflows/70.json | 228 ++ test-workflows/workflows/71.json | 235 ++ test-workflows/workflows/72.json | 589 ++++ test-workflows/workflows/73.json | 857 +++++ test-workflows/workflows/74.json | 160 + test-workflows/workflows/75.json | 574 ++++ test-workflows/workflows/76.json | 836 +++++ test-workflows/workflows/77.json | 446 +++ test-workflows/workflows/78.json | 444 +++ test-workflows/workflows/79.json | 219 ++ test-workflows/workflows/80.json | 449 +++ test-workflows/workflows/81.json | 162 + test-workflows/workflows/82.json | 563 +++ test-workflows/workflows/83.json | 79 + test-workflows/workflows/84.json | 407 +++ test-workflows/workflows/85.json | 119 + test-workflows/workflows/86.json | 610 ++++ test-workflows/workflows/87.json | 667 ++++ test-workflows/workflows/88.json | 600 ++++ test-workflows/workflows/89.json | 438 +++ test-workflows/workflows/90.json | 220 ++ test-workflows/workflows/91.json | 200 ++ test-workflows/workflows/92.json | 864 +++++ test-workflows/workflows/93.json | 130 + test-workflows/workflows/94.json | 128 + test-workflows/workflows/95.json | 87 + test-workflows/workflows/96.json | 86 + test-workflows/workflows/97.json | 500 +++ test-workflows/workflows/98.json | 165 + 408 files changed, 161037 insertions(+), 8 deletions(-) create mode 100644 .github/actions/setup-and-build/action.yml create mode 100644 .github/workflows/test-workflows-callable.yml create mode 100644 .github/workflows/test-workflows-nightly.yml create mode 100644 .github/workflows/test-workflows-pr-approved.yml create mode 100644 .github/workflows/test-workflows-pr-comment.yml create mode 100644 test-workflows/README.md create mode 100644 test-workflows/credentials.json create mode 100644 test-workflows/skipList.json create mode 100644 test-workflows/snapshots/1-snapshot.json create mode 100644 test-workflows/snapshots/10-snapshot.json create mode 100644 test-workflows/snapshots/101-snapshot.json create mode 100644 test-workflows/snapshots/103-snapshot.json create mode 100644 test-workflows/snapshots/104-snapshot.json create mode 100644 test-workflows/snapshots/105-snapshot.json create mode 100644 test-workflows/snapshots/107-snapshot.json create mode 100644 test-workflows/snapshots/108-snapshot.json create mode 100644 test-workflows/snapshots/109-snapshot.json create mode 100644 test-workflows/snapshots/11-snapshot.json create mode 100644 test-workflows/snapshots/110-snapshot.json create mode 100644 test-workflows/snapshots/111-snapshot.json create mode 100644 test-workflows/snapshots/112-snapshot.json create mode 100644 test-workflows/snapshots/113-snapshot.json create mode 100644 test-workflows/snapshots/114-snapshot.json create mode 100644 test-workflows/snapshots/115-snapshot.json create mode 100644 test-workflows/snapshots/116-snapshot.json create mode 100644 test-workflows/snapshots/117-snapshot.json create mode 100644 test-workflows/snapshots/118-snapshot.json create mode 100644 test-workflows/snapshots/119-snapshot.json create mode 100644 test-workflows/snapshots/120-snapshot.json create mode 100644 test-workflows/snapshots/124-snapshot.json create mode 100644 test-workflows/snapshots/125-snapshot.json create mode 100644 test-workflows/snapshots/128-snapshot.json create mode 100644 test-workflows/snapshots/130-snapshot.json create mode 100644 test-workflows/snapshots/131-snapshot.json create mode 100644 test-workflows/snapshots/132-snapshot.json create mode 100644 test-workflows/snapshots/133-snapshot.json create mode 100644 test-workflows/snapshots/139-snapshot.json create mode 100644 test-workflows/snapshots/140-snapshot.json create mode 100644 test-workflows/snapshots/143-snapshot.json create mode 100644 test-workflows/snapshots/145-snapshot.json create mode 100644 test-workflows/snapshots/146-snapshot.json create mode 100644 test-workflows/snapshots/147-snapshot.json create mode 100644 test-workflows/snapshots/148-snapshot.json create mode 100644 test-workflows/snapshots/15-snapshot.json create mode 100644 test-workflows/snapshots/150-snapshot.json create mode 100644 test-workflows/snapshots/151-snapshot.json create mode 100644 test-workflows/snapshots/152-snapshot.json create mode 100644 test-workflows/snapshots/153-snapshot.json create mode 100644 test-workflows/snapshots/154-snapshot.json create mode 100644 test-workflows/snapshots/155-snapshot.json create mode 100644 test-workflows/snapshots/156-snapshot.json create mode 100644 test-workflows/snapshots/16-snapshot.json create mode 100644 test-workflows/snapshots/161-snapshot.json create mode 100644 test-workflows/snapshots/162-snapshot.json create mode 100644 test-workflows/snapshots/163-snapshot.json create mode 100644 test-workflows/snapshots/164-snapshot.json create mode 100644 test-workflows/snapshots/166-snapshot.json create mode 100644 test-workflows/snapshots/169-snapshot.json create mode 100644 test-workflows/snapshots/17-snapshot.json create mode 100644 test-workflows/snapshots/172-snapshot.json create mode 100644 test-workflows/snapshots/174-snapshot.json create mode 100644 test-workflows/snapshots/177-snapshot.json create mode 100644 test-workflows/snapshots/182-snapshot.json create mode 100644 test-workflows/snapshots/184-snapshot.json create mode 100644 test-workflows/snapshots/185-snapshot.json create mode 100644 test-workflows/snapshots/186-snapshot.json create mode 100644 test-workflows/snapshots/187-snapshot.json create mode 100644 test-workflows/snapshots/190-snapshot.json create mode 100644 test-workflows/snapshots/191-snapshot.json create mode 100644 test-workflows/snapshots/192-snapshot.json create mode 100644 test-workflows/snapshots/194-snapshot.json create mode 100644 test-workflows/snapshots/195-snapshot.json create mode 100644 test-workflows/snapshots/197-snapshot.json create mode 100644 test-workflows/snapshots/198-snapshot.json create mode 100644 test-workflows/snapshots/199-snapshot.json create mode 100644 test-workflows/snapshots/20-snapshot.json create mode 100644 test-workflows/snapshots/202-snapshot.json create mode 100644 test-workflows/snapshots/203-snapshot.json create mode 100644 test-workflows/snapshots/205-snapshot.json create mode 100644 test-workflows/snapshots/208-snapshot.json create mode 100644 test-workflows/snapshots/209-snapshot.json create mode 100644 test-workflows/snapshots/21-snapshot.json create mode 100644 test-workflows/snapshots/212-snapshot.json create mode 100644 test-workflows/snapshots/216-snapshot.json create mode 100644 test-workflows/snapshots/223-snapshot.json create mode 100644 test-workflows/snapshots/229-snapshot.json create mode 100644 test-workflows/snapshots/230-snapshot.json create mode 100644 test-workflows/snapshots/231-snapshot.json create mode 100644 test-workflows/snapshots/232-snapshot.json create mode 100644 test-workflows/snapshots/233-snapshot.json create mode 100644 test-workflows/snapshots/234-snapshot.json create mode 100644 test-workflows/snapshots/235-snapshot.json create mode 100644 test-workflows/snapshots/236-snapshot.json create mode 100644 test-workflows/snapshots/237-snapshot.json create mode 100644 test-workflows/snapshots/238-snapshot.json create mode 100644 test-workflows/snapshots/239-snapshot.json create mode 100644 test-workflows/snapshots/240-snapshot.json create mode 100644 test-workflows/snapshots/241-snapshot.json create mode 100644 test-workflows/snapshots/242-snapshot.json create mode 100644 test-workflows/snapshots/243-snapshot.json create mode 100644 test-workflows/snapshots/244-snapshot.json create mode 100644 test-workflows/snapshots/245-snapshot.json create mode 100644 test-workflows/snapshots/246-snapshot.json create mode 100644 test-workflows/snapshots/247-snapshot.json create mode 100644 test-workflows/snapshots/248-snapshot.json create mode 100644 test-workflows/snapshots/249-snapshot.json create mode 100644 test-workflows/snapshots/250-snapshot.json create mode 100644 test-workflows/snapshots/251-snapshot.json create mode 100644 test-workflows/snapshots/252-snapshot.json create mode 100644 test-workflows/snapshots/253-snapshot.json create mode 100644 test-workflows/snapshots/254-snapshot.json create mode 100644 test-workflows/snapshots/255-snapshot.json create mode 100644 test-workflows/snapshots/256-snapshot.json create mode 100644 test-workflows/snapshots/257-snapshot.json create mode 100644 test-workflows/snapshots/258-snapshot.json create mode 100644 test-workflows/snapshots/259-snapshot.json create mode 100644 test-workflows/snapshots/26-snapshot.json create mode 100644 test-workflows/snapshots/29-snapshot.json create mode 100644 test-workflows/snapshots/32-snapshot.json create mode 100644 test-workflows/snapshots/33-snapshot.json create mode 100644 test-workflows/snapshots/34-snapshot.json create mode 100644 test-workflows/snapshots/35-snapshot.json create mode 100644 test-workflows/snapshots/36-snapshot.json create mode 100644 test-workflows/snapshots/37-snapshot.json create mode 100644 test-workflows/snapshots/38-snapshot.json create mode 100644 test-workflows/snapshots/40-snapshot.json create mode 100644 test-workflows/snapshots/41-snapshot.json create mode 100644 test-workflows/snapshots/42-snapshot.json create mode 100644 test-workflows/snapshots/43-snapshot.json create mode 100644 test-workflows/snapshots/44-snapshot.json create mode 100644 test-workflows/snapshots/45-snapshot.json create mode 100644 test-workflows/snapshots/46-snapshot.json create mode 100644 test-workflows/snapshots/48-snapshot.json create mode 100644 test-workflows/snapshots/49-snapshot.json create mode 100644 test-workflows/snapshots/5-snapshot.json create mode 100644 test-workflows/snapshots/51-snapshot.json create mode 100644 test-workflows/snapshots/52-snapshot.json create mode 100644 test-workflows/snapshots/53-snapshot.json create mode 100644 test-workflows/snapshots/55-snapshot.json create mode 100644 test-workflows/snapshots/58-snapshot.json create mode 100644 test-workflows/snapshots/6-snapshot.json create mode 100644 test-workflows/snapshots/60-snapshot.json create mode 100644 test-workflows/snapshots/61-snapshot.json create mode 100644 test-workflows/snapshots/62-snapshot.json create mode 100644 test-workflows/snapshots/63-snapshot.json create mode 100644 test-workflows/snapshots/66-snapshot.json create mode 100644 test-workflows/snapshots/67-snapshot.json create mode 100644 test-workflows/snapshots/70-snapshot.json create mode 100644 test-workflows/snapshots/71-snapshot.json create mode 100644 test-workflows/snapshots/72-snapshot.json create mode 100644 test-workflows/snapshots/73-snapshot.json create mode 100644 test-workflows/snapshots/78-snapshot.json create mode 100644 test-workflows/snapshots/81-snapshot.json create mode 100644 test-workflows/snapshots/83-snapshot.json create mode 100644 test-workflows/snapshots/84-snapshot.json create mode 100644 test-workflows/snapshots/86-snapshot.json create mode 100644 test-workflows/snapshots/87-snapshot.json create mode 100644 test-workflows/snapshots/88-snapshot.json create mode 100644 test-workflows/snapshots/90-snapshot.json create mode 100644 test-workflows/snapshots/91-snapshot.json create mode 100644 test-workflows/snapshots/93-snapshot.json create mode 100644 test-workflows/snapshots/95-snapshot.json create mode 100644 test-workflows/snapshots/96-snapshot.json create mode 100644 test-workflows/snapshots/97-snapshot.json create mode 100644 test-workflows/snapshots/98-snapshot.json create mode 100644 test-workflows/testData/pdfs/04-valid.pdf create mode 100644 test-workflows/testData/pdfs/05-versions-space.pdf create mode 100644 test-workflows/workflows/1.json create mode 100644 test-workflows/workflows/10.json create mode 100644 test-workflows/workflows/101.json create mode 100644 test-workflows/workflows/102.json create mode 100644 test-workflows/workflows/103.json create mode 100644 test-workflows/workflows/104.json create mode 100644 test-workflows/workflows/105.json create mode 100644 test-workflows/workflows/106.json create mode 100644 test-workflows/workflows/107.json create mode 100644 test-workflows/workflows/108.json create mode 100644 test-workflows/workflows/109.json create mode 100644 test-workflows/workflows/11.json create mode 100644 test-workflows/workflows/110.json create mode 100644 test-workflows/workflows/111.json create mode 100644 test-workflows/workflows/112.json create mode 100644 test-workflows/workflows/113.json create mode 100644 test-workflows/workflows/114.json create mode 100644 test-workflows/workflows/115.json create mode 100644 test-workflows/workflows/116.json create mode 100644 test-workflows/workflows/117.json create mode 100644 test-workflows/workflows/118.json create mode 100644 test-workflows/workflows/119.json create mode 100644 test-workflows/workflows/120.json create mode 100644 test-workflows/workflows/121.json create mode 100644 test-workflows/workflows/122.json create mode 100644 test-workflows/workflows/123.json create mode 100644 test-workflows/workflows/124.json create mode 100644 test-workflows/workflows/125.json create mode 100644 test-workflows/workflows/126.json create mode 100644 test-workflows/workflows/127.json create mode 100644 test-workflows/workflows/128.json create mode 100644 test-workflows/workflows/129.json create mode 100644 test-workflows/workflows/130.json create mode 100644 test-workflows/workflows/131.json create mode 100644 test-workflows/workflows/132.json create mode 100644 test-workflows/workflows/133.json create mode 100644 test-workflows/workflows/134.json create mode 100644 test-workflows/workflows/135.json create mode 100644 test-workflows/workflows/136.json create mode 100644 test-workflows/workflows/137.json create mode 100644 test-workflows/workflows/138.json create mode 100644 test-workflows/workflows/139.json create mode 100644 test-workflows/workflows/140.json create mode 100644 test-workflows/workflows/141.json create mode 100644 test-workflows/workflows/142.json create mode 100644 test-workflows/workflows/143.json create mode 100644 test-workflows/workflows/144.json create mode 100644 test-workflows/workflows/145.json create mode 100644 test-workflows/workflows/146.json create mode 100644 test-workflows/workflows/147.json create mode 100644 test-workflows/workflows/148.json create mode 100644 test-workflows/workflows/149.json create mode 100644 test-workflows/workflows/15.json create mode 100644 test-workflows/workflows/150.json create mode 100644 test-workflows/workflows/151.json create mode 100644 test-workflows/workflows/152.json create mode 100644 test-workflows/workflows/153.json create mode 100644 test-workflows/workflows/154.json create mode 100644 test-workflows/workflows/155.json create mode 100644 test-workflows/workflows/156.json create mode 100644 test-workflows/workflows/157.json create mode 100644 test-workflows/workflows/158.json create mode 100644 test-workflows/workflows/159.json create mode 100644 test-workflows/workflows/16.json create mode 100644 test-workflows/workflows/160.json create mode 100644 test-workflows/workflows/161.json create mode 100644 test-workflows/workflows/162.json create mode 100644 test-workflows/workflows/163.json create mode 100644 test-workflows/workflows/164.json create mode 100644 test-workflows/workflows/165.json create mode 100644 test-workflows/workflows/166.json create mode 100644 test-workflows/workflows/167.json create mode 100644 test-workflows/workflows/168.json create mode 100644 test-workflows/workflows/169.json create mode 100644 test-workflows/workflows/17.json create mode 100644 test-workflows/workflows/170.json create mode 100644 test-workflows/workflows/171.json create mode 100644 test-workflows/workflows/172.json create mode 100644 test-workflows/workflows/173.json create mode 100644 test-workflows/workflows/174.json create mode 100644 test-workflows/workflows/176.json create mode 100644 test-workflows/workflows/177.json create mode 100644 test-workflows/workflows/179.json create mode 100644 test-workflows/workflows/180.json create mode 100644 test-workflows/workflows/182.json create mode 100644 test-workflows/workflows/183.json create mode 100644 test-workflows/workflows/184.json create mode 100644 test-workflows/workflows/185.json create mode 100644 test-workflows/workflows/186.json create mode 100644 test-workflows/workflows/187.json create mode 100644 test-workflows/workflows/188.json create mode 100644 test-workflows/workflows/189.json create mode 100644 test-workflows/workflows/19.json create mode 100644 test-workflows/workflows/190.json create mode 100644 test-workflows/workflows/191.json create mode 100644 test-workflows/workflows/192.json create mode 100644 test-workflows/workflows/193.json create mode 100644 test-workflows/workflows/194.json create mode 100644 test-workflows/workflows/195.json create mode 100644 test-workflows/workflows/196.json create mode 100644 test-workflows/workflows/197.json create mode 100644 test-workflows/workflows/198.json create mode 100644 test-workflows/workflows/199.json create mode 100644 test-workflows/workflows/20.json create mode 100644 test-workflows/workflows/200.json create mode 100644 test-workflows/workflows/201.json create mode 100644 test-workflows/workflows/202.json create mode 100644 test-workflows/workflows/203.json create mode 100644 test-workflows/workflows/204.json create mode 100644 test-workflows/workflows/205.json create mode 100644 test-workflows/workflows/206.json create mode 100644 test-workflows/workflows/207.json create mode 100644 test-workflows/workflows/208.json create mode 100644 test-workflows/workflows/209.json create mode 100644 test-workflows/workflows/21.json create mode 100644 test-workflows/workflows/212.json create mode 100644 test-workflows/workflows/214.json create mode 100644 test-workflows/workflows/215.json create mode 100644 test-workflows/workflows/216.json create mode 100644 test-workflows/workflows/217.json create mode 100644 test-workflows/workflows/218.json create mode 100644 test-workflows/workflows/219.json create mode 100644 test-workflows/workflows/22.json create mode 100644 test-workflows/workflows/220.json create mode 100644 test-workflows/workflows/221.json create mode 100644 test-workflows/workflows/222.json create mode 100644 test-workflows/workflows/223.json create mode 100644 test-workflows/workflows/224.json create mode 100644 test-workflows/workflows/225.json create mode 100644 test-workflows/workflows/226.json create mode 100644 test-workflows/workflows/227.json create mode 100644 test-workflows/workflows/229.json create mode 100644 test-workflows/workflows/230.json create mode 100644 test-workflows/workflows/231.json create mode 100644 test-workflows/workflows/233.json create mode 100644 test-workflows/workflows/234.json create mode 100644 test-workflows/workflows/235.json create mode 100644 test-workflows/workflows/236.json create mode 100644 test-workflows/workflows/237.json create mode 100644 test-workflows/workflows/238.json create mode 100644 test-workflows/workflows/239.json create mode 100644 test-workflows/workflows/240.json create mode 100644 test-workflows/workflows/241.json create mode 100644 test-workflows/workflows/242.json create mode 100644 test-workflows/workflows/243.json create mode 100644 test-workflows/workflows/244.json create mode 100644 test-workflows/workflows/245.json create mode 100644 test-workflows/workflows/246.json create mode 100644 test-workflows/workflows/247.json create mode 100644 test-workflows/workflows/248.json create mode 100644 test-workflows/workflows/249.json create mode 100644 test-workflows/workflows/250.json create mode 100644 test-workflows/workflows/251.json create mode 100644 test-workflows/workflows/252.json create mode 100644 test-workflows/workflows/253.json create mode 100644 test-workflows/workflows/254.json create mode 100644 test-workflows/workflows/255.json create mode 100644 test-workflows/workflows/256.json create mode 100644 test-workflows/workflows/257.json create mode 100644 test-workflows/workflows/258.json create mode 100644 test-workflows/workflows/259.json create mode 100644 test-workflows/workflows/26.json create mode 100644 test-workflows/workflows/27.json create mode 100644 test-workflows/workflows/28.json create mode 100644 test-workflows/workflows/29.json create mode 100644 test-workflows/workflows/30.json create mode 100644 test-workflows/workflows/31.json create mode 100644 test-workflows/workflows/32.json create mode 100644 test-workflows/workflows/33.json create mode 100644 test-workflows/workflows/34.json create mode 100644 test-workflows/workflows/35.json create mode 100644 test-workflows/workflows/36.json create mode 100644 test-workflows/workflows/37.json create mode 100644 test-workflows/workflows/38.json create mode 100644 test-workflows/workflows/39.json create mode 100644 test-workflows/workflows/4.json create mode 100644 test-workflows/workflows/40.json create mode 100644 test-workflows/workflows/41.json create mode 100644 test-workflows/workflows/42.json create mode 100644 test-workflows/workflows/43.json create mode 100644 test-workflows/workflows/44.json create mode 100644 test-workflows/workflows/45.json create mode 100644 test-workflows/workflows/46.json create mode 100644 test-workflows/workflows/47.json create mode 100644 test-workflows/workflows/48.json create mode 100644 test-workflows/workflows/49.json create mode 100644 test-workflows/workflows/5.json create mode 100644 test-workflows/workflows/50.json create mode 100644 test-workflows/workflows/51.json create mode 100644 test-workflows/workflows/52.json create mode 100644 test-workflows/workflows/53.json create mode 100644 test-workflows/workflows/54.json create mode 100644 test-workflows/workflows/55.json create mode 100644 test-workflows/workflows/56.json create mode 100644 test-workflows/workflows/57.json create mode 100644 test-workflows/workflows/58.json create mode 100644 test-workflows/workflows/59.json create mode 100644 test-workflows/workflows/6.json create mode 100644 test-workflows/workflows/60.json create mode 100644 test-workflows/workflows/61.json create mode 100644 test-workflows/workflows/62.json create mode 100644 test-workflows/workflows/63.json create mode 100644 test-workflows/workflows/64.json create mode 100644 test-workflows/workflows/65.json create mode 100644 test-workflows/workflows/66.json create mode 100644 test-workflows/workflows/67.json create mode 100644 test-workflows/workflows/68.json create mode 100644 test-workflows/workflows/69.json create mode 100644 test-workflows/workflows/70.json create mode 100644 test-workflows/workflows/71.json create mode 100644 test-workflows/workflows/72.json create mode 100644 test-workflows/workflows/73.json create mode 100644 test-workflows/workflows/74.json create mode 100644 test-workflows/workflows/75.json create mode 100644 test-workflows/workflows/76.json create mode 100644 test-workflows/workflows/77.json create mode 100644 test-workflows/workflows/78.json create mode 100644 test-workflows/workflows/79.json create mode 100644 test-workflows/workflows/80.json create mode 100644 test-workflows/workflows/81.json create mode 100644 test-workflows/workflows/82.json create mode 100644 test-workflows/workflows/83.json create mode 100644 test-workflows/workflows/84.json create mode 100644 test-workflows/workflows/85.json create mode 100644 test-workflows/workflows/86.json create mode 100644 test-workflows/workflows/87.json create mode 100644 test-workflows/workflows/88.json create mode 100644 test-workflows/workflows/89.json create mode 100644 test-workflows/workflows/90.json create mode 100644 test-workflows/workflows/91.json create mode 100644 test-workflows/workflows/92.json create mode 100644 test-workflows/workflows/93.json create mode 100644 test-workflows/workflows/94.json create mode 100644 test-workflows/workflows/95.json create mode 100644 test-workflows/workflows/96.json create mode 100644 test-workflows/workflows/97.json create mode 100644 test-workflows/workflows/98.json diff --git a/.github/actions/setup-and-build/action.yml b/.github/actions/setup-and-build/action.yml new file mode 100644 index 0000000000..b866a89947 --- /dev/null +++ b/.github/actions/setup-and-build/action.yml @@ -0,0 +1,49 @@ +name: 'Setup Environment and Build Project' +description: 'Sets up Node.js with pnpm, installs dependencies, enables Turborepo caching, and builds the project.' + +inputs: + node-version: + description: 'Node.js version to use.' + required: false + default: '22.x' + enable-caching: + description: Flag to enable/disable all caching (pnpm store, Turborepo, and dist folders).' + required: false + default: 'true' + cache-suffix: + description: 'Suffix to add to the dist folder cache key.' + required: false + default: 'build' + +runs: + using: "composite" + steps: + - name: Setup pnpm CLI + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + with: + run_install: false + + - name: Setup Node.js + uses: useblacksmith/setup-node@v5 + with: + node-version: ${{ inputs.node-version }} + cache: pnpm + + - name: Install dependencies + run: pnpm install --frozen-lockfile + shell: bash + + - name: Configure Turborepo Cache + if: inputs.enable-caching == 'true' + uses: useblacksmith/caching-for-turbo@v1 + + - name: Build packages + run: pnpm build + shell: bash + + - name: Cache 'dist' folders + if: inputs.enable-caching == 'true' + uses: useblacksmith/cache@v5 + with: + path: ./packages/**/dist + key: ${{ github.sha }}:${{ inputs.cache-suffix }} \ No newline at end of file diff --git a/.github/workflows/test-workflows-callable.yml b/.github/workflows/test-workflows-callable.yml new file mode 100644 index 0000000000..82fb079ee9 --- /dev/null +++ b/.github/workflows/test-workflows-callable.yml @@ -0,0 +1,217 @@ +name: Callable Test Workflows + +on: + workflow_call: + inputs: + git_ref: + description: 'The Git ref (branch, tag, or SHA) to checkout and test.' + required: true + type: string + send_webhook_report: + description: 'Set to true to send test results to the webhook.' + required: false + type: boolean + default: false + pr_number: + description: 'The PR number, if applicable (for context in webhook).' + required: false + type: string + default: '' + secrets: + N8N_ENCRYPTION_KEY: + description: 'Encryption key for n8n operations.' + required: true + CI_SENTRY_DSN: + description: 'Sentry DSN for CI test runs.' + required: false + RESULTS_WEBHOOK_URL: + description: 'Webhook URL to send test results to (if enabled).' + required: false + +jobs: + build_and_test: + name: Install, Build, and Test Workflows + runs-on: blacksmith-2vcpu-ubuntu-2204 + timeout-minutes: 10 + + steps: + - name: Checkout repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + ref: ${{ inputs.git_ref }} + + - name: Setup Environment and Build Project + uses: ./.github/actions/setup-and-build + with: + node-version: '22.x' + cache-suffix: 'workflow-test' + + - name: Install OS dependencies + run: | + sudo apt update -y + echo 'tzdata tzdata/Areas select Europe' | sudo debconf-set-selections + echo 'tzdata tzdata/Zones/Europe select Paris' | sudo debconf-set-selections + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends graphicsmagick + sudo apt-get clean + sudo rm -rf /var/lib/apt/lists/* + + - name: Import credentials + run: ./packages/cli/bin/n8n import:credentials --input=test-workflows/credentials.json + env: + N8N_ENCRYPTION_KEY: ${{ secrets.N8N_ENCRYPTION_KEY }} + + - name: Import workflows + run: ./packages/cli/bin/n8n import:workflow --separate --input=test-workflows/workflows + env: + N8N_ENCRYPTION_KEY: ${{ secrets.N8N_ENCRYPTION_KEY }} + + - name: Copy static assets + run: | + mkdir -p /tmp/testData/pdfs + cp assets/n8n-logo.png /tmp/n8n-logo.png + cp assets/n8n-screenshot.png /tmp/n8n-screenshot.png + cp test-workflows/testData/pdfs/*.pdf /tmp/testData/pdfs/ + + - name: Run tests + id: tests + run: ./packages/cli/bin/n8n executeBatch --shallow --skipList=test-workflows/skipList.json --githubWorkflow --shortOutput --output=test-results.json --concurrency=16 --compare=test-workflows/snapshots + continue-on-error: true + env: + N8N_ENCRYPTION_KEY: ${{ secrets.N8N_ENCRYPTION_KEY }} + SKIP_STATISTICS_EVENTS: "true" + DB_SQLITE_POOL_SIZE: "4" + N8N_SENTRY_DSN: ${{ secrets.CI_SENTRY_DSN }} + + - name: Report test outcome + if: always() + run: | + echo "Test step outcome was: ${{ steps.tests.outcome }}" + if [[ "${{ steps.tests.outcome }}" == "failure" ]]; then + echo "Workflow tests failed but the workflow will continue." + elif [[ "${{ steps.tests.outcome }}" == "success" ]]; then + echo "Workflow tests passed." + else + echo "Workflow tests outcome: ${{ steps.tests.outcome }}" + fi + + - name: Prepare and Send Test Results to Webhook + if: inputs.send_webhook_report == true + shell: bash + env: + WEBHOOK_URL: ${{ secrets.RESULTS_WEBHOOK_URL }} + TEST_RESULTS_FILE: ./test-results.json + GH_REPOSITORY: ${{ github.repository }} + GH_RUN_ID: ${{ github.run_id }} + GH_RUN_ATTEMPT: ${{ github.run_attempt }} + GH_REF_TESTED: ${{ inputs.git_ref }} + GH_EVENT_NAME: ${{ github.event_name }} + GH_PR_NUMBER_INPUT: ${{ inputs.pr_number }} + GH_WORKFLOW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + GH_ACTOR: ${{ github.actor }} + run: | + echo "Attempting to send test results to webhook..." + echo "Test results file expected at: $TEST_RESULTS_FILE" + + if [ ! -f "$TEST_RESULTS_FILE" ]; then + echo "::warning::Test results file ($TEST_RESULTS_FILE) not found. Skipping webhook." + exit 0 + fi + + if ! command -v jq &> /dev/null; then + echo "jq not found. Installing jq..." + sudo apt-get update -qq && sudo apt-get install -y -qq jq + if ! command -v jq &> /dev/null; then + echo "::error::Failed to install jq. Cannot process JSON." + exit 1 + fi + fi + + pr_number_to_send="$GH_PR_NUMBER_INPUT" + + echo "Preparing JSON payload..." + if [ ! -s "$TEST_RESULTS_FILE" ]; then + echo "::warning::Test results file ($TEST_RESULTS_FILE) is empty. Sending only GitHub context." + enriched_payload=$(jq -n \ + --arg repository "$GH_REPOSITORY" \ + --arg run_id "$GH_RUN_ID" \ + --arg run_attempt "$GH_RUN_ATTEMPT" \ + --arg ref_tested "$GH_REF_TESTED" \ + --arg event_name "$GH_EVENT_NAME" \ + --arg pr_num "$pr_number_to_send" \ + --arg workflow_run_url "$GH_WORKFLOW_RUN_URL" \ + --arg actor "$GH_ACTOR" \ + '{ + githubWorkflowContext: { + repository: $repository, + runId: $run_id, + runAttempt: $run_attempt, + gitRefTested: $ref_tested, + triggeringEventName: $event_name, + prNumber: (if $pr_num == "" then null else $pr_num | tonumber? // $pr_num end), + workflowRunUrl: $workflow_run_url, + triggeredBy: $actor + } + }') + else + enriched_payload=$(jq \ + --arg repository "$GH_REPOSITORY" \ + --arg run_id "$GH_RUN_ID" \ + --arg run_attempt "$GH_RUN_ATTEMPT" \ + --arg ref_tested "$GH_REF_TESTED" \ + --arg event_name "$GH_EVENT_NAME" \ + --arg pr_num "$pr_number_to_send" \ + --arg workflow_run_url "$GH_WORKFLOW_RUN_URL" \ + --arg actor "$GH_ACTOR" \ + '. + { + githubWorkflowContext: { + repository: $repository, + runId: $run_id, + runAttempt: $run_attempt, + gitRefTested: $ref_tested, + triggeringEventName: $event_name, + prNumber: (if $pr_num == "" then null else $pr_num | tonumber? // $pr_num end), + workflowRunUrl: $workflow_run_url, + triggeredBy: $actor + } + }' "$TEST_RESULTS_FILE") + fi + + jq_exit_code=$? + if [ $jq_exit_code -ne 0 ] || [ -z "$enriched_payload" ]; then + echo "::error::Failed to process JSON with jq (exit code: $jq_exit_code). Input file: $TEST_RESULTS_FILE" + if [ -s "$TEST_RESULTS_FILE" ]; then + echo "Contents of $TEST_RESULTS_FILE that may have caused an error:" + head -c 1000 "$TEST_RESULTS_FILE" # Print first 1000 chars + echo "" # Newline after head + elif [ -f "$TEST_RESULTS_FILE" ]; then + echo "$TEST_RESULTS_FILE exists but is empty." + fi + exit 1 + fi + + echo "Enriched payload to send (first 500 chars):" + echo "$enriched_payload" | head -c 500 + echo "" + + echo "Sending data to webhook: $WEBHOOK_URL" + http_response_code=$(curl -s -w "%{http_code}" \ + -X POST \ + -H "Content-Type: application/json" \ + -H "X-GitHub-Event: $GH_EVENT_NAME" \ + -H "X-GitHub-Run-Id: $GH_RUN_ID" \ + --data "$enriched_payload" \ + "$WEBHOOK_URL" \ + -o curl_response_body.txt 2>curl_stderr.txt) + + curl_stderr_content=$(cat curl_stderr.txt) + if [ -n "$curl_stderr_content" ]; then + echo "::warning::curl stderr: $curl_stderr_content" + fi + echo "Webhook response code: $http_response_code" + echo "Webhook response body:" + cat curl_response_body.txt + if [[ "$http_response_code" -ge 200 && "$http_response_code" -lt 300 ]]; then + echo "Successfully sent data to webhook." + else + echo "::error::Webhook call failed with status code $http_response_code." + fi \ No newline at end of file diff --git a/.github/workflows/test-workflows-nightly.yml b/.github/workflows/test-workflows-nightly.yml new file mode 100644 index 0000000000..8350920ea5 --- /dev/null +++ b/.github/workflows/test-workflows-nightly.yml @@ -0,0 +1,45 @@ +name: Test Workflows Nightly and Manual + +on: + schedule: + - cron: '0 2 * * *' + workflow_dispatch: + inputs: + git_ref_to_test: + description: 'The Git ref (branch, tag, or SHA) to run tests against.' + required: true + type: string + default: 'master' + +permissions: + contents: read + +jobs: + run_tests: + name: Run Workflow Tests + runs-on: blacksmith-2vcpu-ubuntu-2204 + timeout-minutes: 10 + + steps: + - name: Determine Git Ref for Testing + id: determine_ref + shell: bash + run: | + if [[ "${{ github.event_name }}" == "schedule" ]]; then + echo "EFFECTIVE_GIT_REF=master" >> $GITHUB_OUTPUT + echo "Scheduled run: Using 'master' branch." + elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo "EFFECTIVE_GIT_REF=${{ github.event.inputs.git_ref_to_test }}" >> $GITHUB_OUTPUT + echo "Manual dispatch: Using ref '${{ github.event.inputs.git_ref_to_test }}'." + else + echo "EFFECTIVE_GIT_REF=master" >> $GITHUB_OUTPUT + echo "Warning: Unknown event type '${{ github.event_name }}', defaulting to 'master'." + fi + + - name: Call Reusable Test Workflow + uses: ./.github/workflows/run-test-workflows.yml + with: + git_ref: ${{ steps.determine_ref.outputs.EFFECTIVE_GIT_REF }} + send_webhook_report: false + pr_number: '' + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/test-workflows-pr-approved.yml b/.github/workflows/test-workflows-pr-approved.yml new file mode 100644 index 0000000000..1b0a71527a --- /dev/null +++ b/.github/workflows/test-workflows-pr-approved.yml @@ -0,0 +1,25 @@ +name: Test Workflows on PR Approval + +on: + pull_request_review: + types: [submitted] + +permissions: + contents: read + pull-requests: read + +jobs: + run_tests_after_approval: + name: Run Tests on Approved PR + if: github.event.review.state == 'approved' + runs-on: blacksmith-2vcpu-ubuntu-2204 + timeout-minutes: 10 + + steps: + - name: Call Reusable Test Workflow on Approved PR + uses: ./.github/workflows/test-workflows-callable.yml + with: + git_ref: ${{ github.event.pull_request.head.sha }} + send_webhook_report: true + pr_number: ${{ github.event.pull_request.number }} + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/test-workflows-pr-comment.yml b/.github/workflows/test-workflows-pr-comment.yml new file mode 100644 index 0000000000..cf9fec9c32 --- /dev/null +++ b/.github/workflows/test-workflows-pr-comment.yml @@ -0,0 +1,78 @@ +name: Test Workflows on PR Comment + +on: + issue_comment: + types: [created] + +permissions: + pull-requests: read + contents: read + +jobs: + trigger_tests_on_comment: + name: Handle /test-workflows command + if: github.event.issue.pull_request && startsWith(github.event.comment.body, '/test-workflows') + runs-on: ubuntu-latest + + steps: + - name: Check User Permission and Get PR Details + id: pr_check + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + result-encoding: json + script: | + const commenter = context.actor; + const issue = context.issue; + let hasPermission = false; + let prDetails = null; + + try { + const { data: permissions } = await github.rest.repos.getCollaboratorPermissionLevel({ + owner: issue.owner, + repo: issue.repo, + username: commenter + }); + + const allowedPermissions = ['admin', 'write', 'maintain']; + if (allowedPermissions.includes(permissions.permission)) { + console.log(`User @${commenter} has '${permissions.permission}' permission.`); + hasPermission = true; + } else { + core.setFailed(`User @${commenter} does not have sufficient permissions (admin/write/maintain) to trigger workflows.`); + } + } catch (error) { + core.setFailed(`Could not verify permissions for @${commenter}: ${error.message}`); + } + + if (!hasPermission) { + return { permission_granted: false }; + } + + const prNumber = issue.number; + try { + const { data: pr } = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: prNumber, + }); + prDetails = { + head_sha: pr.head.sha, + pr_number_string: prNumber.toString() + }; + console.log(`Workspaceed PR details: SHA - ${prDetails.head_sha}, PR Number - ${prDetails.pr_number_string}`); + } catch (error) { + core.setFailed(`Failed to fetch PR details for PR #${prNumber}: ${error.message}`); + return { permission_granted: true, pr_fetch_error: true }; + } + + return { permission_granted: true, ...prDetails }; + + - name: Call Reusable Test Workflow + if: steps.pr_check.outcome == 'success' && fromJson(steps.pr_check.outputs.result).permission_granted == true && fromJson(steps.pr_check.outputs.result).head_sha + uses: ./.github/workflows/test-workflows-callable.yml + with: + git_ref: ${{ fromJson(steps.pr_check.outputs.result).head_sha }} + send_webhook_report: true + pr_number: ${{ fromJson(steps.pr_check.outputs.result).pr_number_string }} + secrets: inherit \ No newline at end of file diff --git a/.gitignore b/.gitignore index d2b76f69a3..52abc58f5a 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ CHANGELOG-*.md build-storybook.log *.junit.xml junit.xml +test-results.json \ No newline at end of file diff --git a/.vscode/settings.default.json b/.vscode/settings.default.json index b959f6fc96..e9c93a0430 100644 --- a/.vscode/settings.default.json +++ b/.vscode/settings.default.json @@ -21,7 +21,8 @@ "node_modules": true, "dist": true, "pnpm-lock.yaml": true, - "**/*.snapshot.json": true + "**/*.snapshot.json": true, + "test-workflows": true }, "typescript.format.enable": false, "typescript.tsdk": "node_modules/typescript/lib", diff --git a/packages/@n8n/decorators/src/index.ts b/packages/@n8n/decorators/src/index.ts index c331f7b30b..9ea7cae4bf 100644 --- a/packages/@n8n/decorators/src/index.ts +++ b/packages/@n8n/decorators/src/index.ts @@ -6,3 +6,4 @@ export * from './module'; export * from './multi-main'; export { Redactable } from './redactable'; export * from './shutdown'; +export * from './module/module-metadata'; diff --git a/packages/cli/src/commands/execute-batch.ts b/packages/cli/src/commands/execute-batch.ts index bfc8390537..77f11dac1e 100644 --- a/packages/cli/src/commands/execute-batch.ts +++ b/packages/cli/src/commands/execute-batch.ts @@ -28,6 +28,13 @@ import type { const re = /\d+/; +interface ISkipList { + workflowId: string; + status: string; + skipReason: string; + ticketReference: string; +} + export class ExecuteBatch extends BaseCommand { static description = '\nExecutes multiple workflows once'; @@ -53,7 +60,7 @@ export class ExecuteBatch extends BaseCommand { static examples = [ '$ n8n executeBatch', - '$ n8n executeBatch --concurrency=10 --skipList=/data/skipList.txt', + '$ n8n executeBatch --concurrency=10 --skipList=/data/skipList.json', '$ n8n executeBatch --debug --output=/data/output.json', '$ n8n executeBatch --ids=10,13,15 --shortOutput', '$ n8n executeBatch --snapshot=/data/snapshots --shallow', @@ -245,12 +252,15 @@ export class ExecuteBatch extends BaseCommand { if (flags.skipList !== undefined) { if (fs.existsSync(flags.skipList)) { const contents = fs.readFileSync(flags.skipList, { encoding: 'utf-8' }); - skipIds.push( - ...contents - .trimEnd() - .split(',') - .filter((id) => re.exec(id)), - ); + try { + const parsedSkipList = JSON.parse(contents) as ISkipList[]; + parsedSkipList.forEach((item) => { + skipIds.push(item.workflowId); + }); + } catch (error) { + this.logger.error('Skip list file is not a valid JSON. Exiting.'); + return; + } } else { this.logger.error('Skip list file not found. Exiting.'); return; diff --git a/test-workflows/README.md b/test-workflows/README.md new file mode 100644 index 0000000000..a5ddbe7211 --- /dev/null +++ b/test-workflows/README.md @@ -0,0 +1,2 @@ +# test-workflows +n8n workflows used for testing nodes diff --git a/test-workflows/credentials.json b/test-workflows/credentials.json new file mode 100644 index 0000000000..3c0b3f7ca8 --- /dev/null +++ b/test-workflows/credentials.json @@ -0,0 +1,3022 @@ +[ + { + "createdAt": "2024-03-04T15:40:29.192Z", + "updatedAt": "2024-03-04T15:54:48.737Z", + "id": "1Dr1Xbrd2xeq7gaq", + "name": "Anthropic account", + "data": "U2FsdGVkX1+IyUbFB38M0XCIgoH5zoL1tjGnwKq+JzneJyqgreZTc2VXu6wdpgquR4wy1MzA3nTvg/sTFIMRCor4mQxoSesF1ngWRNjm0kYMBFFcLd587DNLysVE9Doq4UpzRjYH8uu18k8PWbhOgOLi9dmiBDhiFSK6xQ1fdTwT6E1F3BkEvx1ckh1nnuzj", + "type": "anthropicApi", + "nodesAccess": [ + { + "nodeType": "@n8n/n8n-nodes-langchain.lmChatAnthropic", + "date": "2024-03-04T15:40:29.190Z" + } + ] + }, + { + "createdAt": "2021-01-21T13:43:39.125Z", + "updatedAt": "2021-02-09T12:36:44.881Z", + "id": "2", + "name": "Tele2 Public FTP http://speedtest.tele2.net/", + "data": "U2FsdGVkX1/mo3zDTPKE2JYkV/RH0LnA8DWVO8/mLT8ozSNMp5XbO9TCVeMB04h2zn+/RkL8BSqVzusGvPc/hB5wdpECsR9LXQsL2pVLNXkplMlyB8OlRylJ1DFmYuec", + "type": "ftp", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.ftp", + "date": "2021-01-21T13:43:39.123Z" + } + ] + }, + { + "createdAt": "2021-02-15T11:37:03.072Z", + "updatedAt": "2021-07-06T10:39:59.212Z", + "id": "3", + "name": "SMTP creds", + "data": "U2FsdGVkX18AXWFca0iueXujyV9hZbycosL6u3pYftMwTmHEOdwEKlPNFoxVtOsCWy5O00xWs2lV3M3XKIGmS1KWXD3tLMAj5O5Ynk780lFkVkaTOoHAFN5gkggmVawx", + "type": "smtp", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.emailSend", + "date": "2021-02-15T11:37:03.066Z" + } + ] + }, + { + "createdAt": "2021-02-15T11:37:46.005Z", + "updatedAt": "2021-06-26T06:59:11.676Z", + "id": "4", + "name": "IMAP creds", + "data": "U2FsdGVkX19SdPyFa/K5tlg2Tie4djwWc2JOFHLQQFjg07y6TI0V4V6oMiwOYgnAUt4r3n80bASv7w1kmjcvimSFop+9nlPx8pndyVGdUOfn5f9fPwmM6lUQVCGiHRtB", + "type": "imap", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.emailReadImap", + "date": "2021-02-15T11:37:46.001Z" + } + ] + }, + { + "createdAt": "2021-02-15T12:57:59.494Z", + "updatedAt": "2021-02-15T12:57:59.494Z", + "id": "5", + "name": "Disqus token", + "data": "U2FsdGVkX19UyoTbSFiMuYLDR5KP2SWmOu8hBabOu6taMrK1oAmoPdT2ZFr4Yjl2Sq62gA7WfKgE/qqCU2irNVBByXtWLIVeAHGTm6tDKQ+U+OPGDaTNuJciU+RsQ/VpwpN2yZW4CfOBQUR4jONzqQ==", + "type": "disqusApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.disqus", + "date": "2021-02-15T12:57:59.492Z" + } + ] + }, + { + "createdAt": "2021-02-15T13:08:06.531Z", + "updatedAt": "2021-02-15T13:08:06.531Z", + "id": "6", + "name": "Dropbox token", + "data": "U2FsdGVkX18JY4G+S5NaTkmVwYpW6yrfX3bVIkrw45e6Pf1sT0V4fciAHb/fh6oZtToCnmSWIsTdpGAdI4fJuz7Fc5hPMWLVJlxcK9EVnwecFuuCkcKSGqKfC4qQw4z1L5HrFvtRqu3kdLBJ2LERwA==", + "type": "dropboxApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.dropbox", + "date": "2021-02-15T13:08:06.528Z" + } + ] + }, + { + "createdAt": "2021-02-15T13:45:49.854Z", + "updatedAt": "2021-02-15T13:45:49.854Z", + "id": "7", + "name": "pagerduty token", + "data": "U2FsdGVkX1/B3ghuFhz1347NvobE2x7Mi4WjLVFoQpiZVTTDIk3dlz5f/UhX3Pw/59xwwReMvyw8MRo/RRI9/g==", + "type": "pagerDutyApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.pagerDuty", + "date": "2021-02-15T13:45:49.852Z" + } + ] + }, + { + "createdAt": "2021-02-15T16:04:13.241Z", + "updatedAt": "2021-02-15T16:04:13.242Z", + "id": "8", + "name": "mailchimp key", + "data": "U2FsdGVkX1+37YCqnvgF09N7Dx3kS8AUzXuWJ9ZW2wiyW5lx1gptBpp6HAR1ntabXt/LCHN+nsEaNSKhllEZjoYmxIWWz7r2i43MHIFbPog=", + "type": "mailchimpApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mailchimp", + "date": "2021-02-15T16:04:13.177Z" + } + ] + }, + { + "createdAt": "2021-02-16T12:20:17.902Z", + "updatedAt": "2021-02-16T12:20:17.902Z", + "id": "9", + "name": "openweathermap token", + "data": "U2FsdGVkX1/evqLuEr9GFldum4E2ZLRLU+rBW+pVF4Qn8KOCs1BUz4tR6NWiRI3HogaqM0o/vu3jIJfBLE3qyZmcK0SRgQvLhsp7eQ9pLdU=", + "type": "openWeatherMapApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.openWeatherMap", + "date": "2021-02-16T12:20:17.899Z" + } + ] + }, + { + "createdAt": "2021-02-16T14:14:21.988Z", + "updatedAt": "2021-02-16T14:14:21.988Z", + "id": "10", + "name": "sentry io token", + "data": "U2FsdGVkX19boPxIYR9oj9q1i/HeugKAv8UUU5wk0JMzdIALxase4dzBXYIsOe5MiONVrOYUTBR4VScT8HAEExsVY8osfQ+T7QkDKInRn8kmOUdTR05DW2mVQHKNh/Sq", + "type": "sentryIoApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.sentryIo", + "date": "2021-02-16T14:14:21.984Z" + } + ] + }, + { + "createdAt": "2021-02-16T14:58:08.182Z", + "updatedAt": "2021-02-16T14:58:08.182Z", + "id": "11", + "name": "hubsport api key", + "data": "U2FsdGVkX1/Z24uT/B6cgNQGNCMknJBH1bpSAy0nQo/ohxX8SRiguCIRvw0/9aFfOuP7KjS8EnRGzNZmrgITKFeFDORHIt4zwlbW41zrE2Q=", + "type": "hubspotApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.hubspot", + "date": "2021-02-16T14:58:08.180Z" + } + ] + }, + { + "createdAt": "2021-02-17T08:20:03.577Z", + "updatedAt": "2021-02-17T08:20:03.577Z", + "id": "12", + "name": "personal rocket api ", + "data": "U2FsdGVkX1/Dlf+LrEJk5tWsYK8p7xB6XMx92eM7eLuFapQ0y8o9gn8mklaC1Bqv2jm3VUgZY7slENEmUkQ9XxhI9gle6uxzg5FE6FKmE4PN42jLaW/xCaAL7ZYto+8Y/aUWtnsAPWYCjI8e+qgTlN5Fl38vbnDqUwBzMRvc6AYhmSBipr5GPRpHJwkX4+squOyIU6P5Ed1zD6YZjJMkEA==", + "type": "rocketchatApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.rocketchat", + "date": "2021-02-17T08:20:03.559Z" + } + ] + }, + { + "createdAt": "2021-02-17T09:04:43.331Z", + "updatedAt": "2021-02-17T09:04:43.331Z", + "id": "13", + "name": "clickup cred", + "data": "U2FsdGVkX18dAAovXIsWCleujbur0NmOsqVPA90QCZzWC2CNmXL+RCvMVjAuz0USj0QasZ7y5Aiq83qUCHMhidooq/RWPiUcrNXoQePz8bE=", + "type": "clickUpApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.clickUp", + "date": "2021-02-17T09:04:43.328Z" + } + ] + }, + { + "createdAt": "2021-02-17T12:41:45.809Z", + "updatedAt": "2021-02-17T12:41:45.809Z", + "id": "14", + "name": "my drift creds", + "data": "U2FsdGVkX1+AdLjV9aXYN2meYs8Qwbyznr0WHBdcp53s5k+Dc37I0dGW5XsrAM6IjK+u1clbt36uM+86roZo5LeVWYHYeQNhgyKPvfYQyZE=", + "type": "driftApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.drift", + "date": "2021-02-17T12:41:45.805Z" + } + ] + }, + { + "createdAt": "2021-02-17T12:47:31.216Z", + "updatedAt": "2021-02-17T12:47:31.216Z", + "id": "15", + "name": "Drift API credentials", + "data": "U2FsdGVkX18pOmX9k7sDuGnTKOWfEXWUR7chWgIt2UNT0PBJf7fw3hQORICHZla0de/JMQiDGNXFzEY8aBsQ9d83Rx5LnWQlQY+d7rcLMhw=", + "type": "driftApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.drift", + "date": "2021-02-17T12:47:31.214Z" + } + ] + }, + { + "createdAt": "2021-02-17T13:20:35.267Z", + "updatedAt": "2021-10-27T08:37:42.803Z", + "id": "16", + "name": "Zoom JWT token", + "data": "U2FsdGVkX1/nLFjDaTRdH9RqMo/qLJjl49jiPkJkSrHoQaqXeHZkuSEAA79CZidSST1R3MoQHVRcNgipttXNwhUb0IFLQAegDf3yRGbqNxIOuMacwIVDdG7okIo0+fHvZXqeCyBONitjZXKrrqQGRCNLpPsUSdRGa3f0pxtCOLE7QcwzE4lz+JpbOZknrHJ9MkL8AuARjobQFhi6X/xX65iOWHsfPPf50MoaUjk4ItJM1sZePu7lJxFAXLY7qeo7VclA8KPQOjkqMdngfWH3BA==", + "type": "zoomApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.zoom", + "date": "2021-02-17T13:20:35.262Z" + } + ] + }, + { + "createdAt": "2021-02-17T14:22:57.677Z", + "updatedAt": "2023-02-20T11:04:22.768Z", + "id": "17", + "name": "Strava credentials", + "data": "U2FsdGVkX1/KS4H4rG6sH5TJp4CSv5VKNVxNxxV2+SNg+LK33zuDwHoHbWIyNneb6I1FO17ue3F+wTdcpYu7m+PuYBKzth46k1Ld96oPWjszE8w29iYhSjPzstDdDnWJRxt1srFZOGdMIarc/ydhcrpVMvWiNgTruDxzv696z55d9DYSDzL+CM4NuE/y05mpiRbm02f/6qB0vBI+TwooMiNCRrt2pNdP6oNZDy8Wug+8uXzbUpsIQUUdSSGWuG1joIA69mYf28ZXfGptfW2AnrWBMEt59JvKp2wP26oEz3UTEbN0sUpqjdZU7uFvPxNMob2lfvux7j/5lxdgXNsXxe7Haw7elrI7Y2ErUtWjddaw9k5HWlbqZY6bYOIGGdb7iP3UXQ78a8R86h9+/EZDqHhWKK5e95l1v6DRulBR/rriteTeyyxrMMwkm+nUDhxxa5g+IZ3z0QmnWEO81QIwzazpezsQn0XyZ+u2Vgud+u4cTUHFP5L+a/M73u4nHd/8aCoXrNAHXWiwdIwDUXNUgQYQxOz0hceWlZkBj/hrLmG1+O56HPa5YI/6XMHHQUVaREkYuUGuoxiN9TZIsXoNivP7qxkDEJzcQ7Iwfk8LPMOpUKCWptUDBarz731N1MxozADWpaC4xqWjlf7I4T3LzO2n1usn+XYazmDZRorAYDjykhTDoY6wE51GqpSVgaCX9TFV9RTwRBdmDw7vaLJWQ/AaSrfjklLCn8i/aKMG9IIpfor/gaR2/dWwXIMr1a4GlQssSSKpNkidZuQkMUSUydbwLzYMgn0Gedw5JW6h93KLgrrkAW5nxeHpntLYgMObrUuzdK+lRLF2vbglLWUAw6uAjIjRO9Web0EjVFyG4K+e+Z4sYJdTtQYeNLoHK67PqGgjMMqlmwws9ryyUHFPZvCJ0vJHQXZg4p6D1/FwHmLYToWNrsbxFM3YXl9WUJtLsfCG8clZlP4Y67zm+bGNDHIgulrsJ49uOEFvvHdFjeVRr4v8rH7FZIvEej8w4GuLCqyI1bCyFvEoJ6fxoA86JEzbfh4Y2sQUUAZv7VEPOBstk3lzLyOtX8Kdv5Q4YgsKc265dyXVRKjJEP9wWqKyuGB0tsD9eUqFIz/xu/BJ457sxMV4Icq1lL0TpXv2ncuZpl/BNUGSRFoKm9xWMtPjwWsDsyt2apHYoGkODK9zWuiZ2G/kE5afzUz2+U90hu8Q5ekBvnI6B16w5sYH4gMc5a47JDL6MSNc9kXt5mT9kW3mcOivAOEPCCJJ/mvozb5HzURYKKsZOXM8NmLUdZIBTVudLY9XYQ9Jm7lNlV0d6JoT5T6y8gxVrK3ViqzoC4YGpkhBJ3GtlQjXhHLFhyQiVYq5tDt2h1wBskFZrrP5BwmlVeR35pGHtlzme1FSRfM8qyA1H9Cw4bxEm4AAgZOAuyk3Lcy9zglYH6JsNdX8Fa16PNp6uCtaCWhd+wd+iwOuCnvcSUohg07Jzaj7QpZFZ5eUZlRsfSLhW6YZkBCqdjmOU6Fix0+BuYAonQigoZUQyr1UE0rRlo2hxLqTbaGQh4XTCZvLE+xsI/YVVtY+bwXK681sM2tqYf6ebua1J3HJXm24rNbCdwwkdGe0YYm57o9xTgKajRE2bHPiA3d6iu+mB/vgufVJ2RCdbU+7tAN8", + "type": "stravaOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.strava", + "date": "2021-02-17T14:22:57.672Z" + } + ] + }, + { + "createdAt": "2021-02-17T15:36:32.700Z", + "updatedAt": "2021-02-17T15:36:32.700Z", + "id": "18", + "name": "Slack Token", + "data": "U2FsdGVkX18Eai5B3FetbX23OclBkxKHbhYWwokHtZWEVfZRpMuPar9ZOZ0pvU1XhupZUORmHqPUr6ArDnvNGjZW4U8uZmtWUgp27RDSHji3d0JR071WsmtszpMEEBXHtspvSq8HYfkzTfBz65IZNLuBrpkDK3zSLmWPL1XAHlY=", + "type": "slackApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.slack", + "date": "2021-02-17T15:36:32.693Z" + } + ] + }, + { + "createdAt": "2021-02-18T08:26:48.413Z", + "updatedAt": "2021-10-27T08:50:17.141Z", + "id": "19", + "name": "Gitlap token", + "data": "U2FsdGVkX1+3yzHMp71Ko+7dex/Dl7iQ4p0PVfNRDItUQgmQR3TUko+ATWWdPaaFbp5wMCszYx7YACqeqxtUcg==", + "type": "gitlabApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.gitlab", + "date": "2021-02-18T08:26:48.398Z" + } + ] + }, + { + "createdAt": "2021-02-18T09:07:01.559Z", + "updatedAt": "2021-02-18T09:07:01.559Z", + "id": "20", + "name": "Medium token", + "data": "U2FsdGVkX1+YQ8h3jLxoLEdAteuDiJ8wtSB7wTl9X9oFgLceBq694vCaXy7kCZHTRZBl0zTTi9UthBh9m8VwT4/+Ew+Q72mi+Auf6p3i4Sy52wXxrOkXDcF4TIt6A18tIgv9jyaBixm7ycd4NEaQ7A==", + "type": "mediumApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.medium", + "date": "2021-02-18T09:07:01.554Z" + } + ] + }, + { + "createdAt": "2021-02-18T10:24:53.036Z", + "updatedAt": "2021-02-18T10:24:53.037Z", + "id": "21", + "name": "Github creds", + "data": "U2FsdGVkX19vvKc1mHdf6RBllMHreMQEoOQiPXi15UKEoDvcCMG00nClARleUwCKe1zbUXRBnVLsE6zwbAsIIcacIcWlRYi/d8IG54cr/Y+vRuqkU1Zs6lkefaCd4MM/U7XU/KB7Wkrg2pvhwk7jIw==", + "type": "githubApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.github", + "date": "2021-02-18T10:24:52.976Z" + } + ] + }, + { + "createdAt": "2021-02-18T14:41:23.986Z", + "updatedAt": "2023-03-06T15:34:18.960Z", + "id": "22", + "name": "Gmail 0auth", + "data": "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", + "type": "gmailOAuth2", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.gmail", + "date": "2021-02-18T14:41:23.732Z" + } + ] + }, + { + "createdAt": "2021-02-18T15:18:21.795Z", + "updatedAt": "2023-03-06T15:34:18.782Z", + "id": "23", + "name": "Google calendar 0auth creds", + "data": "U2FsdGVkX1+qd8+Rp+6Z7qcqFaHdp/hHy53JfQIaZifRycH7GAmAc2gIQcaWnlc/8oeyNl6p8GCD1w6MNVuRgeMBIo0/cjB49tU3pJkw3UfXWJWW+I2QIivOpCk3jDyACzLEgEeyzY7R/vn1wsYjlyx/dUgzG7wTDRg0XBjDDkPcxFrymTV1n6JQUQ9/NTVrv5yibMrh2vF62wOP1YJpzhCRMNCIKx6N9GGBiRJo040fiQMVVpMZ1LpAlIhIoXMJAZRINk6wJocv3cdFt5QC1p3TkvB/lPwMAmY701YMIsZ7X5X1OkNqmrec+yyFphOefHpW1nXD3AD1H3Ez1WzZtZAr4X5rvWVrs0Tza7qB8bxBvSJx3WUbsyoH/bMwleERb/cIl9Vhj3CJR3B0VQJTUxcgu8E4nGqCxoFTUfnUD8C/Ekh5RAnMyNZaS6JJzKTSHpaXpszJCyc5QTljncg88xsrckue1EXCOKl83Z4mEK7PdGCHwX/xpGMK1Cnl1wbfbb0pRhgg+KIxzM16Ap0OuXtvQQT7sllH3sdo5J1+vIYJpqujhYlm3VVAbV/xy5fledVTVraMk4tKKFYCAvFT89bXpb67BbyD/xUDOaUyOjgWD5chJqbWA3TYg3VvHhOtuu5tXIKhpiDfarJmDS+8WAS6Pfbpex4B7nLPJ/WVulRX731FCDXd0XcY3emd16+d+n+ykYmHSgeun6yHQVlMyU3LAWBMlu5BZCBrGmvH9mQWHoxwNeDQABgbLllhRUHnsSFGTM3MJolm5IxTDLSMG/Mn6w2UmheayEXvuDdYLUQaGBhr5sxRO3kYS7/q6xNFcq65Mrn6j6M5zE9SUR8dkCLR4GXlAi/qdBQw63ohI7AcTV/+Ebn1YZLQhIF78VGSs0bb1897nyi1a7dUYr1y7sTRrJ3DohKdi6Ccuydpg48WZVbSnes8T8dOrbpiRRroYuX3PJoICf3rqQw+JsxM6bhZbM72z5dh8e4AKvb5QcHwqm/HbBI9dhNp/sjN01DdP3kcioH1bmNBcbRru/Xob2SJdDupjc3ZSSuizk0AtLPYBM79ZeYqH2th3Q3d5azkIGGDpSZ3n5uKilXMjkIda3y/7AMATiiy63hXrrAjgQbJF+D8nDbhCity/xPG+l7MY3sHBjl2c/+kLdAbh1wu1KsmKIRbOklingBSg91DJFdwolk24eLwgEifGvi3kQfPssWN+Em3G9wWHVU6ncDdnlfysz7yH5YtwXGnN4Go5Ytpa5eAPKtJ15g4KhSYahzIOPqNVWSzZjNU/O9y1oUEmqq8yLl/hyAhlOuS/pSmAkpFspivnFtYtQ9Q9BsjN2QII2pYKriqD7NI0pj6sO1issRRVYwabAZFu7kHVUcGgBqVwyJNLW5ywJF8EUqXBnE6/6T2VM0AbN/C78wKksCcxfqUdM0ivhpC0IG/rRsb72fEjWtCA2NFKtKrm/17NTs+EJWY+nO+9v56nfzPv2sSzw==", + "type": "googleCalendarOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleCalendar", + "date": "2021-02-18T15:18:21.790Z" + } + ] + }, + { + "createdAt": "2021-02-18T16:03:02.703Z", + "updatedAt": "2023-03-06T15:34:18.788Z", + "id": "24", + "name": "Google Tasks 0auth creds", + "data": "U2FsdGVkX1+edD61FSggCKY04QefXoggIREO7JWOw+3HTPR+yAxw8+oJRZ8TiP4p7A8ozDgpmqpwR1sMJrM8UtWTmgW0qUEPqQHNeCldjVRvkON3lklRNBdnLWELMojccrm7itIxqwRc78GSbdgyxu0yFnP0BP7zqoXaaKTxdvETTsYlKeEqI1g7T7Pe3uThCsI6EPSlN5dNTPCaQ6JqThXtA7oG0ycppNfLntj6wGTh/WVfcXFfpVwXTioNxYQQrcnZ4CvM1oV7oG24I6pfbgXg1XtB/jOKuYDmxvCdiv9ATCD51bj2PqJXxcWD7B4EC7cpGzkkSx8VCOQVM/zBxFAsfvWOdKKYVJ3WG7NWg2D8kFHsAo+Z1hwL4kjKXeYPQP5aBKEEGgi05ekXa+6R3LEz0lqrKN+BlztWsJ5v1K0T6Sijiw0ejHQlh1kNSeLXomP7NBlSravGUXTV7DM8uqpE8Wy6GUeRcS0xrl0ih45fdLWAv/M2gQ7T+ga3VNIGluGtNXraCrdpl4mqeZH/MdReshoOYym6owwgTg7fJ+ZdzMfG78NfB7/WuOahtv2u1IK0L5l9ehMvQzdGiWA+UTfC1o8LT5euQqM7HFskEbEp9/8w4cgOFMEYH6r+A/J3U2iji3jYVKUNz/g4rb/R/8uV5z+AjNgu7V+BM7noI3+IGf7SEtsg+G71pGB15R8w6hbcjcQD17WcPWXULCyJ5LbdQntmYc3t5ApBHJ+axO49TZAQN9Di8n7MVOL6C3lsSfcL7Rno+k8mUXJAdYmjxb9hGTSqeVLrTklRor41zm3yjiXRJTxnyuj2zOL0Sf9KmZMtVq4uT0tzK+w3KFx3qeZUjgU2z3tCOTNkfWX9pIbeqqQwvnLRONj5SYekf8fPk8z3nR838eGWGBE78fsSWmTn3PZV6o3Ipo/cX/Upm7ME8oaUnUFml5C++eOPEzru/fxLGuYmkf63o61u4CPEUvPdGfBiG8VmdWK7INrN9zbIj/HhryslI4btVPlVQI6yYgj54xBj3kXC7YhjVVRv7AtKojWkb40nnDuHsfbmCiUFtW61Fc9Tzk+QtunwKMIA0LL0Opt4m8FMF3gO1chF0i7xHiwQaezxvpEt4o+b0RL1ELg5GNmgOFEQpk0SgX/o6duf4NcK/jnM0a52eRC1/P6EJf5cbBO4uAz4JZgF0x4H42aN5fkg3foDdc+CjSRo0sUztGX2CS5Bz9drFRxPbJ43tntYZLH2SECg/T/l7KMT7XHLuakNOME5NUZ6XQ+A", + "type": "googleTasksOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleTasks", + "date": "2021-02-18T16:03:02.698Z" + } + ] + }, + { + "createdAt": "2021-02-19T07:23:21.167Z", + "updatedAt": "2023-03-06T15:34:18.909Z", + "id": "25", + "name": "Google Contacts creds", + "data": "U2FsdGVkX19VGtbv7GPw5kvNUHdRv0KD24G2pKQkF3HBq/VxgslaL3JS909bS68gIPBgV6cbuz4UiDBK/nodQ4L9Gus7lpfM8kuNC3ojlyn/AQvYqfuO+IBpGqkeO5surLDhdnCZBcHBOZlWDruaqT+a92ewm9i7PQJNQBcQ8F5zcOBJr2ZM3fZIxVNA7bhl+T1qeUrdGLOQSxVc/OlH8HNTttxpQhCI8gYapBOhPUscvKKe4lcqGJftSSyohqJX59PGNtostOku4GU4iNr5RxU6m0BhqVqQSt1wYxkbO+L5C8VqwFp6zndX5wbqcc+Z2OzkjBLhl/MPc+ZVX8fHsPpWopbcplX81zOr6bNbzKcaoX2FyIccV6YeSNw7zSVrVfQog3qZd1KMLbK8Tpwj1zqH/J07BWnu2yJf/6EPe6jQPU099qObwxGX/AcZbVDJeVzPeiTQNhQNFf2z2SKb5SYecbEz9QA7i4BZxPVOcC+1Xzuq83Rt9VQfYOqSkqVphD11U6fXfULCmkW2Rns/y+FRqMi+XG+72eWM7U7emmBtm+4mjH/WMKDTe6EwF11VFE/6MYoYfwAVWwyZ4OTyZZMC118oenid5AsTeRjEP2zBD58biK3MTHTlQCKdbbySW+bjfJ+I9subcgUoHBlrFBnN+pmT/0mmR8+ijwP6eaItaxjwjbh4bW2Lco6vh/2w5aC/DohIYA6DdvQs1xNs9TgKXsvyVwYRr5cnzyMpk2hVbeeF6USFRkLlWy4uux3hSzUJswmETd/4dO2j/jl7DiFG3xacGHChyKcauF711vSCUMnKCJjcrvu8DWM13GK1rmD63O3NH0j3tYX854cZlFQ4Jkzla3ziIpKlpZe3hnD6eXKIa6w89C3ZuWcwlSS7P3NhQaHHqAKavmyYIDe+tkI3lYMxfoWu0Z+i5h8WyNPpDNT4X9pll9Y4+XfeD6+BUPcMFL1RyPQrZ7SnGfebww9iumnjQ3b2KOLILdZI8n+Y6jJGJY9Ys7B9Etvgf0y3vQ2ZEzfDbZwkv7EF24GBF95G677yOSgzHdv05UjmZwW5b6pT4j5af9D9DwTitNbhSKYfFhTFqEf0+YZ0YvjIE25l2UraFdGEawotxCiOxSwZ4KMetRSiKPEiB/4jhuWKyfAY8OAcQ6+APMtSSFMiDAHvPdqav/ebzsOtywav7UyjM+o5uyj+3OoniPl6EOA/aZTPPA3eYR3baaQ63VWMlaqs7Wgq0R7XxJUAgUs23novfMfecEpiqNW0n6TQG89MtPruyUCwDnVBuASqbIkffw==", + "type": "googleContactsOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleContacts", + "date": "2021-02-19T07:23:21.161Z" + } + ] + }, + { + "createdAt": "2021-02-19T07:36:52.875Z", + "updatedAt": "2023-03-06T15:34:18.930Z", + "id": "26", + "name": "Google Drive creds", + "data": "U2FsdGVkX19TL4Gerzx9CT6G9dLI2TmgDJdZQXu1l1hqxF7Y+jP+hHFaVpunu8Yhn14NHNMakt0uCaHFXKbj47QdZGo/AEgP2SeY0WBG47FPJAgr3iBSSuELJNH5ha/OCBrspKTKRBO0vu0p2Ypfqqx7JB7GmaczRo/VRuBn92edWdw7MIVOBZgVLBw8BBR1O3YMwfHYWxGeqkxQEXNhVvxvPqTJNJnwWwAyARJbhsp9QnI9IAhRcO9pPnIezQqcTQkE5ufQnNB0B/6EwdCCDf8ACg5yIDtIc9h9HtNrkNoEoAvNNfDpdu6ZSRTH+j00ggwA53t+l29Ip3p/1jsnjgkf/6+ySj4hWZl/CLx5SNY4phz7uTvME1/8wqOWF/MaXCzfVSmEuuxzqnX6q1jQgpRoMzAs+lKl11ZzK46b47wFiNEGBIwy8xhOX7y/Dn5a+ehmzOfvO2OlzCLyuq+TVSmJaMAEol1WBXiefA1iukT1LD2Qb0p9j8bn8LHP//zlS3rXQ5wiWlVObHHL1YXuoiboFB+uuhsV/oivaBdr4xylytXv1SwLn63uJ29HF32/xVFGlZmgUPXLLBOLUKfkA3kUl12GOzZmQtmYhmyWSVuyRBxWY1TobjsV66p4fKUpKttWWGcXdehQDoroB6pbgOHKO8i3iL0rFuxTygG354jT7XJAeDbJxp4353BiKMfr6M6b+rHzjQlSoV/lTkhdWbQ6d6lB4aoQaXgGe8Op41Dg40j3hPALyeTPkXDkPpWATMV9s60jGyzkls6Urjc7NcGwwhIv1/ktK/Uo3g4LPAOQw77DUU5b1VknF0ZiVUgz9QAeftCh+If9Br5/WXuRBLY3UbYWaaLod9ftTki69NmkZD9Muf1QT9yZ8DQJOJDpitLJAqs/onWk8dQvNOIR7Fq32cuJZj69YS4HSHzaolBNewzvd3d0jDn8DJrXBYEUbeWw+cfTAhpV5WNivaE+G9peCnsbWWnnLiCigtUHb+8a8bQnC2QQ/5Vq1snVxvcwkntNlJ3kLnkJ0DsIwZ9L9mjRhLHFJl2TF+bX5cKU7XPdrh/4TRXBdS9KyuFh93OCAU3egsgho5MgNkGLgl0JMcXVgzs/pktkw/b+t7u6hGMOyxkwEJ2rc2j8IPs2gVHC5SFgjyFoi4i3Fyy75U7ZNT4DB+6Pbyr8teOchocHWGsFk/Wn+6WtAwA8q0OqIQ9aB3ATwiojUhW4NGxj6S8/ndamt3XN99uw/aHF4IAJ6Z4rbfojT7EhIyKHC61Z9XPKdbW2HHadUcQM7mb9jk/klPrfKSGGVkESs4ess6E9SN6/yrhbhxocD3mFZBKey1tpvajXg/2PcThsFQXkLZaxhOAxJl4w1ud7dWMyLkDCK8qFEA7wLNcC3RAd7/ru+J9kk3zoumo+LcdXcPolkuuBS9XSaCLmZWDd2p1/Zmm84Djg37ieNyjmb94azDWByTsWwsna7L4FyqZYuuJ8rinwk+0V4Nn0zg0+fm3yvZ4ZsiPgyZ97z7r8yx0RhB3PQkRbN5cRoQEXaEgO+/MAs7PFxmfdr41NLR84CV810sDDpYBgXrfK1OUpuoOEmYaaSBTNDmaneHxV/FWSUrH0vUC8Q6Dbj8FAvuVfs0G/7jQThp5iQniaa19kivlhxvw6eEM2/qQZejh0yDRhcfgQrWaIUA==", + "type": "googleDriveOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleDrive", + "date": "2021-02-19T07:36:52.865Z" + } + ] + }, + { + "createdAt": "2021-02-19T08:21:10.389Z", + "updatedAt": "2023-03-06T15:34:19.181Z", + "id": "27", + "name": "Google Sheets creds", + "data": "U2FsdGVkX1+21ONZUJ/0Cu/1d1sVpmlTAu8r7hzqachyECaLhrgNW5e7KED38VQHeR57GOE+Uo3FhFM5pL8yqG0ZcS5S5+uneXXosQzkDy4UPWE4ymioy9fv+SQJTNN3e+BDQdXATGEcD/ZSpqgBtj/Ld6zv8P3OxWr65hYCkmpx5csrORSwrqB8zZMniyaXZgpUd1mGCHWGFEjV+IZFMTwGmvTzmfqmmBLfGXHhzqKN1FJCSZ5WO7fshx7Gc7A/DaSHprdnxY+axa+PF+utCpbNx9pKvCQv3dttSlMpQfEkzEzENO8uUbxYXi230UZlmZ6QNMkzrgh8MZpwFAInqC68A/tEPrQLIGEykg2zaw7gVlVF560GXxs9Yh0nRBF+La7SKMOCEf2FUQaJ4niQg0Lmf5A1OJLQENbEbsVyXieUP3gqefoUbA5bYbQg1uMwmURAvgXfMvX/WFUbvUdd37Pee7x1QcQ5zL7i5/NPwORzdwZaW+QHcsLXDHl0CdwBXtC3EhlhIQ3K66/uh88dY/GvgaAYdqAG8YxpEG3VXF/xMJBUQOqcHlXi8Zm1SFK55HURPUGBPscVxsXz3SFANkY59d4LE7ClZonri/QACQZcRc0MG+n94fAtQ3RctsqI74hTnpqF9+sbsJfkxpLBiepiybbN3A1BExB/iAdQcRU/bTLWXusBfs0ZqOKZFLeZgEjw9/e7PMtmwyQ9g9dZvJ+Q6Iiy8nQq+gy001Eu9FMACQwCl0Q0ixiK6JbmnezSn7qM4dcgzZTInTh3RnTjJwRa2fm51/4+gRdFHFVTFimNacs/al0yM2o27GZsebZ/GonY2cDgNnCbtPahZrD1Kb7s4JsmlwwM6Ry4UKE48dueirrSlLc9N1RhonH7BYnjH0o90Un6iQ4mU4NLTLF5UPxkV07p/3DIgMCJjlJGs/xR+cQPHwKUfkE9moYhRNkpruzcc3hioebsF27HnBPmnBXBFYMnLUt2RbAgDaXMfDk/CsGKaAR6zUKAlU4np38ybk4txnKr2nkiw3A2xWfuXeRO37ZlRfS5WIMtwMLDa8ni067/ToDtGilt0ZgFcS4icP9j39QVWNId1PCJ2SMSjC8c29I5tXG9+JKMoVLo469cnsmsj77MxuulAee/m4qy2+3Cw69Z1MtAoGBTSpgxylukolJtiUFHVr5W0YNAXt6u9SE/7dyRSUzUH2yoS2BAqA61SeNxyzCFObf21s4JfpDv+SQDLhiDKwLzOY/Ss7jUF0DaxruPRvQd5DsI8fDFKPG8fhiVaC2CQD+59wz1o7UJRuiEnCJEhKPTM4nYZZvMUK5mepdrKH0O2t3lxOAIDUE7gJQHvRH7J/XSnK9P4HeTeNk388shTZu+XGi9yriq4aI9Vnhtu+te/nMPFJfNMRYEbDcuV9BlALDD9h1EoGiaN7hwl18bG4/LnbP2aYuyuQNsz+HoEOdDLuwPrk42iT9Vy/uJ/DRgZxkRSu2XXnJxlYkiF8+wBD2T6Yc9hd0n1l4shbik5xZYsC1kCM14jSO6HaNcueek3iTEX5KqnKzwtkxmYK5bA8lnDC61jzFek8AjBryxlhmFQoM2lLHjI6H+Hm/4oSxo6Z7JvH8fv2TlNXosPqEXcOlVFIOvAUqbs711oQIPuAfHo7xIsacx", + "type": "googleSheetsOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleSheets", + "date": "2021-02-19T08:21:10.381Z" + } + ] + }, + { + "createdAt": "2021-02-19T09:22:25.089Z", + "updatedAt": "2023-03-06T15:34:19.009Z", + "id": "28", + "name": "Google Books creds", + "data": "U2FsdGVkX1+hfSrqAA29hJDK0VA14zcJwj9O7dnWpTc39k2t6ZMuKQUfIgAFmQWOHbi+3GV60yuiEKTnttU2gcEOFtLMnA+uYvTGAsUhdEWdPtUB7UmA8ORvSmZtsvTIS3UjuE0umXgtr6iFMuJJ50zkoRSpe1Wf3cc7Le5KgDb4FVp4o4fyLUPUSjyy9Kd+jN491Uhd03K1kxz4ScZe50SKoxzr1ZRhcjht5Xwk685kUOlLJQK0dgHse8D1+JuKt2jyvLrz6BLfM34a4MYoCvHFDALznwunpT+zBIWIekAfybwZTBGW0cKW4LLF4+sonmzVdbfZiQ2+GUiFhVUYiyhUePW+274Dw92clJSxEPORTZ5GeUjAC7wcSTOSpNKED/Kb9iPoK75Sd3auPgbVJ9i4oZGhyEiY1ex27cCVKPWZc4qHlzmhRAlVBX+1oQ1afDYys//+M+tkw/RbKNyYekzPlDDGzKcEUM2kwkcF9qOqHT+YQKPTk6HDZt+8Q7ITf+YgvP/BVuQdVYBdTgguKDTcgxqx6zmQHYObFTuefp4BbekI3WPAbbl9u+I8dWwUNuEaq/x2VL+Bm4kXoIvZbbaZiUshDiJ5DpVkRBgh8CSdfsFyUDveCFkbm7FW+mk7RFLLJ8/s85X4oNKiW8+scvQlPU+yvwkxrGGxFCugkZPtQBOqrSH8P3cauPIhPolEzbjonCcpTfQy7ocgk99Mja+bc+dAeTzlZkFDwVAbk0Z+FrgIRHivogNT0pPyvA7f7r4fVicM4Mbbs94jXrU2682z826H1dUc0yRZbePo2qFFkYIaLlYc6twtbjAA8f6AhVHFYfBGuZllyzMmQWmftR5pEJZcyIODyMhK0bPIFAI3er/tZrgWap6D4B5FjSlH5ZNQIsSiynOV4TwZDnP6Ept+cfJn+GI3zq9HXVZWE0UjdRUqOMKRllpULCxjrElCSnplWnr4BLIEtJRuQ+F7KU7rsDooHZ0sCj14SC6wR2W0vT7M9LeRj4bb57ajAspNsqNwgV143y5giTa73tDjxefQVWKmuJgYEg/KnC8f1D3X/kgUkGSYu+W1k7qTRibASOeM1KPGiKYxqWFyX/zmjYDN7QpCDNnaMN22riBHr2Q6bMca5s9e0fFUVc+UVj3t44+YMl4Xobe4z6kkRhpoQFD0Orw3qen0iH0QDzwuq3FH62j1UvMADrEHvqR1ZDwAjlKBWuqZEbF+nhCdkaOc9vFCZd7Q6Ge5pIEaSJfRT6co3vlHU36+QwBLV+1IYoBG", + "type": "googleBooksOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleBooks", + "date": "2021-02-19T09:22:25.084Z" + } + ] + }, + { + "createdAt": "2021-02-19T11:05:20.475Z", + "updatedAt": "2021-02-19T11:05:20.475Z", + "id": "29", + "name": "Mailchimp creds", + "data": "U2FsdGVkX18xXLE184Ww0HhGQkif28k1jLv1ct51ofijH9qbNGhY2KUE4M/ziFjMsBXwtClo1oKHfWJ+2qDu29b6R8mKOl/1dJSKDo3WAyY=", + "type": "mailchimpApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mailchimp", + "date": "2021-02-19T11:05:20.468Z" + } + ] + }, + { + "createdAt": "2021-02-19T11:38:01.580Z", + "updatedAt": "2021-02-19T11:38:01.580Z", + "id": "30", + "name": "PagerDuty creds", + "data": "U2FsdGVkX18Du1HJcfLgrPgYruh0cbxQT4NkEwQ5Q0JUT1B7RxhZMPMYGnfY//cf6GlgSCcF1bb9l3arLf5Wvg==", + "type": "pagerDutyApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.pagerDuty", + "date": "2021-02-19T11:38:01.578Z" + } + ] + }, + { + "createdAt": "2021-02-19T11:56:29.813Z", + "updatedAt": "2021-02-19T12:02:56.759Z", + "id": "31", + "name": "Dropbox creds", + "data": "U2FsdGVkX1/Uofms8LodC3KQrzG2UWCGnscMH+RPTE2axbxtI6YocNs+36iw2N1i92ZtGUViIGH+uTwmQnDOQt4A5+0B7o5FU9R8iBE80mq10LpgUEnWPG43Ptesx2goGeuBX1N7d9YqoNIUCJHjLg==", + "type": "dropboxApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.dropbox", + "date": "2021-02-19T11:56:29.812Z" + } + ] + }, + { + "createdAt": "2021-02-19T13:53:50.602Z", + "updatedAt": "2021-02-19T13:56:32.212Z", + "id": "32", + "name": "Airtable creds", + "data": "U2FsdGVkX1+p/4EZC6fbBe4qz8h2NP0wlwXoUBQqLV7Xqqex3F9z4JzyDBBXGqTm", + "type": "airtableApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.airtable", + "date": "2021-02-19T13:53:50.597Z" + } + ] + }, + { + "createdAt": "2021-02-19T14:17:11.249Z", + "updatedAt": "2021-02-19T14:17:11.249Z", + "id": "33", + "name": "Asana creds", + "data": "U2FsdGVkX19dsW2YFvNyR3Va4cffC/3puNn+BdxY8zyHQwjR2WL+cTHIQZ9vnGfddqkd5vxrjBdM1EMNYvVu9XhzdaYaXRlu/Rvz1N9dg/XREGtR0ily4UZJtR5kI46w", + "type": "asanaApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.asana", + "date": "2021-02-19T14:17:11.242Z" + } + ] + }, + { + "createdAt": "2021-02-19T16:44:50.180Z", + "updatedAt": "2021-02-19T16:44:50.180Z", + "id": "34", + "name": "Bitly creds", + "data": "U2FsdGVkX1990KbQcV2hqg2N2WqqysphMRcF9rRqHbV3xd967Vo0gm5udr/FIXIMl8m+4qWh6bIpovyiDagdulQPpuEE78s8bJV82Rpk9vI=", + "type": "bitlyApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.bitly", + "date": "2021-02-19T16:44:50.160Z" + } + ] + }, + { + "createdAt": "2021-02-19T16:53:38.869Z", + "updatedAt": "2021-02-19T16:53:38.869Z", + "id": "35", + "name": "Brandfetch creds", + "data": "U2FsdGVkX1/xdfTlrPUFZe2VnImmukah+Rp17zGZId6ryo3nwNoultrEmgPNEMgvJA9zSjsqu20zjR2xujBtipZqJB1sjtr0GVvpYi0JlfA=", + "type": "brandfetchApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.Brandfetch", + "date": "2021-02-19T16:53:38.860Z" + } + ] + }, + { + "createdAt": "2021-02-22T07:21:18.838Z", + "updatedAt": "2021-02-22T07:21:18.838Z", + "id": "36", + "name": "Clockify creds", + "data": "U2FsdGVkX1/lgcgfsGNJ0Hhk42cGd5gdw1VjOlm4rvsRatgjASdsg0shFMB0Zaspb+rDO2CJYSsLf/gAZwXIiH47dsNCTgHe95PMeSyt0U8=", + "type": "clockifyApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.clockify", + "date": "2021-02-22T07:21:18.831Z" + } + ] + }, + { + "createdAt": "2021-02-22T07:46:04.337Z", + "updatedAt": "2021-02-22T07:46:04.337Z", + "id": "37", + "name": "Code creds", + "data": "U2FsdGVkX18QBJCIz/5sBK0uTJLi4gxCQUQ+48jsKK/ENyPqhnFZ7uc2gnDYyLBR7JHhLPqplv0RuaaZDbo0iajcOvJurdO3bK+0yNSBsXE=", + "type": "codaApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.coda", + "date": "2021-02-22T07:46:04.335Z" + } + ] + }, + { + "createdAt": "2021-02-22T09:14:29.302Z", + "updatedAt": "2021-02-22T09:14:29.302Z", + "id": "38", + "name": "ConvertKit creds", + "data": "U2FsdGVkX18kPZr6CzzuBhOHSY5wILD3lzqGCbmNot7ctpX7ByIA/gaVOGQmsliOQ0HAwSnUEQSloW4BxhFlyv51vK8nCwzhpB2PH6Iy3o0=", + "type": "convertKitApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.convertKit", + "date": "2021-02-22T09:14:29.294Z" + } + ] + }, + { + "createdAt": "2021-02-22T09:51:25.952Z", + "updatedAt": "2021-02-22T09:51:25.952Z", + "id": "39", + "name": "Invoice Ninja creds ", + "data": "U2FsdGVkX19FCgCRnZI9LxkJ0fFDqCHTNzRDD3PPCEx/iwDzlc1SF6Y/gvEedCIXbrSLj5DA9Cx0+pLTmu+TdQ==", + "type": "invoiceNinjaApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.invoiceNinja", + "date": "2021-02-22T09:51:25.944Z" + } + ] + }, + { + "createdAt": "2021-02-22T11:06:05.470Z", + "updatedAt": "2021-02-22T11:06:05.470Z", + "id": "40", + "name": "Hunter creds", + "data": "U2FsdGVkX1/1gYkZzUr6nvLINdWRLgfpevrIVD+9N0Oj+N1EzfgOa1Dt+mh7XwPfIFN7PTAFtx2zvc9zWpE6v9lbs+9UmQ94mN7o7SQJn+8=", + "type": "hunterApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.hunter", + "date": "2021-02-22T11:06:05.466Z" + } + ] + }, + { + "createdAt": "2021-02-22T11:29:21.335Z", + "updatedAt": "2021-03-15T12:38:04.857Z", + "id": "41", + "name": "Trello creds", + "data": "U2FsdGVkX19q8WLJggC99tA3sNCK7veRzmTun+D5LgO6N1LTdCpFsthgWZUJwTNQoq1xkMTUqcP1Pj5tDql8XScwyMpuUV2L/HpT6XIsmRNTtW6OnyiN9SUbOjT/CyhvW6scxU4TB5Ig4hChfzpXqOLnX79+hpaq+uEZ2Z7z7OYkBPO+pb8V71HghiBoWN2khsNYHoowKQLVQQewTy3Z75Ck5cYKlkCNOW0mIl0uj34jwPwRbLj0kbe4ET/4whRlewnWsTqGn+qUeAv6U8BGTTKmGqlKIEQB9L9cGEsd3PA=", + "type": "trelloApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.trello", + "date": "2021-02-22T11:29:21.326Z" + } + ] + }, + { + "createdAt": "2021-02-22T13:57:40.992Z", + "updatedAt": "2021-03-19T09:43:57.936Z", + "id": "42", + "name": "Mailgun API creds", + "data": "U2FsdGVkX1+ZwsN2nbj+EJ1UcibG/cA10of9HwNMWZlDMtDcOc85SwN4x/2TOuLxV6ZyvVVD/vlGDZYWmRKM2R/U2kuj0K4T04VkM27W/oebDSYYtFXzxkZoGLArpztmeoyL1s452mMnCC25h/avrp+xt2I+U1ElIJEiEaWfAkoGc0z4fiPoXzbEG3sGenzEsu9ttsKr4mmVWdwE2znYxQ==", + "type": "mailgunApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mailgun", + "date": "2021-02-22T13:57:40.879Z" + } + ] + }, + { + "createdAt": "2021-02-23T09:29:07.947Z", + "updatedAt": "2021-02-23T09:29:07.947Z", + "id": "43", + "name": "Todoist creds", + "data": "U2FsdGVkX1+ZQ+H3Iqo6GY28ORlUO2kdl6j5uwphJzkPu4fjngt63aWY5+bWWUKDSm77KfxyKRIfaiLlC3IgbMWvR7vhr43wsgSPhWwxlbY=", + "type": "todoistApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.todoist", + "date": "2021-02-23T09:29:07.915Z" + } + ] + }, + { + "createdAt": "2021-02-23T09:43:33.668Z", + "updatedAt": "2021-02-23T09:43:33.668Z", + "id": "44", + "name": "Mindee Receipt creds", + "data": "U2FsdGVkX1/xjsZ7QCzqu/anvMFyp1YFh2gExdIEMxlKGVf+XgAYCgSgjw7pwjaOc0H+c9UyOO0FQ8yh59EkHw==", + "type": "mindeeReceiptApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mindee", + "date": "2021-02-23T09:43:33.665Z" + } + ] + }, + { + "createdAt": "2021-02-23T09:44:38.720Z", + "updatedAt": "2021-02-23T09:44:38.720Z", + "id": "45", + "name": "Mindee Invoice creds", + "data": "U2FsdGVkX18Def/h8UXc1LyvtDAklLmMCR5/KRBrs99NFVoBrWNoNQZgmp6eQeZ6KqWRvMinWLySGsLD1G5ttQ==", + "type": "mindeeInvoiceApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mindee", + "date": "2021-02-23T09:44:38.718Z" + } + ] + }, + { + "createdAt": "2021-02-23T10:00:05.520Z", + "updatedAt": "2021-02-23T10:00:05.520Z", + "id": "46", + "name": "SendGrid creds", + "data": "U2FsdGVkX1/Qy3woKXJcHu0Il+dKLHNtIliiqCXBj/PYC/OiUXCTMWdhPNSXzClwui2u2lCk/G/EmOTh/4mVFx78vdqPfbBxWa9t/xOhND7PZ2tFSeVCAxEi+/NhqryKFcDHlfuELJNoc7RDvKu7KQ==", + "type": "sendGridApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.sendGrid", + "date": "2021-02-23T10:00:05.513Z" + } + ] + }, + { + "createdAt": "2021-02-23T14:57:18.744Z", + "updatedAt": "2021-02-23T15:04:39.303Z", + "id": "47", + "name": "Contenful creds", + "data": "U2FsdGVkX19Oa7+0moJ8K9pm84xEsvnMq+zc9Wvh5ZHZIB6bJ/9CLxpCE1pwa8w2eg2k43nTs5FEjb2Ri2pgFQ+FZrvgePCvtY/boqrp8JYqCmMwD5okfSY3OzagWZZnbxxC/ed/gF+n+mUWN1HNq7ZRfjur96SQSK43480+OyFUt+YqLYROzuBiSsaETuIU8paej8P7cHtG0NxgAtxse/Wrl9CT8AgPH4OJrCl4xo0ACLhBt/0nDa/2pG+549wV", + "type": "contentfulApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.contentful", + "date": "2021-02-23T14:57:18.735Z" + } + ] + }, + { + "createdAt": "2021-02-23T15:24:48.023Z", + "updatedAt": "2021-02-23T15:24:48.023Z", + "id": "48", + "name": "Taiga Cloud creds", + "data": "U2FsdGVkX18d/4zkKxH6ykIKuyADGk0vKAbliDLg4C+OKu2X5qSx+36Jb5lsc6Nxde7a+WJgpbu4s4KzeKfrzoBpYUY0jfB1JR6jauJI6hY=", + "type": "taigaCloudApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.taiga", + "date": "2021-02-23T15:24:48.020Z" + } + ] + }, + { + "createdAt": "2021-02-23T16:07:57.472Z", + "updatedAt": "2021-02-23T16:07:57.472Z", + "id": "49", + "name": "Nasa creds", + "data": "U2FsdGVkX18vXNAT6KDSAsLy1u5aDAui5VO705Wr27SblEsXnQShsGKTzb+ljT1r7mOiApbC3r08KyxvKe10/PMtJpOCw3aajw61blf71bU=", + "type": "nasaApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.nasa", + "date": "2021-02-23T16:07:57.467Z" + } + ] + }, + { + "createdAt": "2021-02-25T08:25:44.871Z", + "updatedAt": "2021-02-25T08:25:44.871Z", + "id": "51", + "name": "ProfitWell creds", + "data": "U2FsdGVkX19xPtSE9TRS0mwaAw63Y8Ju0Zku5f0k9VZhKq8IvtfrFYhpTbZmz/WLUK2PTjm4mzpyQzi2OS2T2gtGdI8ef+S/W8JCBAu7x8s=", + "type": "profitWellApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.profitWell", + "date": "2021-02-25T08:25:44.856Z" + } + ] + }, + { + "createdAt": "2021-02-25T08:45:54.414Z", + "updatedAt": "2021-02-25T08:45:54.414Z", + "id": "52", + "name": "Segment creds", + "data": "U2FsdGVkX1++XuRK0guHm8ScOP2VMjkmz4pPCxEcPl3mlLqrWB4DPntgrTKIWme2utlbMbIbCUttb4JXZmC6xw==", + "type": "segmentApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.segment", + "date": "2021-02-25T08:45:54.412Z" + } + ] + }, + { + "createdAt": "2021-02-25T09:20:29.624Z", + "updatedAt": "2021-02-25T09:20:29.624Z", + "id": "53", + "name": "Signal4 creds", + "data": "U2FsdGVkX1/ga0VQ/7JAfmu2l5dBandWEBmoRHj26J70hj2ZAaz80EfX23FtrdSX", + "type": "signl4Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.signl4", + "date": "2021-02-25T09:20:29.620Z" + } + ] + }, + { + "createdAt": "2021-02-25T09:33:08.283Z", + "updatedAt": "2021-02-25T09:33:08.283Z", + "id": "54", + "name": "Spontit creds", + "data": "U2FsdGVkX1+QF2n37wTEYca2sh443csUZOySmaVJKlkMmJI5l/WuQAosIp6svTJxIDiQUtfPgT1HoxjuGqE/gZxduaAukURLug1zFrPA2zDrzcNtDnH1vColOJB1Rlr3WpmpPxQUVtmlkFgmA/evrDlEsHs6y/aGXoi3oXaqVxD0icyEiK0sqnjkOjx2K15q3pdK3+MNlKfEhLSvtceRhg==", + "type": "spontitApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.spontit", + "date": "2021-02-25T09:33:08.272Z" + } + ] + }, + { + "createdAt": "2021-02-25T10:01:00.363Z", + "updatedAt": "2021-02-25T10:11:56.314Z", + "id": "55", + "name": "Storyblok Content creds", + "data": "U2FsdGVkX18fu+PWpyX8OvYaYQBsokeO9jd4uoD8sqT+cnX5iwyDSxw8VwsMRL9MXC1htLcVhC+XXvLtTLYKOw==", + "type": "storyblokContentApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.storyblok", + "date": "2021-02-25T10:01:00.359Z" + } + ] + }, + { + "createdAt": "2021-02-25T10:01:19.257Z", + "updatedAt": "2021-02-25T10:01:19.257Z", + "id": "56", + "name": "Storyblok Management creds", + "data": "U2FsdGVkX186K/kl8qU3zSAIcptPOb9d4IGpKgUXmsx1/dnUhzafZttH9h3rUdzfRgudxgEdY9UcxfjYffTsyg5mbCqf4NMOLKYV7qudCY+mjCKNQjpV4pAAK0lDpM23", + "type": "storyblokManagementApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.storyblok", + "date": "2021-02-25T10:01:19.255Z" + } + ] + }, + { + "createdAt": "2021-02-25T10:42:11.765Z", + "updatedAt": "2021-02-25T10:42:12.052Z", + "id": "57", + "name": "PhilipHue OAuth2 creds", + "data": "U2FsdGVkX1/vWmXJFCvnUqKOyIce09k5K/WSvdrV1BxhRnDCDZVEcEbDbwi32/AunLgkkddqtWAts9pqg1fZBwOAPaNQ0T7EFNpnvXQ0uAIORereTYIkVXWONhdzuMIr5jJp/vQ7psMoVPxYauC6KFDEx8oVbX0f4ceR7Ww5v65KKANAlNhAWwxKJvoqXpr0vwHTMPhr8GiQN4gIfortAA==", + "type": "philipsHueOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.philipsHue", + "date": "2021-02-25T10:42:11.763Z" + } + ] + }, + { + "createdAt": "2021-02-25T11:04:28.100Z", + "updatedAt": "2021-02-25T11:09:07.367Z", + "id": "58", + "name": "Twist OAuth2 creds", + "data": "U2FsdGVkX19Dt1p9mEJlmKSLsBtY4YbMStGyY+UewyQ1kQUM+Hnx9qLjnWsLc22uCouPgYhgXd6sHt7wxSuouQzayPaBQfrbWjPuFluXr7Tplux3lSyWmLWZ5yZ88kCDP48zvNCYLa+Dr4qZWWy5qbi5DPPz7Z7cSLEx8BrL49Lgz9fZLoTPl+6K5kfYLQ5qxSajVDBxdv6dPIja+6ArUFCwTI3nTWKRDA7R6LO2JhAoCPDLhEQhuaZ2J7zucdSizL7CD34lsLdH50zFQz4NTBLs5w3LwbSQxYgwdBk6gMNg5HyfbgqNHyBuHnyb8SzZ", + "type": "twistOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.twist", + "date": "2021-02-25T11:04:28.095Z" + } + ] + }, + { + "createdAt": "2021-02-25T12:41:33.347Z", + "updatedAt": "2021-02-25T12:41:33.347Z", + "id": "59", + "name": "CircleCI creds", + "data": "U2FsdGVkX1/x4tOSrog/+i5xBXwlqV2T8ZAAqY0cDMeYL9G95QM0RN84i5U1C+il4dRgPFh0k1zkWBgGrBdNsJyrlVkNXNcJq6cI3ivAMLc=", + "type": "circleCiApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.circleCi", + "date": "2021-02-25T12:41:33.344Z" + } + ] + }, + { + "createdAt": "2021-02-25T14:08:48.529Z", + "updatedAt": "2021-02-25T14:08:48.529Z", + "id": "60", + "name": "Zulip creds", + "data": "U2FsdGVkX191OlYH69pbOCK/txZZtMnZctoqURQu30ltWgpny4Q0xJtNteD2eRCFvQgsQBTlskJC22ipgeI/xENi2MOQoiOGiUco3Hotyi/uQBldZrg1wTJMzwb3nINcnK3Q4UQIGQW7NXnW9J4DGiMTgPBakigwdaGeBHXzchQ=", + "type": "zulipApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.zulip", + "date": "2021-02-25T14:08:48.524Z" + } + ] + }, + { + "createdAt": "2021-02-25T15:13:40.272Z", + "updatedAt": "2021-03-03T14:45:01.088Z", + "id": "61", + "name": "MessageBird creds", + "data": "U2FsdGVkX18e2o0tiR0oECP+m6eNJHWujdEU+tZ6ibwZBnDvQTSOckeI3ZeK/HQ97a+LC5ERFRmSRvAa0R8arg==", + "type": "messageBirdApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.messageBird", + "date": "2021-02-25T15:13:40.267Z" + } + ] + }, + { + "createdAt": "2021-02-25T15:24:52.504Z", + "updatedAt": "2023-03-06T15:34:18.897Z", + "id": "62", + "name": "YouTube OAuth2 creds", + "data": "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", + "type": "youTubeOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.youTube", + "date": "2021-02-25T15:24:52.500Z" + } + ] + }, + { + "createdAt": "2021-02-26T08:32:24.059Z", + "updatedAt": "2021-02-26T08:32:24.059Z", + "id": "63", + "name": "E-goi creds", + "data": "U2FsdGVkX18y61lqpGSJj/wPde7n8cmSBdIIsMhKVffEZkTWJBA+gx51ynKTbN87xJVmWx8UJ+R3gNMK9Y1FNwyS2E+zWCkIOIxBaBKDqZU=", + "type": "egoiApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.egoi", + "date": "2021-02-26T08:32:24.054Z" + } + ] + }, + { + "createdAt": "2021-02-26T09:23:34.436Z", + "updatedAt": "2021-10-28T10:14:20.661Z", + "id": "64", + "name": "Harvest OAuth2 creds", + "data": "U2FsdGVkX19gIX0riuNYg9DGQcyusKHiWMVDYF/m/T98QHVstw7+xWC0bhPLb8CNgM69x/Z3OHxsXHl+6194SSprAPUgEgEFMeIJdjVGHtToC3PveN6K4sAoM+qy9pPCJq8Zg73jHawpXx9fgW40Dn43W1NJo2fedj4wAJPap/z1OfU2CiqMr//0jAdufXzLPi+dWNKJIO3QgRzV34BrrKg0M/gyMz2kFp9xuc1HaRkevI0C64n2pWDMNB7jorh+pqsB+BKAd3gOtfP6+/R80BIxVk7Yk0XlfwyuKiVhuaKJQlyOjYI7mc9ByL3D4mk1laOQPwzgO8gWSNyVKj35Sgx4Plh4hC8AF1sR1rnvy5aI6zdilzOZLcHcPDR93x98tWER158GaaEHJ7M0KvYnF1eX+in4uAAlbr+LkaoMqYxUr+OFR3iE/78xV10V7ezJzhlgtE5ud2A2zr22qdHb5f0DO2l4ehXyyIvekOpxJ0oxkLEqjpmBzLkKv2uQ0lFSd1oA+7hS9yHZWsdNLymJwvUk2hlurHY2YhxXD8Q5Jk+iaQXxA3mK2+dmyVd2H9jVX3d8HC7xJgKD9gFOf6AErd1Q4Nk9eIRf0Y93XXOmAgUrSut5I8UehuGncM7gRZhUrEAnpqqMSnLxuDsTrREKnU8EW7vIOeMcSbTCu6JLQvE=", + "type": "harvestOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.harvest", + "date": "2021-02-26T09:23:34.434Z" + } + ] + }, + { + "createdAt": "2021-02-26T11:20:10.809Z", + "updatedAt": "2023-03-06T11:43:25.094Z", + "id": "65", + "name": "Google Translate OAuth2 creds", + "data": "U2FsdGVkX1+NStrrHlND40COBadvqGl+/zGrGN5O0iho6g5eF6kfrfS1jIKtYAVSazlByTmDhCnBta7+gPLf5xaDaea3EDBSf9AHZhVO9L+0VAgxPNyQ5oBQJO1ze+vVxpGoWoD8dtivUQ3lB3ZDT/zKvCbGKP00162j686w6fwZr7re9aMpALp7vt2/p+cy4y9bZQPSAefncZgJLv8qukSmady6SQHQWJKp0pOu/nAjmrhHwjfOEIYXQvvkVZ/F5Vp3m31n3kZxeuinCWqKtf28zrage4w4N2MEq3jLrOUa8IvaCqQJHOFHwSNdyqwiA6hZFCh8xhV0ij+OgIOUVGRLSYZ1PiSAVuzuLxSjP6uQ7UtIhCwNnwXmxD0dz7OjrzzVdX/jyDNuTlo9VioUqfZ24VdOV8tO09sBwQCKMb5N+4lYPcxiDZGdd1XEjOB43ZYJDnD1jUNtU0+j8gCAnp90ET7oR+XA9ademGyxsMK5y52IQRkcH6BNu++nLcWhVhiqoh4ShxCcyhOR/z6RLyREBwDuK+C6ZpiaprFFeVDKv0hCLsQgAIbrsJPpezF1GW46PIdvoG0gBWiWST7KuIl3jIhbKb0xy7BLhCqJan56zCWPoAnEQvIs8eeEiqG+BARgDham66ky24A+KfaRxQAT2ZO64wEmoYIkfNeAssxbVQ+aRiLrrgGuzzDzqV3tZXCbXAooSAGsny27oIFXMjtjfs7WB9TiEvVsbdLz0sMPhhIihJifmNy1FB1BWxq4v3pfzs4W7aYzByrswDyn/6jyKE7Pv9CDTQGTPWEsWvpenPagXZRfQJT+2NlAoZYsEExC3nkTaJUgm4UJq5ohkgu8f8CPVPjwvmTanOEnPRitmoBJjPPGM8VEvVrWIKgrVg4b8LvdjJLV6mRpU2xv3+j4P3KTlZ+Ir+/52l65X0A=", + "type": "googleTranslateOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleTranslate", + "date": "2021-02-26T11:20:10.808Z" + } + ] + }, + { + "createdAt": "2021-02-26T11:24:45.742Z", + "updatedAt": "2023-03-06T11:43:35.065Z", + "id": "66", + "name": "Google Analytics OAuth2 creds", + "data": "U2FsdGVkX1+F0sfl4kQM+wSoX+PvxCea26tz1KafoF3iRiF9ezfmEt4xuhBhArvCrEsNZLYabqHmcnbbRytU3SUyvWP7UYhWR707ltECvPxfhWyi4H5aFlWB3AExRKodiiwf9U011DTxOqtVkXez1a2AUXjOXl3W01hQyaHSxGYnLh+wqEWh1/LUogCSMi1eeG8zt2jkZAUgvrAcEI9mSlwHi0WNuPCCEPuFn0XQD1L2I/QuAbdqep3pPSwJJ4IUourtHdzxFRtCZQeS+g7ERogFpnTuNzzeXQOlSDRtCCe9zJiMxGNZmycxVKGO7YLAkGnPkMfmFW3v3JpQtAjvLOcATHzDxwQC9Gt2gWGlCBk50922jSzyOB5jQMLZNtjODUNQupQOK+QQVJHZHQzAhRlTydjDJl1ckua0aX+WEpvmuvK3u7m/pY0aY0YaE3wH+e+uMBmoGpZxJxuKbyz5XMNtyZr6RKNV1UeGz3alAmXRE+VENyzKy+6M7xJLfUcT3J6f3CqdBLDn0782FNPev+wIUwPi/pI1VnmZ/yqsFZiMojZffXe3291SjRMo0UeVNWRFeJp+wiTS9izSuUALI4FS/mpG08zh5sslNycKhlKXDVrNPtMYt764wbNLvdm+Hf2WxaEhYDfiYidOaboVGX8TK17yOpyV5s7DfeMZJi2qIPhoASbQUfyBnc5Xepefk8LzS26i8O5Ftgmddl7fJKje4eajv02Ta7J6Govui7U2PLamEsbsYes+y0DYQGZuR2xsZEpwwnzWq5qdi4xGOhrSqG68gpNm7L5XJk+hdewwgUjF8E8nZVShBL/rG29coSrT2PaHXjOqWidK8uoUQ6E7CufQ+1+p1wTD6ryO+FCId6KkmNjG8HK40dw5WHvPYRygRlukH3S3Zxmxk98n9JAnMKHFa0aVOLtrcMXfaCMsrXa6IPW4622pi4aj4B13NRS4JV+KtzIGEWr0QxbIxigSbqUB5pqatY2Tjm/kJEBBQ+xlCmx+n923pdTwvz1ilY/+8QC63SktbfUp5/GCBP5BQUc/1sZ+kd9Gxw5W/bc=", + "type": "googleAnalyticsOAuth2", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleAnalytics", + "date": "2021-02-26T11:24:45.739Z" + } + ] + }, + { + "createdAt": "2021-02-26T15:31:06.279Z", + "updatedAt": "2021-07-12T13:42:58.440Z", + "id": "67", + "name": "Zoho OAuth2 creds", + "data": "U2FsdGVkX1/PHbhszEfSZ7bN4MZZkmaNwKQoFZBG4pF7/ZHUFV0DoTUwqujK/2wOEDxe1FM04hPgOqyJPu+MKRp2c20X0EWVPNRtokD/1+HmqdXOOx6k4X+lbFkfQelI2dWWyprmvi40fwoMdGLUpu3HJc8o55G4q2dtMqPYrmtFHkaf4Op5uiYlayZqmsqJTPWxFPdhMKGpmjZTdNQQ/2qe8cv38+z7Ck8DB665LMHA+KwhlqYopcXxPIQ8i/0ClRPH8FKsOqbByty3BiNToSvI+8kk2H+RUlY1+oiNLgiM6SnlASbKSAv+P1iB+1RE5A0eSIDdjmAE3oPqT5RqGGVadj0+0kdb4lSyMxWum4nXNd7Oj5b4TkD6b2xAcSS5H5Z/4W89icxyMBH13jAi9OfLb9XxWLIikhw7fMv/6qyOIjpoujdwk1axpur2g9TQu4aslhVEvURJYlNxyzTjSz6IWwxybxUGMQp5VVuxTTGnizKcwQzeskQMYHDkSTa6jwREC7eZTR79/UBja0PghskLlk4fIGy2gXSR5YQ4xDNyk+RCiKX5/yN0j6/bmHriBmQRv4O8mEIgCww9QlCNcpoTCK9gPb64DcafH9nYSh24fZl/8dXsi++VGxBCePneIl3a1fHzzA+mr1tp6SKjV9dF8Vh3caodQtYjvTX8LPQNK7Gl5lvKWljTNuP9uxtglERZ7+8e61vWwLHecbY4OA4r9wD+b9DjVngkFtmcM6dN136+KbQ+5UKAapOIgr5NTFfOrQrUBdCEKAuUp00O3jTqLcWhjKhsMDsOrU/8kcfNmuAwMvNQGusmYzQid/+a6/DqmWLEvWWCflgkB6uftGUW4H5HVwmPL0Q7D9Ld+/JpLYxYvGuizAC3owViJJMNWxsJjQwcQDtvJvUnc4NhvkiAOOvURCzsXwj6CLCHnAGuQugSFwFJpBETuobDs55+zzl1/axiumMK5U49tNHtZnMTYm/Qsw9UNP8mWSsqzi4=", + "type": "zohoOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.zohoCrm", + "date": "2021-02-26T15:31:06.275Z" + } + ] + }, + { + "createdAt": "2021-02-26T16:08:41.778Z", + "updatedAt": "2021-04-13T10:26:31.116Z", + "id": "68", + "name": "Zendesk OAuth2 ", + "data": "U2FsdGVkX194FIYOkTkfh8YriL4a3jwoRvtU3bvvVuDSICwS0mODmmldCtKhXiwUugqRLtOWBNeqTfRIUcOnlzPjxU73pF08O06wfQnuTE5RcmG8PjXTnD9eBinn6IqdFf5BmdDzCWYdnhTtXzTUb2r20OCseIwe83PVoZetcSdrf+UYGGrNFkjPZpUMZHyCDUuHFzvJyHokSgOm8sqK9kp/1s/otFliiJJo+a6W6Jys5u4JDexjNuxi7YMErXuOSFdFP8ou9kJBop7MzMZnyEEVwU5FxAMLeQ4QYyTmMWy31UjJ32cnqZHxWH5eBe4ee2AfmT2ZUpOldQjDV2QOmswbjzz2H5IrLRWC1Xcpz9swMpPLdCa08CBzJHfKpMg2qW+BqaWVWmu4OgtuOu1DWuBGV8xrha3zIVgXbR+GZ3uQfEJHJELEDYKxr/TsbUyT", + "type": "zendeskOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.zendesk", + "date": "2021-02-26T16:08:41.766Z" + } + ] + }, + { + "createdAt": "2021-03-01T08:48:19.991Z", + "updatedAt": "2021-11-12T13:12:17.994Z", + "id": "69", + "name": "Microsoft Drive OAuth2 creds", + "data": "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", + "type": "microsoftOneDriveOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.microsoftOneDrive", + "date": "2021-03-01T08:48:19.988Z" + } + ] + }, + { + "createdAt": "2021-03-01T09:32:36.992Z", + "updatedAt": "2021-03-01T09:32:36.992Z", + "id": "70", + "name": "Phantombuster creds", + "data": "U2FsdGVkX19vXLwfVWRl0HwLwlCfclCynvIxMoUNSZ5L8PF8GEFUrAQZUE6n3/4Bd07jpO/StLJbCZhvtnVMOKtP3j4Tu41pGdt0hOGwJuA=", + "type": "phantombusterApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.phantombuster", + "date": "2021-03-01T09:32:36.988Z" + } + ] + }, + { + "createdAt": "2021-03-01T11:00:33.420Z", + "updatedAt": "2021-03-01T11:00:33.420Z", + "id": "71", + "name": "Matrix creds", + "data": "U2FsdGVkX1/P87NNIRrCvZ7Wek6+PRyZIdvjv3n9pBqODH8BSb3EisCyd9pxn8DFH5DDkysZmqmSX7LzcX9yUI7nsZO55qyoEhxfqlvHT+iMYMF5avnPNqSn9ixA4OpvcVkqzHWVKvJ5XLNfg/o82uPCIScr52Jqy3tWZBjPqsjxVUM87GXB5zPaGImV9wAuzJoa8yLB4dxleyBTT+O1ZPg77+Anp6cL56qfYlw0IehZrZcUd9XQMh2PrKkp68biuDM/wU70tNmNqUAP3s5M76c5IHK+wG++OikTqB2jL6Quw7eoRrdejWjqAgAcMpCW6X6KOEuvhSpixNeqfdGclnFS1ZcDQrwtJcW1x9RkE8q8LfuRl3GhwEMDYYy0giRM8tMFsbcB3wsSRx0gDKTHqA==", + "type": "matrixApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.matrix", + "date": "2021-03-01T11:00:33.381Z" + } + ] + }, + { + "createdAt": "2021-03-01T11:38:38.114Z", + "updatedAt": "2023-03-06T15:41:00.458Z", + "id": "72", + "name": "Microsoft Outlook OAuth2 creds", + "data": "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", + "type": "microsoftOutlookOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.microsoftOutlook", + "date": "2021-03-01T11:38:38.111Z" + } + ] + }, + { + "createdAt": "2021-03-01T11:55:26.940Z", + "updatedAt": "2021-11-12T13:12:36.858Z", + "id": "73", + "name": "Microsoft Excel OAuth2 creds", + "data": "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", + "type": "microsoftExcelOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.microsoftExcel", + "date": "2021-03-01T11:55:26.934Z" + } + ] + }, + { + "createdAt": "2021-03-02T10:00:46.756Z", + "updatedAt": "2021-10-27T11:06:21.565Z", + "id": "74", + "name": "LinkedIn OAuth2 creds", + "data": "U2FsdGVkX1+ckjPhFVeFIRl7aC+uDvlzUqHTpRqJss/ciWvEjMHTMnuASd9wOf2JK4lcHqZtWkxFiT+Rn2woUQ3M8guOiGlnkMzTPJdSluBgWbIK76NOCZdPHULW+trSnlx1KbZxyTU5cBwM1fnlip/5WC7ibQ6+Jx7mTAg6M8+CBetR8KosMPreN/KU6RofFoOS+2FX2T7kk91LZKhLC3HHbLEHXJytLrXZ95Hlw7P0ZYyULSRJEy9VTZkREZATiwtAEjtiGSnqeq84guQ0u/QnKirqn/9ux+id+nEzNfFfrRN45PNLcZv/2gGpFqhhufYZhRW601xTvuWCwgedUFj6X8hFrlY2bjs0cU/Ox+PMrFn3pMtiw6DpaeqyatpNvw7gCreIv9byDXDXJKJJNq+ogP31em40CK+VCNcyIOfCdctpJceTVRueD+8GdWKqGO+Bv2c8RmnnRbBgUJeNbTqkyM/bjAXDiIB5IxbQGshEHDBGV8v6Diif88HFXdkG5TwavL63GgxVQxfiW6y067lYbLH3YtSNSDzB4rFsxco0mRBUq4+xADexa9s5ejAtr+Gf31VMiITfu4pn2ppQ/urO5WmZte0DLpwC6C/nOvfZQc1WtbzWTgUWBR0dgSY8WYW2Rr/xBgB5MnmxRJkSS3Ryuzs9QCCacHiuFMbjoOlVyEWUZPbrMh4vSCp1Oqd9", + "type": "linkedInOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.linkedIn", + "date": "2021-03-02T10:00:46.750Z" + } + ] + }, + { + "createdAt": "2021-03-02T16:25:26.622Z", + "updatedAt": "2021-03-02T16:25:26.622Z", + "id": "75", + "name": "ActiveCampaign creds", + "data": "U2FsdGVkX18W+SLv7gUuy10NEDU3kkFR50l77CVagp7KlMOt/QPi4uNpb+HZH6iOBShJD4eAl7ZWqG8RaOLwbmgQ6rSCDp/Ejirxv6xOu5toQU+dcqBLBG8Xxb80XcH2iH83hADIinW+MzHBRoxyv1nLCAGbZ+WdFFLyjUdCbNYaCJ8OnUiDJ82z+fGzmWfPXtWAp7ZdsQgJkO1HRHqCBw==", + "type": "activeCampaignApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.activeCampaign", + "date": "2021-03-02T16:25:26.615Z" + } + ] + }, + { + "createdAt": "2021-03-03T09:00:16.838Z", + "updatedAt": "2021-03-03T09:01:02.915Z", + "id": "76", + "name": "S3 creds", + "data": "U2FsdGVkX18j6CZWeaGqrt9PWsivbWbhOdp+f+5AlePE6pNz5eiFOyAaN84/2BsUh35Bb7lptiiv4OAWbRUMNVMrrHz/gHOSmlW5k8Za0mNv+yzNQBVNPWTgM8FY2DJUWjIamFGfvXH9iy17SIqtPNejNmHMPw8gP3t60gWxlrYsDrjDkVFqbpRvm8eie3Fqin/mOctRhc5RtRBdrJBEz3bzAPEQjzaRHzG2LeU/kA5XMGTfUIFaKEZAxhNMz2Mz", + "type": "s3", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.s3", + "date": "2021-03-03T09:00:16.832Z" + } + ] + }, + { + "createdAt": "2021-03-04T13:43:11.683Z", + "updatedAt": "2021-10-28T11:30:17.299Z", + "id": "77", + "name": "Box OAuth2 creds", + "data": "U2FsdGVkX1+u04oWiTQml2xFo1N0bF+0LN6oa/QW3wRYm88OuvD1gWzSMrsqmt0ogyYRphaB6usFXB/JUsknrHtRZB/DWoo1WYtSREKsu6r/t27nWmE8PPUVkDY9z4cBHGU7wmrPEHMMHLdFreM8VVwNDMqVTIH0MKy9kurxMSbN/rqMI6KF/744KrJRhjK5AdXAu120V9VveO9sjmD1KN79GpZnSpcY4IIhqOgFacBa/rL64bURIxgnaN2HGit06gJmpp9Z6/oPBBu7ukLUhlgoUvOyojNS1tOkpjm0hg2ESLds1KTTc5hUtFQl4MS9EU+xBLitSagNhKgwaNuj84YnoBNyXdOPDgw7dL7Imllb9m+Ic9JNdr60b15RWn6U3MO4NLy6AUf2ITeLL1/UkBTkDcLZt3Owvp1yF/NXNv+1zlssdPFBQ5/1v+sTAZCy0K3jDpAigjYe2eH+1aOTVCqboRNF1KGmGapPVqAo4IJ+DGj/DaU3E6MslATb1shOrLDz3b3Ar4MXes2dk30GOob0mttZt7UcJPQke4ojqFIaC8IgtWgrwFGKzeqYBOWUS6Np1Qza5uvPuheQN4vetFu/9+p6esap4a5fL9BGpJztdJcKDyTFogGVtA33S2iZM5n8D6i5tDVZLZLbDEso5Q==", + "type": "boxOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.box", + "date": "2021-03-04T13:43:11.678Z" + } + ] + }, + { + "createdAt": "2021-03-09T08:12:18.169Z", + "updatedAt": "2021-03-09T08:12:59.310Z", + "id": "78", + "name": "Customer.io creds", + "data": "U2FsdGVkX18xYaYa1fih1Ak9xBxBEcc7kL9WyUBpTiFIlEfFwXG0c+Oy5po6HiAHLJdF1NcwjETTyDMaaQSOTtIW6cSgZVxWWvwQz66Wcynu21E2ZBdpWPpeXtkEcvrf48uTQNBEjew2VWi/gvAYAI7EsWPLnlbcKGSLR6MBjnXDjd2InyvRGKDvkqRgf8jAcbX2eRhJcJY7SXcekyikfA==", + "type": "customerIoApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.customerIo", + "date": "2021-03-09T08:12:18.164Z" + } + ] + }, + { + "createdAt": "2021-03-09T12:43:48.282Z", + "updatedAt": "2021-05-20T08:38:00.279Z", + "id": "79", + "name": "RabbitMQ creds", + "data": "U2FsdGVkX18AeAvLNz45uTV/AZuY9NhFbt2nj1Xgk0Qo6KqJpGfSPOeqTUmwih28kpkqUrYEBwOD/fFZMHhkOy+Hx2VsniZu6VZ6q1XeO4nDkpn85iBFQii2Fgj4QZ6ElTAwuRZ2EZbmLvih0ZGM2g==", + "type": "rabbitmq", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.rabbitmq", + "date": "2021-03-09T12:43:48.274Z" + } + ] + }, + { + "createdAt": "2021-03-09T14:20:45.836Z", + "updatedAt": "2021-05-20T12:02:32.803Z", + "id": "80", + "name": "AMQP creds", + "data": "U2FsdGVkX19X9RUEWDKX9xPj1oZtR55IpUt0jGMm1N/3ofT2fNyP0bb29pLMvx8flJpNEqaxEPilLwHJWgdtAgoZLdXqxwRUtGhURtPlzY5tk9uCn3k6RUrWou8vIOO0h92C9Rjj9ECaOMfztk79/pPk+0YtMov3oVbto6BZUU8=", + "type": "amqp", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.amqp", + "date": "2021-03-09T14:20:45.830Z" + } + ] + }, + { + "createdAt": "2021-03-10T08:50:52.438Z", + "updatedAt": "2021-03-10T08:50:52.438Z", + "id": "81", + "name": "Cockpit API creds", + "data": "U2FsdGVkX18Wg9sOJHfAFVYeyoufC6+kq89NGn6OwGGGlLx+i1vaJWKOYdU84dPMwYUH+N3Ka+wjslx6VYFqzGSLIRWSe0+R/p+d3NTCJcare7+ohHTbBFh+60v9TXpBi9OcyilhMRUSiXemrxyuYw==", + "type": "cockpitApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.cockpit", + "date": "2021-03-10T08:50:52.429Z" + } + ] + }, + { + "createdAt": "2021-03-10T10:24:16.085Z", + "updatedAt": "2021-03-10T10:24:16.085Z", + "id": "82", + "name": "Ghost Content creds", + "data": "U2FsdGVkX1+TNAOLTVdPh0YRViINswv5hzwB+4UvCSKdk4h9rcquyMrOtsHBbQhW1EY8w6A/j2I8/bSkIuL50TlHa5o1aYMY55JM9oVmdO+vIMjVoPxS2oGu+wuj+4DU", + "type": "ghostContentApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.ghost", + "date": "2021-03-10T10:24:16.082Z" + } + ] + }, + { + "createdAt": "2021-03-10T10:24:40.932Z", + "updatedAt": "2021-03-10T10:26:51.110Z", + "id": "83", + "name": "Ghost Admin api creds", + "data": "U2FsdGVkX1+SRpIFNtzzfGZwnTmykQFg+c12uMUCPuPzR7WQBrKq1wIctFb5XuQEG9eAZW4KmYFjbyfcFDXrHVHa10mDafeIVneNL7aCB5t0fhTGPtWJZetmJdeAZSjmcjO6WNLOCRDaa77GYR8FaRqhytUByOFtQq5+QXN32zBtCnSQi/WxodKICCbvh5c4VQvZeKt7zFf5uJnqXLC5Hw==", + "type": "ghostAdminApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.ghost", + "date": "2021-03-10T10:24:40.930Z" + } + ] + }, + { + "createdAt": "2021-03-10T11:06:38.526Z", + "updatedAt": "2021-04-13T16:46:11.783Z", + "id": "84", + "name": "Gotify API creds", + "data": "U2FsdGVkX18xgudNECIJK0mBFNJLvzrF+BsvkEc6IS49CAlCSF9fOzuX7uEQAT0X5SbhXQrmifGw2W35rGolz2srrAmTTlK1ihXw9rXzXevNmjLRvywHkubMUiqFLx0aQbhKUzUyDZPkAM8dV7/0rA74tkMtL7MpmaSz5bHuU7Y=", + "type": "gotifyApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.gotify", + "date": "2021-03-10T11:06:38.521Z" + } + ] + }, + { + "createdAt": "2021-03-10T11:22:50.635Z", + "updatedAt": "2021-03-10T13:29:20.727Z", + "id": "85", + "name": "Redis creds", + "data": "U2FsdGVkX1/eorJ+2PBnpfL7fZovMHUkv2I+nk3rgzDFy39kZhQlqAUbflN1ZdmIBmzZxQeM/XBSFxSk4G6A0jktorg01xhoZbOKAh1/h98=", + "type": "redis", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.redis", + "date": "2021-03-10T11:22:50.632Z" + } + ] + }, + { + "createdAt": "2021-03-10T14:59:28.371Z", + "updatedAt": "2021-05-20T11:33:59.423Z", + "id": "86", + "name": "CrateDB creds", + "data": "U2FsdGVkX1/FqmItC7w2FpP48G1Y/N+HEfvxdUeP6MTzjt3aO8EwtdJAdHZ0lBb4XXHv2Tvj9JiIwSDcDx1XSlPr3M2omC6tPA7+Ssmy8tb07DnUBxoA+pAYNW2jzDqcVRO8Q7GH/8Na0xukhU/KGQ==", + "type": "crateDb", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.crateDb", + "date": "2021-03-10T14:59:28.364Z" + } + ] + }, + { + "createdAt": "2021-03-10T15:27:31.299Z", + "updatedAt": "2021-03-10T15:27:31.299Z", + "id": "87", + "name": "MySQL creds", + "data": "U2FsdGVkX1/S61GLvMW0XIJTyLvo1e1S7EvgzbOGiFek524hwrf/0/9UGj/hSYLV4dZeCOWWJaVzBJHUH6UxaqoEknCElhrh+RGWV9X84sT65Z+ZsOLCEqB4XmTn20I1OJggjnL9FC/owalBUQ5zBg==", + "type": "mySql", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mySql", + "date": "2021-03-10T15:27:31.296Z" + } + ] + }, + { + "createdAt": "2021-03-10T16:14:50.455Z", + "updatedAt": "2021-03-10T16:27:08.802Z", + "id": "88", + "name": "Mautic API creds", + "data": "U2FsdGVkX18UfkxcMVMnyvulFh5v4MsHRBsbbQsB4MkkXXZMgjNNY2Z1yunbFWCzVUVcM7/7CVlTf3oRYbKw4siibl6lk0rwZuviddJinIlUw1UGAVAS/8pcQ9csUGxJlIU37EmvObSthOPlfDlDrQ==", + "type": "mauticApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mautic", + "date": "2021-03-10T16:14:50.450Z" + } + ] + }, + { + "createdAt": "2021-03-10T16:29:41.836Z", + "updatedAt": "2021-10-28T11:30:20.484Z", + "id": "89", + "name": "Mautic OAuth2 API creds", + "data": "U2FsdGVkX19dCfGo1uCKZje/1GRIdUxNmI3o5u+rE2xiejb9rSIE01A0kacwN5utBwgL/MLZvOfvHyioKuaqZ3RKnTg6JaKL9tEK7hdhr6HK9kuubqdoksfcjnP/bmKLJhwB52vSCCx8n3DEpb+09cYJI3tT5uRnl0BuAje8pYIYQd7nmM0hAQe/rgbcQLBvaI+IYIPodPMUxrVpXizxSoVC6N0SRRjC98jEH0xVdwvKmYkHMTrFJCUlL1qN5PJ9NI4fjFz+PdrOSCel/6C7f+8goMq8EqM/Q5RR1NdFN/sa/ta1nv/3ivSNQkI3NJSv8wjxlKPmAlp+dmbiz3e7hC4C9N7AOL7Ug7gerf7XEN2dDQgRjZBKaNm4aqjuMOIDnF2gkQe8qi//m/YSI7U0c006gIkxTnDgKPUKjilCcjtpGo9KkvoRX//cvrwlvYRqRc95hLkzaT75LljQqmIWgi1L3vufhsKQbDnwue2WFCR+DfoGY75/6HHifnD8U1Zctgx6962MUtJxjs5X4pwAlvEn7QuB/N/fiqW9OC4ePMGb+tCsWieN2S77nhiCr9tAVRhn0q2OYe2dg+4kz8OlN+7WRKTLjQfzUTJAjs38/QaxHxCTgPy63Rw9Mde4wF4D9x+fndaoxXJxKk5yxVidvuO8mwyIDwbwxJyqR4mKo4nohQ4MOR74t3dDs0315jqjAShBTytUiSnzD1nfmIPSOoEenMuzUMTPW1m4Z2RRnsVVjAKALlCP7I8xiJZoFwO+XC7Vzu/HQUZ1m25yPtY3lg5Qcl9FqmogdvNTjckw8JKRSGw2f8b0Kf0kO77Hbl6fDSgJkSDbn69anbJF1jraXc5azT+yqL2MNb+QeM8/1LE=", + "type": "mauticOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mautic", + "date": "2021-03-10T16:29:41.832Z" + } + ] + }, + { + "createdAt": "2021-03-11T09:10:39.937Z", + "updatedAt": "2021-03-12T11:30:31.155Z", + "id": "90", + "name": "MongoDB creds", + "data": "U2FsdGVkX19VdDhEFhUCeW1BZk7DkUFX6zvlRNRhxoY9puM/2xlvJt2EIu+np9RsNvpq9VrsBhi8ap1sC0uiSN6GQeDCnCCN8/IvlSlwWuiPDai0lzQ7eRLaRDAfhbx40FAQfK1KLW+bbVddeQVYvQ==", + "type": "mongoDb", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mongoDb", + "date": "2021-03-11T09:10:39.932Z" + } + ] + }, + { + "createdAt": "2021-03-11T12:08:10.123Z", + "updatedAt": "2021-03-11T12:08:10.123Z", + "id": "91", + "name": "QuestDB creds", + "data": "U2FsdGVkX1/N9OGwXIhnHPyDyqK6Y5ajkxZd1MlEBVJmdb+FZ9eheHQ+Cmi3/VC0sGW/aKRXEduxqA+Nh5ZMHIGJyK8kNej1yj7BD7BVHXwOHBzFgHLObH78pncsJc2f", + "type": "questDb", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.questDb", + "date": "2021-03-11T12:08:10.116Z" + } + ] + }, + { + "createdAt": "2021-03-11T13:11:20.456Z", + "updatedAt": "2021-03-11T13:21:28.295Z", + "id": "92", + "name": "Postgres creds", + "data": "U2FsdGVkX1+R4Frm5szecbkG6nOk91uePHlHRSowvgnUi7jxpTYoS/2gAMD2iBVatEzm+vrehhv5MQ9BbbtVJvsP7FyH53eZaLe+Y4CaisflkDWG3o2C5fcXlLSScKyP", + "type": "postgres", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.postgres", + "date": "2021-03-11T13:11:20.453Z" + } + ] + }, + { + "createdAt": "2021-03-11T13:59:22.856Z", + "updatedAt": "2021-03-18T10:26:59.786Z", + "id": "93", + "name": "Kafka creds", + "data": "U2FsdGVkX1+rWU9thAgHLGdI2UgdcVfSGCSAQkYRb9LWs6ASmyQcg0rNn9FL8+hZHffroK/VRVLrDqAuCRZKsDiUGDCGo9RZN5bi9qkVmxnzbLbDWhfhTCheBM4TEuITypYyHUnwwka56YjBgmdpjP7zEhDUKW9o6wsp0np3I7nZdlsllVEVrRNpb7d7C76DMJ9wNi+7C2Nr8cSywNKwuA==", + "type": "kafka", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.kafka", + "date": "2021-03-11T13:59:22.853Z" + } + ] + }, + { + "createdAt": "2021-03-11T15:11:08.706Z", + "updatedAt": "2021-10-28T10:25:18.167Z", + "id": "94", + "name": "Rundeck API creds", + "data": "U2FsdGVkX19MoytoZIpT2F4JLX+owySDLMvAiLJmLeiqGf2lxJ8jcBHvH789doN4L2+kJbc4fHur7DiknckfSYC9TCwk2dpe8y5MiI8/7v6JbInpy99IQ4xns5kIwg5y", + "type": "rundeckApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.rundeck", + "date": "2021-03-11T15:11:08.704Z" + } + ] + }, + { + "createdAt": "2021-03-11T17:17:14.643Z", + "updatedAt": "2021-03-11T17:18:39.467Z", + "id": "95", + "name": "Yourls API creds", + "data": "U2FsdGVkX1/YuUuye5uQXe3GNUqXhPtgJ4D7B8QBoFEt5lSLIMah+CtSBAhXgmcrXQDKfcDxz6WPifZOoWKigiuzbAROEcB637teGe8XLC8=", + "type": "yourlsApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.yourls", + "date": "2021-03-11T17:17:14.638Z" + } + ] + }, + { + "createdAt": "2021-03-12T09:09:03.077Z", + "updatedAt": "2021-10-28T11:30:24.515Z", + "id": "96", + "name": "NextCloud OAuth2 API creds", + "data": "U2FsdGVkX19QtT3IYsYHzTBMEyC2ptpKQ2BFukqLGXFDjyJHbyTq3yh8y1bIsosRedrvfCQuRWyG/yUFIv1dV63oZbLiWVcgtgypcpVyypXmvqrDpKMVbQlWCAPOumcfvJzOR/Nb+oFSu9O2TAonJNSUrRn254IaRSpylB+vJClRIyi4ycAv91W3JwfGAnS7N4EFOqbpjONN4K4rmx06XSxMgfUytE6XMBfj4URYsPkG181edV9c89hX2rkKpBU0YCWECEAzgO3m7cQlsXwxoALjUAoPgtwk6iq3LOIr1Ko06V7TNaexxCEWBszvGos033Eo/nTp06sJk4eJXzY/CkJLdtSWbFo23+MGcvrcFitaeooPAHvYQiRzvTyRIAP+6Zs8GswgjT2f/HhicK/X3Pwp+S39vjg1DcSbElVdd5mVaWTPaWdbI8M6GQ6TrrpBHwDQqlMK5uW47RFAFAVwbRby//ijhz95p2wqaieRRFJjNsn1ejleSdsw8UzEWP/Pwz221wgUryi0xTiye+4+3LINfBtJoLUTNOw9wgR5vOUYVOXl6mgYWp/hBdVdKeX2e68v+87qZR0anXuEFGCsdzdP9Roz9XnumKp4AxoxE+ZP9t11WiLp05DUxf8sVZ8tVeA5kYx2Xem1fpgRJi+zsA6wWxVp05w77heihZOBrWrPx7cHf7ozMRDn5gDgCphy7V3eM8sk1eRP+VbHA9fg+X2QObGTs4bFIc4h9KVj2aLHA4hLlflQp7ZEkGxZ4M5Ro8UyGwfqh2+rZJF/KwDG8DszlUb0E3HHtJTKqzw0EkS8LvuZF/LP86sbHg4gBDi2+r+FUiC2U2AytSkc2P/r1Flca/bLov4fNgpaPLCQCcbCRnL6vQCK9JcG6pGE72V0u6bhMEk29ugECqep0cYZXRbKD/mRMbpQz6JpmE07Cw6fmFbJnyzk9XaUOonHoZY3W+LrKL1v54JnfOLiarnXztG9eTZCofDrpBnsI37jhjM=", + "type": "nextCloudOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.nextCloud", + "date": "2021-03-12T09:09:03.070Z" + } + ] + }, + { + "createdAt": "2021-03-12T11:40:01.879Z", + "updatedAt": "2023-02-20T11:04:47.455Z", + "id": "97", + "name": "Wekan API creds", + "data": "U2FsdGVkX1/Qia18DYmlRSucqmePYvwmX4Z8WJDbQSCLZZZhjNE+e432Y96+of/LqxeHRKDK36YUvkOT4Zyvoxt8zwYk5gnXYEhA8VM4jpnmYLlEXvP2coH7+79beTQnFtSiblt9DY6kiQ9sZCPkHxlWpVVTwLiodlZ6M5mGlF3ibRAyfziFR8CQ6+HX3a6ESeZiS8XpAVvuIvIxttgFPQ==", + "type": "wekanApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.wekan", + "date": "2021-03-12T11:40:01.876Z" + } + ] + }, + { + "createdAt": "2021-03-12T13:11:46.131Z", + "updatedAt": "2021-03-25T15:23:50.434Z", + "id": "98", + "name": "Microsoft SQL", + "data": "U2FsdGVkX18OjvLpm+sUCUJogb+mrx4B1Fhu9ILn9v3eOFS6L1hW8b05Ocp2PMM181JqNeyuuU0LZ29domoAwZ08IrBSknLtPy4CfNvfRgs=", + "type": "microsoftSql", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.microsoftSql", + "date": "2021-03-12T13:11:46.129Z" + } + ] + }, + { + "createdAt": "2021-03-12T15:28:11.857Z", + "updatedAt": "2021-03-12T15:28:24.902Z", + "id": "99", + "name": "Line Notify OAuth2 API", + "data": "U2FsdGVkX1+xSNwjOdBqBUIXSvai4AJ/B0Xilj0ktq/QoH6TWBiztIDKcV7aYMdQRy8T81/7BQgyeRKecyXKRZOsxhNi1wN+RYqJYb8w/izJ8yKKWDgckR44RCmGnlh/hjW+sRaKxpP0uqe2GChrtTHcTSOOzyHCGe97mZNksHL8hwO0Xj2s7kK4M2P3vISgigQnZpQi07N1kRFVVJFEV56egA1KDzcQW2zFFAXZdd5CGt9b0rqD0dXuVe/Ma1Nd4tYwvbLcCkQUdBE11HwmJlNQVINqjIhog4L7yGofqE5Ye7uFYE+uM338dTD0GR1eujDhJV1WfaH5BBPrDUhg9A==", + "type": "lineNotifyOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.line", + "date": "2021-03-12T15:28:11.855Z" + } + ] + }, + { + "createdAt": "2021-03-12T15:50:41.447Z", + "updatedAt": "2021-03-12T15:50:41.447Z", + "id": "100", + "name": "Mandrill API creds", + "data": "U2FsdGVkX18wwkOLFQswsvPfxPV7EGPE8rz2BVZRmhiy5p0rj4/q8v+Pq/J+UA4JpHgpTwQSFoLJcxnbtCFHjQ==", + "type": "mandrillApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mandrill", + "date": "2021-03-12T15:50:41.446Z" + } + ] + }, + { + "createdAt": "2021-03-15T08:07:51.815Z", + "updatedAt": "2021-03-15T08:07:51.815Z", + "id": "101", + "name": "Twilio API creds", + "data": "U2FsdGVkX1/Hm6KToJ4wYYYp1RPiXzQnl8H7C6VGFTMLgjlg8bsI+Z3qKsZb6XmbNxsN8pZtxSk08819FDDERmVJtGDteE3PUbrSwX9ZBvted/SF93KyL0PrCtIxRtOeHd5tquC8QMVHy2HlTl1/KDCVZwG0zCK1cJnaACH0FOs=", + "type": "twilioApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.twilio", + "date": "2021-03-15T08:07:51.810Z" + } + ] + }, + { + "createdAt": "2021-03-15T08:50:20.567Z", + "updatedAt": "2021-03-15T08:50:20.567Z", + "id": "102", + "name": "Travis API", + "data": "U2FsdGVkX197DT7QsA2ASxrFzL+fJxEil+VzyuZvlZrQzTP+vzquYU/h6m80jBYrfXHyvGc74cxzdHjX/LZ7LQ==", + "type": "travisCiApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.travisCi", + "date": "2021-03-15T08:50:20.565Z" + } + ] + }, + { + "createdAt": "2021-03-15T10:40:08.581Z", + "updatedAt": "2021-05-10T10:08:44.134Z", + "id": "103", + "name": "Cortex API creds", + "data": "U2FsdGVkX1+BOc0IlJwZnb73ie9l4VzT0h52Urrsf6r09AMleCIsQNdCH+7hmC4hAM2AKbgcLPjPGwxTN7hMRWwlTKi7nh7BinHXheGeJtp91MKse93YE+VH3Rvp6JJ/plIDmiJTp1FoQFNPPDqbPw==", + "type": "cortexApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.cortex", + "date": "2021-03-15T10:40:08.579Z" + } + ] + }, + { + "createdAt": "2021-03-15T11:34:15.209Z", + "updatedAt": "2021-03-15T11:34:49.148Z", + "id": "104", + "name": "Pushbullet OAuth2 API creds", + "data": "U2FsdGVkX1/acNZEycwY2oYwzm/qKfppF3HlTQy/vC5TI7QDcPkrAvzzINbzJ866e0VmMz9ZHhNXV6ZAxm3Ofs7fa+xTRbyfsfjHApBvN0B/VcYPKnH6WRQ3rv9quVw9UBS8HJdS3M+HVYf/VvrKNVwhm0ebTuF3SJr+9/zHrey23gZuKsQNcw24jaYDGSYiJ64eLg+rsUh93QoMDOq8mmgiHb9z0KDudTKlB728rHPo1ELA/k+F6z6F4p+j839rAl+wsfLVmM5Z1MCiEyBkAw==", + "type": "pushbulletOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.pushbullet", + "date": "2021-03-15T11:34:15.208Z" + } + ] + }, + { + "createdAt": "2021-03-15T13:09:48.087Z", + "updatedAt": "2021-05-25T14:27:49.598Z", + "id": "105", + "name": "Twitter OAuth API creds", + "data": "U2FsdGVkX18riumSapB5XXGF1EBh0TEEEVdxGzpWWM/KLB2RxO6eop1nQKUIcdF/tR92J9faZGVQa6vHsbpKdvBgK7AtceZlR+t3obChNOEhz3IdPnLuwDl4uDDCjmb8FN4TP7DgHV97MHdFf0okHw/Ds5pJheSkeL0OuXSc/1fa59vHan7pn11KZGtgwtIU", + "type": "twitterOAuth1Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.twitter", + "date": "2021-03-15T13:09:48.084Z" + } + ] + }, + { + "createdAt": "2021-03-15T13:50:05.544Z", + "updatedAt": "2021-03-15T13:50:05.544Z", + "id": "106", + "name": "FTP creds", + "data": "U2FsdGVkX19yEAmrQHFBDGmRxp+WnSpl/QjsGjk+TtgU4xYhPuOMkP0L9vQhT88LHML81VWXAEWg/KTV969Ndw==", + "type": "ftp", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.ftp", + "date": "2021-03-15T13:50:05.540Z" + } + ] + }, + { + "createdAt": "2021-03-16T15:12:24.122Z", + "updatedAt": "2021-05-21T09:17:05.551Z", + "id": "107", + "name": "The Hive API creds", + "data": "U2FsdGVkX1+sq7FgjnLT7wscZcPeewSYPCGmLSNFCHl5ARoZ4AhDoX+pJBdeZq5Wjt6ys2RYz2IArqslrrzpiUEtyVBA2jONuoID/rqAbpjkg7DQE/vPIGoddzk1cbe+Hij4Q2LgIdyi8vimHRYw1w==", + "type": "theHiveApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.theHive", + "date": "2021-03-16T15:12:24.117Z" + } + ] + }, + { + "createdAt": "2021-03-16T16:55:54.217Z", + "updatedAt": "2021-05-19T14:12:02.316Z", + "id": "108", + "name": "The Hive API creds (v1)", + "data": "U2FsdGVkX19jCmj6rCN79nEROh6h7iIjy6b+p4stO/NGN5SZJruViMOIVpTC2UBpbEbp0lpmurHRWHa0t7lhFQN0YNksUCa1Dvdq2gg0L+lUKZR2gX/uXEO2TkkmAht/siUB5DrwetudoSY1n5eNNbu2/5LCGME8H5oT0wh+5V4=", + "type": "theHiveApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.theHive", + "date": "2021-03-16T16:55:54.214Z" + } + ] + }, + { + "createdAt": "2021-03-19T09:08:45.915Z", + "updatedAt": "2021-03-19T09:08:45.915Z", + "id": "109", + "name": "Shopify API creds", + "data": "U2FsdGVkX18BbV4+zI7uK/CPIyEYKsbC2sfNU6LxGjBLFbQ2e0MpunF4VAfH+iCZ8uZEN0TJN0kQl54YWaSnADzhRpgbG9GKTvF6kz57XVACRtVW39StOmUhPTeZFCe8BOd1x7xXEsdtCKYfQmm4PyIiA7v3DfKRJWLJfDGaUYfKGXcDIvjN6e2INRhKMhecJM4QzJGCR5dgNGIt3+x4z2he3eXOZ47B1DpGfch53ojSDMNbbPVt4ErKWtpt2SDiN+Fa2QHQGOL6MMAMp9wGUA==", + "type": "shopifyApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.shopify", + "date": "2021-03-19T09:08:45.910Z" + } + ] + }, + { + "createdAt": "2021-03-19T14:22:44.070Z", + "updatedAt": "2021-05-04T14:31:32.039Z", + "id": "110", + "name": "Microsoft Teams OAuth2 API creds", + "data": "U2FsdGVkX18odfx9Ddw7FgNC2ezn/TSUV9xKYXa+pDqjYVPBEyPmX0ykz7rr6ckYerxRkpaZz3yyd+pnrUUnM4oVZYvhkNcTWm9t+inukgNQmQrlCfLO0vjFP/v5wc+/P0myQ/0mcsxfDdOsAbJfifGZ3mDpyt8wX8eu1VXruzu8BbpKXrB76dnp8rovTWJLSg59Zmjr/Wn4TtoaTw7+laAe/Ox6ljkxar1sgiL1Wr8wGqPeego7h1Dkh4dzwNPjSzdZzLiBo/GzbIdl9AJECCof+HOxEd0mKAeX09bgTm5Hg2fc/2UWrpfSDhSKIV0QKx8oZ4qpLTFq8P3HrRhBFfo4lwFspw3pr94VdFXj+VSR0tDmNgAJUMDX0PPVOMAqBW9H/2QcIoPIZu+pZ/6bFMsM1OC3AkmJ+VYJZxuXXtHuELncR6x8a0sKrLQ0WnlPeoVas2vwg5ClidqsypJgRo52SBen9HFTodZaK2odzNVzQzE2LpDe+UcYeREIUfZ9L/0MYPv+P69P7DMvMn/oqbBKpvYai1Vy3nS5JzXM7T6v88py99K5yVa7xIQGQl8gnF8ycKqwAB4gjXsUBGRejaNGbA2vbw1aO7ZqCqGp6VwLAP0sSTzIWeayxbLQrtnsdRnpGmaFGQ8R7RKWOixuBoFHisXaVfE01jL8QZww8lgn7JSPiHF99E0ykn+sPSPLIwObf3kO5orjnRYUGN9lrUXaaqBxuWQ9Wmgez7UW4Huik2OBsSkt4F9u1k+5hMYwtgBS703+vYFh12pi4mE6MCuCxadoaiClgwF4dwZ9/ZFH4XGhyxOYjNG35rxY0dr89hupquR4aOQT7j9ye35/wl2CKkKZOgWy/N1wYle3KXpNdK7TICi8pA/XccDpSaE1Ia47uMC5H964ReY3uDDmL6BErb2Bv5Z1g5N0jy6RRTqgYm+CH5QNsErE6fp+dieIe3zVqd8DZbRI8tEoVQ0+SnnrZROWWyIECiCdrOYsFOrrnP9pJoEwrYBERmG0WqvdRFM0QJSNBYAmHU60BpADi8fx+ELHy62x2TmffI+Uw7n/BQujVF2k7cgjOy1BIGR69KuQYA8eBz6b+dOJcT9tT+RozYhCv2B419Xei1PtKomlEXI/w8yLL5ev0Tk/ZdqxJ0x5XM25PhFgw202l55WMmGKZJWFcDk80bgnM8IN5s4oLnIhDMq0PBu/8Lr1lTO6sjux1BoK/8S5EeaqJtvntjvOxIqrykMdr42EqI86RLu2fuP9XzutlM4HwoliEdPD0rHaRd12EaDdodWMnoq384HZ9QYtXnQxkP7t6FC18KtoWh7qpbCVJ65tYptVuqShF5vT6EzLnIXnyF034qHb8H6uScoooRWBZsBAQly1yfxE4bHcpB+msRVobOFvrkixkQLWi5C95LmWFOrjEOdwkEUmPA0WX4O0OgP4llZkIv9NsZuEmUAfjDMviU9ktI25iPS7wBCkuWj7xYYE/CdXCvQgiS6uqthLHO1RmYmtMpbcff+BKwTW8ZitLcc+Sk5RD/NIeDQTAgQ20a+Zh7MlRKqwStZTsGwivpAsVoHx7JgM3EYokBnM8zUPObHmBW0dl3DZ1C3QAFGAcqIJAO0PYL3q4n2PqjPSO1rZoKo1diDJwgHpQ/GL051zW1lASKs8JDxWbHehULGey79qnLcW8FdNxHyNDr8KOQGcHcPEDcYDqWc7+hNIiWndtPGQixe5AG33a9/T0afdYypwSzM1jIdBc4pwmy1jMEDceRnsCfn76tPyPXsjAPyG0gE6PRzS5488j3JIyDS76M9hK6QN7WV91KwIJqPaJ5iek05HQMnQHRBwUcjttyxFE5sGob0ri554KaUb3vs51QQfemjYG7W8+aEMOunXTlv3SSRz1Isj0V4UwSUOn+kS5DbLU6KJL2J98uyWy2YjmVgJ2We51B0Lt4HmbxKmB/+AVnU7GBhCRMLOcYvi30WKGWZ1OBBG8bBO6yfdKAWDAV4dRYCjKTjwTw+Ny84CwUaPu44JV6DcmcOG+DFyzXwoWQ/YueIkqzI3NZM4HzD7CuQ6c4NrCfNySW7nrVhhBoVwyDA1sD0VhrZWo5pqVq0ysVjB5yzHjIt1IUR9Qn41VyMdykUwJT+HosTnWPn32P3PX5BW8r4eM/tp7IgbWUhgnUo/KUV53WUCIWNnk8FCWjm2YW2APYm4/MVAyPzk46ywlryT32SD+bXfA++kjxV+DQFRnXBEZsSMFd+La3fALKAC75WXCqvqHJiEC3rLB9fIUPgw8j+SHKLiXGwokcdCuoi1U0V4R2rdM40f/Qsec9S8Jrv8TamxQJCDFnCdW3aLUex7leoSmTQ+lmk9PGvIHcDV96OSA26B6e3yLS7+S5u7z0jWCNjFmNl7VXZqZFKQ1b+axJpcZ+bltOFkElMw4K//UTi4i7F8hZ4AJQldPdrcG8ZlBgzcLFEzSdP+PRQLbByADLg1W/rTaDEhiLLhUbsgaJSGBTNQ/bsjii22CSpE9RO1gLTrlXLuUaMFV2XhcbpALxVsMJ12bgOwc6dXUVrEhliCVeS+KDVLrEmJMOMK4pRYGr2Usip14+2kwN8O186recpHo+i1KmzU5SjLz16awOtbnLmYsO37HgDI7/CEoR29OsCVr8F0YB1qzygUrKVZCsrvY/EYw/UJ/mG0QK+zzZ2UXmU8l8SoOclUaXcMe83bY5Z7tjI3CQ/jG2yebIr5uxkX5PN/IpuZzyJCgOLJ9QKyVvxJwhj+wj+68+3QrCUgR2rrAywhsMglyWVEFp/pe+Ol145DoEkw5uOeW3ip2YO1S8/7XjJBLEaDqYaUVbsuKcDAeIh48D5rFFMVetz5q94xxr2v6F6w2RuqNEJ1ZajaE9t107pYJchxc1RpP8Tto1n71OC5myfrkAdGa0D4GeXpNn25BC0bgqxbfEAtwwAgAPZ2Ox3tV8BW1EVVW2o9pO9lNpvtvhov73Ezx4Sb30k+bn6ZddwZOqkt6U8uIlrmBKENk9N7U9v0eTFr6uZYCL0UR5j4OMwtlWM2eeSZMt54xJau1nwlGC6MlcVhkeS54APhI8T3977CC6YvJbXb1TEGcyU7muKFbY2iPKbPvDWLgNBENuvga/82K6VGngxdhB9b72vewsXxCHz4YpJ8jzUgco/WMwX5OeWEVqJD03ximLXYqWvL8j7ZhWFdlNtGamWev7rL6OVSuV8q7osGaxAUlzz2rKYPCRzTCuv8V19OgVWTH4N0D99dWZ7rVCI00QENmqD5V/dxUzj+KJL6gj3mNaFRPz6bAFR+J+RQjdSi2RzBXGcFtY1MyHSyVnyD8ZiLBCn2i41p4yO7ePtvEFoEExTPgRJ/SqbbgScKEnAad5t9Y7pEaG69teag0eXibUygrRn+pzDcEOVf7HubZy8BBjYPlsC5b77sefZhyG5ImdL6y037165ewKtnqmKIHyP7J3ctOTR9x5j0oeOkJjRHycEaZ4qWkTUy5a/ZOKQV70LcxlXxp7nu0YkL6BjPpJJmvYnRu8PBGPwLl89LbLCs9Tf3Lk5dAaFQl57KkANsovxLEVmWpqZDWsSjdkhhkC2FkMuxkSZPJFQcw9N7/CJpcKsUoijJOgwGT5WztG+/njHuYNwxQfmMpUuz3J2n+O81l1azTzlbqXYdo+ra1Il4MhPIevkr42Co7oK5Vdlk1u+6T96KzTB0TYBQTqMCFsK06WaaOipQJc8MFRi8/Adghl6vJWCYa3fJSMY1mDz78mZ3UL6XBXJsfz+K7rCdm+g9XrzOAhfdTKzXbMdNYfV7zxIIq23gZsETb48EaE60k2m/wEWi0o+x3+qDs4Q46h/kZmqmAmtl5zEWzuDuzyGFuq7/pK41koCbXPdqaWd0KmA3/mSLwqzGVAAKnI509Uznrqk2lmpGFdpNahEhiBFhcws6CAbqP5LUro3Uo+CC9R392+qd4Cwr0sQvxlPtGzTUmvtdH0EnZKkoxSCvk9EI3ZwTnqFY6olgfPD3AgM9g6kiWRORdukZgyU7VC1EUbU6OKGGuWRouvaD8rmZ4kXn5eH/qvVLTwjMAovzPyVIUFzRcF8ZOSXMf6LUOa4WMXk0cUYzdLB1u6YyaxTHv/NHHDHfdNyh4r7Atp3TLdM=", + "type": "microsoftTeamsOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.microsoftTeams", + "date": "2021-03-19T14:22:44.063Z" + } + ] + }, + { + "createdAt": "2021-03-19T18:17:05.697Z", + "updatedAt": "2021-03-26T13:23:15.730Z", + "id": "111", + "name": "Microsoft Teams OAuth2 1er account", + "data": "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", + "type": "microsoftTeamsOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.microsoftTeams", + "date": "2021-03-19T18:17:05.692Z" + } + ] + }, + { + "createdAt": "2021-03-22T08:12:15.509Z", + "updatedAt": "2021-03-22T08:12:15.509Z", + "id": "112", + "name": "Orbit API creds", + "data": "U2FsdGVkX1/o7TfYGI4nCUKryXGq7lhyDEjT2FntS9xynzLCAikqxFA3p6Qt/w4TtDKB/0sqdtX43Ie2FSrW8A==", + "type": "orbitApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.orbit", + "date": "2021-03-22T08:12:15.501Z" + } + ] + }, + { + "createdAt": "2021-03-22T09:46:41.540Z", + "updatedAt": "2021-03-22T09:46:41.540Z", + "id": "113", + "name": "Monday.com API creds", + "data": "U2FsdGVkX1/RKU3VMsGxVQ92hJHN35dpJmqaGx6FHA/Q1ffPvjPJ4aLYcU1pJQ1ZxqFOS8g5rg+A6dPC5glz0g7FVBNAz1+Lz6CAWDLs/AJ7CnZEbQNg1E28pZXhEsTEVmvjtYijeTqZ3d798xrWLIbVVNUTe/NkWLaqMh3NA8t+qA1vdQRxdk9EQjIkVcFeMElCtTIV4KGW+rgJUxk+q3fqPcOziIg5UJUB3OL1ZuHqYjGb+fRJJ8NKsTbLC/zEhecmBYKx0e62pveWMlAKSrajkLzBMvzI34RYvLkGSVX7veFtdOQjYF/ket9gDEKcfduWzZE29K4BKhZVHJZQQw==", + "type": "mondayComApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mondayCom", + "date": "2021-03-22T09:46:41.538Z" + } + ] + }, + { + "createdAt": "2021-03-22T11:00:22.706Z", + "updatedAt": "2021-03-22T11:01:17.224Z", + "id": "114", + "name": "Clearbit API creds", + "data": "U2FsdGVkX18jQUzG/vWBSBLNWCv0XRtGjyoWCC1R9qAtgjcOKXrqXJfS1gjE3y5bT7F+7yoNd0Z/wO0+R/Grwg83EaqgmzKcmWHMEg8JpQY=", + "type": "clearbitApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.clearbit", + "date": "2021-03-22T11:00:22.704Z" + } + ] + }, + { + "createdAt": "2021-03-23T16:27:04.016Z", + "updatedAt": "2021-03-23T16:27:04.016Z", + "id": "115", + "name": "APITemplate.io API creds", + "data": "U2FsdGVkX1/T+TNJGO/e30THF/oTXD49Z8O3DqAyoTgkqXESzPpgtKWF8O+A38S+3nFWEnqitAui/Kg1XmGJhTfnDEOj4RJAuGc4cKa7XIU=", + "type": "apiTemplateIoApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.apiTemplateIo", + "date": "2021-03-23T16:27:04.008Z" + } + ] + }, + { + "createdAt": "2021-03-23T16:56:37.485Z", + "updatedAt": "2021-03-23T16:56:37.485Z", + "id": "116", + "name": "Peekalink API", + "data": "U2FsdGVkX1+amqKPT+su6WEQcvcNEN4JG8G5+//6gX/YU1+jf5CK/TeYa587Ic/R+qDJhrUSFDLFd+I9JlKvYUzFUWWYZel36akQnn2qrHQ=", + "type": "peekalinkApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.peekalink", + "date": "2021-03-23T16:56:37.482Z" + } + ] + }, + { + "createdAt": "2021-03-23T17:16:51.390Z", + "updatedAt": "2021-03-23T17:19:41.777Z", + "id": "117", + "name": "TimescaleDB creds", + "data": "U2FsdGVkX1/OG4Ms0I7b2c+6p5RfwLpDZfWBSe84eAlrmtuhog0SpjsaeZaLyDwN802lxA/6TRpGnF4v43rOUfxHAKYnloI7LiMgLdVJS7UNMBiYi22P71O46+UagWW+", + "type": "timescaleDb", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.timescaleDb", + "date": "2021-03-23T17:16:51.386Z" + } + ] + }, + { + "createdAt": "2021-03-24T08:41:57.197Z", + "updatedAt": "2023-03-06T11:47:25.441Z", + "id": "118", + "name": "Raindrop OAuth2 API creds", + "data": "U2FsdGVkX1/trFrXaFPYfQbSJPjaXjVpd4UVIUEzxmaXTiZ67ecDLPrnD3nVms3bvjo8KUPYYpHZP+21uZarECDahaMC+DFrH4JkjUsHDDdqtzhmfLJDhDdseJm9GCVdyU1JoljnI991rZyXpgggOic7SSxENP6fWpah7rdwjoFLPxoPE02fyLCuDJk/XZ/2t9/PZc39SY+ssBJXX501TKdL2014tYQbpSvbzJG3HWVqF01XSQjj31g8RS5TmcRoQfCnk2YX1ug6BNZpELpBXpEcPNoZTz0FP7vE4T6IxRz6jk8+ZXHplCMdwiJ5ZYY4q5Sak87pC8xNvLpixBh0Zpz4/3H7FWP9FnwUqLkNlRdgb09OQ9ftVZQEwvKeldjmvbmFA3YECHAsvqqmywiTTjWY/HRKunW2F0U4YzZb0U0ONVhIhQEfKImIwyoGjzRwElqor+/9gFPoDEGCVmYvzHLpCBXDeaW6EunsktSV8oBVQmty7zZBmas1n7sxM+LpNGP86qeKKuklUkn0slAYl8BCxJSiowfQLDeYCF/qa77oha5cu64ES7OwcbP+DDV3JdFU+OG4xEX3OKBYALPU6LnZW3tboIFjvHBB1pJY7j1RlOEXei/G7mRyxxkyZcoBXg8so/7gb4ybqfg2+qnTkxboQydBIMSB0V6xtwizkws=", + "type": "raindropOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.raindrop", + "date": "2021-03-24T08:41:57.191Z" + } + ] + }, + { + "createdAt": "2021-03-24T09:01:09.124Z", + "updatedAt": "2021-03-24T09:01:09.124Z", + "id": "119", + "name": "DeepL API creds", + "data": "U2FsdGVkX1+GlCRFP+uZ80Sf2efUOqr1NZRfWmKURwZ1ZUxZ+6hMALKGhNp+ALMZxH+WSgYhmynGpl2dRXnLfdt+2uC4ME3cigCFSE0W2vk=", + "type": "deepLApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.deepL", + "date": "2021-03-24T09:01:09.122Z" + } + ] + }, + { + "createdAt": "2021-03-24T10:06:14.748Z", + "updatedAt": "2021-11-12T13:12:41.830Z", + "id": "120", + "name": "Reddit OAuth2 API creds", + "data": "U2FsdGVkX1/0US4pkFlyhr+JeAVih9LYj9FCeuOCXka2W4E8s1yIzfgOMwuxAdP0mXUCVd48h+haGlZg3bjD9oy37E6ooQOp2BTs7TUUF7jJSLNq5hVkm0wzcq4YvI/hHVrD92CobCjCI0yY19u2weTVkUdyZbDlVRrWvyn0UJMUqtv/KI0f9g5CaNrkPI3dxODytpokrdnk9dl7SGHUOIQg8y2nYadjCl8Wdarjvv4CrrnYJyUFKKtIWH5cDHY0I0NL50QjgDeVQ7KsoT6yfoOoqvBbCyTMPVRQwAJuTDBiNmpiZNwGzZ6+4QBQgcJB9qyMt3N3LMKF6LqbKvaf2hyO0MCWe/hctHe6Mqa2c/Se8AROktUOBCD5gCNkVCoFmQkLW2ImeEdD5Ne7CB+1CTQgNwGUTOgLporM70kQu7jSmWM4bgMaX7m3hbqtl4uyTR0Rb624hXnfTPGC7LAV56SwUciuPEFEJfNeUToIe3yxrR0PwPALUJ0QrFJA2q/ssy1xUKBEd1MFJb7/0SiFC8VOUM3lyBEsAkYD7CpPNjZaATjfY5Cbf2pKmwnZxjEh7ME/PqAqcfVdk9kck5OexkM0NFjd01An4uAwPOohJR/EYgHD3nPkUdJK7WfIvYneEiPYRNMR+JO0EjFafLZpB13v/iKyiVLO2hHmcdqeJcOBWIrjCF6fhv818VfByfHSTkTJBF7KOmCmQnkhU/BhKFt4CDsC2xoNrBumIfxxnhIltVf7pMgTltDai8RE+jPhbNjqGdZDVcVBPhDtDl/IyQ==", + "type": "redditOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.reddit", + "date": "2021-03-24T10:06:14.733Z" + } + ] + }, + { + "createdAt": "2021-03-24T13:18:39.585Z", + "updatedAt": "2021-03-24T13:21:09.217Z", + "id": "121", + "name": "PostHog API", + "data": "U2FsdGVkX1+dxVkGdcLhw/iwAZ6ZhsE/B5fcd2vpZQ7D4fzJCDCTOa42QLamab0a+76Z+B7qWIYwjAmJ2esTX/XXzwcSf3pmLF3BgFktOezmzBHZ0Pg13R2aMcXsNTq1IlNUvYnsLw8hURREdBE0DQ==", + "type": "postHogApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.postHog", + "date": "2021-03-24T13:18:39.143Z" + } + ] + }, + { + "createdAt": "2021-03-24T14:40:12.371Z", + "updatedAt": "2021-03-24T14:40:12.371Z", + "id": "122", + "name": "Wise API creds", + "data": "U2FsdGVkX181H3w/pIF/pUShbLd5k3fIlJ+P1zcgGUzs9B/ShD57Tqt51M8KLZxqVH65s74UnMEYb4YHWYBYpazIRQPnpf16euX/WV/yz7Jn+U39z5oNT6aGrdON0ybt", + "type": "wiseApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.wise", + "date": "2021-03-24T14:40:12.367Z" + } + ] + }, + { + "createdAt": "2021-03-25T08:24:41.346Z", + "updatedAt": "2021-07-29T10:35:04.793Z", + "id": "123", + "name": "PagerDuty OAuth2 API creds", + "data": "U2FsdGVkX1/OnrXa5cdqsp6Gx8I+ZTOCZASl95XvWjDG6KcvYHq1fsfTpz/yj3iO+4PJ1C0VkHsLX9a+hpUz30J3ryvl4PgnqSBuFMYJq2ilJ4/RWKiTyEaDIQ4iLsexw23QJ5a7+Ac2Fy7wyxvQ1p9e5ibNbVyqEMeccJQNj1BC7iJHOwcZc3swcC3fxLy+IgfSpMAcfnVRc5j1Z8x3IK9J7/K4sClINHgOCm+XRiqGRcWzMIUyGgVXGTLVw5CITzp8mc2RvHgWiY7i77352wHqUmNLaXMM5MKJTjv1hFAkYC+qSeFy24CxixcWTxChKHDNtIrszJAGc/8Tztht91wd8xifgp57bVJf1msIx3LfmJE1FabWw5ibzjqdU3M1Rh92+EgTnDue9BgZ3p+f8lmO+W7RRc7zDWJPT+kF83KVcTsml8RR5cOKNJwzCEndmMpKIqiaSqEWyzMSi5/oW1J0EirvMRisWQPNIZo2jiwyp1QKxKMg8t/wxwciU5TUZYwvtOSYOfL1CuDo6VN/G2Sm/2mTqf0C1QcXUPSzzzMV+5EJNJgxhuYHdo/3O8KGLQZ64P0DMxWh/nzUcIz5NIyaTLbGa0vIjrbrs+LvrX0=", + "type": "pagerDutyOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.pagerDuty", + "date": "2021-03-25T08:24:41.341Z" + } + ] + }, + { + "createdAt": "2021-03-25T09:20:09.900Z", + "updatedAt": "2021-04-27T09:05:17.449Z", + "id": "124", + "name": "AWS creds", + "data": "U2FsdGVkX18CrjtlfrVKO5aBIoQs97toMhis4Msz7ramicpQPg/7ADHR1a5KrYJwMaSesk+aep+ff8fKEbZ6uaH2kiIcCo4Bb/W70/YpXYXIfMlxeo29OolY9w2HlSQnoQT8gxGqza8L/ZQRgW9PaD8dj04GOGv6Dyp9jLQgXGA=", + "type": "aws", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.awsComprehend", + "date": "2021-03-25T09:20:09.898Z" + }, + { + "nodeType": "n8n-nodes-base.awsLambda", + "date": "2021-03-25T10:26:02.255Z" + }, + { + "nodeType": "n8n-nodes-base.awsRekognition", + "date": "2021-03-25T10:26:02.255Z" + }, + { + "nodeType": "n8n-nodes-base.awsS3", + "date": "2021-03-25T10:26:02.255Z" + } + ] + }, + { + "createdAt": "2021-03-25T16:17:53.698Z", + "updatedAt": "2021-03-25T16:17:53.698Z", + "id": "125", + "name": "Tapfiliate API creds", + "data": "U2FsdGVkX1/iIPUbQzFC5Idc51Ntpap/YY8Z3XUFYvy6tbuJi6vtZEdT7zS/UJfhdwAg16DFWZ9msD/qfB5xQ+hm+Sgfinm/cRu84fu3cxA=", + "type": "tapfiliateApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.tapfiliate", + "date": "2021-03-25T16:17:53.696Z" + } + ] + }, + { + "createdAt": "2021-03-26T08:42:20.556Z", + "updatedAt": "2021-03-26T08:42:41.657Z", + "id": "126", + "name": "Wordpress API creds", + "data": "U2FsdGVkX18sj4B2d0sk6ZjrvYjNNo/XAGODRSiifsu17PiCMzuCEV1JDLqWx7MT/xZLAyDfNyVcTYLffFoIvBZS+VZuhi7xyrQ+HLqi1d+PkS1Zcy7HZwsb/PDN1istKiMM6upOXhqITrHeNrVQZg==", + "type": "wordpressApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.wordpress", + "date": "2021-03-26T08:42:20.549Z" + } + ] + }, + { + "createdAt": "2021-03-26T09:23:43.013Z", + "updatedAt": "2021-03-26T10:04:56.190Z", + "id": "127", + "name": "WooCommerce API creds", + "data": "U2FsdGVkX1/PpZBiKFypBhk59ahnQrzs6DvXvq+yOJl434b6v7qRK+jU3pJWDXgRu9ekq2QJWCDPv62Wzi0AJP9cye+2//skLuJaoo2qcjHOyINNQsPx7McIgHrf+boea9Taf7uF/qPSdRTPh5PtlPdHjH7pFfi5JwMk9+GYJKPt5zq+oy3AD8hCu/11cuZjQ2i5wGp7d1I+jIgEXWwHrLCUwDTyrAzIorS38UHmH71Tmuy/65s+qeMN59wHsNRw", + "type": "wooCommerceApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.wooCommerce", + "date": "2021-03-26T09:23:43.010Z" + } + ] + }, + { + "createdAt": "2021-03-29T08:29:56.384Z", + "updatedAt": "2021-03-29T08:29:56.384Z", + "id": "128", + "name": "Vonage API creds", + "data": "U2FsdGVkX18WVXC8Ll749yKbkxqAqMbGn5a4OOBxojW53/A+mJNMqVRbJFV2z2ufNwfTqCH4JEZyyTQrutfqwr2SeSWMVooingKfRCPt5QI=", + "type": "vonageApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.vonage", + "date": "2021-03-29T08:29:56.377Z" + } + ] + }, + { + "createdAt": "2021-03-29T13:54:02.617Z", + "updatedAt": "2021-03-29T13:55:02.914Z", + "id": "129", + "name": "Drift OAuth2 API creds", + "data": "U2FsdGVkX18fFSioDqPTa+OHhYDqqWu7G45NcimDjrhwkLpKsZg/zDWYia85+CXZENYbOQjwd57C7qBwhaPxJtXFF528/FeScstHHNJoI4HKGDNxwn9/4zrQGrwB21gPXhq+eND+Si2mCZhP2Upu+BOgk5m0pfce+lLmwYwILFfTuM8Vz403A0P9grRLAk+vSxkErwdtqNqp4Ac3Cvxczw==", + "type": "driftOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.drift", + "date": "2021-03-29T13:54:02.614Z" + } + ] + }, + { + "createdAt": "2021-03-30T08:31:01.924Z", + "updatedAt": "2021-03-30T08:31:09.696Z", + "id": "130", + "name": "Sentry.io OAuth2 API creds", + "data": "U2FsdGVkX1/cXGLFr718WUrwP2FijYTb0QYRysCy9kj5Xen1gZJgDP3LfMl7lkeTdE/q2mCYKa8rq/pb32Xm3bzXbprORCqXLnZB0p93wZZKcz1+LzckY6yuifN/VEIMKhE3fSwXi1/PER8VmQ3K92hup3LSalVzuqhy/EX8K5oDkLEEmEI043hglgCbTSxplxrjgRJ65y73yTMxfOrLdHWTbZVjZEKB8knc/hRvg6M16nkSyfFclQALOZiKN6o9OLNTx3iQ0wLrhZSvDZuhfiysVqEzpcBEsM98232NzyIxcrQ74SR+uuhgZeN8IejYR5ApPJYUsrTTC+keCqW9la0KBSPdM+ckfTYIctJFLZnjvbvJMEZHjEMn2CjOgmcd5U0o8LLceh7aDCbLBJ4+1FsE5ZQankySwNriCSV6XsQ6b42Cev6nIpne0lwOLCtEryzlEAtr+e5bn8/BVrgFVY6IMnOq1qtW20UkF9/dBlQIXy/hcXNoeHHjKcn1480GvLtHAX68rWwOi4cAbF6jM1azNGpxUJPXJflT0QQWKo0QZKoS35rbvUtpF3GR1blAkcISaQXZi03fWY81i7m/ddPB0uN3A64EQ1MPsaGjuqfFWKvD+BcbJzHOdHf3NpUNBGBaNLRUzHNqB9PvR+lI4KKHve3gw/xygaE431v2OF57YRgJAdJKJMsXYSRR4rPWPqsZGLWQR+u9tjSgm5qo8NlrGTCisfZZuxitK1SHVneULlJe78ybNd7SaLbpcdPeUfRlg+UnRKXPpHmpwWjmCnrhgfL43Zn6MtPQ45FjLrWWgduf8ylg5wC+LBIEFfJ05bNDEAI82mo7fX/FAdgK76mzbs95moEbrqgDy+9rXECuWaTmOtXtnX/A/+pQ0uZ1", + "type": "sentryIoOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.sentryIo", + "date": "2021-03-30T08:31:01.918Z" + } + ] + }, + { + "createdAt": "2021-04-06T08:26:09.733Z", + "updatedAt": "2021-05-21T13:38:09.422Z", + "id": "131", + "name": "MQTT creds", + "data": "U2FsdGVkX1/m4oE9vOBa3hzo+X+T6tDwBY4YVzTXZnDcIEl3EZzNTlirYEuZIoakWhJwCqw1a/1MkLh1jUy97VpaZ3/DEZM9TMnznlRWz+cqawe/VrPHHOLHw4bFqCvvdvgD4IvVycxY57RsxFiL+w==", + "type": "mqtt", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mqttTrigger", + "date": "2021-04-06T08:26:09.724Z" + } + ] + }, + { + "createdAt": "2021-04-06T10:42:40.529Z", + "updatedAt": "2023-03-06T15:34:19.246Z", + "id": "132", + "name": "Google Slides OAuth2 API creds", + "data": "U2FsdGVkX19/PS9ckxDNT2HrxxHvkTgLNa/qdlRTq0hdxcddI2D3UDqpimeDw8cJMdIexszhk3oq6n+6f3mqLHaezPu6xZ8z7a/d5oEcx8fK5y60vmWODlFrsiqlBPDlbesIT01amc39JuFQZTbp+gHbpIxWj4fURrmGf5cLSW+HW82Jwm74OTO/GARTgklTrEwn+StkHayC2Nq0lUAt72ufXg+LThsg+c/v0pZSAvYr6xJcFKGQewNZJhTK7OaJRmM52l5Exk3cm4go9AzflcGt6aslIQ5d5RHdoloEgyxVjeNO9akQdqL3lJNy0WIphnyQsSM1Od8K1G7ONaHc4OsKABEvbkSll9EfuospiZTlpiwqnQsIFLsAC9cZTLFUhVqGOliF37firEZrwxu5CeMkuJRhNkPgGT64/+NLef9Wjxo7qFXEjkRH/yNiJ/MBiRe61oB6uohb/iDpnk3D1vFpjLS4V4h83SRLkOYSG7Yua5snfoXGWd3TdiEsIOdA2dI2FEUH9zQCT8prJKU/9H1n/ntdcOgO8clDMhrv5139UFyuWyFt48dxvqzVuAf4mD+EEmfyJL/PJkAMvUSrcHAPHyu5V7PGCT0zbjX5wBU66gvn6xPlDK2dvRzRt19MiH33HyBkjUtP73v7N8tN+2eXzDlgOMOrO2bH/Ail4yekJE32QEah/msJbiQlE7HCmkQeaWqeVG73wrxFnA2TVkKf0/pBLEUk5fhe9xZIhwmQh3AyavssJGk3aBq5/xi1MFYXPhARSE/cgMaEQ/3s9+wWKT7xk3wQr+J774RNiSLvbezrvxrJap2/P/4HFZijfB1vvLRUvjtoW/WvCgX3R2Kk+a3Y0epUah8ISgddmlTb1FLz0a4s2ciA5l1ClJaA7ICNzOiuX/ViB95/mrtfaE3ZUyzmlXX/VPhu/uYtki871EsyawsVa0CZOS+VUL0pWflxj8ZBk97mjpRw04+50m/qejCMS0b1FkeyMbGyiuUASB8Zz/CtY93OH4d7ZEcKAVxcxN6RFkiuIrMYXwPI7FzD4P+FCbLN/kC8GSpAdD/KIZj22kdvANovTr7nzqdd+l8EgpPiHsm6B2IOqjAsEJmb/4uzHGINchbij3KSj4gluczYBKilJx0HlHrgDZU9V0aHI4ljDLz94NdrQOh6TWUB7Mi31lMJYsBh6yTsAE3mrPGvQ/mRZmxbBmpAwkhrrspV6GrMXU1o2ncI8+N3oC5PAyk6oWWjVpSMmwfeTigKBRYu9WRGdYJUXy0NrU9N4iwVkFUDTInXgabiQUjDiB0ErltnaV9x12BWbwdw7UhMe9ZAyfhF5CGR1Tg/c6oVVolq9i/lgegO2t+Ckc45FrHuUKCXk0TZKy45wsUn5+0uq0cRrdbS1rcXVsEHC1RlNY/6QlcGPzDEAD3uogVUXNJdAIN8nXBA0v+OJbN8YV/PRiOC/5MUd4dXDOZG2jMeI+Q/cNlrjKDWbO6uV9LFoA==", + "type": "googleSlidesOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleSlides", + "date": "2021-04-06T10:42:40.526Z" + } + ] + }, + { + "createdAt": "2021-04-09T15:28:44.590Z", + "updatedAt": "2021-04-09T15:28:44.590Z", + "id": "133", + "name": "NextCloud API creds", + "data": "U2FsdGVkX18Nzxxsz9idMXFq+XbyidwNPqnC+idaMf7TnnDZK3A8+/uA97PCCJ0mKSJvRr0eAZyoAb2gnRY0HoemTUb6byZgJf/aQU/os641kNKcHZTSgeO2KMOB60UV7z7lnHk/TeO0m6JtIiJpiFoowYbYqej6cWnq6Mj1sTE=", + "type": "nextCloudApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.nextCloud", + "date": "2021-04-09T15:28:44.587Z" + } + ] + }, + { + "createdAt": "2021-04-09T17:52:02.689Z", + "updatedAt": "2021-04-09T17:52:15.721Z", + "id": "134", + "name": "Freshdesk API creds", + "data": "U2FsdGVkX18oaxZ5INmwYOUt7Ya0KjQv5ypLeMpwKcunmELwMmERRqD1WoTWs8UWgprV6yAX7L0NL2fgBT93mXQChIoHf1ZZoGXE6vYrQOsAR7sJsfnr3QARPc46VKff", + "type": "freshdeskApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.freshdesk", + "date": "2021-04-09T17:52:02.682Z" + } + ] + }, + { + "createdAt": "2021-04-14T13:04:06.289Z", + "updatedAt": "2021-04-14T13:04:06.289Z", + "id": "135", + "name": "Demio API creds", + "data": "U2FsdGVkX19k/lMkGTHyBCxQZ1d+uG+9bMMPm31UxGZBstePP71IUR1okte6Oz4WvNQIONYkt5aSMKKRAZukIAoVircgl9uAoDYE/sJAHfT3jwiRIhnC07FTmGV9+sx7", + "type": "demioApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.demio", + "date": "2021-04-14T13:04:06.280Z" + } + ] + }, + { + "createdAt": "2021-04-14T13:45:10.548Z", + "updatedAt": "2021-04-14T13:45:10.548Z", + "id": "136", + "name": "Emelia API creds", + "data": "U2FsdGVkX1+qPrASstL2tQks2/6kiNgfwJRpNdFOM+9drLY4CFL17SNSlGhHnIXu3WMcg/7PLvPbs8+C7ALIhYACrsnoPMWd7mWjd748N8s=", + "type": "emeliaApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.emelia", + "date": "2021-04-14T13:45:10.542Z" + } + ] + }, + { + "createdAt": "2021-04-16T09:02:52.991Z", + "updatedAt": "2021-04-16T09:02:52.991Z", + "id": "137", + "name": "Intercom API creds", + "data": "U2FsdGVkX19Vssu2q10fPW/982PXhjejRzXqloNBNbiT1zlWoXl1tPgilsXs6gz67MJG+mtV3JWWS5yhYtYTp7q7omTykQkuiOoWDDVYrOWcLA/vJIK6ZB1NlCFSXBai", + "type": "intercomApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.intercom", + "date": "2021-04-16T09:02:52.985Z" + } + ] + }, + { + "createdAt": "2021-04-19T08:27:18.210Z", + "updatedAt": "2021-04-19T08:27:18.210Z", + "id": "138", + "name": "Mocean Api creds", + "data": "U2FsdGVkX1/oA3812/OCv0qqWa7+wDlwRdkyVKk/LGtTfRqSbyyqIIrWW9vWdkB0jfZARMPAH86FL5kD/58U3PaY4w/k4la3dE/jqjC+2GQ=", + "type": "moceanApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mocean", + "date": "2021-04-19T08:27:18.207Z" + } + ] + }, + { + "createdAt": "2021-04-19T08:43:47.245Z", + "updatedAt": "2021-07-12T14:19:41.820Z", + "id": "139", + "name": "Xero OAuth2 API creds", + "data": "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", + "type": "xeroOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.xero", + "date": "2021-04-19T08:43:47.238Z" + } + ] + }, + { + "createdAt": "2021-04-19T10:06:31.948Z", + "updatedAt": "2021-04-19T10:06:31.948Z", + "id": "140", + "name": "Stackby API creds", + "data": "U2FsdGVkX18YSUQweuj3R54MYldVyuyfIcUECTdY4k8eFC029LqS1/8pTYrm6+L7", + "type": "stackbyApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.stackby", + "date": "2021-04-19T10:06:31.944Z" + } + ] + }, + { + "createdAt": "2021-04-19T12:54:51.234Z", + "updatedAt": "2021-04-19T12:54:51.234Z", + "id": "141", + "name": "PayPal API creds", + "data": "U2FsdGVkX18g+KnywgStKZsljAR3dqZvRZdgXGBuouUc0hj1Gb0BHHChnQugXSDkyY3MrhbSjxeWT6bEkMhatJhjGn5wVwgC4TdlA/Y4RtC4SKpfR2tBK/jkFUZwg0btHdWvqOmvwhWZiD+NYvHGrTCq0HNicuQjknMwmGxlOawWDdMcze42ZgWXxnNWdPn8e4bk1abVjlpFjGFJOxGFXk5CIaSmJzhqW5Skc2KJldOjjgseY4n1FZ0EO8kQbBmV/ByloLTwXzbIySp3b6U3oD7Kvz6Jgynq7t8d9ZhUyQs=", + "type": "payPalApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.payPal", + "date": "2021-04-19T12:54:51.218Z" + } + ] + }, + { + "createdAt": "2021-04-19T14:25:44.337Z", + "updatedAt": "2021-04-19T15:00:14.218Z", + "id": "142", + "name": "uProc API creds", + "data": "U2FsdGVkX19KF4H+kQokEweikHpaP0Prxirb4ouEZargEzvOebobUvkimtl8geJDm95pRY4fll4SDHz7l2L4njSwzuv6IQxHfeJho7R5lExqRhVDj+ZQ8jRCSrG5p+E5", + "type": "uprocApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.uproc", + "date": "2021-04-19T14:25:44.333Z" + } + ] + }, + { + "createdAt": "2021-04-20T08:01:26.495Z", + "updatedAt": "2021-04-20T08:01:26.495Z", + "id": "143", + "name": "GetResponse API creds", + "data": "U2FsdGVkX1/Fc7tymDGjDUPosf8p2aMy7/NUfcnxwrOM2hWkOx9bmBJVc9fRfTyl1bUO/3jyrsnKTfHghQPl8w==", + "type": "getResponseApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.getResponse", + "date": "2021-04-20T08:01:26.487Z" + } + ] + }, + { + "createdAt": "2021-04-20T08:18:06.168Z", + "updatedAt": "2021-04-20T08:18:06.169Z", + "id": "144", + "name": "Vero API creds", + "data": "U2FsdGVkX1+oCZoIiHT3SSDwdC99JjgwDMCIt23PeIqRoB4rpgM98nP8OQOQNSH9Df5b4bWa8p322REvxf9dLSlzFCOvKxquHB0FeoqJnux8UP8m5Jrp+Nxpw7qpbeBL3qRUfKbgoXszfk1pUmmvNUZh5YSO8/gH0zTuuFtANOyFCrPTyQvMPjdX6HAEzHPh", + "type": "veroApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.vero", + "date": "2021-04-20T08:18:06.162Z" + } + ] + }, + { + "createdAt": "2021-04-23T08:43:45.513Z", + "updatedAt": "2021-04-23T08:43:45.513Z", + "id": "147", + "name": "Webflow API creds", + "data": "U2FsdGVkX1/YeJuB/FidCg/1I1TIxB/cbbS4POvlDiLmRYUwYRgFYB8Et98LEHR+IGcrbeuoBsgzFvhdXll47u957EDSCeRAgOYRQTuGfLXJ7VD5ivlQ0m4bB8/xbO/6ici02pdWMflo/mw0DUyYYg==", + "type": "webflowApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.webflow", + "date": "2021-04-23T08:43:45.507Z" + } + ] + }, + { + "createdAt": "2021-04-23T09:35:22.641Z", + "updatedAt": "2021-04-23T09:37:52.374Z", + "id": "148", + "name": "Telegram API creds", + "data": "U2FsdGVkX19JZ124pG1f9r1orLPLlcPbl6wYcoTfUvs8ojNn+545HdL7dTSmisYsEDgg442gpxquvWAov9dpOqfB4MQ7oUWyhfUtCVYXbCtfljF/mNdk64aOWOmHsdot", + "type": "telegramApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.telegram", + "date": "2021-04-23T09:35:22.639Z" + } + ] + }, + { + "createdAt": "2021-04-26T11:53:04.438Z", + "updatedAt": "2023-03-06T15:37:54.377Z", + "id": "149", + "name": "Salesforce OAuth2 API creds", + "data": "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", + "type": "salesforceOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.salesforce", + "date": "2021-04-26T11:53:04.432Z" + } + ] + }, + { + "createdAt": "2021-04-29T07:05:40.497Z", + "updatedAt": "2021-04-29T07:53:55.208Z", + "id": "150", + "name": "Strapi API creds", + "data": "U2FsdGVkX1/WCBhlME0j52od0t4RYCtgoPvXWR+ffFtpzUDySvgPd+BoJRC3NrnSUNc5BCFfo76hpcdhLbx3Xz55xH2vH4t9iZBiR+oKZB1OTlnPXc4OsZvtSpxd3W+6mPxb7XUG7HRGCF+isKA6zum1Ksv3e8bu/fNEMeegFNI=", + "type": "strapiApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.strapi", + "date": "2021-04-29T07:05:40.491Z" + } + ] + }, + { + "createdAt": "2021-04-29T08:11:19.033Z", + "updatedAt": "2021-04-29T08:11:19.033Z", + "id": "151", + "name": "Uplead API creds", + "data": "U2FsdGVkX1+FFxby5MlGpjIyd9BO5rI142CioEUqAEf1RB15TsNOO4WkEBKy8mxwNCk9mEoMhAqBjthLxTTrrA==", + "type": "upleadApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.uplead", + "date": "2021-04-29T08:11:19.030Z" + } + ] + }, + { + "createdAt": "2021-04-29T08:49:17.282Z", + "updatedAt": "2021-04-29T08:49:17.282Z", + "id": "152", + "name": "Affinity API creds", + "data": "U2FsdGVkX187OO6F81DyFZw3QtY7mKRKTz/UDroZisna5MMy+QudQWu7auA1XrADEc5TpMjRRJ+8PMkWIKBerDjVVo+4hNMMQwU3fU6V0rE=", + "type": "affinityApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.affinity", + "date": "2021-04-29T08:49:17.277Z" + } + ] + }, + { + "createdAt": "2021-04-29T10:02:17.166Z", + "updatedAt": "2021-04-29T10:02:17.166Z", + "id": "153", + "name": "Discourse API", + "data": "U2FsdGVkX18bdMnFwv+YAYjbRcPl7x+2R1N8nV3EbsI0t0YGO4Mr9go6xmK5B9b63g9s+V1UFFobk5LlyeWNqkbiLDihH9wy+/V2VD5AtRE3YRvtuK4+BIoVj+xtzPrjn/U2od9jccxV++iHbwoV1D/2Fzb6pQP9cLKyykm38E2GkCMa9zkgoR4PPg+vMKmTGwJhf8b3f7jWpj2hQju3qw==", + "type": "discourseApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.discourse", + "date": "2021-04-29T10:02:17.164Z" + } + ] + }, + { + "createdAt": "2021-04-30T07:12:07.227Z", + "updatedAt": "2021-04-30T07:12:07.227Z", + "id": "154", + "name": "Mailer Lite API creds", + "data": "U2FsdGVkX1+19L50lgsCSy4Ck/5RRp6CXjjrXH8uct7/NlJ9ykhTqQtj/LmrDsyO5J9+HdKkRv/xLDK+jqhnfg==", + "type": "mailerLiteApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mailerLite", + "date": "2021-04-30T07:12:07.220Z" + } + ] + }, + { + "createdAt": "2021-04-30T08:21:46.630Z", + "updatedAt": "2021-04-30T08:22:20.978Z", + "id": "155", + "name": "Mattermost API creds", + "data": "U2FsdGVkX180CNroiq7zE3GIzIwitHMqah9pL552nzdMqDpXDqJleyRLcFw48lWLT7zwgI9eGXdOuphVOylXRXtmG+a0dD1y5qJ5aEpssw8GYFyVe5YwpZOPQV3qcGBwbphhe0XYpxKf32dnPpOEdg==", + "type": "mattermostApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mattermost", + "date": "2021-04-30T08:21:46.627Z" + } + ] + }, + { + "createdAt": "2021-04-30T10:22:25.663Z", + "updatedAt": "2021-04-30T10:22:31.039Z", + "id": "156", + "name": "Chargebee API creds", + "data": "U2FsdGVkX1+uzSiaH7ecp2Y1RO6QUxLlXhsXGAjyPJXjyBtj0pX+Rdcq6/ieIYK9OnhbiEMn2N/yxvArK91p1Nl74p6YG9u1RHvLFLyB4h1/uY1Uz0s+8mbVvxQvfrn1", + "type": "chargebeeApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.chargebee", + "date": "2021-04-30T10:22:25.660Z" + } + ] + }, + { + "createdAt": "2021-04-30T10:50:16.724Z", + "updatedAt": "2021-04-30T10:50:16.724Z", + "id": "157", + "name": "Mailjet Email API creds", + "data": "U2FsdGVkX18jpZ9c4KNNhiSLG4xvQkMNRSw02aYpBDU3G96lKlKheejNN6uOgaZhYLRUhqE2O73M+RGH+D7za+8Frz04tHcgqj8TQbgjUHMnscyf4h5/geJOGnNLEzjJ803sXMaw5zHioeFxKvRRKQ==", + "type": "mailjetEmailApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mailjet", + "date": "2021-04-30T10:50:16.722Z" + } + ] + }, + { + "createdAt": "2021-04-30T10:57:35.157Z", + "updatedAt": "2021-04-30T10:57:35.157Z", + "id": "158", + "name": "Mailjet SMS API creds", + "data": "U2FsdGVkX1+ZwlTYm6WgzkaNidpElcnI4nuvvczGPr1lWtXuaLnh5PccnLmVLW1wqzCCiNScG7CcJD+Ch+BCOA==", + "type": "mailjetSmsApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mailjet", + "date": "2021-04-30T10:57:35.154Z" + } + ] + }, + { + "createdAt": "2021-05-03T07:29:32.307Z", + "updatedAt": "2021-05-03T07:29:32.307Z", + "id": "159", + "name": "Kitemaker API creds", + "data": "U2FsdGVkX1+t3XGAixnfonj+DKGY3E9e89cyuNIQ0HOJ7b+tRdw6oot4mR/E5Rs4DFvTmQ8fSVmmksz0eA/Jlj/lsZphI3c9OjmbZIimFSY=", + "type": "kitemakerApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.kitemaker", + "date": "2021-05-03T07:29:32.301Z" + } + ] + }, + { + "createdAt": "2021-05-03T14:31:02.284Z", + "updatedAt": "2021-11-12T13:13:11.267Z", + "id": "160", + "name": "QuickBooks OAuth2 API creds", + "data": "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", + "type": "quickBooksOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.quickbooks", + "date": "2021-05-03T14:31:02.276Z" + } + ] + }, + { + "createdAt": "2021-05-04T07:28:31.210Z", + "updatedAt": "2021-05-25T14:28:18.569Z", + "id": "161", + "name": "Twitter API", + "data": "U2FsdGVkX1/lNEaMgYF4KKEgurSWc0tgQmBaQowLsCduikuKYhkO+zZqveLoyp2PX1W/l6lsPCz5XgtFdSxd8KofwPoJXRlBwe3v5R98pcgcjKa6u18fyZFLsQu9/G6RtsSogdPTeltqH0dPJcGVdRvqZh6mB8PNflDFglBDswxgxBNXpBI0MrTqsUU+dOjmro1Tg9iRymwiQTjTVc/MAdR+iv+Bdg/ToUjKQeM4C/1hbsJ/l8vcLPBXv6BZfFSRYPt9vGIrfQ2WUj2IwyAO9KxPgxhwhUpGwXRXcHfW/yC6b53cvtM62GkgCONjlA7QFtDWucNqGOFbGi0va0b1nxKZOpVFbGAhD7UOOuEzUZDi9v7Np7/CUDhEf+nwEKeKqtEoO4rk5iZ2izLsoyE2PvtYgU/Xp+7F8+g0jAm0fL1ZWHW9XylT578k9Cc7rFguFN1eCKTf6P6+LHxFmzNd7g==", + "type": "twitterOAuth1Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.twitter", + "date": "2021-05-04T07:28:31.208Z" + } + ] + }, + { + "createdAt": "2021-05-04T15:26:06.759Z", + "updatedAt": "2021-05-04T15:26:06.759Z", + "id": "162", + "name": "Invalid api", + "data": "U2FsdGVkX1/WJF2fZFfajX7IsiVGSVZof3M94BzbuHizjuzvUeHFxAvSQUkHBQ50bmxFoNncCV/c47w1wrjVoA==", + "type": "vonageApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.vonage", + "date": "2021-05-04T15:26:06.754Z" + } + ] + }, + { + "createdAt": "2021-05-05T09:51:21.413Z", + "updatedAt": "2021-11-12T12:11:05.438Z", + "id": "163", + "name": "HelpScout OAuth2 API creds", + "data": "U2FsdGVkX18+4kpwPQqa0q0osZvootlzR4EgJ+MD6xDctnqFPigrupQLHdsK1zLEK4paIeHBXxLQ8Rv/6xCA+FdJ1L3XEiZNrI3PfA5oKmdw/BEAjDYBLF4+/rIhuZIene3GvLH9WeffpM8AxxNP4DAJzLQh+0OJqv6R/n5S2Q4p/6X087iQl0/iUhWdIhftxZ60SbrgMQ8kpmMXVORTNvgw8KNNgaFGF2iuL0bJklgmz3QgzuK3BXKxrOH3sDLGyeRzumNBQbDZO/laYwLVSUhf58b8LiKFbWu78kotgvIOBTp/g9Xt0uqINbzhHUjvanh65nOlWvonn16sspvsZ/JiXtJjn0lrfHPUcVosBzYmVSCl/iMUdPVkomYhPt8Frp7GXIuH4gYg0lLgzjXbKGLd6dL6tWOFA6pDkkvL6LpwKt+JgZjhbgZxVXb8NWZG41CkJUKkkaldxnel6DrZow7jBpIJR1yPwI/ZzfeYPlhcQ+mNVZIsRFcZOtwjYgdMoT7GcsRFxo0NXr1F5dxYZEwuLHmZcuehowPhfkdi4e6DJ1atoGoyJHH5wbp/zeV4WuIguSEMaV18agOSlmFF5KeSvuBcDRvWFzFVItiGnyyzMPoPTWZbGJ/Gz8qMAq1O", + "type": "helpScoutOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.helpScout", + "date": "2021-05-05T09:51:21.408Z" + } + ] + }, + { + "createdAt": "2021-05-06T10:27:13.780Z", + "updatedAt": "2021-05-06T10:27:13.780Z", + "id": "165", + "name": "Dali UptimeRobotApi creds", + "data": "U2FsdGVkX1+W2QfOypfTTcFZS4FxxaaTfwKo3gAxMpSQGt21/BD8DC6Za/7A4BJJt+U7wWsUNy4EFNK4rjO5yA==", + "type": "uptimeRobotApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.uptimeRobot", + "date": "2021-05-06T10:27:13.757Z" + } + ] + }, + { + "createdAt": "2021-05-07T13:47:53.290Z", + "updatedAt": "2023-03-06T15:34:19.060Z", + "id": "167", + "name": "Google Firebase Cloud Firestore OAuth2 API creds", + "data": "U2FsdGVkX1/mtUW0G2VISsFJ2G48bosvwmK/08RO4geDNmVKTatLG9IJGC02dx0HSQmWKZJb7QyBIx70Dk1obHKZrtYAf2hiLsOm3Vmhk/BQWUTmAhhSIaeY+HicX64hjHRdWtPjE78fY/DZev2yE8INiE8jIDKx6szxmlQDCpQYK8mnTkzJiHEVaa6U6UzhJvVQ75Yc20f+nnx0YUV2UvfIWOPyKcF+g8n/etPZ2b+GQuwy+lw4x1/+B0H3GCQVqFZ8/Tqd2m1pJ3aQxTLinMLSvZDEeSXr8XlmSXBCQr2UgfK4XnIguFjNphtBtQcf7wRDp4q+biTOeuOxD5FawILyh+k8r1pof7yt+7fNxUUjw2dXLe3/BAou+hm4P570fvpYzgXT8CANDiqf4X61Eyufa71/K/uPyCskNXNv5ROo7pk33YS23fhfSlX4TBBwXODMtX1yOU4rErQjz14J9qdtK3rFzqJYMi6KG6PQO+moa6jN+5hFljam09Zg7A1t+26wlB0PX0UZDXNpJvXlCBaixH4l7ouoQqqYZKdob5n1zEaxfymy9l8n+UG+DFQQ0zkT5XX28wzTv5WxlIoxclPzhpgjQOZHjuXctMsDi1RqE4BP2iRcappWtbaMS2hlruhZVIO6OblnaaqCTEqs6IiA7XnhpcKlafzeUPW7CB7n1XwQZgMEmtz3VeagLGBMVAw7aI0WBo23ubd3h/HzgodVef0Dlf7QCWoEXekVZNEcSIXSdV/kxGAPt2UpFboYbWkOsjVUVKxC6ujOzSUR/Qx6W2L4KLBuboT8OF969MRKAUc5Z7WQrVRykdA8PbaOgboh9g3zKVqO4CN7ZVBgfPqx2Zv3oNeZrKeElUs/5avadyWj9iKaa5sO9wfE+D4++6P3J4oL6cnucGXnEhbFUbeL2TyKdc1s+o2iG1aO/m32nH/pLEI7h2fK+voKHjenP4akoGvvxldrrTtT86pFDajFwno3I9/8qnRs4ju5dbcOnw2pcrut5xeTAKCLiCpxja+z3m8MphfbttRZbK0vQzCIe5sVJRLJDQLVWWzlU4l8/4narG3+Pu09Z0O60z01bQ3WlGGmDkuYZLUoMV6AqPagQcERgj4XzGgJLf+xGy8fBBKBPXrRlLqVDDlfyYhTcuJHTtt+9nnLf62/twpWfhKVsyrGzBhGGfTIKLR2c7jcgldNID+UObQycxvxEx7jGU0dm9dFyICN2T32I1yf/o/UdO4pEzCm72upQ3IPWK4tvPGkP6pMFiI2qDg86aIUae260f1xHksAJK7ftWsgZ4GWVU/egFQsJi/9SmHqeYWmyT6XIF7wsFWB6ov///+h3AkDFEpGhMPuRylVH3iKwf35HlSKvyWWd4nJ6Po88hPEzE6d82ByALDN1u7bsNtPNIP4Lf3M7e7FLHmlmQmizNxk4WIopubB8y8GK7WB3HgeJ59WCyEixDIL7qZUsR24", + "type": "googleFirebaseCloudFirestoreOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleFirebaseCloudFirestore", + "date": "2021-05-07T13:47:53.255Z" + } + ] + }, + { + "createdAt": "2021-05-07T14:55:52.263Z", + "updatedAt": "2023-03-06T11:42:47.100Z", + "id": "168", + "name": "Google Firebase Realtime Database OAuth2 API creds", + "data": "U2FsdGVkX18yhXycWrltppajTWCQ4pm1rJFhFCpvfDmGiETHNGRtY6g9/2bd6vhZPcKZfQwZvoH3Amq4KXDigMcfF+jEuSIPXJq4Mze/8Lkjht+UYU4GBWqoD08623aXEyz3+0njNFO3MYIMoIktCjz8bUIF4+wX3sKOmHaMurv9+K9Brv3+ONAoffyhcyU2rRaIzEuWwJwVrhZyYi4zRfZDjEjDzj4WWJ2UE+KnaLEYNQgDVl+9S9Jk/uXEVpYWp2ImNt4pJp5ZnUeu9V9A7i3+Qo/bcTjUOEpToRqPTZKXlWCKh1Tqece+tCZJy4pPXlQv4lMrfFSo9tB088sVTuhVoowb2qYatGu0v0dN7HNwWNKvMRcR4bbn7/L+LzNt16m6crdw+u7PEBBRjdqQIJ3fxzjl0UNOPZE/eByeEkQYyoieBIKDQpUbrUDnjf+/zEEZxY5VBFJi/4tCgQ2dNpp6966y7GkEN+HDh0hE7bCRxBCMz6Qn816KV2bCchZul0Og7aPad2G655cMAuwvyd+5s/opRCsGzuiADbts5fYJYzYIWob90XUdae/2FTjGs8pgpo8AoAvh+gkOgRiNM2qP+bwxMYgsdwKSv+UURSFpByNQNaQKHhAO9o4zRnM1ZA2P8vZyhTpFlwTJwVps4/SxcRzmnPclaWpjA63FxIL3CCtrh48QKK1C3CH1Ll2OhKs/7l83DYEkyQ0OgNW0kwFVftNkQNjflqqh1m++R5LpOjPdjKYNWkPh6MVlcn4614FxJy5mkI6PDRsNCUvVM/A/XBJvgj1tWPYW75ieCnWBhxQmtgngFSAO4yisC+4VTssSemUQiRpiZkL46GEFCgWPi1QYGmKR2jYtO1uc077BIztInhHdu6SsDNjItQX5HwxsUE1Q6mqXShLLnORFHe6U7Jda+mqMKXhHxB+zVmxUTcTN9985ezdMenJ6Q1uRMLWIayw8IFebeJk/i4OzKD82srHPE9T2dntqu0RDxNe1BiBeSqlYXtkwweAsI/KaMv9KRwkdURl7Na6MWf1SXILYZw0bq0GCHNdCZoRqQqMR7U4Ze/fo0MLt+Ys2sd5RaiIjbkw40zN00VvZ5x5J6MF7k8SoXsLE26oA9FFiUhhDcvpAq4DZ33drdmAgIXIaeNDG0191NS21k9fzGRmR/ggHKbOrGOU8cmbQhOdBR/7rt/VoOuRxVYUq8fbdPtQnlM8l7EGcgf+UsXlzvespzgspNrJadNHnppKjPCqq3Q/6aT/ELol5t+5lLKG68ecwwNb2VafZ1uZo9lPI3mhYM3Xq6gIm8Z/ly0fUwrlNBQGmdjE4RL6373VHfQu6IDVDTM0Pj1CtEARn45D2nvgErs4uPS2m9QXLuxCNfXRmFkqq41N0dbBzZSZULH3oJy+JFO/oH1wwI1tFVXpnBoaUjNFwH/D9ZpDTs4cueKSX0/VFV2H52Hg/V+rwsT8UGJGi9Y7hB+WOO5xhZ5/QA/2rejyKNKXnjIQ9Q47uputaFsrlQPOnwFpDSR76cP0vu/k1bBv0/QfJPHFpPY4ZML5rYI9kfQWO9YDt16TXvhKrJfjHtibtH+tXM8g8dHvhTu/5Adi/GZjoenAFFVzdbrvqQHSgsSHfZGMhn37X0ZJwpIC7JBVwsvsnhmwiwTHn100ywmkOFM7WHPbXrbm884nOPHfOSXWeMCKN8wJzLsTNZNmHEPYzhz/h7MXxy08x7bUvlAcx4p4w1t1m3V/GGx+g0BoiYPxjyGFILKHpxlgDf8AA8ve6MzCf7Ii83H5SX7x0iDHdlcKoT3xcbk57BgjSGjDvfQhD8iSv+kSUr0Twp4ojGfAcyFjQ9PFbXSMcvk2cJJmROvIn4AbvCs5IZadulQAf7vWl56fqtoHHUu+VL73rNJgR9rIcohnw/25b9DBLO/MLzaAmXsA10DnVyauMEPv00b5LaPE/wntcqNt1+ScQ7k5oW1G2t+wQXY8lAAkdVu2owuBjm5HpCQ2tTnKrd2ai9uwWN8Qz91GcXuaIXlQXKZ8Tqn6VB94BEZ0ie7C98NuSTbxv8T4S72R1nbcwjHtAhLQsNZLwih0N4mWXQMRADS+gvRs3wEIyXx/phg011NmgKXRwng45rjvR2Lina1GENCMlgj/Sxjqbidgv1IMNLq4BGjnQ5WSgPRzXVPXN8o2rhUWZX2f0398DxVqDWx1Q6spQajREpPrLMBhM4lANc4MM0pDingdg0Z+SbySEkpNePQ4b6HUlRtpwY7ysf8D38awb/mmaRmYWQ4FbANLwxMbIowCqH1Ad9ip/QDeivStNF66RRC19iFrUGWFB7ZprZOfx30c4GyGUKZdCX6uo1z4rkOR4q6jyNH+ZpjbxER3jWCkV+nQJNjoV06PqCU25k5JOK6g5PRKtytRKfOBMY7R8rZ10v6ZOEXwTfWIAkkvGNO2hS9XSxzPGsMpqSx5I/Y41EJHJOkZIMwZd+Oc=", + "type": "googleFirebaseRealtimeDatabaseOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleFirebaseRealtimeDatabase", + "date": "2021-05-07T14:55:52.046Z" + } + ] + }, + { + "createdAt": "2021-05-10T13:16:33.985Z", + "updatedAt": "2021-05-10T13:16:33.985Z", + "id": "169", + "name": "Mailcheck API creds", + "data": "U2FsdGVkX1+WLeu6sqlw4024fkM5XdyMKrG9CmdpQYV1CD/nRL4GMPDrG+1jzWr2RZAHRzy6kd2fl1MZoOjpod/3BrWOoCrDchk83J6BOhbuRJO4fI8w1a1vsmGuyBTxcukGfo4tSlpFyrksrX5i5mrhYLbXz9Lo76U94PhRGUd02424YRs4via6wPlay02aUWhSKIp4ZKDW7XNUHxAWpq4F+VtXSJj8y9Q3qQcf5cWlEdsSJ3I48uvOYHV4Xonm5D+CMAuso6xSwhDjQ5MqsMKo4HiVtlMk5wd6UCmR9a6zrmFd9RiknyUwmww8P6pzF0Msro8eXnuUXlL4o/0lJ1hnX5i/yKZtAN4zMjozmNeZ6lmxXHEghRLCv8eaEt3I6p5EnvM63AATN7K5BSXZXAfqssYmKVAhtjp118zCUPk48w16mb8Tqn0Y86Cz/j+oOggEDMdYUpkLn3CR79M2O57zZnlzZMqGsv14wWb2zvkecPkNpOu4rIKyiAjY/Nftz1b3MghpJnPqCAz5PhskxSCkQcwH2FvzeTkK3NN7pf8tBnZyvBmHf6oTcQN9b+LPmm1orqgvUL87BHRCj3yVp4Nl0HcYN2pihR8xdYnOt7ms1qpMHeQLECmxgzbIOrUTb4Whu7mnWYbvC/d3GjU74P5kdZvPD8T7GNszhGdlvGP9svo3Uq3H8J5COB/nmfSsbfw4vZiwxM4IsNaPFcp9TygTwIIxjsBLoEHlS8UzV6XKJiUQTrozzrS71Pc2lg3voJGQtkYM1DBFKXkQZvVfasz0+vI0euYVbmcXaQ0lPCht0ssgZkZJISSKxq6QCbMkCYjLbOPKMoJeRo2qD/ENU2xzj978P8ROsT11i/uPHOkT8xMAKYx/tu2cyeRHZu2kU5LoJRDFjOZo8cU9IiQq7g==", + "type": "mailcheckApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mailcheck", + "date": "2021-05-10T13:16:33.976Z" + } + ] + }, + { + "createdAt": "2021-05-10T15:39:16.380Z", + "updatedAt": "2021-05-28T20:43:59.278Z", + "id": "170", + "name": "zoho-creds", + "data": "U2FsdGVkX18b2vpX62qVckXUxaI7NoDMwZycOtRKB0jkRTxdAWKqj0hUN7ef9noq2487OjIjwyKguRxEfBsgDiVcsZHFFOyvXNw0dyvRtsq/GFRQ8vFIqbkMgjRclvxLCUC3ljk1aXa35+9MzF4L2jWVl1LZ3+1Afaldo3hLUg9jVIIF2r6G0f3y5NI0wgT8GkLbisk31+rYFo251hYBGy5YKqmTHzxgKrem8RpEUqCF/62zYTMhtz9VcBsfcoODazeFb/utkQlwMHUUbK3sj3Nju8mHLw+XoK7CoPrNEPuNVqnfYegKkhzfnoa0GoryyNyS9HAlq6lx+KJ/DEX4adgGBttHG10Hv9Kw9HQemyPi7Oz6YgWfbBf/3hUaPdHKvUrF6qXYWyK6+TsnAYgkvtFTS/sfNOHbW7FCtzPyLR91OlA63d0OIUzdknpv7IjUeVmG8TCwtAzth0HPLCqGIAI0Nw+zxItkYGJLMRegTPrJ5IifvKuEZ8rAjmMxzhr32dlPTZPRrBfVcPWriwCQUTBBhWpGWaEj+VzwZ3frNqNFwnZhfZDwpkFstnUYziDhYwW2mXRqDZJdce4Rdx9S9xrlnnpAAiaFmdv94MkjXD8l9mDO1JJt6Lt03QOwtRkk+Piwww8nbBFyHT5tmAG3Xw==", + "type": "zohoOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.zoho", + "date": "2021-05-10T15:39:16.377Z" + } + ] + }, + { + "createdAt": "2021-05-11T07:31:14.708Z", + "updatedAt": "2021-05-11T07:31:14.708Z", + "id": "171", + "name": "Pipedrive API creds", + "data": "U2FsdGVkX1/i5SvT4DYHROcecqD+fOfNaeUkpDTXSmT7FcYgX+h/+uo4HNnd+KRdiTzGiyWEzFvctcBM2H5M1KA6baQHXc2Z8LgptfYFUUg=", + "type": "pipedriveApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.pipedrive", + "date": "2021-05-11T07:31:14.702Z" + } + ] + }, + { + "createdAt": "2021-05-11T11:25:24.871Z", + "updatedAt": "2023-03-06T11:43:06.535Z", + "id": "172", + "name": "Google Docs OAuth2 API creds", + "data": "U2FsdGVkX18SCW6jsqljoAMOOy3C97ewD4+qZuFjchnBqCMKip7MeI6cfV2xegtZTTL+eFmtcrkf9NN96gdR4ClAk1HuNs4XK29yzVGb2LtB9F2rTH/jYTlSYlX0O72C1ML/EqfyX/4qnqCc3yXZeeoAWkHLH7rgMcl9DXFHjRjhD5eJBsVEkNfKOucgmhA2vEvabJtrPcEgnYef0aH1bSap2S7Q1ntJMOygh69VSlZusK0KocPJbWypG7VVGNbfIJQlz+GikmLQW/eoIfma4rRqVm5y2uKPxbJ7XGvlOMv9T0rkVHGdw2T+vQKkJAFWsBiIaEnrUvpzt2NAVJXr/w/1DJ3/zV4ep8KHOKYHWGS9H/ujWx6TdE3iOvLSjtEEz8l6YWaEvRthodlR/bJLqxySUqGvHIz2U3KfhP/3QrzELbiDZD1yFyZc/B3mLqKexdptSft0KFdZINbv8ZbZ1J4t1zEwfHKG6WAgsNtrYvI3UC5tRbxmxDgT2C0+KRu7Kc43VeFdR8ck8ITqHA5orJ0ZMi1IcJkrFSw9KIubOh7t8gEoO1D+r//KC+f7KGq4XN5L23yOgx+rXXhdrxNI1DVUpAqzDDuvHBENYTkpt5FVbuTPca8gb8DKv3AOvq3uxpkcCa+Y2FdRzxB69YHM8uL/LKP0JlcgsWEQxBmETjlDCQu1NN8v5F6hjBkY1V9fg707tzg96M6EF9baZgD+8JEOOuUpk6+7o0agJ38pzAp2uZl2zjtCCr2DMh4RWYn08KKBrNbpLWNZDxSNvJStIGl7c/D9Bq58PekrxYA3UJoUk3xpDcpwmdT00B72/roerT+5ftGbo0MAp1mSAEqa05roy02CThzH56dqDLUNT7rO0XA+SsgjeQWckvgPl2wM5E3aMzSguTUq6PcSNCkA23AL27D70S6Yk/52WnL9DPasDhBoIm4xTEdislHhK0nAkmMYzofZT7xQrLjqUVzXuX8kRtgWoDKKHIgBnQ0SogA2xw8QgFO/2obT7PwoQyzk2g2iwLljX0XT1DjzXPa0zqz3pjtAOf4g61QK5chatbu+cA7opSAz1d0BDWrPYYzGy7WugeERYD3kSH5/0SY9vfUKd8iv76e228gvBL+xBq4=", + "type": "googleDocsOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleDocs", + "date": "2021-05-11T11:25:24.864Z" + } + ] + }, + { + "createdAt": "2021-05-12T07:04:35.309Z", + "updatedAt": "2021-05-12T07:22:49.204Z", + "id": "173", + "name": "Paddle API sandbox creds", + "data": "U2FsdGVkX1+rZN6JDd2DbWAbiBgbAtT1vMW4p/mzboubKGSXSfpBYao4xG2gAfpHXTI8H/Sldj6bxnH/bvJ7t0mxIJSrmYuHejom6BWr0NDChDZ0Y9QMf2bbsLygJNKVF1j7Jd0u5DljqQrj8g7tYz/rJlbCJLrY4tpfmBc6qTQ=", + "type": "paddleApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.paddle", + "date": "2021-05-12T07:04:35.303Z" + } + ] + }, + { + "createdAt": "2021-05-12T08:27:43.980Z", + "updatedAt": "2021-05-12T08:27:43.980Z", + "id": "174", + "name": "Iterable API creds", + "data": "U2FsdGVkX1+p128UOZNFPiKgBT+0ym+XIQHKsJGkQU2pka0lG3p2i1RFnnuScB03Z7ootwh1owE0l1Dt3eLe+g==", + "type": "iterableApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.iterable", + "date": "2021-05-12T08:27:43.977Z" + } + ] + }, + { + "createdAt": "2021-05-12T08:42:03.059Z", + "updatedAt": "2021-05-12T08:42:03.059Z", + "id": "175", + "name": "Beeminder API creds", + "data": "U2FsdGVkX18vLPz0OwOKJ6aK94NjCU6bGe3ZXP1H/7kw8wfcA/BG2NXVJhpTaDLb8qzmN1ijjHQ91fDgyN/U42j2oYvjQX4uIGqb2q5wR2I=", + "type": "beeminderApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.beeminder", + "date": "2021-05-12T08:42:03.056Z" + } + ] + }, + { + "createdAt": "2021-05-14T09:39:49.819Z", + "updatedAt": "2021-05-14T09:41:10.735Z", + "id": "177", + "name": "Pushover API creds", + "data": "U2FsdGVkX19Vcl9xOMo0dfpIcNBa0y4wEHeGB4Iq0acfEyNYVK76PMLSBn4DKyp5ZzdmIjIyqKik9lxdP+wPDg==", + "type": "pushoverApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.pushover", + "date": "2021-05-14T09:39:49.816Z" + } + ] + }, + { + "createdAt": "2021-05-14T09:53:58.647Z", + "updatedAt": "2021-11-12T12:11:06.896Z", + "id": "178", + "name": "Keap OAuth2 API creds", + "data": "U2FsdGVkX1+NkVLasVH/iMl98lMmeEg/Q0W6kGd92IvPjWjgHPju4aRg8OarC2AuPMzE6sep/kOm7UN4oFr8n/WOLNWRP5Ddnedh7oHaEp0o8dthM7ujNGDNVm9xPWXMpauP2njVksnZu6sPfcLMixE4JwbqpO77qgeM0TMwhSe1PjQ6cbAFftprDgg3XrLaq48P6HX054BZS0pq6zEKOi0LRazhpz2E0zUQujC44CQpwI8GJ5DuXIyxAmnZDa5miadQouMemcE41uLYQhO1hhhzo/FxB4OY6FKNfoIJ04vVhv7vgj4oQvUTNDr9AwMMuzsGoWW5eplS/0r5RbFMN0pymu1fuTemEiW/dz2EPXloU8laFKC8LQfzdTngmTzNo2OHCmAuraSpauMdzQyEfulL5mrKE9ZYnrJ6hVfyhJKFP5wLOUiIOfxuT5AF5bLD+erQ8AqwcmGLBKcib/Z7PoTFan43h9lor5q9Wlzc00lRBFLKmlpAN+jNlI9CUOT0/qC7Iv+pl8uU4EKguC9pQWtfCkkdQi1oyONfxn4bYytOEBBtv638YILEXCZSmOCdjpSksA++WYHw8vXLDQVR1CtjhPbptky79syXxDPJP5slSHl+Ug9cEfHU3i5+cVK3ei1FrQfvfVl9mXiWdvtMEM8qM+siaIpnIaLrPAhme2lGyPw6dABtPIVrsQcvoJcvT4nvwfu4pnYkhbluS74drw==", + "type": "keapOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.keap", + "date": "2021-05-14T09:53:58.645Z" + } + ] + }, + { + "createdAt": "2021-05-14T11:04:21.533Z", + "updatedAt": "2021-05-14T11:10:33.718Z", + "id": "179", + "name": "Header Auth SentryIO", + "data": "U2FsdGVkX19tQuwU/H6CAXmD5MBtBA3MUnCvQGXDMyOCv1wQs/dPKOAml8oa429Di8wjPZNQkN6t9pbprWbmuiUruy76PDIRQBVOcuTj8VlopGRHtx0l3aquHFYVifqLjcwiMh0mQRTwpCRR03MQ8Qys1rYhvrPlrSRwui6RQUg=", + "type": "httpHeaderAuth", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.httpRequest", + "date": "2021-05-14T11:04:21.531Z" + } + ] + }, + { + "createdAt": "2021-05-14T16:24:46.971Z", + "updatedAt": "2021-05-14T16:24:46.971Z", + "id": "180", + "name": "Notion test creds", + "data": "U2FsdGVkX1/T6vi5pJxnkc964CrMX8moS1c4VBMwhtElX6cMgfNa+qCjs8ANhO6fM3DWQIMlR7xm5xKDOwJVi5WyBIhL06mF6FI3Y6O0BWU=", + "type": "notionApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.notion", + "date": "2021-05-14T16:24:46.962Z" + } + ] + }, + { + "createdAt": "2021-05-20T15:41:04.169Z", + "updatedAt": "2021-05-20T15:41:04.169Z", + "id": "183", + "name": "Deepl Free API creds", + "data": "U2FsdGVkX18xDcu7uWvmrhsM6E154fcUJt2sUvitsqGkmIU0/9MHLkQ7vlfPIazmcZ8fTsXgEtgggvWKfox0jOWcBEWtN/9mh+NPVdomHujrFdjuWv3rU3etEdhoZJLb", + "type": "deepLApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.deepL", + "date": "2021-05-20T15:41:04.166Z" + } + ] + }, + { + "createdAt": "2021-05-26T13:08:47.620Z", + "updatedAt": "2021-05-26T13:08:47.620Z", + "id": "184", + "name": "Rocket API creds", + "data": "U2FsdGVkX19lFQGVlDNhMUVmJ75DaD25RiS3AZ/GMAPTMeEeyP0DY2C9WrTmyqPojz/W6tbAAXDOQjJjX1+vJOO2bdStS8is6YWU28uwgy7om4Ah/BBdAsFmG5GcdgnRABnzKOKa911BfpVS0FTMx8UErbSmK8ri/lZH1N7+ZyaKLZBP/aaLgXjAx6Tab3MA", + "type": "rocketchatApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.rocketchat", + "date": "2021-05-26T13:08:47.616Z" + } + ] + }, + { + "createdAt": "2021-05-27T15:04:49.079Z", + "updatedAt": "2021-05-27T15:04:49.079Z", + "id": "185", + "name": "Home Assistant Api creds", + "data": "U2FsdGVkX19SRTFRfGXIbmNPr/231/ZflbW4U24b9PNR/sRnZJrvC/tYT7Y6/NaEjAPEG34tNfI6Er05iEn5HSdV8fURYF2YfV2x+Bi/PCk2G8SmjGNhvAAfn7FLEXa/P5SyfdNVhhYMw93hV2l0HM6ulpaqi3kvdCHVc9WqYmKDT+jfqfiB2QDCRhFEpnHa5DOjpdCo0uA8JjhkMYn7uslT2s2DyGSbqrDOs+MwtFL1yL5PVo2JxaGwbBtjiRg0AEkWGur/3zix5zTAsin+ohzP/t0XBQzuRK7FRfWD6HlXNV7DD5wFr8dJKjcwxxnqrx+h4D/9qyBfqdk4H/zdUg==", + "type": "homeAssistantApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.homeAssistant", + "date": "2021-05-27T15:04:49.072Z" + } + ] + }, + { + "createdAt": "2021-05-31T08:49:12.155Z", + "updatedAt": "2021-05-31T08:49:12.155Z", + "id": "186", + "name": "Uptime Robot API creds", + "data": "U2FsdGVkX1+PwKjMMm2u0e2DI0H14X5nof/91ip7CjYdvk3XZnh/jz7ba2/aG93Jm23BvvkbF90ai3knsj49gg==", + "type": "uptimeRobotApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.uptimeRobot", + "date": "2021-05-31T08:49:12.149Z" + } + ] + }, + { + "createdAt": "2021-05-31T09:22:28.271Z", + "updatedAt": "2021-06-15T15:59:53.419Z", + "id": "187", + "name": "SSH creds", + "data": "U2FsdGVkX1/lBuNcR39kXxNKDkrIC83g0wueSK9p1TudrXGxPitzJ0cx+arrA6SQbnxqOQ8agV/2tImy0NkOorQa2JzZLqULN0l4+rA0fVprv0QjVMLHKuzdLkoQrrLufJ+Ec24L+Dto23QKHrWfeA==", + "type": "sshPassword", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.ssh", + "date": "2021-05-31T09:22:28.265Z" + } + ] + }, + { + "createdAt": "2021-06-02T13:44:52.204Z", + "updatedAt": "2021-06-04T20:52:03.921Z", + "id": "190", + "name": "Microsoft Todo OAuth2 API creds", + "data": "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", + "type": "microsoftTodoOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.microsoftTodo", + "date": "2021-06-02T13:44:52.183Z" + } + ] + }, + { + "createdAt": "2021-06-07T07:58:21.050Z", + "updatedAt": "2021-07-12T14:21:08.641Z", + "id": "192", + "name": "Microsoft To Do OAuth2 API creds", + "data": "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", + "type": "microsoftToDoOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.microsoftToDo", + "date": "2021-06-07T07:58:21.028Z" + } + ] + }, + { + "createdAt": "2021-06-07T09:28:51.874Z", + "updatedAt": "2021-06-07T09:28:51.874Z", + "id": "193", + "name": "Git creds", + "data": "U2FsdGVkX1/IIVWsCYtoZ7p4mtRUcAsonMpXURC3t/1X0QXVuHDFO/G213Y22rbgDrpW4lHErYa2qGGN9udgc5HBNoNcH6jWBZ+504s9HF8=", + "type": "gitPassword", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.git", + "date": "2021-06-07T09:28:51.858Z" + } + ] + }, + { + "createdAt": "2021-06-07T14:45:16.621Z", + "updatedAt": "2021-06-07T14:45:16.621Z", + "id": "194", + "name": "MQTT SSL creds", + "data": "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", + "type": "mqtt", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.mqtt", + "date": "2021-06-07T14:45:16.591Z" + } + ] + }, + { + "createdAt": "2021-06-09T08:29:47.063Z", + "updatedAt": "2023-03-06T11:42:50.922Z", + "id": "195", + "name": "Oauth google", + "data": "U2FsdGVkX1/Mc0X3JTx9ez/2SbPS2BGxL4JwA8TgOuHlOjvjQQdgOOhg3pkNsaIA+CGAREXyIpbz5yyCT/ov0Tf45L9G7AAMLNqyDDmd60guHvBTX1qQdOeP1q5YDghzCm5+7PqTfPIoBl/0eGvlsC0HWNhigSxRhVfce2LH0iyxhIZUYB7Yck8mztHusijc60d0BNuA6/b7hazJL/yqFRcCQCbh/qGW6HpyUc+xiyS/Yt7Vssvaq01A4sF7F2u5", + "type": "googleDocsOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleDocs", + "date": "2021-06-09T08:29:47.048Z" + } + ] + }, + { + "createdAt": "2021-06-10T09:30:02.562Z", + "updatedAt": "2021-06-10T09:57:05.941Z", + "id": "196", + "name": "Google API creds", + "data": "U2FsdGVkX18OTHcHvl1L9l9bw5J7VIdOuNUKmxUB661lx5MLNoPp8ijduBmxxK8mdvv0uXMgWxW8Z5EaUts2EYv50Ueu7wcFWCvY5SLglplEKgt6Mcm8kM+CSm+QZNd7WvIA88BdY30M4+EaK9f0+kvr7Wex2MT0ccUukHnNX0bxZJMwLBZZ/wf1lhHBGdXf/74RlJRXjt4pfR/pHNDlSU5w4S8z329Xn7sKJkZ+58bQpD+7e4/ogVDO26VBemvjPHoVMKKO2jOD8kYqmD9q0EMe9YiiOZ8EnayY6+Zc1zVtzJMJda/i64TEmUCzCsYRvVpYzOYuyi0G+OVRG7+WBs9XwfSF/WGlwo6A5H79vPsj6RiHFPYLeNFIyFfODVAw/k0mgaUUYOlPAqTP7GNdd+JI8h4PLJDc9jo3lEswddG0Tg5+EpI+dXub8fxdVZfPTJLjUItNZj0/2g2slDDqR9VyG0M6pCo/vLVbP3hIxQgV/vKiKFQjMlz69pEuFlf2OG69Cls/JU0Cf2dmnREZ4KbrvzceKNstNjGkmHaRD8oy1n0WX6h8/LwgJIv7AGQI4lKo+5XSjUbd9fSeLT14uny0PgfxI61tcR8dfXHq9PhRrsiem/2ZWmTBzv3hD2a9iFa11yOHBYaG1HflcrBXwzJyx7QiSu3LlJ7DKJwvic6VRHpdzupPFP7eifY5X1FRlPnomDKM8bXxWdhbYx6U1UgkXjR8RBlX/VmEnrEV2ECOcaipadPktz3fNOxm1UC0Oed1Ujeldc3TBSq00M1T9l8U0z0aYjY3q7FnMezlkPu5qZKh0oiiyzelpq+XZMtwUVX/mGDwB9DeKIYcvNy7cHiF1izKz3wxy0Jxhj5WkOQdGjxPKEiYqLyI/ezJKNnGi17lKhPqAa0ImrTlVainHG+5z7KPHeuIO5Pj4q3ROyYrUdGqau3ZNDiHg3c3Eh+pPWLi/0QdtGPOLADsmzb8SA+Td8Y9IJo+X2obZHt5ohHKOs6C2f4I80FGjupB4YdDwzBo6pGVxpCcICfIAaxAmyNbWSVRL9jEb8Aly2qaB2Hlh26OH0PDPuLWFYd5vwesbfe37yePhsRO31DiZJ/4YrT1U3zEeEDzx9kgk7wHB1Iu6rnHRdr+0bvepE9/jWchDOgVwizfGu7aTcmki7+X+YFacUlLYtxQEbUFiPvgaqPMd8UeuV+syVzrkCqo4PL0tdm9amVd4aL1v8l8CdwzZ68bjRGuS0F7qHpgEddYUQysbBil6DW5IKYKaacL343GR+2L7AoaXCl/dztRue8Pdk7+GDqWHcld/6xCOQP9in51IPqYBeaT4wEUH5DaVW6st12HnekuNdvVz6vFfaD6+u55eQswvCbLIzHm2ov8tjpMqKxZE/5H/yR17LDxjFdOLXKw2HILQKIPYEeTM6TPg3ZjfSB9JCWBPEE3a8cSdpVYVcdkY/Ww3fz/8RLQmgod5n2YzHW3r1HTixCYQY4SFR265gzKNo9YpL/owczd86uVFv7fnr1vBl0oMzyz/L0WnmqRrHbUvDOG2w8Q1aMs1WXF6MmCrekIiluU2qdXAlOHXDbxULHNf5PbJj7N8zanCaC5Npv3odT0P84AzIuXsHyJUBb/gvQbtNyDI2HmBwCeHQNzboVGXt9sVGk4Ew1jE4wlyeSM0M4gLRo8V4fsRa/Tm1feCKA2ACy7o/1eI+bqemEFjrnQJ4otK/QUdEIlF1v1c3T5vo9MQRVuLisxqbLVOieTfWqgaWWK0lyL9YeTad7izbsN7qqEh0lO+HdrdJGF9H3oiui3VlLK/0Ev/xRmrG15RRjrggs2vy+1uDkBAR88lVksIVVrEBSL7iMhiicuoKsnNArNLQ47tM1ni6og8M///kUwNJAkPg6RvmmJmvI9OrDx2mZ3NtxQTKK4ft+QGnxL/IjeqYQMrmrYw+58DaDebMMKP+gg1eze6O7zyDmxK4IoFG40QqGvPPtuC86ossKgl8P+fDGt/5f6OBmRzBW9SX032miHQ+61gZobMMxJpag3inPyWWb/RzIoZe5sX1GzftF1G00XYJLsUsK9z6IxiZMIrbp79k91fWKjNKBneEbqfSBh4w1yrwnm+UvYTpMDoOCLdRcMz61UxaY1j2Hgc+xuD3oPmevLqzzChV31hIgOuFG+B8P0X4RFH7Df3m6PGE3DbhCDZzURa9Q39+7iRy6jE4Fuw74nRr2fqPCFJC5O+CivnuvX4mPl1sFDQqrrpbJwzEN9nGzGdGxQcYbpJ+qAni3Nh9uLk4pg7jOvfquHS6KVdJEVBto/0U3Fc1vc3wj7u+YGl1iAOIkTcVCQkM9rxyP3kOMmtn77t8fp9UIKtvvarthD9VAQCaRfiS6ngIQB93evEDXiqrBpMNBJOIVd7rZv1J4zQMxbkcLBjADtOx6ngwIgxCae", + "type": "googleApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleDrive", + "date": "2021-06-10T09:30:02.546Z" + }, + { + "nodeType": "n8n-nodes-base.googleBooks", + "date": "2021-06-10T09:36:33.967Z" + }, + { + "nodeType": "n8n-nodes-base.googleSheets", + "date": "2021-06-10T09:36:33.967Z" + }, + { + "nodeType": "n8n-nodes-base.googleSlides", + "date": "2021-06-10T09:36:33.967Z" + }, + { + "nodeType": "n8n-nodes-base.googleTranslate", + "date": "2021-06-10T09:36:33.967Z" + }, + { + "nodeType": "n8n-nodes-base.googleDocs", + "date": "2021-06-10T09:36:33.967Z" + }, + { + "nodeType": "n8n-nodes-base.gmail", + "date": "2021-06-10T09:36:33.967Z" + } + ] + }, + { + "createdAt": "2021-06-10T11:13:54.703Z", + "updatedAt": "2021-06-10T11:13:54.703Z", + "id": "197", + "name": "Wazzup creds", + "data": "U2FsdGVkX1/V+lYhVIpxJKAdbtjAbgUWxRDA21RqHYIZQA2X0vWyQ7gLvuaTInDChmdKKTU6oz8CQYiovBvAws3Kdks5GVPpaGvJnj0N4a8=", + "type": "wazzupApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.wazzup", + "date": "2021-06-10T11:13:54.654Z" + } + ] + }, + { + "createdAt": "2021-06-16T14:50:59.312Z", + "updatedAt": "2021-07-07T15:22:11.746Z", + "id": "198", + "name": "Service Now OAuth2 API", + "data": "U2FsdGVkX18A1rFV+ipWYsfGfllKG2J76l/5EBlzh/9wFdEVWYGEnrwlNwmivXblDY3TaeLDZQ7jn9cWBhEOz23n6c9lbRi23mxBiwTPt6TBz8ujyaRtjNolow4/P6BFppafb2ayEknxRrkpGB37G89acR+ddbMWMa2K7vIuzsdCPpn6crRFJoils0eRXDJnzj0IRlNatksGlI8LhmRFFXtxCrzNEcZiO4cj2IH3vZbzXTE+2CHo8/+IPDohplkp0VM6to0jVW5EvpGGISJAuuOogmYwzIRUoWjCspXqt7eyDVH2YoCRTVWDVgxztHwGgHCHnnbJO/ksS3ElgCUZd/P118h7zGAVEhKu9+D1KKzULRMnd9llYq8dh93a/jRXksXSiCV9Kx8foOXjpRveWuTx+iAcGy8mdrnZVkYjvid6iuTbbrAtToa57IzonzFsHXWcs0S0WRhmzDt5KC7FnQRVcYO2J9qabKFaOgH4ObqM34TNeQTH3rI18bVDwgzWKIL7PGW5dn9ZQ28bf9kQU8JoJtlBUxr+sCS7uiR6M/Hsw0qBwnfyc1Ho/besVrmtv8bffbeYvbQCS2nTuXPxqJkX8oKX93MZvj2ybXI6N/343eWUisvegW7SxPKdxQkPJI2J8vsbG8QWZd3I+Ubi1clX4uARulfeuzXLvCs5KTShvssJgbagP9Sf1Dd9vK19GAUUNzSQ79e+EXec6QJfLQ==", + "type": "serviceNowOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.serviceNow", + "date": "2021-06-16T14:50:59.280Z" + } + ] + }, + { + "createdAt": "2021-06-25T11:10:45.303Z", + "updatedAt": "2021-06-25T11:10:45.303Z", + "id": "201", + "name": "Github HTTPreq creds", + "data": "U2FsdGVkX19Q/HZbu0Xv2aO4XK5Oll/0GPHCxm4fG15rmTB0ULY05HVx7Jvx5okarKKH35cpGoC1aPtb+fSPXCNa6zUZpYbH0TrIs654+BbSp7HKYRFioah/4EUmxSQP8XlBClrgz/bB55EptXwekg==", + "type": "httpHeaderAuth", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.httpRequest", + "date": "2021-06-25T11:10:45.298Z" + } + ] + }, + { + "createdAt": "2021-06-28T13:18:15.532Z", + "updatedAt": "2021-06-28T13:18:15.532Z", + "id": "204", + "name": "Facebook Graph API creds", + "data": "U2FsdGVkX1/WG8FR/tKdm1BVowImxVfuOFxk5Fgb/40AfVh9o73NOgUbruEdXTq8Hnpv/9vGngPOPksmN40/zqrjMAo9vHdU1MTU1LE36ose16QAFlfDulQMRlwzakuw+wpvwjfrzDVYIHhwJP9Hr4hZtIVOz1uesbVWKdh3mx+BqnNFY3KZ0MDdcITrOwQO1mS9IJ3sWi9AjqRKG25/MMaYUEoKmOZ56Cdhhn9WuJDTg+46ZjVU67gfWmbJA4adi1oulaksMlw4UKoWLBovXxy12CrJ2xE5Nlxuz4rK0lbjB3GGCNX6VL/BLfJftO5iqyRClhwtFtjf6qwHKiDbjg==", + "type": "facebookGraphApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.facebookGraphApi", + "date": "2021-06-28T13:18:15.519Z" + } + ] + }, + { + "createdAt": "2021-07-06T11:02:01.098Z", + "updatedAt": "2021-07-08T13:08:48.371Z", + "id": "208", + "name": "Twake API creds", + "data": "U2FsdGVkX18fJ1Lxo94Z8X4fgXyEr3BAX28NaqpdFK0czUM1u0V6LYXdd6rqFE7PGWPrex+qy/u611mBJPMpjryqTkhw5dpS6c7vrRlNP+m40UllwH+UyPMJ4oJvkzV2ZxVJh6jwX4V6r5XmFpOCg8+6U4JHp39ThXlwU4iecu9ydQATOs0hNftYjmDPEaoe4hNqgB0PspxoVJT4REXAcg==", + "type": "twakeCloudApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.twake", + "date": "2021-07-06T11:02:01.088Z" + } + ] + }, + { + "createdAt": "2021-07-06T13:56:38.704Z", + "updatedAt": "2023-03-06T11:43:42.917Z", + "id": "209", + "name": "Google BigQuery OAuth2 API creds", + "data": "U2FsdGVkX1/kMPFA6N8Qd2dHVP3Hc84dX/wYIWkMRR6R0xeEMAe3PEcnzFRn9bzQIByvsHVMhcaem47LjECpiQIkV5Ee8Jd2LbZD73Qufzp3tKdsBwieP6WlP0UL/Qrkz0dws7/LlE0BsVLO4XzlwvMS2qCP/v3NQtNqbvpbvpz5qDMED8FkwKtfPYzs1x5WRiAhhCHac66e+U9BTcxbQHi9s6qzZZkHvO9wnubjNH54vc+ZtFAdmzxJrfFHxlkguF0m9C743E9044Vj+v2dMrW5N82MGQBCUe5h3MJH7IoyY4hji0txJknLuqOJ5QUK+ULQM86F2znYypgDtNsS9WaSARSX/E6Fs0rUipzaubuZo2X/T/nbz+jn0I4IbYM0lY63ntaulZUyyEEqDrw60qv3AEwhA+Jtk5WhuBi6MmTaeFMx6vAIKTgFLyPckqq3Z6kYo39owdYMkdoEAHdhUlMDX2WaxAeXMTrZS8nmnN/zkDYQWEX4DVj6CdURKD9aOwlgZgdB7+rMvr6DPvqhUWhFBQbzAxQT75vKOTaRWKhxykKzFOu+p4T9nsUNGEFgRDsuXgB4O6ufjdiUuiaEdKF6OSzokwhP4fTz5HkSi00I1WV3YC3yzll0tGGfGGaZUdJkt0dn+Ko+h8lLfuHYbj0Adp4TNQ/D23Gwvz+n1OBttnjaT9wcrrVG6tZoyX/S4LQZv/yQHqp6pCQjAAxvybiLKNgvXncYQZdIz/IQ7idp4cvP+d7TbhZMCoGmro/dK+Vx/T+pM2NgCQX/XSNfDq7fx/1Q74hz2Z1qdTNnHOxE5AZhmMJtW0Cn87ZcAZdLxjw+likWq4+opb8RV47k+fGc93gGVYQgbgDKfjPY1GeyzGy2CFlZoajaEd4uUOY45Sw8QtsnN9Yv1L02eqYmAw==", + "type": "googleBigQueryOAuth2Api", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.googleBigQuery", + "date": "2021-07-06T13:56:38.700Z" + } + ] + }, + { + "createdAt": "2021-07-08T14:04:04.717Z", + "updatedAt": "2021-07-08T14:04:04.717Z", + "id": "211", + "name": "Bannerbear API creds", + "data": "U2FsdGVkX19DUobOgTiZB2BNRYe9XfE4cRRrm0jJeH4vpdAIA6Xn1yWx1Srof9jTwVuDwQgygu86BpsDpAikOA==", + "type": "bannerbearApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.bannerbear", + "date": "2021-07-08T14:04:04.713Z" + } + ] + }, + { + "createdAt": "2021-07-08T15:03:50.597Z", + "updatedAt": "2021-07-08T15:03:50.597Z", + "id": "212", + "name": "Automizy API creds", + "data": "U2FsdGVkX1+a4YF8ERm2wQpmFF9zuWqVqcoRxHitUPNwbj04yGayD0/BUAF7C4UF049E9a+vkWKCCU+wPzMNupy+v6T50/t04J5T9X0lk7U=", + "type": "automizyApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.automizy", + "date": "2021-07-08T15:03:50.578Z" + } + ] + }, + { + "createdAt": "2021-07-08T15:56:27.335Z", + "updatedAt": "2021-07-08T15:56:27.335Z", + "id": "213", + "name": "Autopilot API creds", + "data": "U2FsdGVkX1990Zz0289mfOk1s3M8GpfiHEy9YKoQwnShYRqiYSMWnJEu5LFGr7IMciUvkztaubmR0CV6u2Iktw==", + "type": "autopilotApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.autopilot", + "date": "2021-07-08T15:56:27.305Z" + } + ] + }, + { + "createdAt": "2021-07-09T09:25:37.158Z", + "updatedAt": "2021-07-09T09:25:37.158Z", + "id": "214", + "name": "Copper API creds", + "data": "U2FsdGVkX18l89dBvUw37IdZgI4DoqM5IrZELrJN19yyuFJVOJulYwWC3pdJYs+mu5ZQHakW2plT0JPMN5aI0+oI8C1aEOkiwbpxdJYQE0HBU9WYhcxEHauUR8VZsFSr", + "type": "copperApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.copper", + "date": "2021-07-09T09:25:37.137Z" + } + ] + }, + { + "createdAt": "2021-07-09T10:42:39.852Z", + "updatedAt": "2021-07-09T10:42:39.852Z", + "id": "215", + "name": "Lemlist API creds", + "data": "U2FsdGVkX19YK3ou2PHqwk9RvmTvq8SW+IuQUPU9elxpcL1+v7VSCtXCabTO+REWz0AtAzO0Wf+KX3/NHph0GQ==", + "type": "lemlistApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.lemlist", + "date": "2021-07-09T10:42:39.834Z" + } + ] + }, + { + "createdAt": "2021-07-09T11:07:29.231Z", + "updatedAt": "2021-07-09T11:07:29.231Z", + "id": "216", + "name": "LingvaNex API creds", + "data": "U2FsdGVkX18mh/bww6zfE0KPaki4toOG5g2TnxjJziEUuVnYpj+ObrcXE+P2q7+2iSvLhCM21pZpq6/xsfdOOT2MOvxcIUnYnWDupJOv1PRafpZOL3DrOFiRoMUdMTwrgxk9rDT0Pv2kn63IHheCcw==", + "type": "lingvaNexApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.lingvaNex", + "date": "2021-07-09T11:07:29.221Z" + } + ] + }, + { + "createdAt": "2021-07-09T12:21:19.612Z", + "updatedAt": "2021-07-09T12:21:19.612Z", + "id": "217", + "name": "Quick Base API creds", + "data": "U2FsdGVkX1/bmFNHmFEKuJOOrdCy4gBcs41FiU0KeSIZwYcwtTyPH4KjLKqweO0QfuNDv2K41BKrDM7Q9oAs3Tv5Ko/P4l2QtZBYpq8XAwrVP7wUzSkGwwT+7OCbKlnhBo3WBLxfngAj9beW+c90yg==", + "type": "quickbaseApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.quickbase", + "date": "2021-07-09T12:21:19.609Z" + } + ] + }, + { + "createdAt": "2021-07-09T12:55:33.370Z", + "updatedAt": "2021-07-09T12:55:33.370Z", + "id": "218", + "name": "Salesmate API creds", + "data": "U2FsdGVkX1+6pfuX5hgu5NnZwv66rRj2UWXLmjFk4okMMGKTS0Zq5v4KEEuepftiE3NDFtbjAknhWrYiFvKZmGOzD9H/Jqkp9YVul9MIeuT5FPTHFWRw0NP9/ucm0p2W26k1seEXBzw5v5NgiaxvGQ==", + "type": "salesmateApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.salesmate", + "date": "2021-07-09T12:55:33.366Z" + } + ] + }, + { + "createdAt": "2021-07-09T13:37:45.136Z", + "updatedAt": "2021-07-09T13:37:45.136Z", + "id": "219", + "name": "Unleashed API creds", + "data": "U2FsdGVkX1/UWTTmjW5+dEZHIF+vI+/8Z1z6yrVsts5aNRyaAR6zF/jmjTJo5dxXl1Scl0ItuRFq52ZkFpwSS8onxWlh899d/ksRPsuXyUj0g1vZoNhRAlPUAk4uHTKG7CdLbIbR1AnLx7RBZ7BX5CXEaei/260WGBt/k0Apf62O7sR+6aLGEkMJ3HdVodIPbx3xA9vRHvft5DWwPnAeblMuWMNYnPZdm201+pjdqrc=", + "type": "unleashedSoftwareApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.unleashedSoftware", + "date": "2021-07-09T13:37:45.126Z" + } + ] + }, + { + "createdAt": "2021-07-09T13:56:17.513Z", + "updatedAt": "2021-07-09T13:56:17.513Z", + "id": "220", + "name": "Flow API creds", + "data": "U2FsdGVkX1+s012n9S/Ccpyeyjpguajol8ndKHq2fk8+BkMbixDXi+8lijoBFaw+jU9NEigXKBPoyvIvg0xILHYEPN5g4URfbcNkospCZlYCzd5lRvXXrkmdUY+1ldjtzjYFGcFZbQAjzGmHx3Kr+nmDom+9+MZROgJJq2On9oI=", + "type": "flowApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.flow", + "date": "2021-07-09T13:56:17.501Z" + } + ] + }, + { + "createdAt": "2021-07-15T13:53:23.185Z", + "updatedAt": "2021-07-15T13:53:23.185Z", + "id": "221", + "name": "taigaApi", + "data": "U2FsdGVkX194voBZRbkQtyAV6D4Xt5l91TONcpGY2UmJllyCtDzFntUo2jODSyeHjtIHNBh9D4uknbeHfYaGgyFSpuiqNly8hI6s09AZGL8=", + "type": "taigaApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.taiga", + "date": "2021-07-15T13:53:23.176Z" + } + ] + }, + { + "createdAt": "2021-07-29T15:07:56.696Z", + "updatedAt": "2024-01-30T15:16:53.177Z", + "id": "223", + "name": "Spotify OAuth2 creds", + "data": "U2FsdGVkX184CipdIAhmdBl5m+xl1UgWlNQPsCPRgb7EcihBkDWoc5gsRnellNxJUCWhYn0nnIITcr3Dr7V9we5IOhDFKmptRTs5e+DQ6Gn64v+rr2fT7ww9PnjTGL9pAm/mYYyAwazE6FhT6ea4Ne2/K2ISicwx1aBggzHsoe/pTv9kR4iVMznWJzJAQO8KJ3gxxADMTvIYlDhmCO7h9MhbqBXPNrkLre7vEoOhp6ZzhrDqwtFeqEy1lSytV7XQmXgjAC/bpP5+i/YNZBSfKqWCWn3m4Log8LSlpP4C5lW40meo0RRskcZJYAoF52A1ac4Cm5t/I+fbxjsAzPSSIqfSs1C6i8iVmI9FLdaM3d8K4nWh3q0T/7xBgcun08A925ECqF2KvNxqZQJLusrIUoEwjxuCupgGakxMbhXZPXRYzZj/9xOQuQeNeRXkEeZ3qG6WvJlnEfPRAfMjVjNIN5GLORwF1O1advW71UrEffPMSWeN1iPa6vrKErZCMBmU7GY6jSpQXyVSCdB5W0hUkFRDRkP1X4+JmJE6RH4c90pIyaNGdgiDapK/LRs8i/dDReVt+Pb/0XOYcvn9AfGvEnxKjKnj2m0gxiHRu7FiCWrehaYrXtoYhygxLAHG1JlGNQ+vCKLSreplrszOjD6Sik2ltsJVPwrW3Luw8WcdSuGUA+J+NqiNSchm49mXGvTvea/DAgssBQD8xSUbab4SXfIAlOjyFT66UgtRKKP4WHGkXvhQuhI1l+4cx04E3kWO+a/VLUCtBECGGjKGeLcDLLQoyw3hHanYS8fAqeBZQRiOfALQucOWUwDhSp8rtmf+FXBdeqrPGMNVt1qTha23xk0uhKf1looNXocOFrlAtm7pazu66pQrk9gOxLjATieYQvoRpnOURn8e/O2vk6s0X3asHRVtIhVR6kmP0yXK4cfesn1j39J/Fyb+dT//N7RrpAcF5tzcaovZ8jP5FUTUCaKJiKCutEuzhU6uXVnS6tH9UP1FilYn6HKFk/hryyrBmaeBog6XhV1ncVMogXMJFNMsW/RPPzbaJU2qEO9sIPmi1pHKuV/4wCYLtNCwi5+LyeZeND+WmHU8LjqqLvqvNVihbQlDQQ1a22R6rWDqo98PS+nOTyl1hhxcgYwo1kBaza3UlRUBF2PDelWu3HZSWGZpd1ojQpcmK6Y54Wd793rc9TRyLRRDpipkh4Yvm2XJexr/EZ/nLdfbCj9dWaZEKf0apgAQ6aN68/uRSvvfT9jSaic+/AExw86kxtMShH1TBPT1J0KZgAxE3CL8VNoanze9RMmnEy/AjCL7D4IPILZ5OYcsRf37O0um8e6gKXqOo9z/LMPNpz1GEzilH8U1Mwk5QFChK7h8fobLYqYdRliSc43wC7IzaBrSjrNNpYckjvlVIf2cb1eBniG3P+7gBuevtXwX+v405PuCBZoiwSz7w1iOQvZa+5YiejMCySjOhAxe+7o2e69w2IVj3Ua4MRsEIUbIvQmU3d0vzBftcYyCGS3TUcllSBfZXxdkIYs/3r8Jf+8peyQ21LprnZZmPQnHYIDSa9ORb/KqL2Yw+lAUC0wSEof6k6IdlM/GyUupdowSjARTC+9z9ZTyXBA+z8COSJwgDlcoy3lXjXEcIHRKqZyqv8Ogb7kcKr2KtSTfeEDedm06/bEx8EWn/MGwdk784HiYjwCYFIwA9eq/OUbvDyAoIZFmNeVCzedCHa5cvzVVjiU5f+7U/n7W0oLdkdRwXtp8ney3oY9iK0i/tw6duUUOE1+VrFjeGRQLzu284Dz2N7s/J7pM7a+XmMu++A==", + "type": "spotifyOAuth2Api", + "nodesAccess": [] + }, + { + "createdAt": "2023-11-14T14:06:37.142Z", + "updatedAt": "2023-11-14T14:06:37.135Z", + "id": "q80wx3kiggmjWdY9", + "name": "VirusTotal account", + "data": "U2FsdGVkX19YzDZdkttgnMSwQaHslQJ/df+UymDyoElout2KYb4Ze5Mr8W8vyWA9oM3jSc110zApTlvOaCe4H883SXgDBvugTvyHCclweEevR78xACzsoGHhS0t0YRcqKiag3BteYgeG9KspdBeVCA==", + "type": "virusTotalApi", + "nodesAccess": [] + }, + { + "createdAt": "2024-03-04T15:51:12.065Z", + "updatedAt": "2024-03-04T15:51:12.056Z", + "id": "wd646B2kD0zzQHC3", + "name": "CohereApi account", + "data": "U2FsdGVkX1+e/SwD3hZJTTggN8oHic/eaqs0GnrjpVoisY4MilixmCGSBvWHESRgvOKXCmpsohpPqEeyJ6ioY42jm9c72rjaLM2oiMoHTCY=", + "type": "cohereApi", + "nodesAccess": [ + { + "nodeType": "@n8n/n8n-nodes-langchain.embeddingsCohere", + "date": "2024-03-04T15:51:12.055Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.lmCohere", + "date": "2024-03-04T15:51:12.055Z" + } + ] + }, + { + "createdAt": "2024-03-04T16:05:06.082Z", + "updatedAt": "2024-03-04T16:05:06.080Z", + "id": "RNAgogiex4JxTr44", + "name": "Azure Open AI account", + "data": "U2FsdGVkX19Q3gtwA9Nt1YBIdkH5c+OI7X/A2iWsNJXYnagrLOooC/UZI0ZCBpPlYDHHa49T5xbWraJ/kwpVy7E0+OZWwb7sZ7xcKa+618BMLdaJQyn4fqTmz+CfXRFB", + "type": "azureOpenAiApi", + "nodesAccess": [ + { + "nodeType": "@n8n/n8n-nodes-langchain.embeddingsAzureOpenAi", + "date": "2024-03-04T16:05:06.080Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi", + "date": "2024-03-04T16:05:06.080Z" + } + ] + }, + { + "createdAt": "2024-03-04T16:13:11.535Z", + "updatedAt": "2024-03-04T16:13:11.533Z", + "id": "Rl7R5orXMm9FvxZS", + "name": "Mistral Cloud account", + "data": "U2FsdGVkX18K/8KeCsjvuxU95AF9Cyy2yaOFG0JW6hvZB3YUfVQ1bOEro8sNAFGo7h3brCwBDCfz/JLmXNWs9A==", + "type": "mistralCloudApi", + "nodesAccess": [ + { + "nodeType": "@n8n/n8n-nodes-langchain.embeddingsMistralCloud", + "date": "2024-03-04T16:13:11.533Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.lmChatMistralCloud", + "date": "2024-03-04T16:13:11.533Z" + } + ] + }, + { + "createdAt": "2024-03-04T16:13:58.488Z", + "updatedAt": "2024-03-04T16:13:58.486Z", + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account", + "data": "U2FsdGVkX195mafxGwDW3DcL8Kkn5ME4KGNGUU34IbAdBul7UJ+XXh2bVkZzD+cCvnX6Mbh1qNhP1TynynqgCrfzhn0mDHdRyJ5koVBdJaOsOQ72ItjBbS08JDmAExSR", + "type": "openAiApi", + "nodesAccess": [ + { + "nodeType": "n8n-nodes-base.openAi", + "date": "2024-03-04T16:13:58.485Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.openAi", + "date": "2024-03-04T16:13:58.485Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.openAiAssistant", + "date": "2024-03-04T16:13:58.485Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "date": "2024-03-04T16:13:58.485Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "date": "2024-03-04T16:13:58.485Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.lmOpenAi", + "date": "2024-03-04T16:13:58.485Z" + } + ] + }, + { + "createdAt": "2024-03-04T16:54:42.832Z", + "updatedAt": "2024-03-04T16:54:42.825Z", + "id": "Ohl5AdteUC94gDYj", + "name": "QdrantApi account", + "data": "U2FsdGVkX1+FU6GWIVYq7ZrHXIwHRkf+0tRLQBoPbEfjpaPmbKq6mFH8g4qOh9kYvmO/LijqrYmxTcW+RL1UV5NJgtAMAU50POrgUcC1Gk50gzXoO+DFS3kt6FQLb+a82ovGtB+UBqYj6xplZNLXJl6sS2MKt+zJ7ehgjt3TPlxLbCjwA2ByS68k86rOhCFRfpIyvX3lkaAfw/CtIpSUD32CgIY3bTbABO40aZqDEzE=", + "type": "qdrantApi", + "nodesAccess": [ + { + "nodeType": "@n8n/n8n-nodes-langchain.vectorStoreQdrant", + "date": "2024-03-04T16:54:42.824Z" + } + ] + }, + { + "createdAt": "2024-03-04T16:58:05.121Z", + "updatedAt": "2024-03-04T16:58:05.119Z", + "id": "IoeAsZR3eD1OS0oY", + "name": "PineconeApi account", + "data": "U2FsdGVkX19cylSnz+B0slgUyHRFO8DR/XbCXcs7O2lSTJd9sXSt2KWwTtWJni0xdJUlH2ii2jk3MyxKWuY+ltZw2/oCdFIT3qy8EGI2ujHgaC3JGJPr344LGa19LiUE", + "type": "pineconeApi", + "nodesAccess": [ + { + "nodeType": "@n8n/n8n-nodes-langchain.vectorStorePinecone", + "date": "2024-03-04T16:58:05.119Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.vectorStorePineconeInsert", + "date": "2024-03-04T16:58:05.119Z" + }, + { + "nodeType": "@n8n/n8n-nodes-langchain.vectorStorePineconeLoad", + "date": "2024-03-04T16:58:05.119Z" + } + ] + }, + { + "createdAt": "2024-08-29T09:12:15.992Z", + "updatedAt": "2024-08-29T09:12:15.988Z", + "id": "pHGfJmTMIpWliDSS", + "name": "PGVector account", + "data": "U2FsdGVkX1+e3a7wKZrdar8jkTor3wRQjSfAGyd8i2yoXHRvcGUhx+dIzZDPfNXHbSUUi0lcYIdIicMPJfDdZ2UXpeqjm2qQAyE86jAeTqgUE/KFUxHH3ULtAGqEbxM5WZ0K1qL1HJUuIaTRK0/NrA==", + "type": "postgres", + "nodesAccess": [ + { + "nodeType": "@n8n/n8n-nodes-langchain.vectorStorePGVector", + "date": "2024-08-29T11:26:05.119Z" + } + ] + } +] diff --git a/test-workflows/skipList.json b/test-workflows/skipList.json new file mode 100644 index 0000000000..d55a883f6b --- /dev/null +++ b/test-workflows/skipList.json @@ -0,0 +1,926 @@ +[ + { + "workflowId": "1", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "4", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "5", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "10", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "19", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "20", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "21", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "22", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "26", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "27", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "28", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "29", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "30", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "31", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "33", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "34", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "38", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "39", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "40", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "41", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "42", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "43", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "45", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "46", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "47", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "49", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "50", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "51", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "54", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "56", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "57", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "59", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "60", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "64", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "65", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "66", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "68", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "69", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "72", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "73", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "74", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "75", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "76", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "77", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "78", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "79", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "80", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "82", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "85", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "89", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "92", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "94", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "102", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "104", + "status": "SKIPPED", + "skipReason": "This node is deprecated and has been replaced by the Extract From File node. Also it didn't interact with any live services, it could have been an integation test.", + "ticketReference": "" + }, + { + "workflowId": "106", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "109", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "110", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "112", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "113", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "115", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "116", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "117", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "118", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "119", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "120", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "121", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "122", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "123", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "124", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "125", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "126", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "127", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "128", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "129", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "130", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "131", + "status": "SKIPPED", + "skipReason": "This API service has been discontinued. For more details, please check here: https://notify-bot.line.me/closing-announce on node Line", + "ticketReference": "" + }, + { + "workflowId": "134", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "133", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "135", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "136", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "137", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "138", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "139", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "141", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "142", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "144", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "145", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "146", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "147", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "148", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "149", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "151", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "157", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "158", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "159", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "160", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "163", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "164", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "165", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "167", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "168", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "169", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "170", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "171", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "173", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "176", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "177", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "179", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "180", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "183", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "184", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "185", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "186", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "187", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "188", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "189", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "190", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "191", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "192", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "193", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "194", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "196", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "197", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "198", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "199", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "200", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "201", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "202", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "204", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "206", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "207", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "208", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "214", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "215", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "217", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "218", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "219", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "220", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "221", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "222", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "224", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "225", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "226", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "227", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "252", + "status": "SKIPPED", + "skipReason": "", + "ticketReference": "" + }, + { + "workflowId": "223", + "status": "SKIPPED", + "skipReason": "You can not complete this operation. Please check your balance on node LingvaNex", + "ticketReference": "" + }, + { + "workflowId": "143", + "status": "SKIPPED", + "skipReason": "Invalid API key for Clearbit.", + "ticketReference": "" + }, + { + "workflowId": "86", + "status": "SKIPPED", + "skipReason": "It looks like a timing issue with the delete operation. The contact was created but not found when trying to delete it. Tested it with the same workflow and it worked.", + "ticketReference": "CAT-790" + }, + { + "workflowId": "87", + "status": "SKIPPED", + "skipReason": "It looks like a timing issue with the delete operation. The contact was created but not found when trying to delete it. Tested it with the same workflow and it worked.", + "ticketReference": "CAT-790" + }, + { + "workflowId": "88", + "status": "SKIPPED", + "skipReason": "It looks like a timing issue with the delete operation. The contact was created but not found when trying to delete it. Tested it with the same workflow and it worked.", + "ticketReference": "CAT-790" + }, + { + "workflowId": "233", + "status": "SKIPPED", + "skipReason": "Not Found on node Qdrant Vector Store. Could be a timing issue.", + "ticketReference": "" + }, + { + "workflowId": "241", + "status": "SKIPPED", + "skipReason": "OpenAIAgent requires an OpenAI chat model on node AI Agent1", + "ticketReference": "" + }, + { + "workflowId": "259", + "status": "SKIPPED", + "skipReason": "Please return an array of objects, one for each item you would like to output. on node Code", + "ticketReference": "" + }, + { + "workflowId": "254", + "status": "SKIPPED", + "skipReason": "Overloaded on node AI Agent3. Is this because I ran the test workflow multiple times?", + "ticketReference": "" + } +] \ No newline at end of file diff --git a/test-workflows/snapshots/1-snapshot.json b/test-workflows/snapshots/1-snapshot.json new file mode 100644 index 0000000000..2b48e4a0ee --- /dev/null +++ b/test-workflows/snapshots/1-snapshot.json @@ -0,0 +1,397 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891385621, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twitter": [ + { + "startTime": 1676891385623, + "executionTime": 416, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "Mon Feb 20 11:09:45 +0000 2023", + "id": 1627626558218182700, + "id_str": "1627626558218182657", + "text": "Hello from n8n testing framework 0.5036048381984097", + "truncated": false, + "entities": { + "object": true + }, + "source": "n8n testing framework", + "in_reply_to_status_id": { + "object": true + }, + "in_reply_to_status_id_str": { + "object": true + }, + "in_reply_to_user_id": { + "object": true + }, + "in_reply_to_user_id_str": { + "object": true + }, + "in_reply_to_screen_name": { + "object": true + }, + "user": { + "object": true + }, + "geo": { + "object": true + }, + "coordinates": { + "object": true + }, + "place": { + "object": true + }, + "contributors": { + "object": true + }, + "is_quote_status": false, + "retweet_count": 0, + "favorite_count": 0, + "favorited": false, + "retweeted": false, + "lang": "en" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twitter4": [ + { + "startTime": 1676891386039, + "executionTime": 227, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "Sun Feb 19 15:58:36 +0000 2023", + "id": 1627336861717876700, + "id_str": "1627336861717876742", + "text": "- @PlausibleHQ tracking plan, in progress 🚧\n- @n8n_io workflows✅\n- @MailerLite add Users subscription✅\n- @NotionHQ… https://t.co/2Mb94nO48X", + "truncated": true, + "entities": { + "object": true + }, + "metadata": { + "object": true + }, + "source": "Twitter Web App", + "in_reply_to_status_id": { + "object": true + }, + "in_reply_to_status_id_str": { + "object": true + }, + "in_reply_to_user_id": { + "object": true + }, + "in_reply_to_user_id_str": { + "object": true + }, + "in_reply_to_screen_name": { + "object": true + }, + "user": { + "object": true + }, + "geo": { + "object": true + }, + "coordinates": { + "object": true + }, + "place": { + "object": true + }, + "contributors": { + "object": true + }, + "is_quote_status": true, + "retweet_count": 0, + "favorite_count": 4, + "favorited": false, + "retweeted": false, + "lang": "en" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twitter1": [ + { + "startTime": 1676891386266, + "executionTime": 234, + "source": [ + { + "previousNode": "Twitter" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "Mon Feb 20 11:09:45 +0000 2023", + "id": 1627626558218182700, + "id_str": "1627626558218182657", + "text": "Hello from n8n testing framework 0.5036048381984097", + "truncated": false, + "entities": { + "object": true + }, + "source": "n8n testing framework", + "in_reply_to_status_id": { + "object": true + }, + "in_reply_to_status_id_str": { + "object": true + }, + "in_reply_to_user_id": { + "object": true + }, + "in_reply_to_user_id_str": { + "object": true + }, + "in_reply_to_screen_name": { + "object": true + }, + "user": { + "object": true + }, + "geo": { + "object": true + }, + "coordinates": { + "object": true + }, + "place": { + "object": true + }, + "contributors": { + "object": true + }, + "is_quote_status": false, + "retweet_count": 0, + "favorite_count": 0, + "favorited": true, + "retweeted": false, + "lang": "en" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twitter2": [ + { + "startTime": 1676891386500, + "executionTime": 244, + "source": [ + { + "previousNode": "Twitter1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "Mon Feb 20 11:09:46 +0000 2023", + "id": 1627626561162682400, + "id_str": "1627626561162682372", + "text": "RT @nodeqa1: Hello from n8n testing framework 0.5036048381984097", + "truncated": false, + "entities": { + "object": true + }, + "source": "n8n testing framework", + "in_reply_to_status_id": { + "object": true + }, + "in_reply_to_status_id_str": { + "object": true + }, + "in_reply_to_user_id": { + "object": true + }, + "in_reply_to_user_id_str": { + "object": true + }, + "in_reply_to_screen_name": { + "object": true + }, + "user": { + "object": true + }, + "geo": { + "object": true + }, + "coordinates": { + "object": true + }, + "place": { + "object": true + }, + "contributors": { + "object": true + }, + "retweeted_status": { + "object": true + }, + "is_quote_status": false, + "retweet_count": 1, + "favorite_count": 0, + "favorited": true, + "retweeted": true, + "lang": "en" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twitter3": [ + { + "startTime": 1676891386744, + "executionTime": 218, + "source": [ + { + "previousNode": "Twitter2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "Mon Feb 20 11:09:45 +0000 2023", + "id": 1627626558218182700, + "id_str": "1627626558218182657", + "text": "Hello from n8n testing framework 0.5036048381984097", + "truncated": false, + "entities": { + "object": true + }, + "source": "n8n testing framework", + "in_reply_to_status_id": { + "object": true + }, + "in_reply_to_status_id_str": { + "object": true + }, + "in_reply_to_user_id": { + "object": true + }, + "in_reply_to_user_id_str": { + "object": true + }, + "in_reply_to_screen_name": { + "object": true + }, + "user": { + "object": true + }, + "geo": { + "object": true + }, + "coordinates": { + "object": true + }, + "place": { + "object": true + }, + "contributors": { + "object": true + }, + "is_quote_status": false, + "retweet_count": 1, + "favorite_count": 1, + "favorited": true, + "retweeted": true, + "lang": "en" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Twitter3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:45.616Z", + "stoppedAt": "2023-02-20T11:09:46.962Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/10-snapshot.json b/test-workflows/snapshots/10-snapshot.json new file mode 100644 index 0000000000..917668ffac --- /dev/null +++ b/test-workflows/snapshots/10-snapshot.json @@ -0,0 +1,708 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331886877, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PagerDuty": [ + { + "startTime": 1710331886877, + "executionTime": 1389, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "incident_number": 1722, + "title": "Test", + "description": "Test", + "created_at": "2024-03-13T12:11:28Z", + "updated_at": "2024-03-13T12:11:28Z", + "status": "triggered", + "incident_key": "d3b8964acebb45b4a91944a06bc89930", + "service": { + "object": true + }, + "assignments": [ + "json array" + ], + "assigned_via": "escalation_policy", + "last_status_change_at": "2024-03-13T12:11:28Z", + "resolved_at": { + "object": true + }, + "first_trigger_log_entry": { + "object": true + }, + "alert_counts": { + "object": true + }, + "is_mergeable": true, + "escalation_policy": { + "object": true + }, + "teams": [ + "json array" + ], + "impacted_services": [ + "json array" + ], + "pending_actions": [ + "json array" + ], + "acknowledgements": [ + "json array" + ], + "basic_alert_grouping": { + "object": true + }, + "alert_grouping": { + "object": true + }, + "last_status_change_by": { + "object": true + }, + "incidents_responders": [ + "json array" + ], + "responder_requests": [ + "json array" + ], + "subscriber_requests": [ + "json array" + ], + "urgency": "high", + "id": "Q3Z252030C2VEG", + "type": "incident", + "summary": "[#1722] Test", + "self": "https://api.pagerduty.com/incidents/Q3Z252030C2VEG", + "html_url": "https://dev-nodeqan8n.pagerduty.com/incidents/Q3Z252030C2VEG" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PagerDuty7": [ + { + "startTime": 1710331888266, + "executionTime": 1108, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "R4CLO6G4XRB6395SM2S6WLWH4A", + "type": "assign_log_entry", + "summary": "Assigned to Node Qa.", + "self": "https://api.pagerduty.com/log_entries/R4CLO6G4XRB6395SM2S6WLWH4A", + "html_url": { + "object": true + }, + "created_at": "2024-03-13T12:11:28Z", + "agent": { + "object": true + }, + "channel": { + "object": true + }, + "service": { + "object": true + }, + "incident": { + "object": true + }, + "teams": [ + "json array" + ], + "contexts": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PagerDuty6": [ + { + "startTime": 1710331889374, + "executionTime": 861, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "Node Qa", + "email": "nodeqa@n8n.io", + "time_zone": "Europe/Berlin", + "color": "purple", + "avatar_url": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.png?d=mm&r=PG", + "billed": true, + "role": "owner", + "description": { + "object": true + }, + "invitation_sent": false, + "job_title": { + "object": true + }, + "teams": [ + "json array" + ], + "contact_methods": [ + "json array" + ], + "notification_rules": [ + "json array" + ], + "personal_web_cal_url": "webcal://dev-nodeqan8n.pagerduty.com/private/effe61535b688813e51b31cd68f98cf54428fe2848b86672bcff8689c9900c5a/feed", + "personal_http_cal_url": "https://dev-nodeqan8n.pagerduty.com/private/effe61535b688813e51b31cd68f98cf54428fe2848b86672bcff8689c9900c5a/feed", + "coordinated_incidents": [ + "json array" + ], + "id": "PT0VVWO", + "type": "user", + "summary": "Node Qa", + "self": "https://api.pagerduty.com/users/PT0VVWO", + "html_url": "https://dev-nodeqan8n.pagerduty.com/users/PT0VVWO" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PagerDuty1": [ + { + "startTime": 1710331890235, + "executionTime": 919, + "source": [ + { + "previousNode": "PagerDuty" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "incident_number": 1722, + "title": "Test", + "description": "Test", + "created_at": "2024-03-13T12:11:28Z", + "updated_at": "2024-03-13T12:11:28Z", + "status": "triggered", + "incident_key": "d3b8964acebb45b4a91944a06bc89930", + "service": { + "object": true + }, + "assignments": [ + "json array" + ], + "assigned_via": "escalation_policy", + "last_status_change_at": "2024-03-13T12:11:28Z", + "resolved_at": { + "object": true + }, + "first_trigger_log_entry": { + "object": true + }, + "alert_counts": { + "object": true + }, + "is_mergeable": true, + "escalation_policy": { + "object": true + }, + "teams": [ + "json array" + ], + "impacted_services": [ + "json array" + ], + "pending_actions": [ + "json array" + ], + "acknowledgements": [ + "json array" + ], + "basic_alert_grouping": { + "object": true + }, + "alert_grouping": { + "object": true + }, + "last_status_change_by": { + "object": true + }, + "incidents_responders": [ + "json array" + ], + "responder_requests": [ + "json array" + ], + "subscriber_requests": [ + "json array" + ], + "urgency": "high", + "id": "Q3Z252030C2VEG", + "type": "incident", + "summary": "[#1722] Test", + "self": "https://api.pagerduty.com/incidents/Q3Z252030C2VEG", + "html_url": "https://dev-nodeqan8n.pagerduty.com/incidents/Q3Z252030C2VEG" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second1": [ + { + "startTime": 1710331891154, + "executionTime": 503, + "source": [ + { + "previousNode": "PagerDuty" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "incident_number": 1722, + "title": "Test", + "description": "Test", + "created_at": "2024-03-13T12:11:28Z", + "updated_at": "2024-03-13T12:11:28Z", + "status": "triggered", + "incident_key": "d3b8964acebb45b4a91944a06bc89930", + "service": { + "object": true + }, + "assignments": [ + "json array" + ], + "assigned_via": "escalation_policy", + "last_status_change_at": "2024-03-13T12:11:28Z", + "resolved_at": { + "object": true + }, + "first_trigger_log_entry": { + "object": true + }, + "alert_counts": { + "object": true + }, + "is_mergeable": true, + "escalation_policy": { + "object": true + }, + "teams": [ + "json array" + ], + "impacted_services": [ + "json array" + ], + "pending_actions": [ + "json array" + ], + "acknowledgements": [ + "json array" + ], + "basic_alert_grouping": { + "object": true + }, + "alert_grouping": { + "object": true + }, + "last_status_change_by": { + "object": true + }, + "incidents_responders": [ + "json array" + ], + "responder_requests": [ + "json array" + ], + "subscriber_requests": [ + "json array" + ], + "urgency": "high", + "id": "Q3Z252030C2VEG", + "type": "incident", + "summary": "[#1722] Test", + "self": "https://api.pagerduty.com/incidents/Q3Z252030C2VEG", + "html_url": "https://dev-nodeqan8n.pagerduty.com/incidents/Q3Z252030C2VEG" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "PagerDuty4": [ + { + "startTime": 1710331891657, + "executionTime": 1169, + "source": [ + { + "previousNode": "PagerDuty1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "note": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PagerDuty5": [ + { + "startTime": 1710331892826, + "executionTime": 843, + "source": [ + { + "previousNode": "PagerDuty1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "POGZPU2", + "user": { + "object": true + }, + "content": "Simple note for an incident", + "created_at": "2024-03-13T13:11:32+01:00", + "channel": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PagerDuty2": [ + { + "startTime": 1710331893669, + "executionTime": 1144, + "source": [ + { + "previousNode": "PagerDuty1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "incident_number": 1722, + "title": "Test", + "description": "Test", + "created_at": "2024-03-13T12:11:28Z", + "updated_at": "2024-03-13T12:11:34Z", + "status": "acknowledged", + "incident_key": "d3b8964acebb45b4a91944a06bc89930", + "service": { + "object": true + }, + "assignments": [ + "json array" + ], + "assigned_via": "escalation_policy", + "last_status_change_at": "2024-03-13T12:11:34Z", + "resolved_at": { + "object": true + }, + "first_trigger_log_entry": { + "object": true + }, + "alert_counts": { + "object": true + }, + "is_mergeable": true, + "escalation_policy": { + "object": true + }, + "teams": [ + "json array" + ], + "impacted_services": [ + "json array" + ], + "pending_actions": [ + "json array" + ], + "acknowledgements": [ + "json array" + ], + "basic_alert_grouping": { + "object": true + }, + "alert_grouping": { + "object": true + }, + "last_status_change_by": { + "object": true + }, + "incidents_responders": [ + "json array" + ], + "responder_requests": [ + "json array" + ], + "subscriber_requests": [ + "json array" + ], + "urgency": "high", + "id": "Q3Z252030C2VEG", + "type": "incident", + "summary": "[#1722] Test", + "self": "https://api.pagerduty.com/incidents/Q3Z252030C2VEG", + "html_url": "https://dev-nodeqan8n.pagerduty.com/incidents/Q3Z252030C2VEG" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PagerDuty8": [ + { + "startTime": 1710331894813, + "executionTime": 871, + "source": [ + { + "previousNode": "Sleep 0.5 second1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "RQHI382RHNLDBDSY2RC947RRYM", + "type": "trigger_log_entry", + "summary": "Triggered through the website.", + "self": "https://api.pagerduty.com/log_entries/RQHI382RHNLDBDSY2RC947RRYM", + "html_url": "https://dev-nodeqan8n.pagerduty.com/incidents/Q3Z252030C2VEG/log_entries/RQHI382RHNLDBDSY2RC947RRYM", + "created_at": "2024-03-13T12:11:28Z", + "agent": { + "object": true + }, + "channel": { + "object": true + }, + "service": { + "object": true + }, + "incident": { + "object": true + }, + "teams": [ + "json array" + ], + "contexts": [ + "json array" + ], + "event_details": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PagerDuty3": [ + { + "startTime": 1710331895685, + "executionTime": 940, + "source": [ + { + "previousNode": "PagerDuty2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "incident_number": 1673, + "title": "Test", + "description": "Test", + "created_at": "2024-02-14T02:09:08Z", + "updated_at": "2024-02-14T02:09:12Z", + "status": "acknowledged", + "incident_key": "d11eee79ee8048e99aa37675daf7a621", + "service": { + "object": true + }, + "assignments": [ + "json array" + ], + "assigned_via": "escalation_policy", + "last_status_change_at": "2024-02-14T02:09:12Z", + "resolved_at": { + "object": true + }, + "first_trigger_log_entry": { + "object": true + }, + "alert_counts": { + "object": true + }, + "is_mergeable": true, + "escalation_policy": { + "object": true + }, + "teams": [ + "json array" + ], + "pending_actions": [ + "json array" + ], + "acknowledgements": [ + "json array" + ], + "basic_alert_grouping": { + "object": true + }, + "alert_grouping": { + "object": true + }, + "last_status_change_by": { + "object": true + }, + "incidents_responders": [ + "json array" + ], + "responder_requests": [ + "json array" + ], + "subscriber_requests": [ + "json array" + ], + "urgency": "high", + "id": "Q3SVCZJPSB89X4", + "type": "incident", + "summary": "[#1673] Test", + "self": "https://api.pagerduty.com/incidents/Q3SVCZJPSB89X4", + "html_url": "https://dev-nodeqan8n.pagerduty.com/incidents/Q3SVCZJPSB89X4" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "PagerDuty3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:26.876Z", + "stoppedAt": "2024-03-13T12:11:36.625Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/101-snapshot.json b/test-workflows/snapshots/101-snapshot.json new file mode 100644 index 0000000000..3e6b9c9ec6 --- /dev/null +++ b/test-workflows/snapshots/101-snapshot.json @@ -0,0 +1,132 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994468, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1747343994468, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "test", + "toBeRenamed": "name" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Rename Keys": [ + { + "startTime": 1747343994468, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "test", + "Renamed": "name" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343994468, + "executionIndex": 3, + "source": [ + { + "previousNode": "Rename Keys" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "test", + "Renamed": "name" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.467Z", + "stoppedAt": "2025-05-15T21:19:54.470Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/103-snapshot.json b/test-workflows/snapshots/103-snapshot.json new file mode 100644 index 0000000000..299c102703 --- /dev/null +++ b/test-workflows/snapshots/103-snapshot.json @@ -0,0 +1,213 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994471, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1747343994471, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 4, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "filename": "filename1747343994475" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Execute Command": [ + { + "startTime": 1747343994475, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set" + } + ], + "hints": [], + "executionTime": 61, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "exitCode": 0, + "stderr": "", + "stdout": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Read Binary File": [ + { + "startTime": 1747343994536, + "executionIndex": 3, + "source": [ + { + "previousNode": "Execute Command" + } + ], + "hints": [], + "executionTime": 14, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "exitCode": 0, + "stderr": "", + "stdout": "" + }, + "binary": { + "data": { + "mimeType": "text/plain", + "fileType": "text", + "data": "dGVzdAo=", + "directory": "/tmp", + "fileName": "filename1747343994475", + "fileSize": "5 B" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343994550, + "executionIndex": 4, + "source": [ + { + "previousNode": "Read Binary File" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "exitCode": 0, + "stderr": "", + "stdout": "" + }, + "binary": { + "data": { + "mimeType": "text/plain", + "fileType": "text", + "data": "dGVzdAo=", + "directory": "/tmp", + "fileName": "filename1747343994475", + "fileSize": "5 B" + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Execute Command1": [ + { + "startTime": 1747343994551, + "executionIndex": 5, + "source": [ + { + "previousNode": "Function" + } + ], + "hints": [], + "executionTime": 10, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "exitCode": 0, + "stderr": "", + "stdout": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Execute Command1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.471Z", + "stoppedAt": "2025-05-15T21:19:54.561Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/104-snapshot.json b/test-workflows/snapshots/104-snapshot.json new file mode 100644 index 0000000000..55034a49aa --- /dev/null +++ b/test-workflows/snapshots/104-snapshot.json @@ -0,0 +1,126 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1738078143061, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Read Binary File": [ + { + "hints": [], + "startTime": 1738078143061, + "executionTime": 47, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "binary": { + "data": { + "mimeType": "application/pdf", + "fileType": "pdf", + "fileExtension": "pdf", + "data": "JVBERi0xLjcNJeLjz9MNCjI0IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDgwOTUzL08gMjYvRSA1NzQyMi9OIDUvVCA4MDQzMS9IIFsgOTE2IDI5NF0+Pg1lbmRvYmoNICAgICAgICAgICAgICAgICAgIA14cmVmDTI0IDMxDTAwMDAwMDAwMTYgMDAwMDAgbg0KMDAwMDAwMTIxMCAwMDAwMCBuDQowMDAwMDAxMjkxIDAwMDAwIG4NCjAwMDAwMDE0NzEgMDAwMDAgbg0KMDAwMDAwMTYyMiAwMDAwMCBuDQowMDAwMDAyMzE5IDAwMDAwIG4NCjAwMDAwMDM0OTAgMDAwMDAgbg0KMDAwMDAwMzg2MiAwMDAwMCBuDQowMDAwMDEyODc2IDAwMDAwIG4NCjAwMDAwMTM1NjcgMDAwMDAgbg0KMDAwMDAxNDAyMSAwMDAwMCBuDQowMDAwMDE0NjE1IDAwMDAwIG4NCjAwMDAwMTQ2OTEgMDAwMDAgbg0KMDAwMDAxNDc2OSAwMDAwMCBuDQowMDAwMDE1NjczIDAwMDAwIG4NCjAwMDAwMTYzNTAgMDAwMDAgbg0KMDAwMDAxNjY1OCAwMDAwMCBuDQowMDAwMDE3NDMzIDAwMDAwIG4NCjAwMDAwMTgzMDkgMDAwMDAgbg0KMDAwMDAxOTE3MyAwMDAwMCBuDQowMDAwMDE5ODc0IDAwMDAwIG4NCjAwMDAwMjA1MTkgMDAwMDAgbg0KMDAwMDAyMTEzMiAwMDAwMCBuDQowMDAwMDIxODE0IDAwMDAwIG4NCjAwMDAwMjIxNjUgMDAwMDAgbg0KMDAwMDAyNzIxMyAwMDAwMCBuDQowMDAwMDMxMTk2IDAwMDAwIG4NCjAwMDAwMzI5MTQgMDAwMDAgbg0KMDAwMDAzMzE1NiAwMDAwMCBuDQowMDAwMDU3Mzg1IDAwMDAwIG4NCjAwMDAwMDA5MTYgMDAwMDAgbg0KdHJhaWxlcg08PC9TaXplIDU1L1ByZXYgODA0MjIvUm9vdCAyNSAwIFIvSW5mbyAyMyAwIFIvSURbPDYwOUQyNzU5RTI2NkQ5NzIyQjI5RjE5QzBEQzdGM0FGPjxGNDUxQzNGNjQ2QjI0MEQ5QjQyNTFGMjgwNUVFNjU5Rj5dPj4Nc3RhcnR4cmVmDTANJSVFT0YNICAgICAgICAgICAgICAgICAgICAgDTU0IDAgb2JqDTw8L0xlbmd0aCAyMDcvRmlsdGVyL0ZsYXRlRGVjb2RlL0kgMjQyL0wgMjI2L1MgMTQzPj5zdHJlYW0NCnjaYmBgYAaipwysDAw8rgwCDAggABRjZWBh4DjBEMBw7h9DMgODaDKTV4vCViRFCl3JCzKzjUOjfmj2NS5dc9ZDNeoHWCxcx1HkuMOl1WBVjBIdHSDaOC0DRCspuUSA+WwNILIBYTiQJ8TAqOEDpGWAWBasW5WBn1GO8YTIArcHmi+OOLozLmSJYpjD6GFmEMDgfLCQ2Z2tjCtBmEGFIWCBX+fJ/ixeJWazL0B90gugjhRmYNT0A9JMQOwCxOIMjBZaIGcB8TWAAAMAI5wxHQ1lbmRzdHJlYW0NZW5kb2JqDTI1IDAgb2JqDTw8L01ldGFkYXRhIDIyIDAgUi9QYWdlcyAyMSAwIFIvVHlwZS9DYXRhbG9nL1BhZ2VMYWJlbHMgMTkgMCBSPj4NZW5kb2JqDTI2IDAgb2JqDTw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCAyMSAwIFIvQ29udGVudHNbMzcgMCBSIDQwIDAgUiA0MSAwIFIgNDIgMCBSIDQzIDAgUiA0NCAwIFIgNDUgMCBSIDQ2IDAgUl0vUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlcyAyNyAwIFIvVHlwZS9QYWdlPj4NZW5kb2JqDTI3IDAgb2JqDTw8L0ZvbnQ8PC9GMSAyOCAwIFIvRjIgMzggMCBSL0YzIDQ3IDAgUi9GNCAyOSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMSA1MyAwIFI+Pi9FeHRHU3RhdGU8PC9HUzIgMzUgMCBSL0dTMyAzNiAwIFI+Pj4+DWVuZG9iag0yOCAwIG9iag08PC9TdWJ0eXBlL1R5cGUxL0ZvbnREZXNjcmlwdG9yIDMwIDAgUi9MYXN0Q2hhciAyNTIvV2lkdGhzWzIxNyAwIDAgMCAwIDAgMCAwIDM1MiAzNTIgMCAwIDAgMzQyIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDI1NCAwIDAgMCAwIDAgMCA3MDYgNjM3IDY3NiA3NjEgNTgxIDU1NCA3MjcgMCAzNzggMCAwIDU1MSA4ODggNzQwIDc2NiAwIDAgNjU5IDUwNSA2NDEgMCAwIDAgMCA2NTUgMCAwIDAgMCAwIDAgMCA0NjYgNTM0IDQyMiA1NDcgNDM3IDMzMSA0OTIgNTUwIDI5NSAwIDUxMyAyNzggODQzIDU2NiA1MjUgNTQ3IDAgNDA0IDM4MyAzMzkgNTU1IDQ2NSAwIDQ4MiA0NjUgNDQ1IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjE3IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDM0MiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0MjIgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDUyNSAwIDAgMCAwIDAgNTU1XS9CYXNlRm9udC9ETUZKQ0grTWluaW9uUHJvLUJvbGQvRmlyc3RDaGFyIDMyL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoNMjkgMCBvYmoNPDwvU3VidHlwZS9UeXBlMS9Gb250RGVzY3JpcHRvciAzMiAwIFIvTGFzdENoYXIgMjUyL1dpZHRoc1szNDEgMzY2IDQ2OCA0NzcgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCAyMjcgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDM0NiAzNDYgNTAwIDU4MCAyMjggMzU2IDIyOCAzMzEgNDgwIDQ4MCA0ODAgNDgwIDQ4MCA0ODAgNDgwIDQ4MCA0ODAgNDgwIDIyOCAyMjggNTAwIDU4MCA1MDAgNTAwIDc1MyA2OTEgNTg4IDY2NSA3MzUgNTY4IDUyOSA3MTUgNzY2IDM0MSAzMjkgNjczIDUzOCA4OTEgNzQzIDc0NyA1NjMgNTAwIDYyMSA0NzQgNjE3IDczNiA3MDMgOTcxIDY1NCA2MzQgNjAzIDM0NSA1MDAgMzQ1IDUwMCA1MDAgNTAwIDQzOSA1MDggNDIzIDUyOCA0MjUgMjk2IDQ2OCA1MzQgMjY4IDI1NiA0OTYgMjUzIDgxOSA1NDcgNTEwIDUyNCA1MTEgMzcxIDM2NyAzMDUgNTMxIDQ2MyA2ODUgNDcyIDQ1OSA0MjAgNTAwIDUwMCA1MDAgNTgwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUyMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgMzk4IDQwMSAyMjQgMjIzIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDI2OCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDcwMiA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCAzNDMgNTgwIDUwMCA1MDAgNTAwIDUxMiA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDY2MSA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDc0NyA1ODAgNTAwIDUwMCA1MDAgNTAwIDczNiA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNDIxIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTEwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTMxXS9CYXNlRm9udC9ETUZKQ0srTWluaW9uUHJvLVJlZ3VsYXIvRmlyc3RDaGFyIDIvVG9Vbmljb2RlIDMzIDAgUi9FbmNvZGluZyAzNCAwIFIvVHlwZS9Gb250Pj4NZW5kb2JqDTMwIDAgb2JqDTw8L1N0ZW1WIDEyOC9Gb250TmFtZS9ETUZKQ0grTWluaW9uUHJvLUJvbGQvRm9udEZpbGUzIDQ4IDAgUi9GbGFncyAyNjIxNzgvRGVzY2VudCAtMjQzL0ZvbnRCQm94Wy0zMTgg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MeuuSh3asP/Ko2WuPsAGI8qYQcHKxtXfFVaWIY0bvDg6JEcOTv9UFw1vyS2Il47PXba/RT6XTXl/1tHj+9d8luNzrV+z7uLcIw0npkLb87dEOxfXI9rzev7+bo5n048Vyu8vXl4YLxWXUZzhF3v8XKVcQRtr2hSviVVy1XP3lO+RnjCxu2eCfE5yRcnEmiUlsBK1orI8pXJqgcTZBds2ACOjeW4+MGvO7pg0Y+6cxRInZu3ddlnqQsQGh9VywE7Akm1Sm5Yu37R7fbI/sBNQuvCn3PzftQu/W8w5Pvv3hIVsv2cuZJdb4NzPwzmBh2s11y3uHyUiPzxEAQIMALQ6CUwKDWVuZHN0cmVhbQ1lbmRvYmoNMzIgMCBvYmoNPDwvU3RlbVYgNzkvRm9udE5hbWUvRE1GSkNLK01pbmlvblByby1SZWd1bGFyL0ZvbnRGaWxlMyAzMSAwIFIvRmxhZ3MgNi9EZXNjZW50IC0yNTYvRm9udEJCb3hbLTI5MCAtMzYwIDE2ODQgOTg5XS9Bc2NlbnQgNzExL0NhcEhlaWdodCA2NzQvWEhlaWdodCA0MzYvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFsaWNBbmdsZSAwL1N0ZW1IIDMyL0NoYXJTZXQoL3NwYWNlL2h5cGhlbi9UL3Uvci9rL0ovTS9lL2QvUy9jL2kvdHdvL3plcm8vbmluZS9zZW1pY29sb24vdGhyZWUvcGFyZW5sZWZ0L3BhcmVucmlnaHQvY29sb24vc2l4L29uZS9maXZlL2NvcHlyaWdodC9VZGllcmVzaXMvQi9JZG90YWNjZW50L0EvSy9FL20vYS9sL3MvYXQvdC9iL3BlcmlvZC9nL28vdi9zbGFzaC94L24vZi9oL3cveS9wL2NvbW1hL04vTy9xdW90ZWRibGxlZnQvcXVvdGVkYmxyaWdodC9laWdodC9lbmRhc2gvai9GL2ZvdXIvcGx1XA1zbWludXMvc2V2ZW4vRC9QL2VxdWFsL3ovZG90bGVzc2kvc2NlZGlsbGEvdWRpZXJlc2lzL2dicmV2ZS9jY2VkaWxsYS9vZGllcmVzaXMvQ2NlZGlsbGEvcXVvdGVyaWdodC9PZGllcmVzaXMvWS9HL0kvVS9SL3EvVy9IL0MvZGVncmVlL211bHRpcGx5L211L0wvVi9hc2NpaXRp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ZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc3MDkyLCBGcmkgRmViIDIzIDIwMDcgMTQ6MTY6MTggICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcG9zdHNjcmlwdDwvZGM6Zm9ybWF0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4YXBHSW1nPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvZy9pbWcvIj4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBJbGx1c3RyYXRvciBDUzM8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDYtMDlUMTY6MjQ6MzUrMDM6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAwOC0wNi0wOVQxNjoyNDozNSswMzowMDwveGFwOk1vZGlmeURhdGU+CiAgICAgICAgIDx4YXA6TWV0YWRhdGFEYXRlPjIwMDgtMDYtMDlUMTY6MjQ6MzUrMDM6MDA8L3hhcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4YXA6VGh1bWJuYWlscz4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eGFwR0ltZzp3aWR0aD4yMDg8L3hhcEdJbWc6d2lkdGg+CiAgICAgICAgICAgICAgICAgIDx4YXBHSW1nOmhlaWdodD4yNTY8L3hhcEdJbWc6aGVpZ2h0PgogICAgICAgICAgICAgICAgICA8eGFwR0ltZzpmb3JtYXQ+SlBFRzwveGFwR0ltZzpmb3JtYXQ+CiAgICAgICAgICAgICAgICAgIDx4YXBHSW1nOmltYWdlPi85ai80QUFRU2taSlJnQUJBZ0VBU0FCSUFBRC83UUFzVUdodmRHOXphRzl3SURNdU1BQTRRa2xOQSswQUFBQUFBQkFBU0FBQUFBRUEmI3hBO0FRQklBQUFBQVFBQi8rNEFEa0ZrYjJKbEFHVEFBQUFBQWYvYkFJUUFCZ1FFQkFVRUJnVUZCZ2tHQlFZSkN3Z0dCZ2dMREFvS0N3b0smI3hBO0RCQU1EQXdNREF3UURBNFBFQThPREJNVEZCUVRFeHdiR3hzY0h4OGZIeDhmSHg4Zkh3RUhCd2NOREEwWUVCQVlHaFVSRlJvZkh4OGYmI3hBO0h4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zi84QUFFUWdCQUFEUUF3RVImI3hBO0FBSVJBUU1SQWYvRUFhSUFBQUFIQVFFQkFRRUFBQUFBQUFBQUFBUUZBd0lHQVFBSENBa0tDd0VBQWdJREFRRUJBUUVBQUFBQUFBQUEmI3hBO0FRQUNBd1FGQmdjSUNRb0xFQUFDQVFNREFnUUNCZ2NEQkFJR0FuTUJBZ01SQkFBRklSSXhRVkVHRTJFaWNZRVVNcEdoQnhXeFFpUEImI3hBO1V0SGhNeFppOENSeWd2RWxRelJUa3FLeVkzUENOVVFuazZPek5oZFVaSFREMHVJSUpvTUpDaGdaaEpSRlJxUzBWdE5WS0JyeTQvUEUmI3hBOzFPVDBaWFdGbGFXMXhkWGw5V1oyaHBhbXRzYlc1dlkzUjFkbmQ0ZVhwN2ZIMStmM09FaFlhSGlJbUtpNHlOam8rQ2s1U1ZscGVZbVomI3hBO3FibkoyZW41S2pwS1dtcDZpcHFxdXNyYTZ2b1JBQUlDQVFJREJRVUVCUVlFQ0FNRGJRRUFBaEVEQkNFU01VRUZVUk5oSWdaeGdaRXkmI3hBO29iSHdGTUhSNFNOQ0ZWSmljdkV6SkRSRGdoYVNVeVdpWTdMQ0IzUFNOZUpFZ3hkVWt3Z0pDaGdaSmpaRkdpZGtkRlUzOHFPend5Z3AmI3hBOzArUHpoSlNrdE1UVTVQUmxkWVdWcGJYRjFlWDFSbFptZG9hV3ByYkcxdWIyUjFkbmQ0ZVhwN2ZIMStmM09FaFlhSGlJbUtpNHlOam8mI3hBOytEbEpXV2w1aVptcHVjblo2ZmtxT2twYWFucUttcXE2eXRycSt2L2FBQXdEQVFBQ0VRTVJBRDhBOVU0cTdGWFlxN0ZYWXE3RlhZcTcmI3hBO0ZYWXE3RlZrOXhCYnd0TmNTTERDZ3E4c2pCVlVlSlkwQXdFZ0N5eWpBeU5BV1dHNnYrYzM1YmFZV1dYV29yaVJkdUZvcjNGVDdOR0cmI3hBO1QvaHNwbHFZRHpkenAvWjNXNWVXTWdmMHZUOSs3SGJqL25KVDh2NG1vbHZxTTQzK0tPR0lEYi9YbFRya0JxNDl4L0h4ZGpEMk4xaDUmI3hBO21BK0ovUkV0Mi84QXprbitYMHBvOEdvd0R4a2hpSS80U1Y4VHE0OXgvSHhXZnNickJ5TUQ4VCttSVpIby93Q2NmNWI2cXlwQnJVVU0mI3hBO3JtbnAzUWUzSVBoeWxDcDl6Wk1hbUI2MDYzVWV6MnR4Ym5HU1A2UHErN2RtRU0wTThTeXd5TExFNHFraUVNcEhpQ05qbHdJTzRkUEsmI3hBO0ppYUlvcjhMRjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3FkeGMyOXRCSmNYRWl3d1JLV2tsa0lWVlUmI3hBO2RTU2RnTUJJQXNzb1FNaUJFV1M4ZDgwL241TmMzLzZFOGhhZStyYWhJU2kzakl6Sld0S3hSRDRuQS9tYWc5aU13OG1xSjJqK1BoK1AmI3hBO2M5bG9mWlVSaDR1cmw0Y082L3ZQVDNEZExyWDhsdnpBODJ5cmYrZk5la2hWdmlXeFFpWjFyMkNxVmdpLzJJYklqVHpsdkw5Yms1UGEmI3hBO1BSNlFjR2t4Zy8wdVgvSGo4YVp2by81RS9scnBxcVcwMXIrVmY5MjNranlFL05GS1IvOEFDNWVOTERyditQSjBXbzlxTmJrL2o0Ui8mI3hBO1JGZnQrMU5QMForVlducUlUYTZIYWdiY1dTMFFrZ2Q2aXBPQStEMTRmc2NYeDlmazN2TkwvVE4vb244cTlTSG9MYWFKZDEyQ0lsbzcmI3hBO1ZJN2NSVUg1WWdZZW5EOWkrUHI4Vy9GbWovcGtvMW44aHZ5MjFKU1k3QjlQbElJOVd6bFpQK0VmMUkvK0Z4T2xqMDIvSG01bW05cWQmI3hBO2JpNXk0eC9TSDZkajlyQ0xyOG5mekk4blN0ZmVSZGNlNWhVOGpZc3dpZHFiME1ia3dTL1RUNVpRZFBPRzhmc2QzRDJoMFdzSEJxOFkmI3hBO2lmNTNQN2ZxQ2IrVWZ6OVZiNGFMNTVzbTBiVWtQcHRkOEdTTGwwL2V4dDhVZGZIZGZrTW5qMVhTWDQ5NC9IdWNUWCt5dnA4WFNTOFMmI3hBO0hkMStCNi9mNzNyOE0wTThTVFF1c3NNaWhvNUVJWldVaW9JSTJJT1pnSU80ZU9sRXhOSFloZmhRN0ZYWXE3RlhZcTdGWFlxN0ZYWXEmI3hBOzdGWFlxN0ZYWXE3RlhZcWd0YTFuVGRGMHk0MVBVNTF0N0syWG5MSzMzQUFkU1NkZ0IxT1JuTVJGbHYwMm1ubW1NY0JjcFBCTG05ODUmI3hBOy9uVHJiV2RsejByeWRaeVZrZGdTcG9kaTlLZXBNUnVFcnhYOFRnRXl5bnkrNTc2R0xUZGk0dUtYN3pVeUg0cnVqNTh5OWEwalFmSW4mI3hBOzViYUE4b2FLd3QxQUYxcUZ3YXpUTjI1TlRreDhFVWZJWmxSakRFTEx5V28xV3I3U3pWdk05SWprUHgzbjV2Sy9PUDhBemtyZVNTU1cmI3hBOzNsUzBXR0ViRFVMc2NwRDdwRDlsZmJrVDhobVBQVXlQTFo2cnM3Mk1pQUphaVZuK2JIbDhUK3F2ZXhTTHl2OEFuVjU1cFBjcmZUMnMmI3hBO2dxSkx5WDZ2QnhKNnBHNVJTUDhBVVhLUkNVOTZKL0htN2FXdDdMME8wZUFTSDgwY1IrZS8ybE9MWC9uR1R6bElnYTUxR3dnSk82cTAmI3hBOzBoQS81RnFLNVorV241T0hrOXROTUQ2WVRQeUg2V3J2L25HWHpuR2hhMjFDd25JT3lGcFl5UjdWakkvSEg4dFB5WEg3YWFZbjFSbVAmI3hBO2tmMHBQSm9INTErUTZ6d0MvdHJTS2xaTGFUNnpiVUhRc2ltUkFQOEFYWEsrR1VOOXc1ZzFYWmV2MlBBWkh2SERMNTdINUZtSGszL24mI3hBO0pXWVBIYStiTFFOR2RqcU5vS01QZVNIb2Zjb1IvcTVkRFVrZlZ1NmZ0SDJNRkdXbmwvbXkvUWYxL042ZHIzbGJ5TitZK2hSM0RHSzcmI3hBO2prVS9VOVV0aVBXaVArUzNzZXFNUG96SWxDR1FXSGw5THJ0VjJkbEkzaWVzVHlQNDd3OG8wN1dmT1A1TmE1SHBXczg5VDhwWGJINnYmI3hBO0tsYUtLN3ZEeXJ3ZGVyUlZvZnh6RmpLV0kwZVg0L0g0dDZ6TnA5TjJ6aU9URjZOUkhuKzN2SGRMK3g3N3BlcVdHcTZmYjZqcDh5M0YmI3hBO25kSUpJSms2TXAvVjRFZHN6NHlFaFllQXo0SjRwbUV4VW84d2lzazFPeFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1SkFCSk4mI3hBO0FOeVRpcjU4OHk2bHFuNXUrZTE4dDZSTTBYbGJTMkwzRnl2MldDbmkwNThTMzJZZ2ZuNDVycHlPV1ZEbCtOMzBQUlljZlpHazhmSUwmI3hBO3p6NUQ5SDZaZko2cnJXcytWUHl6OG5SMGpFTm5hcjZOalpJZjNrOHBGYVZQVXNmaWRqODh5cFNqaWk4cHB0UHFPMDlTZDdsTGVSNkEmI3hBO2Zqa0h6eVc4L2ZtOTVvSUc4VVo2ZkV0cFp4SHg2N21udXpaZytxY3U4dm9sYVRzakI1LzdLWi9Id0QxM1QvS241WGZsVHAwV29hek0mI3hBO2x6cTFLcGN6cUpKM2NmOEFMTkFPWEFlL2J1MlpQQkRIdkxjdkg1ZGZyKzFabUdJY09QdUd3L3pwZGZ4UVliNWsvd0NjbXRabmQ0dkwmI3hBOzJuUldjTmFMY1hmNzJVang0S1ZSVC93V1FscVpIbHM3clIreGVPSXZOTXlQZEhZZlBuOXpDTHo4NS96TnVwQzc2N0xIdlVMQ2tVU2omI3hBOzJvaUwrT1VuSkk5Uzd6SDdPYUdBb1l4OGJQM2x1ei9Pajh6YlIrU2E1TElPNnpKRktEL3dhSDhNUmtrT1JLTW5zNW9aamZHQjdpUjkmI3hBO3haejVaLzV5YTFPSjBpOHg2YkhjdzlHdWJPc2NvOXpHNUtOOUJYTG82cVE1N3VpMXZzWEFpOEV5RDNTM0h6NS9leTNVL0pQNVkvbWwmI3hBO3BzbXFhQlBIYWFwVDQ3bTNVSklybnRkVy93QVBML1cySjdOVEorSERKdkhZdW93ZHBhN3N1WXg1Z1pZKzQ4djgyWDQ5enlXMHZ2UHYmI3hBOzVRK2FHZ2xRaUdRMWtnSkp0THVJYmMwYnhIaVBpWG9mRE1jR1dPWGNYcnNtTFNkcjRMSFB2L2lpZng4QytoYkc4OG8vbWQ1TUplTVgmI3hBO0ZoZERqUGJzUUpyZWRmY1Y0dW5WVDNIc2N6UVk1WS9qWjg3eTQ5UjJacWVkVGp5UFNRL1NDOHM4bDZ6cW41VitlWmZKK3ZTdEo1ZTEmI3hBO0J3MWxka1VSVEllS1RyNEszMlpCMk8vYmZHeHpPS1ZIbCtOL3graDZydExUNCsxZEtOVGhGWm9mVVBkekg2WXZvSE5nK2ZPeFYyS3UmI3hBO3hWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3ZNdno3ODZTYUQ1VEdtV2I4ZFMxc3RicHhQeExBQisrWVUzcWFoQjg4eGRWa29WMy9jOVAmI3hBOzdLOW1qUHFPT1gwWTkvajAvWDhFei9LM3lmYWVTUEpLdGU4WWJ5YVA2N3E4NzdjQ0U1Y0NmQ0pOdm5VOThsZ2h3UnN1TDI1MmhMWGEmI3hBO3IwN3hCNFlEOGQ1L1E4STh3NnJybjVzZm1IRmFXTlZ0V1l3NmZHMWVFRnNwcTh6Z2R5UGliNkI0Wmh5a1p5OTczdWt3WXV5ZEdaVCsmI3hBO3JuTHpsM0Q3aDgzcnZtYnpCNWMvSi95ZmI2Um84S3phdGNLVEFqVTVTU1VvOTFjVTNwWG9QOWlLQWJaTXBERUtIMVBJYUxTWnUyTlMmI3hBO2NtUTFqSFB5SDgyUDQ4M3pacmV1YXJybXBUYWxxdHk5MWVUbXJ5dWUzWlZIUlZIWURZWmhrM3pmU3ROcGNlQ0FoakhERUlIQTVEc1YmI3hBO2RpcnNWVEhRUE1Pc2VYOVRpMVBTYmxyVzdoT3pLZG1IZFhYb3ludURoQkkzRGphdlNZOVJqTU1nNG9uOGJQcEhSdFc4c2ZuSjVLbTAmI3hBOy9VWTF0OVl0Z0RNaTd2Qk5TaXp3azdsRzdqL1luc2N6SWtaWTBmcUg0L0g5ajVycWRQbjdHMVFuQTNqUEx1a1A1cDgvN1hrbms3ekImI3hBO3JmNVdlZjV0TzFRTXRrWkJCcWtJcVZlSTdwUEdPNVVIa3ZpS2p2bU5DWmhMNy94OXoxL2FPa3hkcTZRVHgvVlZ4UG4xaWZ1KzE3ZCsmI3hBO2NQa21Eemg1TmU0c2xXWFVyRkRkNmJLbnhHUmVQSjRsSTZpUmVudlRNdlVRNG84UTZmYzhQN1BkcEhSNm1wYlFsNlplWG44UHV0VC8mI3hBO0FDTjg2TjVrOG1Sd1hMbDlTMGdyYTNMSGNzbFAzTWgrYWloOTFPT21uY2E3bVh0UDJiK1cxSk1mb3llb2ZwSDQ3M29tWkx6anNWZGkmI3hBO3JzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZURYa2YrTnYrY2hGdHBBWk5NOHVBRjBPNi93Q2kwWTFIVGU1a0NuMnpYbjE1Zkw5WDdmdmUmI3hBOzl4bjhsMlB4RDY4MysrLzQ2RS8vQU9jalBOYjZYNVRoMGEzZmpjNnpJVmxwMUZ2RFJwUCtDWXFQbFhMZFZQWUJ3UFpEUURMcURsUDAmI3hBOzR4L3NqeS9TZ2Z5SzBDeDhzZVI3L3dBNmFwUkh1NDNsRG1sVXRJSzdDdmVSMUo5L2h5R0FDTVRNdC90UnFwYXJWUjB1UCtFZ2Y1eC8mI3hBO1VQMHZDdk4zbWUvOHplWWJ6V2IwbjFMbHlZNDZraU9JYkpHdGV5ci9BRnpHSkpObDd2cy9SUTB1R09LUEtQMm5xVW53T2E3RlhZcTcmI3hBO0ZYWXE3RlUrOGorYmIzeXA1bHROWnRTU0ltNDNNSTZTd04vZVJtdmlPbmdhSEpSa1ltdzRIYWVnanE4RXNVdXZMeVBRdmF2K2NndkwmI3hBO2RscmZsYXc4NjZaU1UyNlIrck1vL3ZMTzRvWTJQK283aW4rc2N5ZFJHd0poNG4yVDFrc0dvbHBjbTEzdDNTanorWSs1UFA4QW5IcnomI3hBO1Urc2VTdjBiTzVlNjBSeGIxUFV3UFZvZnVveUQyWEo2V2RnanVjRDJ0MFBnNnJqSDA1QmZ4Ni9yK0xGdkxLRHlUK2Z0N295ZnV0TTEmI3hBO3dONkNEN0lFdzlhS2xmNVpGYU1aVEQwWks2Y3ZueS9RN1hXbjg3MlJITHpuaTUvRFkvWlJlOVpzSGdYWXE3RlhZcTdGWFlxN0ZYWXEmI3hBOzdGWFlxN0ZWc3NpUlJ2STVvaUFzeDYwQUZUMHdFMExURUVtZzhRLzV4dmhOL3FIbWp6RlB2UGRUSWdKMzNrWjVwTi9jbGN3ZElOeVQmI3hBO3pBL0gzUGMrMk12RGhod2psRWZkUUg2V0lmOEFPUWQ5UHFuNWxKcGNacWJPQzN0WTA3ZXBQKzlyOVBxcmxlcGw2ejVPMzlrOFF4YUUmI3hBOzVEL0VaSDREYjlEUC93QStidUx5NytXV25lWGJOaXFYTHcyWUErR3R2YXB5YnA0c3FaZHFQVEFSL0d6ei9zdGpPbzEwczB1bHkrTWomI3hBOy9hK2E4eEgweDJLdXhWMkt1eFYyS3V4VjJLdnBmOG01bDgxL2xCZStYN284Mmcrc2FlT1haSkU5U0p2OWlaS0QvVnpMd2ppeG1QNC8mI3hBO0Z2bVh0Rkg4cDJqSE5Icnd6K1d4Kzc3V0IvOEFPTjJweTJYbnU2MDE2cXQ5YVNLeUhiOTdBd2NiZXk4eGxXbWw2eDUvMnUrOXNjSW4mI3hBO3BJekg4TWg4aitBeWYvbklGVHBQbS95ajVsaitHU0dRbzhuZ0xXWkpsQjl2M2paUFY3U0I4dnVkWjdKbnhkUG53SHFQOTBDUDBCN24mI3hBO21lOEk3RlhZcTdGWFlxN0ZYWXE4Mzg5Zm4xNU84a2E2MmphN1o2akhjK21zMFVzVUVieFN4djBlTmpLdFJVRlR0MUdLc2QvNkcyL0smI3hBO3ovZk9wLzhBU1BIL0FOVnNWZC8wTnQrVm4rK2RULzZSNC84QXF0aXJ2K2h0dnlzLzN6cWYvU1BIL3dCVnNWVUwvd0Q1eW4vTFBVYkcmI3hBOzQwK0NMVWhQZVJQYnhGN2VNTHpsVW92SWlVN1ZPUXlSNG9rZDRiY0V4REpHUjVBZ3BSNVMvTURRZnlYZ3UvTEhuR0s1L1RGMUtMNVImI3hBO1pLazhRZ2RGalNyRjQvaTVSdlVmTEt0UGpNUnZ6ZDc3U2RwNDlabmpMSGZER05iN2IyZjJKWHFPbDNubUhXVy9PQzJpSjhscmNwcU0mI3hBO2hkbFc3K3JXRWl4emdSVlB4VmdZS09YaGxFc01qUGx0YnQ5SjdRYWZGMmQ0Ry9pY0VoeTJzM1gzcGo1czErSDg4WkxPMzhqeFRjdEMmI3hBO0VzbW9KZjhBQzNCRjBVRVJTalNjcWVpOWZETGRUak1xb1c0SHN4MnRnMFp5ZUxmcTRhb1h5dS92Q1EvOUM3L21UL3ZpMS82U0YvcG0mI3hBO040TSs3N3YxdldmNkx0RjN5LzBxMlgvbkh6OHhZbzJsbGp0STQwQlozYTVRS0FPcEpQVEFjTXh6SDNmclRIMnMwWk5BeXY4QXFzQzEmI3hBO2JTLzBiZEcyTjNiWGNpMUR0YXllcWdJL3l3QXJmN0VuS2dYZjZmUDRrZUxobEgrc0srem44MEZoYjNZcWo5RzBnNnBkQzFTN3RyU1YmI3hBO2lBaHU1UFJRay84QUZoSEFmN0lqQVM0K3AxSGhSNGpHVWgvUkYvWnpaMm4vQURqMytZMGlLNlJXam80REt5M0NrRUhjRUVETFJobWUmI3hBO24zZnJkQ2ZhM1JBMFRML1NydjhBb1hmOHlmOEFmRnIvQU5KQy93Qk1QZ3o3dnUvV2ovUmRvdStYK2xaQjVVODFXZjVJQzYwenp2Rk4mI3hBOzYrc2NMbXlXd0NYQ2hJdVNPWEphT2hKSXpKMDJPVWJKMmVROXB1MWNPc25BNHI5SU4yS1N6UXRNdmZKT3JXbjVxNm5HdzhuVEY3cUwmI3hBOzBXVjdsb05TaVlXd01OVkZmM3lGaFhiSzhPR1VaQ3hzSFpkcCswR216NkR3UmZpVkRwMUJGL2NVeTgxK2N0Sy9PMDJ1aCtTb2JqOUkmI3hBOzZaNmw5Y0MrUklJL1JQR0kwY08veGNuWGFuNnNzMU9NeW9oMWZzMTJyaTBlU1p5M1VvOU4rcWVXdi9PV1g1WVIyMFVja2VwdElpS3ImI3hBO3Q5WGpOU0JRbXBseklpS0FCZWRtUVpFaFUvNkcyL0t6L2ZPcC93RFNQSC8xV3lUQjMvUTIzNVdmNzUxUC9wSGovd0NxMkt1LzZHMi8mI3hBO0t6L2ZPcC85SThmL0FGV3hWazNrSDg4L0tQbnJXVzByUXJUVUdtamlhYWVlYUJFaGpRYkRtNGthbkk3QVV4VjZKaXJzVmVlZm5iK1YmI3hBO2x0K1lIbFI3ZUZWVFhiRGxOcEZ3MUI4ZFBpaGMvd0FrdEtleG9lMkt2aFM3dExtenVwclM2aWFDNXQzYUtlR1FGWFIwUEZsWUhvUVImI3hBO2lsU3hWMktyNFpYaG1TVlB0eHNIV3ZpcHFNVmU1ZjhBT1cwYVhIbTd5L3JVUUl0OVIwaVAwMnAxNFRTU2RmSGpNdUtBOUcvSThONWkmI3hBOy93Q2NiOVQwT01lcEpIRnFtbklnb1NIbVJwbDdkYTNBSXJpcnozL25FRFdZclh6M3FtbHlOeC9TTmdXaUg4MGx2SXJVL3dDQWR6OUcmI3hBO0tsOVMrWi9NK2orV2RIbTFiVnBoRmJSQ2lxTjNrYy9aampYOXBtL3oyeUdUSUlDeTVlaTBXVFU1Qmp4aTVIN1BNdmxUOHdmelg4eWUmI3hBO2NiaDQ1cERhYU9HckJwc1RIaFFkREtkdlViNTdEc00xczhobWQzMWZzbnNMQm94WUhGazZ5UDZPNWhXUWQyN0ZYWXE3RldkZmwzK2ImI3hBO3ZtUHlmY0pCemErMFVuOTlwOHJINFI0d3NhOEc5dWg4TytXWThoaHlkRDJ2MkJoMWd2NmN2ODRmcDcvdmZWUGx6ekhwSG1MU0lOVjAmI3hBO3FjVDJrNDJQUmtZZmFSMS9aWmU0ell3bUpDdytVNnpSNU5Qa09QSUtrUHhZOG55Yi93QTVhNnVML3dETXkxMHlHcm5UYkNHSjBGU2YmI3hBO1duZDVhQWU2T21UY2NQU3YrY2ttL1FYNUhhUm9idCsrYVd4c1NvSXFSYlFNN0gzQU1ReFE4Ky81eFZMMk54NTA4d1ZLeDZYcE5XZnMmI3hBO0N4YVlkUVIveDduRlM4SHhTN0ZYWXFpTlAwKzkxRyt0N0N4aGE0dkx1UlliZUJCVm5rYzhWVUQzSnhWOTRmazUrV05uK1gvbEtMVHgmI3hBO3hrMWE3NHo2dmRMKzNOVFpGUDhBSkVEeFg2VDN4UXp2RlhZcTdGWHpUL3psTCtVUE5IOC9hSkQ4YUFMcjF1ZzZyOWxMb0FlR3l5ZlEmI3hBOzM4eHhWOHhZcGRpcnNWZTgvbUtQOFdmODQ2K1RQTTBaOVM1OHVQOEFvdSs4VVNndCtUSDNNTUovMldLRXkvNXc5ODJKYjZ2clBsYWQmI3hBO3dCZlJyZldTbnZKRDhFcWozWkdVL0pjVkxDL00wTjUrVXY1OHRlMjhUQzB0YjBYdHJHdTNxMk4xWG5Hdit3ZDR2bU1Vc2cvTjd6N2UmI3hBO2ViUE5NdytPTFM5T2Q3ZXh0WEJVamlhUEk2bm83a2ZRS0R0bXJ5ejRwVyt1K3p2WmtOTnB3ZWM1Z1NKKzRmQmcyVnUvZGlyc1ZkaXImI3hBO3NWZGlyUHZ5ZC9NSzc4cCtaRWhrRWsrazZpeXhYZHJHQzdCanNrc2FEcXluc09vK2pMY016R1E4M25QYWJzeUdvMHhueW5qQmtENUQmI3hBO21QeDFZNytYRmxlL21oK2V5NnRlUjF0MnZHMWUvVTFaVXQ3ZGdZb2p2OW12cHhkZW1iTjhtWlAvQU01ZmViSTczelJwZmxxQnFycEUmI3hBO0RYRjJCL3Y2NjRsVlArckVpbi9aWW9DaDVWRGVVZjhBbkdMekRyRWhNZDU1dXV2cU5uMjVRbjl5dy80QmJnNHE4RnhTN0ZYWXErcWYmI3hBOytjWFB5aE5qYXA1NzF1Q2w1ZElSb2NEamVPRmhScmdnL3RTRFpQOEFKMy9hR0tIMFZpcnNWZGlyc1ZXWEZ2QmN3U1c5eEdzc0V5TkgmI3hBO0xFNERLeU1LTXJBN0VFR2h4VjhNZm5wK1ZNM2tIelV5MnFzM2wvVWkwMmxUR3A0Q3RYdDJQODBaTzNpdEQxcmlsNXRpcnNWZTQvOEEmI3hBO09PT3NXR3NXWG1MOHNOWWs0MlhtUzNlWFQyWTdKZElsSDRpb3F4VlZrSC9HUEZCZWFhZGVhLzhBbDM1L2p1Q25wYXY1ZnZDc3NSSkMmI3hBO3Y2WktTSlgrU1ZDUlh1cHhTK3BmekJrL0xYelZaZVF2ekN2cHFXY2QvRDZiaFE1ZUpnMGp3enFEMGhtaUhQclQ0aCsxbFdYS0lWYm4mI3hBO2RuOW5aZFhLVWNmT01UTDludktUL256K1Y1ZHBQT21oSUpZSmdKTlZoaStMcVA4QWVsT1BWU1B0L3dEQmVPWXVmRlhxSEl2WmV5M2ImI3hBO2RWcGN1eEgway83bjlYeWVGWmpQZU94VjJLdXhWMkt1eFY3NytSWDVZZm8rTWVkZk1LQ0FSeHRKcHNNM3crbWxEeXVaT1ZPUHcxNFYmI3hBOzdmRjRaazRNZjhaNUQ4VytmKzFIYmZpSDhyaDMzOVJIWCtpUDAvTHZSZjVmWFg1Y2VSL0tYbkh6NXB4SnM1OVJ1U29ZQkc0STFiYTAmI3hBO2g2bWptUUZhL3dBd3Iwekx4WlJNV0hrZTBlejhta3lDR1Q2akVINS9xNVBsNktQekQrWWZuMEtQMzJzK1lMd2xxRDRWTWhxeDlraVQmI3hBO2YyVVpZNEwwZi9uSmJYOU90cnpSUHk4MFZ2OEFjWDVVdFVqbXBUNHJsMFVBTVJzV1NNQW4vS1pzVUI0bmlsMkt2VS95Qy9LV1R6MzUmI3hBO24rczM4Wi93M3BUTEpxREdvRXo5VXRsUCtWMWZ3WDNJeFY5dlJ4eHhSckhHb1NOQUZSRkFDcW9GQUFCMEF4UXV4VjJLdXhWMkt1eFYmI3hBO2pYNWllUk5KODhlVmJ2UWRSSEgxUnp0TGtDclFYQ2crbkt2eUpvUjNGUjN4VjhDZVpmTG1xK1c5ZHZORTFhRXdYOWpJWTVVN0dtNnUmI3hBO3A3cTYwWlQzR0tVc3hWRjZScXQvcEdxV21xYWZLWUwyeWxTZTNsSDdMeHNHSDBiYmpGWHUzNXI2SFkvbWQ1SnRmelU4c1FnNnJheEwmI3hBO2IrYXRPajNkV2lVQXljZHlmVEhmdkhRL3NuRkRFZnlvOHQrWmZOM2xuWHRMMDY0ZVpORmFIVUxiU3p1SGVZUEhONmZnNVZGMjcwcDEmI3hBO3pHMU9NeUZqbzlKN005cHcwdW9QaWJRbUt2dTd2ZzlOL0tYODU1UEx2RHkxNW9ESFNZeVlvYmxsSmt0VFdoamtXbFRHRFh0VmZsMHgmI3hBOzhPYmgyUDB2VDl2ZXpnMUg3L0IvZWN5T2t2TWVmM3NsODlma1BwSG1DTTY5NUt1WUludVI2djFRTURhUzEzNVF1dGVCSjdmWi93QlgmI3hBO0p6MDRJdUhKMW5aZnRUazA1OEhWQW5oMnYrSWU4ZGZ2OTd3N1gvS2ZtVHk5Y0dEV2RQbXNuclJXa1UrbTMrcElLbzNUc2N4aUNEUmUmI3hBOzYwbXZ3YWdYaWtKZmY4dWFVNEhMZGlxY2VYdkovbWJ6RmNDRFJ0T211eVRScEZXa1M5dmprYWlMOUp3Z0VtaHU0V3I3UXdhY1hsbUkmI3hBOy9mOEFMbTl6OGova2JvWGxhSC9FUG5TNmdubXRSNnZvTWFXa0ZOK1VqTlQxR0h5NCt4MnpLaGdFUmMzaGUwL2FmTHFqNE9sQkFsdGYmI3hBOzhSOTNkOS91WWorYkg1dzNmbTJmL0RubHBaUDBSSTZvenFyQ2E4ZXRGVUtQaUVkYVVXbFQzOE1xelp1UGJvN2ZzSDJlanBCNCtldkUmI3hBOyt5SDdmUG84MC9OL3k1NWs4bzZSb09oYWpka1JhZ3NtcXphYXV5UlRta0s4elg0blZGcDdWSUdaV254bU1kK3J5WHRIMm5EVjZqaWgmI3hBOzlFUndnOSs1M1pyK1crazJuNVMvbDlkZm1UNWdpWC9FbXJSRzM4c2FiS1BqVVNDb2RnZHh6SHh0NElLZFdwbVE4KzhDMURVTHpVYismI3hBOzR2NzJWcDd5N2tlYTRtYzFaNUpHTE14UHVUaWxENHFuSGxIeXJxM21yekZaYURwTWZxWGw2L0JTYThVVWJ2STVIUlVVRW5GWDM1NUYmI3hBOzhsNlI1TThzV2VnYVd2N2kyV3NzeEFEelROL2VTdlQ5cGo5d29PZ3hRbitLdXhWMkt1eFYyS3V4VjJLdkZmOEFuSkw4b1I1cjBML0UmI3hBO2Vqd2N2TU9reGt5Um9QaXViVmZpYVAzZVBkaytrZHhpcjQyeFM3RldiZmxSK2FHcStRUE1JdllBYm5TcnVrV3JhY2QxbWhyMUFPd2smI3hBO1NwNEg2T2hPS3ZwUHlEL3lySHl2cnNubTN5N2ZwRjVZODZCWUk0NmNZck85Z0pjeFBYKzZEaVEvQ3crRWorVWlsZVRLSUVYMWN6U2EmI3hBO0RMcUJJNHh4R0FzanJYbDdtUS9tVCtTK2grYjFiVXRQWk5QMXhoeSt0S0t3ejdiZXNxOS84dGQvR3VWWmRPSmJ4NXU0N0c5bzh1ajkmI3hBO0UvWGk3dW85MzZ2dWVLeFhuNXFmbFZxSHBNSmJXMVovN3FRZXRZeis2bjdOVC9rbFc4Y3d3WlFQYzl0TEhvTzFZWHRLWHltUHg4UTkmI3hBO0UwWC9BSnlXMEM4ZytyZVpOSGtoNWpqSzl2eHVJVzl6SEp3WUQyK0xMeHFiRlNGL2p1L2E4N3FmWXpOQThXRElENzlqOHgreEhuelAmI3hBOy93QTQ0YXFwbG5nc0lwRFF1cldVa0RWcWVwU05RVDhpY0psaEkzRmZQOURqL2t1MnNXd015UDY0UDNseSthLytjY3RJQW10b0xDV1UmI3hBO1ZLQkxLU1ovb1o0eUFmbVJnRXNJR3d2NS9wVTZIdHJOdEl6QS9yZ2ZjVXQxei9uSmZScldBMjNsblIza0tqakZKZGNZWVYrVVVaWmkmI3hBO1BhcTRuVTBLaUsvSDQ2dVRwZll6TE04V2ZKWHUzUHpQN1hueGI4MVB6VjFBQ2t0emFxMjIzbzJFSC9HdGZ2YktQVk05NWVoclFkbFEmI3hBOzZSbDg1bjhmQVBiL0FNdC95ZDBIeVpIK2tMdDB2OWFDa3ZmU0RqSEFLZkVJVlAyZmR6djhodG1aaXdDTzU1dkQ5c2UwT2JXbmdqNmMmI3hBO1g4M3FmZjhBcTVNVTg5VGZsaHIydWY4QUt3Zk1GNHQxNWM4cEo5UnRyVUtDdDdxSlByY0VxZjNxcXJMUmVoTlNUd0c5dVBLSlhUcU4mI3hBO1pvTXVtNFJrRlNrTHJxQjV2bXY4MFB6TDFyOHdQTWo2dGY4QTdtMWlCajA2d1ZpeVFRMTZiOVhicTdkejdVR1dPSXcvRld3Q1NBQlUmI3hBO25ZQVlxKzAvK2NkZnlqSGt6eTcrbU5WaDQrWmRYUldtVmg4VnRibWpKQjdNZnRTZTlCK3ppaDYvaXJzVmRpcnNWZGlyc1ZkaXJzVmQmI3hBO2lyNCsvd0NjbVB5aS93QU5hMGZOV2p3Y2RDMVdRL1dva0h3MjEyMVNSUWRJNWVxK0JxUERGTHczRlhZcXlUeU5xTUs2MWE2VHFWN0omI3hBO2E2RnFGeEdsNlZJS1J1UVk0N2dxMjM3b3ZVOStOUlhmSzhtUGpGT3c3TTdSbm84d3l3MzZFZDQ3dngxZlJsdHJuNXBmbEpJdG5xOXYmI3hBOyttL0t5dHhobUJZb2lrN0NPV2hhSTdmWWNVOFBITUlTbmkyNmZaK1B4VDJVOU5vTzFoeFl6NFdmcVAxanI3eHYzdlN2THY1ci9sNTUmI3hBO3R0ZnFyWGNVTTB3cExwdW9oVUo3OGZqckhKL3NTY3lSbmhJVWZ0ZVoxbllXczBrdUxoSkEvaWoremNJZlcveUovTGZWV2FSYkJ0UGwmI3hBO2NmM2xqSVlodjNFYmM0aDlDNG5UUVBMWnMwM3RScmNXM0Z4aitrTCszWS9heFc1LzV4ZjBGaWZxMnQzVVk3Q1NPT1QvQUlqNmVWSFMmI3hBO0hvZnMvYTdXSHR0bS9peHhQeEkvVzNiZjg0ditYMUkrdGExZHlqOW9SUnh4ay9MbDZtSTBoNm43UDJyUDIyemZ3NDRqM2tuOVRLOUYmI3hBOy9JMzh0OUlZVEhUemZTcHVKTDZReWdVOFUrR0w3MXl5T21nT2U3cWRUN1RhM050eGNJL29pdnQ1L2FxZVpmemQvTDd5cGJtMlM2anUmI3hBO3JpRmVNV25hZUZmaVIreVN0STQvcE5mYkdXZUVSUTM5ekhSZGdhelZuaTRURUgrS1g0c3ZOYmpVUHpSL051UXcyc1g2Qzhva24xSmkmI3hBO1dFYklEdnpjOFduSS9sV2krTk91WTVNOHA4dnNlbGppMEhaQXVSOFhVZmFQK0orTzc1djg0NnRGZGF0UFphZmRTM0doV00waWFZSkQmI3hBO1FNbGVKbTREWU5OeDVINkIyR1p1UEdJQ25pKzBkZlBWNWpsbnpQVHVIY2tPV09DN0ZYdm4vT01QNVFqWE5VWHpuclVITFNOT2twcGsmI3hBO0xqNFo3cEQvQUhsRDFTRS9lL3lJeFErdDhWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXFYK1lOQjB2WDlGdk5HMVNFVDZmZlJtS2VNK0ImI3hBOzZFSHN5bWpLZXgzeFY4RGZtWCtYK3FlUlBOZDFvZDhDOFMvdmJDN3BSWjdkaWVFZzk5cU1PekE0cFlyaXJzVmZaSC9PT1g1c1dubTcmI3hBO3kwdmxiV3BGZlh0TWg5SUpMUS9XN1JSeFYvaSsweUQ0WkI4bTdtZ0l2bW9KQnNNbDh6L2tMNUMxdDVKN2VCOUp1M3FUSlprTEdXUGMmI3hBO3dzQ24vQThjeDU2V0o1YlBSNkwycDFlQUFFK0pIK2x6K2ZQNTJ4QmZ5WC9OUFFLanl2NXNyYnJzdHU4azF1S2R2M1k5YUtveW44dE8mI3hBO1BJL0xiOGZOMjU5bzlCcVA4WXdiOTlBL2JzVlFRLzhBT1VGbWhWWkliMENnV3BzSy9PckNNbjZjUU0zbjlqRXk3Q21lUmovcC93QnImI3hBO2piLzg1UDNpaFhtaHNnYWhnRFlBL2Vna1AzSEVqTnkzK3hSUHNLSFF5LzAvN0ZoL0pQOEFNelhpditLdk5wOUEvYWdqZWE0Rk80NE4mI3hBOzZNWUp4L0xUbHpQNmZ4ODJYK2lUUTZmL0FCZkJ2MzBJL2J1V1krVi95SjhnNkU2VHkyemFyZUpRaWE5SWRBUnY4TVFDeC84QUJBNWQmI3hBO0RTeEhQZDAydTlxTlhuMkI4T1BkSDlmTmhuL09TLzVzMjNsenkrL2t6UnBGR3M2bkQ2ZDM2VzMxV3pZVUkyNlBLdndxT3kxTzN3NWsmI3hBO2dVODhTU2JMNUN4VjJLc3gvS3I4dWRSOC9lYmJmUjdibEZaSlNiVTd3Q29odDFQeEh3NXQ5bEI0KzFjVmZlMmo2UnAyamFWYTZWcHMmI3hBO0MyOWhaUkxEYndyMFZFRkI4ejRrOVR2aWhHWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxODgvTzM4ckxiOHdQS2oyOEtxbXUySEsmI3hBO2JTTGhxRDQ2ZkZDNS9rbHBUMk5EMnhWOEtYZHBjMmQxTmFYVVRRWE51N1JUd3lBcTZPaDRzckE5Q0NNVXFXS29yU3RWMUhTZFJ0OVMmI3hBOzAyNGUwdjdSeExiM0VSb3lNTzQvaU8rS3ZycjhwdjhBbkpueTk1amhnMHZ6VkpIbyt2YklMbGp3dExocTBCVmovZE9mNVdOUEE5c1UmI3hBO1BiMVlNQXlrRlNLZ2pvUmlyc1ZkaXJVa2lSbzBrakJJMEJaM1kwQUEzSkpPS3ZDZnphLzV5ZDBQUW9adEo4blNSNnJyUnFqMzYvSGEmI3hBO1c1OFFla3plSEg0ZkVuN09Ldmt2VU5RdnRTdnA3Ky9uZTZ2YnAybHVMaVZpenU3R3BaaWNVb2ZGVVJwK24zdW8zMXZZV01MWEY1ZHkmI3hBO0xEYndJS3M4am5pcWdlNU9LdnZEOG5QeXhzL3kvd0RLVVduampKcTEzeG4xZTZYOXVhbXlLZjVJZ2VLL1NlK0tHZDRxN0ZYWXE3RlgmI3hBO1lxN0ZYWXE3RlhZcTdGWFlxN0ZYWXErYWYrY3BmeWg1by9uN1JJZmpRQmRldDBIVmZzcGRBRHcyV1Q2Ry9tT0t2bUxGTHNWZGlyTHYmI3hBO0tYNXMvbUg1VFZZdEUxdWVDMVhwWnljWjdjRDJpbERvdit4QU9LdlJySC9uTDc4eG9ZdUYxcDJsM1RDbEpUSE5HeDhlWEdYajl3R0smI3hBOzAxZi9BUE9YdjVqenhjTFhUOUx0R05heWlLYVJoOHVjdkg3MU9LMDgzODIvbW4rWUhtME5IcjJ0VDNOc3hxYk5Dc052dDAvY3hCRU4mI3hBO1BFaXVLc1V4VjJLdXhWOVUvd0RPTG41UW14dFU4OTYzQlM4dWtJME9CeHZIQ3dvMXdRZjJwQnNuK1R2KzBNVVBvckZYWXE3RlhZcTcmI3hBO0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcXN1TGVDNWdrdDdpTlpZSmthT1dKd0dWa1lVWldCMklJTkRpcjRZL1BUOHFadklQbXBsdFYmI3hBO1p2TCtwRnB0S21OVHdGYXZic2Y1b3lkdkZhSHJYRkx6YkZYWXE3RlhZcTdGWFlxN0ZYWXE5VC9JTDhwWlBQZm1mNnpmeG4vRGVsTXMmI3hBO21vTWFnVFAxUzJVLzVYVi9CZmNqRlgyOUhISEZHc2NhaEkwQVZFVUFLcWdVQUFIUURGQzdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYWXEmI3hBOzdGWFlxN0ZYWXE3RldOZm1KNUUwbnp4NVZ1OUIxRWNmVkhPMHVRS3RCY0tENmNxL0ltaEhjVkhmRlh3SjVsOHVhcjViMTI4MFRWb1QmI3hBO0JmMk1oamxUc2FicTZudXJyUmxQY1lwU3pGWFlxN0ZYWXE3RlhZcW5IbEh5cnEzbXJ6RlphRHBNZnFYbDYvQlNhOFVVYnZJNUhSVVUmI3hBO0VuRlgzNTVGOGw2UjVNOHNXZWdhV3Y3aTJXc3N4QUR6VE4vZVN2VDlwajl3b09neFFuK0t1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjImI3hBO0t1eFYyS3V4VjJLdXhWMkt2RmYrY2t2eWhIbXZRdjhBRWVqd2N2TU9reGt5Um9QaXViVmZpYVAzZVBkaytrZHhpcjQyeFM3RlhZcTcmI3hBO0ZYWXEyQVNRQUtrN0FERlgybi96anIrVVk4bWVYZjB4cXNQSHpMcTZLMHlzUGl0cmMwWklQWmo5cVQzb1AyY1VQWDhWZGlyc1ZkaXImI3hBO3NWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZmSDMvT1RINVJmNGExbythdEhnNDZGcXNoK3RSSVBodHJ0cWtpZzYmI3hBO1J5OVY4RFVlR0tYaHVLdXhWMkt1eFY3NS93QTR3L2xDTmMxUmZPZXRRY3RJMDZTbW1RdVBobnVrUDk1UTlVaFAzdjhBSWpGRDYzeFYmI3hBOzJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLcGY1ZzBIUzlmMFc4MGJWSVJQcDk5R1lwNHo0SG8mI3hBO1FlekthTXA3SGZGWHdOK1pmNWY2cDVFODEzV2gzd0x4TCs5c0x1bEZudDJKNFNEMzJvdzdNRGlsaXVLdXhWbVA1VmZsenFQbjd6YmImI3hBOzZQYmNvckpLVGFuZUFWRU51cCtJK0hOdnNvUEgycmlyNzIwZlNOTzBiU3JYU3ROZ1czc0xLSlliZUZlaW9nb1BtZkVucWQ4VUl6RlgmI3hBO1lxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYbm41Mi9sWmJmbUI1VWUzaFZVMTJ3NVRhUmMmI3hBO05RZkhUNG9YUDhrdEtleG9lMkt2aFM3dExtenVwclM2aWFDNXQzYUtlR1FGWFIwUEZsWUhvUVJpbGZwK24zdW8zMXZZV01MWEY1ZHkmI3hBO0xEYndJS3M4am5pcWdlNU9LdnZEOG5QeXhzL3kvd0RLVVduampKcTEzeG4xZTZYOXVhbXlLZjVJZ2VLL1NlK0tHZDRxN0ZYWXE3RlgmI3hBO1lxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxK2FmOEFuS1g4b2VhUDUrMFNINDBBWFhyZEIxWDcmI3hBO0tYUUE4TmxrK2h2NWppcU0vd0NjWFB5aE5qYXA1NzF1Q2w1ZElSb2NEamVPRmhScmdnL3RTRFpQOG5mOW9ZcStpc1ZkaXJzVmRpcnMmI3hBO1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXF5ZUNDNGdrZ25qV2FDWlRITEZJQXlPakNqS3kmI3hBO25ZZ2pZZzRxM0hISEZHc2NhaEkwQVZFVUFLcWdVQUFIUURGVjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYmI3hBOzJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWRDZpSmpwOTBJZVgmI3hBO3Jlay9wY0s4dVhFOGFVNzF4VjgwZmtiWi9ubEYrWStudjVzYnpBZEVFZHg2NDFHVzdlMjVlaTNwOGhLeFN2T2xLOThWUStoMmY1N2omI3hBOzg0cmVTN2J6Ri9ocjlOa3lDU1c3Tm45VCtzR2xWTGVuNlhEdFNsTVZmVStLdXhWMkt1eFYyS3ZIZitja1lQekdtMGJSaDVJT3FDNkYmI3hBO3hLYno5RXZPaitud0hIMVBSS21sZWxjVlIvOEF6anBENTdpOGszcStkVHFKMVU2bEtZZjBxOHp6L1YvUWc0OFRNV2JoejUwN1ZyaXImI3hBOzFQRlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3Rlh5RCtjdjV5L21ib2Y1bTY5cE9rNjlOYTZmYXpJdHZicWtKQ0F3b3hBTEkmI3hBO1QxSjc0cXd6L29ZRDg0ZitwbW4vQU9SY0gvVlBGTlByejhtTmMxWFhmeXgwTFZ0V3VHdTlSdW9wR3VMaGdvTEZaNUZGUW9VZlpVRHAmI3hBO2loTC9BTS92TXV1ZVcveXl2OVcwUzdheTFDS2EyV080UUt4QWVaVllVY01Od2ZERlhuZi9BRGpGK1pQbmZ6WjVnMXEyOHhhckpxRUYmI3hBO3RhUnlRSklzYWhYTW5Fa2NGWHRpckUvejAvT0Q4eWZMMzVxYTNvK2phNU5aNmJhL1ZmUXRrU0VxdnFXY01qVUxJeDNkeWV1S1gwOTUmI3hBO1B2TG05OHBhSmUzVWhsdXJtd3RacDVUUUZwSklWWm1OS0RjbkZERWZ6Kzh5NjU1Yi9MSy8xYlJMdHJMVUlwclpZN2hBckVCNWxWaFImI3hBO3d3M0I4TVZmTEZ0L3prUitjbHZKNmkrWTVIN0ZaSUxXUlNLMTZORWZ3eFRUMkw4blArY25yclhOWnRmTG5uQ0NHTzV2WEVObHF0dVAmI3hBO1RScG1ORVNhTWtnRnpzR1dnclFVNzRvZlJXS3ZGUDhBbko3eno1cjhwYUpvbHg1ZDFGOVBtdXJtV09kNDFSaXlyR0NBZWF0M3hWRWYmI3hBOzg0eWVkZk5IbXp5cnExNTVodjMxQzV0NzcwWVpKRlJTcWVpamNmZ1ZSMUp4VjZaNXd2TG15OHBhM2Uyc2hpdXJhd3Vwb0pSUWxaSTQmI3hBO1daV0ZhallqRlh4TC93QkRBZm5EL3dCVE5QOEE4aTRQK3FlS2FSMmhmbngrYmx4cmVuMjgzbU9kNFpybUdPUkRIQlFxMGdCRzBmY0gmI3hBO0ZEN2p4VlR1YmlHMnRwYm1kZ2tNQ05KSzU2QlVGV1AwQVlxK0Zyci9BSnlFL04yUzVsa2k4eFR4Uk83TkhFSTRLS3BOUW9yR2VneFQmI3hBO1Q3ZjBEVkUxYlF0TzFXT25EVUxXRzZUajBwTkdzZ3Avd1dLRWRpcjVSL1AzODNQekc4dWZtZHFPazZKcmN0bHAwTVZzMFZ1aVJNQVgmI3hBO2dSbTNkR083R3ZYRldiL21qK2F1ditYdnlQOEFLbW9XZDgwZm1mekJhV0RtOEFReWY3ekpQY3loU0N2eE1RcDIvYXhWS2Y4QW5HbnomI3hBO2grWnZuTHpGcUY3cnV0ejNlaWFYQUZhQmtpVlpMaWMwakJLb3BvcXF6YkhyVEZYMGJpcnNWZWZmbnJZMlgvS3F2TTl4OVhqOWY2b1QmI3hBOzYzQmVkZWFqN1ZLNHErY2YrY1VyZUNmODBYU2VOWlUvUnR3ZUxxR0ZlY2ZZNHFYMmJGRkZGR0k0a1dPTmZzb29DZ2ZJREZYbFAvT1UmI3hBO1Ava250VC80ejJuL0FDZlhGWGxQL09HLy9LVStZZjhBbUJpLzVQWXFXRC84NUtmK1RxOHgvd0RSbC8xQVFZcGZaUGtML2xCdkx2OEEmI3hBOzJ6TEwvcUhURkRCUCtjb2YvSlBhbi94bnRQOEFrK3VLdklQK2NSdE4wN1VmTUhtTzIxQzFpdTdaN0NNUERPaXlJUVphR3FzQ01WTHkmI3hBO3pYTk50TFA4enI3VGRDSmUxZzFtUzMwMzB5U2VLM0pXSUl3TzlOZ0QzNjRwZm9WaWg4Ny9BUE9aUC9LT2VYUCtZeWIvQUpOREZVVi8mI3hBO3poei9BTW9Wcm4vYlMvNWtSNHE5OVpWZFNyQU1yQ2pLZHdRZXh4Vjh3LzhBT1pObmFXLytFUHE4RWNQTDlJOHZUVlZyVDZyU3RBUEgmI3hBO0ZReS8vbkU2eHNwdnl3bGxtdDQ1SkJxZHdBN29yTUtSeEVia1lxOXd4VmhuNXk2eWRHL0szek5mS3dWL3FNbHZHeDdQZFV0MUk5K1UmI3hBO29wNzRxK0FRamxDNEI0S1FDM1lFMUlINEhGTDdyLzV4NTFuOUsvbERvRWpOeWx0STVMS1FmeS9WNVdqUWY4aXdweFE5R3hWOFJmOEEmI3hBO09UMy9BSk9QVnY4QWpEYWY5UXlZcENVL20xNXRHc3grVWRKaGs1Mm1nZVh0TnRxQTFIMWlXMWpsbVB6RlVRKzY0cStyZnlBOGwvNFUmI3hBOy9MUFRZSm8rR29ha1AwamZWSHhCNXdDaW4zU0lJcEhqWEZEMGJGWFlxd1Q4OVA4QXlVZm1mL21EUC9FMXhWODMvd0RPSmY4QTVOUi8mI3hBOysyYmMvd0RFNHNVbDlsNG9lVC84NVEvK1NlMVAvalBhZjhuMXhWNVQvd0E0Yi84QUtVK1lmK1lHTC9rOWlwWVAvd0E1S2Y4QWs2dk0mI3hBO2YvUmwvd0JRRUdLWDJUNUMvd0NVRzh1LzlzeXkvd0NvZE1VTUUvNXloLzhBSlBhbi93QVo3VC9rK3VLdmp6UVBNUG1qUlk3NTlDdmImI3hBO214VzRpOUsrbHRTeUV4RTdCblhkUlgzeFM5TS81eGtYOHZUNTZoZnpGTElOZkRqOUFSeUtQcXBuUFFsd2ErdFgrN0REajc4cVlxK3omI3hBOzhVUG5mL25Nbi9sSFBMbi9BREdUZjhtaGlxSy81dzUvNVFyWFArMmwvd0F5SThWZS9ZcStadjhBbk5IL0FLWTcvdDVmOWl1S1F5Ly8mI3hBO0FKeEovd0RKV1RmOXRPNC81Tnc0b2UxWXE4Uy81eTMxbjZuK1d0dnA2bjk1cWQvRkd5K01jS3RLeCtoMVRGWHoxQjVWRGZrUmRlWkEmI3hBO0tTcjVoanQvK2VLMmhxZitSa294Uzl5LzV3NzFreitVTmMwaGlDYkMrUzRYeEMzVVFVRDVjcmRzVVBvREZYeEYvd0E1UGY4QWs0OVcmI3hBOy93Q01OcC8xREppa1BMWUp6RmNSVEZSSVkyVnVEN3FlSkZGSThOcVlxL1NIUWRXdGRZMFRUOVd0UDk1ZFF0b3JtRWRhSk1nZFI5QU8mI3hBO0tFZGlyc1ZZSitlbi9rby9NLzhBekJuL0FJbXVLdm0vL25Fdi93QW1vLzhBMnpibi9pY1dLUyt5OFVQS2YrY24wZHZ5ZDFVcXBJU2UmI3hBOzBMa0N0QjlZUVZQMGtERlhrMy9PRzdML0FJcjh3TFVjallSa0wzSUV3cWZ4eFVzRi93Q2NqNVk1ZnpvOHh0RzNKUTFxaEkvbVN5Z1YmI3hBO2g5REFqRkw3TzhqeHZGNUs4dnh1S09tbTJhc090Q0lFQjZZb1lGL3psRC81SjdVLytNOXAvd0FuMXhWNVAvemg1RkZMNWs4eHhTb3MmI3hBO2tVbGhHc2tiQU1ySzB0Q0NEc1FSaXBlUy9tUEZwZW0vbVBycWVYMldPd3RkUWxOazBCK0JPTDFwR1IyUnRscGlsK2dkaExMTFkyOHMmI3hBO3Uwc2tTTklLVStKbEJPM3p4UStmditjeWYrVWM4dWY4eGszL0FDYUdLb3IvQUp3NS93Q1VLMXovQUxhWC9NaVBGWHYyS3ZtYi9uTkgmI3hBOy9wanYrM2wvMks0cERMLytjU2YvQUNWazMvYlR1UDhBazNEaWg3VmlyNVkvNXpLMWt5YTE1YzBVR2d0cmFlOGNkejlZa0VTMStYMWQmI3hBO3FZcUhpYWVmZk5hZVQzOG5MZWdlWEpKZlhleDlHRGVRT0pPWHE4UFYrMG8vYjl1bUtYckgvT0lHc2kyOCthbnBidFJOUjA4dWc4WkwmI3hBO2VSU0Ivd0FBNzRxWDEzaWg4UmY4NVBmK1RqMWIvakRhZjlReVlwREh2ekIvTDkvSzJpZVQ5U0RGNC9NV2xKZlBKdlQxbll5RlIvcXcmI3hBO3pRZysrS3ZwNy9uRm56UCtsL3l2aXNKSDVYT2lYRWxtd1AydlNZK3RFVDdVa0tEL0FGY1VQWU1WZGlyQnZ6eGplVDhwdk15UnFYZHImI3hBO1FoVlVWSitOZWdHS3ZuUC9BSnhSc3J5SDgwbmVhQ1NOUDBiY0RrNk1vcnpqN2tZcVgyTGlxUmVlZksxdjVyOG82cjVlbmYwMTFHQm8mI3hBO2tscFhoSUtQRTlPL0dSVk5NVmZEVnhhZm1OK1ZubWVRajZ4b21xeGg0VnUwWDkxTkVUdVkzWUZKRWJpRC9hTVVwbitXL3dDV3ZtMzgmI3hBO3kvTnFYRnlseEpwMDAvcjYxclUzTGlWTGNwYVNOOXVWK2lnZk03WXErN1k0NDRvMWpqVUpHZ0NvbzJBQUZBQmloNVovems1RkxMK1UmI3hBO09wSkVqU09aN1NpcUN4Mm5Yc01WZkgyaHllZHJBM01HaC9wRzJlOWpFVjBsbUprYVdPdjJHOVBjclh0aWw2bitUdjhBempsNXAxalcmI3hBOzdUVmZOTmpKcFdnV3NpelBiWFNtTzR1U2hEQ0lRbWpvaC9hWmdOdW5zb2ZZZUt2bnYvbk1PM3VKL0x2bDBReFBLUmR6RWhGTFUvZEQmI3hBO3d4VkZmODRmMjg4SGt2VzFtamVKanFWUUhVcVNQUWo4Y1ZlOVlxK2F2K2N5N1c1bi93QUllaEU4dkg5STh1Q2xxVitxMHJURldYZjgmI3hBOzRuUXpRL2xmTWswYlJ2OEFwTzRQRndWTlBUaTdIRlhzK0t2aVgvbkpPNXZ0Vy9OelZmUmdsbHQ3R09DemlkVVlqNElnejBvTzBqdGkmI3hBO3I2bjAzeVBwNS9MRzI4dkd6aDlkdEZTd1pqR25JeU5haUptSnAxTEdwT0t2a2I4aVo5UzBYODJ2THR5OXRMSEhMY216bDVveWlsMGomI3hBO1FiMUhabkJ4Uys3TVVQaW4vbkpxeHZaZnpnMVY0cmVTUkREYVVaVVpoL3ZPbmNERlhwWDV2ZVZKdFYvNXh2OEFLR29SUXM5NW9kanAmI3hBO2NyS0FTNGltdFk0SkY0OWZ0c2hQeXhWaS93RHppVHJGL3BublhVTkV1SVpZN1hWN1htaFpXQyt2YW5rdlVkNDNreFY5YVlxLy85az08L3hhcEdJbWc6aW1hZ2U+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwveGFwOlRodW1ibmFpbHM+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+CiAgICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6OEI4MThEMEZDNTM3REQxMUJEQjJGMThGM0JGREVDOUY8L3hhcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6OEM4MThEMEZDNTM3REQxMUJEQjJGMThGM0JGREVDOUY8L3hhcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4YXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSIvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwVFBnPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvdC9wZy8iCiAgICAgICAgICAgIHhtbG5zOnN0RGltPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvRGltZW5zaW9ucyMiCiAgICAgICAgICAgIHhtbG5zOnhhcEc9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9nLyI+CiAgICAgICAgIDx4YXBUUGc6TWF4UGFnZVNpemUgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3REaW06dz4yMDkuOTk5OTk0PC9zdERpbTp3PgogICAgICAgICAgICA8c3REaW06aD4yOTcuMDAwMDI0PC9zdERpbTpoPgogICAgICAgICAgICA8c3REaW06dW5pdD5NaWxsaW1ldGVyczwvc3REaW06dW5pdD4KICAgICAgICAgPC94YXBUUGc6TWF4UGFnZVNpemU+CiAgICAgICAgIDx4YXBUUGc6TlBhZ2VzPjE8L3hhcFRQZzpOUGFnZXM+CiAgICAgICAgIDx4YXBUUGc6SGFzVmlzaWJsZVRyYW5zcGFyZW5jeT5GYWxzZTwveGFwVFBnOkhhc1Zpc2libGVUcmFuc3BhcmVuY3k+CiAgICAgICAgIDx4YXBUUGc6SGFzVmlzaWJsZU92ZXJwcmludD5GYWxzZTwveGFwVFBnOkhhc1Zpc2libGVPdmVycHJpbnQ+CiAgICAgICAgIDx4YXBUUGc6UGxhdGVOYW1lcz4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGk+TWFnZW50YTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPlllbGxvdzwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPkJsYWNrPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94YXBUUGc6UGxhdGVOYW1lcz4KICAgICAgICAgPHhhcFRQZzpTd2F0Y2hHcm91cHM+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHhhcEc6Z3JvdXBOYW1lPkRlZmF1bHQgU3dhdGNoIEdyb3VwPC94YXBHOmdyb3VwTmFtZT4KICAgICAgICAgICAgICAgICAgPHhhcEc6Z3JvdXBUeXBlPjA8L3hhcEc6Z3JvdXBUeXBlPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3hhcFRQZzpTd2F0Y2hHcm91cHM+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4NCg1lbmRzdHJlYW0NZW5kb2JqDTUzIDAgb2JqDTw8L01ldGFkYXRhIDUyIDAgUj4+DWVuZG9iag0xIDAgb2JqDTw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCAyMSAwIFIvQ29udGVudHMgMyAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlcyAyIDAgUi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMiAwIG9iag08PC9Gb250PDwvRjEgMjggMCBSL0YyIDM4IDAgUi9GMyA0NyAwIFIvRjQg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L01UOTcvTVQxMTYvTVQxMjEvTVQ2NS9NVDc4L01UNzkvTVQ3Ni9NVDExOCk+Pg1lbmRvYmoNMTIgMCBvYmoNPDwvRGlmZmVyZW5jZXNbMi9NVDUxL01UNDgvTVQ1MC9NVDUzL01UNDkvTVQ4NS9NVDQ3L01UMTA5L01UMTA4L01UNjYvTVQxMDEvTVQxMDIvTVQxMTEvTVQxMTQvTVQzMi9NVDY5L01UMTIwL01UOTkvTVQxMDUvTVQxMTUvTVQ3My9NVDEwMC9NVDk3L01UMTE2L01UMTIxL01UNjUvTVQ3OC9NVDc5L01UNzYvTVQxMThdL1R5cGUvRW5jb2Rpbmc+Pg1lbmRvYmoNMTMgMCBvYmoNPDwvT1BNIDEvT1AgZmFsc2Uvb3AgZmFsc2UvVHlwZS9FeHRHU3RhdGUvU0EgdHJ1ZS9TTSAwLjAwMj4+DWVuZG9iag0xNCAwIG9iag08PC9PUE0gMS9PUCB0cnVlL29wIHRydWUvVHlwZS9FeHRHU3RhdGUvU0EgdHJ1ZS9TTSAwLjAwMj4+DWVuZG9iag0xNSAwIG9iag08PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgMjEgMCBSL0NvbnRlbnRzIDE3IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzIDE2IDAgUi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTYgMCBvYmoNPDwvRm9udDw8L0YxIDI4IDAgUi9GNCAyOSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vRXh0R1N0YXRlPDwvR1MyIDM1IDAgUi9HUzMgMzYgMCBSPj4+Pg1lbmRvYmoNMTcgMCBvYmoNPDwvTGVuZ3RoIDM0MjIvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCmjejFnJdiJHFj3HVd7oK94S9YHojJxTWqF5LrWgXC5bXoSSEESRA52DbPQTvefDvOq9/8ArLfpGDoDUIPvUOUUKksh49713373Bv3c4KdrhJvlmQI7jsACvPc+xmOXYlMkdM/CY7ZNtcmb4FO98oWTHIN82mWGTE9gscKnX/Inb64/rf9Odf54OLBrnO7bFHJM8x2OG45Dtc+YHxC1meIH+0qO+0dQ3Hgx3/nnCidPwcYfzahW82DZzeBCQ53LGrYCG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ZXMvS2lkc1syNiAwIFIgMSAwIFIgNCAwIFIgNyAwIFIgMTUgMCBSXT4+DWVuZG9iag0yMiAwIG9iag08PC9TdWJ0eXBlL1hNTC9MZW5ndGggMzU4MS9UeXBlL01ldGFkYXRhPj5zdHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMC1jMzE2IDQ0LjI1MzkyMSwgU3VuIE9jdCAwMSAyMDA2IDE3OjA4OjIzIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAgPHBkZjpQcm9kdWNlcj5BY3JvYmF0IERpc3RpbGxlciA4LjEuMCAoTWFjaW50b3NoKTwvcGRmOlByb2R1Y2VyPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgICAgPGRjOmNyZWF0b3I+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPnR1Yml0YWs8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L2RjOmNyZWF0b3I+CiAgICAgICAgIDxkYzp0aXRsZT4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+c2FnLTM5LTMtNC0wOTAyLTIxOnNhZy0wPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA5LTA2LTI2VDA5OjQ1OjA0KzAzOjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5RdWFya1hQcmVzcyA3LjMxPC94YXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4YXA6Q3JlYXRlRGF0ZT4yMDA5LTA2LTI2VDA5OjQ1OjA0KzAzOjAwPC94YXA6Q3JlYXRlRGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhhcE1NOkRvY3VtZW50SUQ+dXVpZDozOGViMGFhMC02M2M5LTBjNGYtYTIzZi1mNTE4NzQ1MzQwODI8L3hhcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6MGZmZjg5YzUtY2JjMy0wYjQyLTlhODItNmE2MGE2M2UyNzA4PC94YXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+DWVuZHN0cmVhbQ1lbmRvYmoNMjMgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6MjAwOTA2MjYwOTQ1MDQrMDMnMDAnKS9BdXRob3IodHViaXRhaykvQ3JlYXRvcihRdWFya1hQcmVzcyA3LjMxKS9Qcm9kdWNlcihBY3JvYmF0IERpc3RpbGxlciA4LjEuMCBcKE1hY2ludG9zaFwpKS9Nb2REYXRlKEQ6MjAwOTA2MjYwOTQ1MDQrMDMnMDAnKS9UaXRsZShzYWctMzktMy00LTA5MDItMjE6c2FnLTApPj4NZW5kb2JqDXhyZWYNMCAyNA0wMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwNTc0MjIgMDAwMDAgbg0KMDAwMDA1NzU0OSAwMDAwMCBuDQowMDAwMDU3NjczIDAwMDAwIG4NCjAwMDAwNjA2NjIgMDAwMDAgbg0KMDAwMDA2MDc4OSAwMDAwMCBuDQowMDAwMDYwOTEzIDAwMDAwIG4NCjAwMDAwNjM4MDMgMDAwMDAgbg0KMDAwMDA2MzkzMCAwMDAwMCBuDQowMDAwMDY0MDY2IDAwMDAwIG4NCjAwMDAwNjcyMTUgMDAwMDAgbg0KMDAwMDA3MTcxMiAwMDAwMCBuDQowMDAwMDcyMDU0IDAwMDAwIG4NCjAwMDAwNzIyNjcgMDAwMDAgbg0KMDAwMDA3MjM0NCAwMDAwMCBuDQowMDAwMDcyNDE5IDAwMDAwIG4NCjAwMDAwNzI1NDkgMDAwMDAgbg0KMDAwMDA3MjY1NCAwMDAwMCBuDQowMDAwMDc2MTQ2IDAwMDAwIG4NCjAwMDAwNzY0MDQgMDAwMDAgbg0KMDAwMDA3NjQ0MCAwMDAwMCBuDQowMDAwMDc2NDcyIDAwMDAwIG4NCjAwMDAwNzY1NTAgMDAwMDAgbg0KMDAwMDA4MDIwOCAwMDAwMCBuDQp0cmFpbGVyDTw8L1NpemUgMjQ+Pg1zdGFydHhyZWYNMTE2DSUlRU9GDQ==", + "directory": "/tmp", + "fileName": "04-valid.pdf", + "fileSize": "81 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Read PDF": [ + { + "hints": [], + "startTime": 1738078143109, + "executionTime": 291, + "source": [ + { + "previousNode": "Read Binary File" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "binary": { + "data": { + "mimeType": "application/pdf", + "fileType": "pdf", + "fileExtension": "pdf", + "data": "JVBERi0xLjcNJeLjz9MNCjI0IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDgwOTUzL08gMjYvRSA1NzQyMi9OIDUvVCA4MDQzMS9IIFsgOTE2IDI5NF0+Pg1lbmRvYmoNICAgICAgICAgICAgICAgICAgIA14cmVmDTI0IDMxDTAwMDAwMDAwMTYgMDAwMDAgbg0KMDAwMDAwMTIxMCAwMDAwMCBuDQowMDAwMDAxMjkxIDAwMDAwIG4NCjAwMDAwMDE0NzEgMDAwMDAgbg0KMDAwMDAwMTYyMiAwMDAwMCBuDQowMDAwMDAyMzE5IDAwMDAwIG4NCjAwMDAwMDM0OTAgMDAwMDAgbg0KMDAwMDAwMzg2MiAwMDAwMCBuDQowMDAwMDEyODc2IDAwMDAwIG4NCjAwMDAwMTM1NjcgMDAwMDAgbg0KMDAwMDAxNDAyMSAwMDAwMCBuDQowMDAwMDE0NjE1IDAwMDAwIG4NCjAwMDAwMTQ2OTEgMDAwMDAgbg0KMDAwMDAxNDc2OSAwMDAwMCBuDQowMDAwMDE1NjczIDAwMDAwIG4NCjAwMDAwMTYzNTAgMDAwMDAgbg0KMDAwMDAxNjY1OCAwMDAwMCBuDQowMDAwMDE3NDMzIDAwMDAwIG4NCjAwMDAwMTgzMDkgMDAwMDAgbg0KMDAwMDAxOTE3MyAwMDAwMCBuDQowMDAwMDE5ODc0IDAwMDAwIG4NCjAwMDAwMjA1MTkgMDAwMDAgbg0KMDAwMDAyMTEzMiAwMDAwMCBuDQowMDAwMDIxODE0IDAwMDAwIG4NCjAwMDAwMjIxNjUgMDAwMDAgbg0KMDAwMDAyNzIxMyAwMDAwMCBuDQowMDAwMDMxMTk2IDAwMDAwIG4NCjAwMDAwMzI5MTQgMDAwMDAgbg0KMDAwMDAzMzE1NiAwMDAwMCBuDQowMDAwMDU3Mzg1IDAwMDAwIG4NCjAwMDAwMDA5MTYgMDAwMDAgbg0KdHJhaWxlcg08PC9TaXplIDU1L1ByZXYgODA0MjIvUm9vdCAyNSAwIFIvSW5mbyAyMyAwIFIvSURbPDYwOUQyNzU5RTI2NkQ5NzIyQjI5RjE5QzBEQzdGM0FGPjxGNDUxQzNGNjQ2QjI0MEQ5QjQyNTFGMjgwNUVFNjU5Rj5dPj4Nc3RhcnR4cmVmDTANJSVFT0YNICAgICAgICAgICAgICAgICAgICAgDTU0IDAgb2JqDTw8L0xlbmd0aCAyMDcvRmlsdGVyL0ZsYXRlRGVjb2RlL0kgMjQyL0wgMjI2L1MgMTQzPj5zdHJlYW0NCnjaYmBgYAaipwysDAw8rgwCDAggABRjZWBh4DjBEMBw7h9DMgODaDKTV4vCViRFCl3JCzKzjUOjfmj2NS5dc9ZDNeoHWCxcx1HkuMOl1WBVjBIdHSDaOC0DRCspuUSA+WwNILIBYTiQJ8TAqOEDpGWAWBasW5WBn1GO8YTIArcHmi+OOLozLmSJYpjD6GFmEMDgfLCQ2Z2tjCtBmEGFIWCBX+fJ/ixeJWazL0B90gugjhRmYNT0A9JMQOwCxOIMjBZaIGcB8TWAAAMAI5wxHQ1lbmRzdHJlYW0NZW5kb2JqDTI1IDAgb2JqDTw8L01ldGFkYXRhIDIyIDAgUi9QYWdlcyAyMSAwIFIvVHlwZS9DYXRhbG9nL1BhZ2VMYWJlbHMgMTkgMCBSPj4NZW5kb2JqDTI2IDAgb2JqDTw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCAyMSAwIFIvQ29udGVudHNbMzcgMCBSIDQwIDAgUiA0MSAwIFIgNDIgMCBSIDQzIDAgUiA0NCAwIFIgNDUgMCBSIDQ2IDAgUl0vUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlcyAyNyAwIFIvVHlwZS9QYWdlPj4NZW5kb2JqDTI3IDAgb2JqDTw8L0ZvbnQ8PC9GMSAyOCAwIFIvRjIgMzggMCBSL0YzIDQ3IDAgUi9GNCAyOSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMSA1MyAwIFI+Pi9FeHRHU3RhdGU8PC9HUzIgMzUgMCBSL0dTMyAzNiAwIFI+Pj4+DWVuZG9iag0yOCAwIG9iag08PC9TdWJ0eXBlL1R5cGUxL0ZvbnREZXNjcmlwdG9yIDMwIDAgUi9MYXN0Q2hhciAyNTIvV2lkdGhzWzIxNyAwIDAgMCAwIDAgMCAwIDM1MiAzNTIgMCAwIDAgMzQyIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDI1NCAwIDAgMCAwIDAgMCA3MDYgNjM3IDY3NiA3NjEgNTgxIDU1NCA3MjcgMCAzNzggMCAwIDU1MSA4ODggNzQwIDc2NiAwIDAgNjU5IDUwNSA2NDEgMCAwIDAgMCA2NTUgMCAwIDAgMCAwIDAgMCA0NjYgNTM0IDQyMiA1NDcgNDM3IDMzMSA0OTIgNTUwIDI5NSAwIDUxMyAyNzggODQzIDU2NiA1MjUgNTQ3IDAgNDA0IDM4MyAzMzkgNTU1IDQ2NSAwIDQ4MiA0NjUgNDQ1IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjE3IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDM0MiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0MjIgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDUyNSAwIDAgMCAwIDAgNTU1XS9CYXNlRm9udC9ETUZKQ0grTWluaW9uUHJvLUJvbGQvRmlyc3RDaGFyIDMyL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoNMjkgMCBvYmoNPDwvU3VidHlwZS9UeXBlMS9Gb250RGVzY3JpcHRvciAzMiAwIFIvTGFzdENoYXIgMjUyL1dpZHRoc1szNDEgMzY2IDQ2OCA0NzcgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCAyMjcgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDM0NiAzNDYgNTAwIDU4MCAyMjggMzU2IDIyOCAzMzEgNDgwIDQ4MCA0ODAgNDgwIDQ4MCA0ODAgNDgwIDQ4MCA0ODAgNDgwIDIyOCAyMjggNTAwIDU4MCA1MDAgNTAwIDc1MyA2OTEgNTg4IDY2NSA3MzUgNTY4IDUyOSA3MTUgNzY2IDM0MSAzMjkgNjczIDUzOCA4OTEgNzQzIDc0NyA1NjMgNTAwIDYyMSA0NzQgNjE3IDczNiA3MDMgOTcxIDY1NCA2MzQgNjAzIDM0NSA1MDAgMzQ1IDUwMCA1MDAgNTAwIDQzOSA1MDggNDIzIDUyOCA0MjUgMjk2IDQ2OCA1MzQgMjY4IDI1NiA0OTYgMjUzIDgxOSA1NDcgNTEwIDUyNCA1MTEgMzcxIDM2NyAzMDUgNTMxIDQ2MyA2ODUgNDcyIDQ1OSA0MjAgNTAwIDUwMCA1MDAgNTgwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUyMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgMzk4IDQwMSAyMjQgMjIzIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDI2OCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDcwMiA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCAzNDMgNTgwIDUwMCA1MDAgNTAwIDUxMiA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDY2MSA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDc0NyA1ODAgNTAwIDUwMCA1MDAgNTAwIDczNiA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNDIxIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTEwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTMxXS9CYXNlRm9udC9ETUZKQ0srTWluaW9uUHJvLVJlZ3VsYXIvRmlyc3RDaGFyIDIvVG9Vbmljb2RlIDMzIDAgUi9FbmNvZGluZyAzNCAwIFIvVHlwZS9Gb250Pj4NZW5kb2JqDTMwIDAgb2JqDTw8L1N0ZW1WIDEyOC9Gb250TmFtZS9ETUZKQ0grTWluaW9uUHJvLUJvbGQvRm9udEZpbGUzIDQ4IDAgUi9GbGFncyAyNjIxNzgvRGVzY2VudCAtMjQzL0ZvbnRCQm94Wy0zMTgg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MeuuSh3asP/Ko2WuPsAGI8qYQcHKxtXfFVaWIY0bvDg6JEcOTv9UFw1vyS2Il47PXba/RT6XTXl/1tHj+9d8luNzrV+z7uLcIw0npkLb87dEOxfXI9rzev7+bo5n048Vyu8vXl4YLxWXUZzhF3v8XKVcQRtr2hSviVVy1XP3lO+RnjCxu2eCfE5yRcnEmiUlsBK1orI8pXJqgcTZBds2ACOjeW4+MGvO7pg0Y+6cxRInZu3ddlnqQsQGh9VywE7Akm1Sm5Yu37R7fbI/sBNQuvCn3PzftQu/W8w5Pvv3hIVsv2cuZJdb4NzPwzmBh2s11y3uHyUiPzxEAQIMALQ6CUwKDWVuZHN0cmVhbQ1lbmRvYmoNMzIgMCBvYmoNPDwvU3RlbVYgNzkvRm9udE5hbWUvRE1GSkNLK01pbmlvblByby1SZWd1bGFyL0ZvbnRGaWxlMyAzMSAwIFIvRmxhZ3MgNi9EZXNjZW50IC0yNTYvRm9udEJCb3hbLTI5MCAtMzYwIDE2ODQgOTg5XS9Bc2NlbnQgNzExL0NhcEhlaWdodCA2NzQvWEhlaWdodCA0MzYvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFsaWNBbmdsZSAwL1N0ZW1IIDMyL0NoYXJTZXQoL3NwYWNlL2h5cGhlbi9UL3Uvci9rL0ovTS9lL2QvUy9jL2kvdHdvL3plcm8vbmluZS9zZW1pY29sb24vdGhyZWUvcGFyZW5sZWZ0L3BhcmVucmlnaHQvY29sb24vc2l4L29uZS9maXZlL2NvcHlyaWdodC9VZGllcmVzaXMvQi9JZG90YWNjZW50L0EvSy9FL20vYS9sL3MvYXQvdC9iL3BlcmlvZC9nL28vdi9zbGFzaC94L24vZi9oL3cveS9wL2NvbW1hL04vTy9xdW90ZWRibGxlZnQvcXVvdGVkYmxyaWdodC9laWdodC9lbmRhc2gvai9GL2ZvdXIvcGx1XA1zbWludXMvc2V2ZW4vRC9QL2VxdWFsL3ovZG90bGVzc2kvc2NlZGlsbGEvdWRpZXJlc2lzL2dicmV2ZS9jY2VkaWxsYS9vZGllcmVzaXMvQ2NlZGlsbGEvcXVvdGVyaWdodC9PZGllcmVzaXMvWS9HL0kvVS9SL3EvVy9IL0MvZGVncmVlL211bHRpcGx5L211L0wvVi9hc2NpaXRp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ZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc3MDkyLCBGcmkgRmViIDIzIDIwMDcgMTQ6MTY6MTggICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcG9zdHNjcmlwdDwvZGM6Zm9ybWF0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4YXBHSW1nPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvZy9pbWcvIj4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBJbGx1c3RyYXRvciBDUzM8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDYtMDlUMTY6MjQ6MzUrMDM6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAwOC0wNi0wOVQxNjoyNDozNSswMzowMDwveGFwOk1vZGlmeURhdGU+CiAgICAgICAgIDx4YXA6TWV0YWRhdGFEYXRlPjIwMDgtMDYtMDlUMTY6MjQ6MzUrMDM6MDA8L3hhcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4YXA6VGh1bWJuYWlscz4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eGFwR0ltZzp3aWR0aD4yMDg8L3hhcEdJbWc6d2lkdGg+CiAgICAgICAgICAgICAgICAgIDx4YXBHSW1nOmhlaWdodD4yNTY8L3hhcEdJbWc6aGVpZ2h0PgogICAgICAgICAgICAgICAgICA8eGFwR0ltZzpmb3JtYXQ+SlBFRzwveGFwR0ltZzpmb3JtYXQ+CiAgICAgICAgICAgICAgICAgIDx4YXBHSW1nOmltYWdlPi85ai80QUFRU2taSlJnQUJBZ0VBU0FCSUFBRC83UUFzVUdodmRHOXphRzl3SURNdU1BQTRRa2xOQSswQUFBQUFBQkFBU0FBQUFBRUEmI3hBO0FRQklBQUFBQVFBQi8rNEFEa0ZrYjJKbEFHVEFBQUFBQWYvYkFJUUFCZ1FFQkFVRUJnVUZCZ2tHQlFZSkN3Z0dCZ2dMREFvS0N3b0smI3hBO0RCQU1EQXdNREF3UURBNFBFQThPREJNVEZCUVRFeHdiR3hzY0h4OGZIeDhmSHg4Zkh3RUhCd2NOREEwWUVCQVlHaFVSRlJvZkh4OGYmI3hBO0h4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zi84QUFFUWdCQUFEUUF3RVImI3hBO0FBSVJBUU1SQWYvRUFhSUFBQUFIQVFFQkFRRUFBQUFBQUFBQUFBUUZBd0lHQVFBSENBa0tDd0VBQWdJREFRRUJBUUVBQUFBQUFBQUEmI3hBO0FRQUNBd1FGQmdjSUNRb0xFQUFDQVFNREFnUUNCZ2NEQkFJR0FuTUJBZ01SQkFBRklSSXhRVkVHRTJFaWNZRVVNcEdoQnhXeFFpUEImI3hBO1V0SGhNeFppOENSeWd2RWxRelJUa3FLeVkzUENOVVFuazZPek5oZFVaSFREMHVJSUpvTUpDaGdaaEpSRlJxUzBWdE5WS0JyeTQvUEUmI3hBOzFPVDBaWFdGbGFXMXhkWGw5V1oyaHBhbXRzYlc1dlkzUjFkbmQ0ZVhwN2ZIMStmM09FaFlhSGlJbUtpNHlOam8rQ2s1U1ZscGVZbVomI3hBO3FibkoyZW41S2pwS1dtcDZpcHFxdXNyYTZ2b1JBQUlDQVFJREJRVUVCUVlFQ0FNRGJRRUFBaEVEQkNFU01VRUZVUk5oSWdaeGdaRXkmI3hBO29iSHdGTUhSNFNOQ0ZWSmljdkV6SkRSRGdoYVNVeVdpWTdMQ0IzUFNOZUpFZ3hkVWt3Z0pDaGdaSmpaRkdpZGtkRlUzOHFPend5Z3AmI3hBOzArUHpoSlNrdE1UVTVQUmxkWVdWcGJYRjFlWDFSbFptZG9hV3ByYkcxdWIyUjFkbmQ0ZVhwN2ZIMStmM09FaFlhSGlJbUtpNHlOam8mI3hBOytEbEpXV2w1aVptcHVjblo2ZmtxT2twYWFucUttcXE2eXRycSt2L2FBQXdEQVFBQ0VRTVJBRDhBOVU0cTdGWFlxN0ZYWXE3RlhZcTcmI3hBO0ZYWXE3RlZrOXhCYnd0TmNTTERDZ3E4c2pCVlVlSlkwQXdFZ0N5eWpBeU5BV1dHNnYrYzM1YmFZV1dYV29yaVJkdUZvcjNGVDdOR0cmI3hBO1QvaHNwbHFZRHpkenAvWjNXNWVXTWdmMHZUOSs3SGJqL25KVDh2NG1vbHZxTTQzK0tPR0lEYi9YbFRya0JxNDl4L0h4ZGpEMk4xaDUmI3hBO21BK0ovUkV0Mi84QXprbitYMHBvOEdvd0R4a2hpSS80U1Y4VHE0OXgvSHhXZnNickJ5TUQ4VCttSVpIby93Q2NmNWI2cXlwQnJVVU0mI3hBO3JtbnAzUWUzSVBoeWxDcDl6Wk1hbUI2MDYzVWV6MnR4Ym5HU1A2UHErN2RtRU0wTThTeXd5TExFNHFraUVNcEhpQ05qbHdJTzRkUEsmI3hBO0ppYUlvcjhMRjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3FkeGMyOXRCSmNYRWl3d1JLV2tsa0lWVlUmI3hBO2RTU2RnTUJJQXNzb1FNaUJFV1M4ZDgwL241TmMzLzZFOGhhZStyYWhJU2kzakl6Sld0S3hSRDRuQS9tYWc5aU13OG1xSjJqK1BoK1AmI3hBO2M5bG9mWlVSaDR1cmw0Y082L3ZQVDNEZExyWDhsdnpBODJ5cmYrZk5la2hWdmlXeFFpWjFyMkNxVmdpLzJJYklqVHpsdkw5Yms1UGEmI3hBO1BSNlFjR2t4Zy8wdVgvSGo4YVp2by81RS9scnBxcVcwMXIrVmY5MjNranlFL05GS1IvOEFDNWVOTERyditQSjBXbzlxTmJrL2o0Ui8mI3hBO1JGZnQrMU5QMForVlducUlUYTZIYWdiY1dTMFFrZ2Q2aXBPQStEMTRmc2NYeDlmazN2TkwvVE4vb244cTlTSG9MYWFKZDEyQ0lsbzcmI3hBO1ZJN2NSVUg1WWdZZW5EOWkrUHI4Vy9GbWovcGtvMW44aHZ5MjFKU1k3QjlQbElJOVd6bFpQK0VmMUkvK0Z4T2xqMDIvSG01bW05cWQmI3hBO2JpNXk0eC9TSDZkajlyQ0xyOG5mekk4blN0ZmVSZGNlNWhVOGpZc3dpZHFiME1ia3dTL1RUNVpRZFBPRzhmc2QzRDJoMFdzSEJxOFkmI3hBO2lmNTNQN2ZxQ2IrVWZ6OVZiNGFMNTVzbTBiVWtQcHRkOEdTTGwwL2V4dDhVZGZIZGZrTW5qMVhTWDQ5NC9IdWNUWCt5dnA4WFNTOFMmI3hBO0hkMStCNi9mNzNyOE0wTThTVFF1c3NNaWhvNUVJWldVaW9JSTJJT1pnSU80ZU9sRXhOSFloZmhRN0ZYWXE3RlhZcTdGWFlxN0ZYWXEmI3hBOzdGWFlxN0ZYWXE3RlhZcWd0YTFuVGRGMHk0MVBVNTF0N0syWG5MSzMzQUFkU1NkZ0IxT1JuTVJGbHYwMm1ubW1NY0JjcFBCTG05ODUmI3hBOy9uVHJiV2RsejByeWRaeVZrZGdTcG9kaTlLZXBNUnVFcnhYOFRnRXl5bnkrNTc2R0xUZGk0dUtYN3pVeUg0cnVqNTh5OWEwalFmSW4mI3hBOzViYUE4b2FLd3QxQUYxcUZ3YXpUTjI1TlRreDhFVWZJWmxSakRFTEx5V28xV3I3U3pWdk05SWprUHgzbjV2Sy9PUDhBemtyZVNTU1cmI3hBOzNsUzBXR0ViRFVMc2NwRDdwRDlsZmJrVDhobVBQVXlQTFo2cnM3Mk1pQUphaVZuK2JIbDhUK3F2ZXhTTHl2OEFuVjU1cFBjcmZUMnMmI3hBO2dxSkx5WDZ2QnhKNnBHNVJTUDhBVVhLUkNVOTZKL0htN2FXdDdMME8wZUFTSDgwY1IrZS8ybE9MWC9uR1R6bElnYTUxR3dnSk82cTAmI3hBOzBoQS81RnFLNVorV241T0hrOXROTUQ2WVRQeUg2V3J2L25HWHpuR2hhMjFDd25JT3lGcFl5UjdWakkvSEg4dFB5WEg3YWFZbjFSbVAmI3hBO2tmMHBQSm9INTErUTZ6d0MvdHJTS2xaTGFUNnpiVUhRc2ltUkFQOEFYWEsrR1VOOXc1ZzFYWmV2MlBBWkh2SERMNTdINUZtSGszL24mI3hBO0pXWVBIYStiTFFOR2RqcU5vS01QZVNIb2Zjb1IvcTVkRFVrZlZ1NmZ0SDJNRkdXbmwvbXkvUWYxL042ZHIzbGJ5TitZK2hSM0RHSzcmI3hBO2prVS9VOVV0aVBXaVArUzNzZXFNUG96SWxDR1FXSGw5THJ0VjJkbEkzaWVzVHlQNDd3OG8wN1dmT1A1TmE1SHBXczg5VDhwWGJINnYmI3hBO0tsYUtLN3ZEeXJ3ZGVyUlZvZnh6RmpLV0kwZVg0L0g0dDZ6TnA5TjJ6aU9URjZOUkhuKzN2SGRMK3g3N3BlcVdHcTZmYjZqcDh5M0YmI3hBO25kSUpJSms2TXAvVjRFZHN6NHlFaFllQXo0SjRwbUV4VW84d2lzazFPeFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1SkFCSk4mI3hBO0FOeVRpcjU4OHk2bHFuNXUrZTE4dDZSTTBYbGJTMkwzRnl2MldDbmkwNThTMzJZZ2ZuNDVycHlPV1ZEbCtOMzBQUlljZlpHazhmSUwmI3hBO3p6NUQ5SDZaZko2cnJXcytWUHl6OG5SMGpFTm5hcjZOalpJZjNrOHBGYVZQVXNmaWRqODh5cFNqaWk4cHB0UHFPMDlTZDdsTGVSNkEmI3hBO2Zqa0h6eVc4L2ZtOTVvSUc4VVo2ZkV0cFp4SHg2N21udXpaZytxY3U4dm9sYVRzakI1LzdLWi9Id0QxM1QvS241WGZsVHAwV29hek0mI3hBO2x6cTFLcGN6cUpKM2NmOEFMTkFPWEFlL2J1MlpQQkRIdkxjdkg1ZGZyKzFabUdJY09QdUd3L3pwZGZ4UVliNWsvd0NjbXRabmQ0dkwmI3hBOzJuUldjTmFMY1hmNzJVang0S1ZSVC93V1FscVpIbHM3clIreGVPSXZOTXlQZEhZZlBuOXpDTHo4NS96TnVwQzc2N0xIdlVMQ2tVU2omI3hBOzJvaUwrT1VuSkk5Uzd6SDdPYUdBb1l4OGJQM2x1ei9Pajh6YlIrU2E1TElPNnpKRktEL3dhSDhNUmtrT1JLTW5zNW9aamZHQjdpUjkmI3hBO3haejVaLzV5YTFPSjBpOHg2YkhjdzlHdWJPc2NvOXpHNUtOOUJYTG82cVE1N3VpMXZzWEFpOEV5RDNTM0h6NS9leTNVL0pQNVkvbWwmI3hBO3BzbXFhQlBIYWFwVDQ3bTNVSklybnRkVy93QVBML1cySjdOVEorSERKdkhZdW93ZHBhN3N1WXg1Z1pZKzQ4djgyWDQ5enlXMHZ2UHYmI3hBOzVRK2FHZ2xRaUdRMWtnSkp0THVJYmMwYnhIaVBpWG9mRE1jR1dPWGNYcnNtTFNkcjRMSFB2L2lpZng4QytoYkc4OG8vbWQ1TUplTVgmI3hBO0ZoZERqUGJzUUpyZWRmY1Y0dW5WVDNIc2N6UVk1WS9qWjg3eTQ5UjJacWVkVGp5UFNRL1NDOHM4bDZ6cW41VitlWmZKK3ZTdEo1ZTEmI3hBO0J3MWxka1VSVEllS1RyNEszMlpCMk8vYmZHeHpPS1ZIbCtOL3graDZydExUNCsxZEtOVGhGWm9mVVBkekg2WXZvSE5nK2ZPeFYyS3UmI3hBO3hWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3ZNdno3ODZTYUQ1VEdtV2I4ZFMxc3RicHhQeExBQisrWVUzcWFoQjg4eGRWa29WMy9jOVAmI3hBOzdLOW1qUHFPT1gwWTkvajAvWDhFei9LM3lmYWVTUEpLdGU4WWJ5YVA2N3E4NzdjQ0U1Y0NmQ0pOdm5VOThsZ2h3UnN1TDI1MmhMWGEmI3hBO3IwN3hCNFlEOGQ1L1E4STh3NnJybjVzZm1IRmFXTlZ0V1l3NmZHMWVFRnNwcTh6Z2R5UGliNkI0Wmh5a1p5OTczdWt3WXV5ZEdaVCsmI3hBO3JuTHpsM0Q3aDgzcnZtYnpCNWMvSi95ZmI2Um84S3phdGNLVEFqVTVTU1VvOTFjVTNwWG9QOWlLQWJaTXBERUtIMVBJYUxTWnUyTlMmI3hBO2NtUTFqSFB5SDgyUDQ4M3pacmV1YXJybXBUYWxxdHk5MWVUbXJ5dWUzWlZIUlZIWURZWmhrM3pmU3ROcGNlQ0FoakhERUlIQTVEc1YmI3hBO2RpcnNWVEhRUE1Pc2VYOVRpMVBTYmxyVzdoT3pLZG1IZFhYb3ludURoQkkzRGphdlNZOVJqTU1nNG9uOGJQcEhSdFc4c2ZuSjVLbTAmI3hBOy9VWTF0OVl0Z0RNaTd2Qk5TaXp3azdsRzdqL1luc2N6SWtaWTBmcUg0L0g5ajVycWRQbjdHMVFuQTNqUEx1a1A1cDgvN1hrbms3ekImI3hBO3JmNVdlZjV0TzFRTXRrWkJCcWtJcVZlSTdwUEdPNVVIa3ZpS2p2bU5DWmhMNy94OXoxL2FPa3hkcTZRVHgvVlZ4UG4xaWZ1KzE3ZCsmI3hBO2NQa21Eemg1TmU0c2xXWFVyRkRkNmJLbnhHUmVQSjRsSTZpUmVudlRNdlVRNG84UTZmYzhQN1BkcEhSNm1wYlFsNlplWG44UHV0VC8mI3hBO0FDTjg2TjVrOG1Sd1hMbDlTMGdyYTNMSGNzbFAzTWgrYWloOTFPT21uY2E3bVh0UDJiK1cxSk1mb3llb2ZwSDQ3M29tWkx6anNWZGkmI3hBO3JzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZURYa2YrTnYrY2hGdHBBWk5NOHVBRjBPNi93Q2kwWTFIVGU1a0NuMnpYbjE1Zkw5WDdmdmUmI3hBOzl4bjhsMlB4RDY4MysrLzQ2RS8vQU9jalBOYjZYNVRoMGEzZmpjNnpJVmxwMUZ2RFJwUCtDWXFQbFhMZFZQWUJ3UFpEUURMcURsUDAmI3hBOzR4L3NqeS9TZ2Z5SzBDeDhzZVI3L3dBNmFwUkh1NDNsRG1sVXRJSzdDdmVSMUo5L2h5R0FDTVRNdC90UnFwYXJWUjB1UCtFZ2Y1eC8mI3hBO1VQMHZDdk4zbWUvOHplWWJ6V2IwbjFMbHlZNDZraU9JYkpHdGV5ci9BRnpHSkpObDd2cy9SUTB1R09LUEtQMm5xVW53T2E3RlhZcTcmI3hBO0ZYWXE3RlUrOGorYmIzeXA1bHROWnRTU0ltNDNNSTZTd04vZVJtdmlPbmdhSEpSa1ltdzRIYWVnanE4RXNVdXZMeVBRdmF2K2NndkwmI3hBO2RscmZsYXc4NjZaU1UyNlIrck1vL3ZMTzRvWTJQK283aW4rc2N5ZFJHd0poNG4yVDFrc0dvbHBjbTEzdDNTanorWSs1UFA4QW5IcnomI3hBO1Urc2VTdjBiTzVlNjBSeGIxUFV3UFZvZnVveUQyWEo2V2RnanVjRDJ0MFBnNnJqSDA1QmZ4Ni9yK0xGdkxLRHlUK2Z0N295ZnV0TTEmI3hBO3dONkNEN0lFdzlhS2xmNVpGYU1aVEQwWks2Y3ZueS9RN1hXbjg3MlJITHpuaTUvRFkvWlJlOVpzSGdYWXE3RlhZcTdGWFlxN0ZYWXEmI3hBOzdGWFlxN0ZWc3NpUlJ2STVvaUFzeDYwQUZUMHdFMExURUVtZzhRLzV4dmhOL3FIbWp6RlB2UGRUSWdKMzNrWjVwTi9jbGN3ZElOeVQmI3hBO3pBL0gzUGMrMk12RGhod2psRWZkUUg2V0lmOEFPUWQ5UHFuNWxKcGNacWJPQzN0WTA3ZXBQKzlyOVBxcmxlcGw2ejVPMzlrOFF4YUUmI3hBOzVEL0VaSDREYjlEUC93QStidUx5NytXV25lWGJOaXFYTHcyWUErR3R2YXB5YnA0c3FaZHFQVEFSL0d6ei9zdGpPbzEwczB1bHkrTWomI3hBOy9hK2E4eEgweDJLdXhWMkt1eFYyS3V4VjJLdnBmOG01bDgxL2xCZStYN284Mmcrc2FlT1haSkU5U0p2OWlaS0QvVnpMd2ppeG1QNC8mI3hBO0Z2bVh0Rkg4cDJqSE5Icnd6K1d4Kzc3V0IvOEFPTjJweTJYbnU2MDE2cXQ5YVNLeUhiOTdBd2NiZXk4eGxXbWw2eDUvMnUrOXNjSW4mI3hBO3BJekg4TWg4aitBeWYvbklGVHBQbS95ajVsaitHU0dRbzhuZ0xXWkpsQjl2M2paUFY3U0I4dnVkWjdKbnhkUG53SHFQOTBDUDBCN24mI3hBO21lOEk3RlhZcTdGWFlxN0ZYWXE4Mzg5Zm4xNU84a2E2MmphN1o2akhjK21zMFVzVUVieFN4djBlTmpLdFJVRlR0MUdLc2QvNkcyL0smI3hBO3ovZk9wLzhBU1BIL0FOVnNWZC8wTnQrVm4rK2RULzZSNC84QXF0aXJ2K2h0dnlzLzN6cWYvU1BIL3dCVnNWVUwvd0Q1eW4vTFBVYkcmI3hBOzQwK0NMVWhQZVJQYnhGN2VNTHpsVW92SWlVN1ZPUXlSNG9rZDRiY0V4REpHUjVBZ3BSNVMvTURRZnlYZ3UvTEhuR0s1L1RGMUtMNVImI3hBO1pLazhRZ2RGalNyRjQvaTVSdlVmTEt0UGpNUnZ6ZDc3U2RwNDlabmpMSGZER05iN2IyZjJKWHFPbDNubUhXVy9PQzJpSjhscmNwcU0mI3hBO2hkbFc3K3JXRWl4emdSVlB4VmdZS09YaGxFc01qUGx0YnQ5SjdRYWZGMmQ0Ry9pY0VoeTJzM1gzcGo1czErSDg4WkxPMzhqeFRjdEMmI3hBO0VzbW9KZjhBQzNCRjBVRVJTalNjcWVpOWZETGRUak1xb1c0SHN4MnRnMFp5ZUxmcTRhb1h5dS92Q1EvOUM3L21UL3ZpMS82U0YvcG0mI3hBO040TSs3N3YxdldmNkx0RjN5LzBxMlgvbkh6OHhZbzJsbGp0STQwQlozYTVRS0FPcEpQVEFjTXh6SDNmclRIMnMwWk5BeXY4QXFzQzEmI3hBO2JTLzBiZEcyTjNiWGNpMUR0YXllcWdJL3l3QXJmN0VuS2dYZjZmUDRrZUxobEgrc0srem44MEZoYjNZcWo5RzBnNnBkQzFTN3RyU1YmI3hBO2lBaHU1UFJRay84QUZoSEFmN0lqQVM0K3AxSGhSNGpHVWgvUkYvWnpaMm4vQURqMytZMGlLNlJXam80REt5M0NrRUhjRUVETFJobWUmI3hBO24zZnJkQ2ZhM1JBMFRML1NydjhBb1hmOHlmOEFmRnIvQU5KQy93Qk1QZ3o3dnUvV2ovUmRvdStYK2xaQjVVODFXZjVJQzYwenp2Rk4mI3hBOzYrc2NMbXlXd0NYQ2hJdVNPWEphT2hKSXpKMDJPVWJKMmVROXB1MWNPc25BNHI5SU4yS1N6UXRNdmZKT3JXbjVxNm5HdzhuVEY3cUwmI3hBOzBXVjdsb05TaVlXd01OVkZmM3lGaFhiSzhPR1VaQ3hzSFpkcCswR216NkR3UmZpVkRwMUJGL2NVeTgxK2N0Sy9PMDJ1aCtTb2JqOUkmI3hBOzZaNmw5Y0MrUklJL1JQR0kwY08veGNuWGFuNnNzMU9NeW9oMWZzMTJyaTBlU1p5M1VvOU4rcWVXdi9PV1g1WVIyMFVja2VwdElpS3ImI3hBO3Q5WGpOU0JRbXBseklpS0FCZWRtUVpFaFUvNkcyL0t6L2ZPcC93RFNQSC8xV3lUQjMvUTIzNVdmNzUxUC9wSGovd0NxMkt1LzZHMi8mI3hBO0t6L2ZPcC85SThmL0FGV3hWazNrSDg4L0tQbnJXVzByUXJUVUdtamlhYWVlYUJFaGpRYkRtNGthbkk3QVV4VjZKaXJzVmVlZm5iK1YmI3hBO2x0K1lIbFI3ZUZWVFhiRGxOcEZ3MUI4ZFBpaGMvd0FrdEtleG9lMkt2aFM3dExtenVwclM2aWFDNXQzYUtlR1FGWFIwUEZsWUhvUVImI3hBO2lsU3hWMktyNFpYaG1TVlB0eHNIV3ZpcHFNVmU1ZjhBT1cwYVhIbTd5L3JVUUl0OVIwaVAwMnAxNFRTU2RmSGpNdUtBOUcvSThONWkmI3hBOy93Q2NiOVQwT01lcEpIRnFtbklnb1NIbVJwbDdkYTNBSXJpcnozL25FRFdZclh6M3FtbHlOeC9TTmdXaUg4MGx2SXJVL3dDQWR6OUcmI3hBO0tsOVMrWi9NK2orV2RIbTFiVnBoRmJSQ2lxTjNrYy9aampYOXBtL3oyeUdUSUlDeTVlaTBXVFU1Qmp4aTVIN1BNdmxUOHdmelg4eWUmI3hBO2NiaDQ1cERhYU9HckJwc1RIaFFkREtkdlViNTdEc00xczhobWQzMWZzbnNMQm94WUhGazZ5UDZPNWhXUWQyN0ZYWXE3RldkZmwzK2ImI3hBO3ZtUHlmY0pCemErMFVuOTlwOHJINFI0d3NhOEc5dWg4TytXWThoaHlkRDJ2MkJoMWd2NmN2ODRmcDcvdmZWUGx6ekhwSG1MU0lOVjAmI3hBO3FjVDJrNDJQUmtZZmFSMS9aWmU0ell3bUpDdytVNnpSNU5Qa09QSUtrUHhZOG55Yi93QTVhNnVML3dETXkxMHlHcm5UYkNHSjBGU2YmI3hBO1duZDVhQWU2T21UY2NQU3YrY2ttL1FYNUhhUm9idCsrYVd4c1NvSXFSYlFNN0gzQU1ReFE4Ky81eFZMMk54NTA4d1ZLeDZYcE5XZnMmI3hBO0N4YVlkUVIveDduRlM4SHhTN0ZYWXFpTlAwKzkxRyt0N0N4aGE0dkx1UlliZUJCVm5rYzhWVUQzSnhWOTRmazUrV05uK1gvbEtMVHgmI3hBO3hrMWE3NHo2dmRMKzNOVFpGUDhBSkVEeFg2VDN4UXp2RlhZcTdGWHpUL3psTCtVUE5IOC9hSkQ4YUFMcjF1ZzZyOWxMb0FlR3l5ZlEmI3hBOzM4eHhWOHhZcGRpcnNWZTgvbUtQOFdmODQ2K1RQTTBaOVM1OHVQOEFvdSs4VVNndCtUSDNNTUovMldLRXkvNXc5ODJKYjZ2clBsYWQmI3hBO3dCZlJyZldTbnZKRDhFcWozWkdVL0pjVkxDL00wTjUrVXY1OHRlMjhUQzB0YjBYdHJHdTNxMk4xWG5Hdit3ZDR2bU1Vc2cvTjd6N2UmI3hBO2ViUE5NdytPTFM5T2Q3ZXh0WEJVamlhUEk2bm83a2ZRS0R0bXJ5ejRwVyt1K3p2WmtOTnB3ZWM1Z1NKKzRmQmcyVnUvZGlyc1ZkaXImI3hBO3NWZGlyUHZ5ZC9NSzc4cCtaRWhrRWsrazZpeXhYZHJHQzdCanNrc2FEcXluc09vK2pMY016R1E4M25QYWJzeUdvMHhueW5qQmtENUQmI3hBO21QeDFZNytYRmxlL21oK2V5NnRlUjF0MnZHMWUvVTFaVXQ3ZGdZb2p2OW12cHhkZW1iTjhtWlAvQU01ZmViSTczelJwZmxxQnFycEUmI3hBO0RYRjJCL3Y2NjRsVlArckVpbi9aWW9DaDVWRGVVZjhBbkdMekRyRWhNZDU1dXV2cU5uMjVRbjl5dy80QmJnNHE4RnhTN0ZYWXErcWYmI3hBOytjWFB5aE5qYXA1NzF1Q2w1ZElSb2NEamVPRmhScmdnL3RTRFpQOEFKMy9hR0tIMFZpcnNWZGlyc1ZXWEZ2QmN3U1c5eEdzc0V5TkgmI3hBO0xFNERLeU1LTXJBN0VFR2h4VjhNZm5wK1ZNM2tIelV5MnFzM2wvVWkwMmxUR3A0Q3RYdDJQODBaTzNpdEQxcmlsNXRpcnNWZTQvOEEmI3hBO09PT3NXR3NXWG1MOHNOWWs0MlhtUzNlWFQyWTdKZElsSDRpb3F4VlZrSC9HUEZCZWFhZGVhLzhBbDM1L2p1Q25wYXY1ZnZDc3NSSkMmI3hBO3Y2WktTSlgrU1ZDUlh1cHhTK3BmekJrL0xYelZaZVF2ekN2cHFXY2QvRDZiaFE1ZUpnMGp3enFEMGhtaUhQclQ0aCsxbFdYS0lWYm4mI3hBO2RuOW5aZFhLVWNmT01UTDludktUL256K1Y1ZHBQT21oSUpZSmdKTlZoaStMcVA4QWVsT1BWU1B0L3dEQmVPWXVmRlhxSEl2WmV5M2ImI3hBO2RWcGN1eEgway83bjlYeWVGWmpQZU94VjJLdXhWMkt1eFY3NytSWDVZZm8rTWVkZk1LQ0FSeHRKcHNNM3crbWxEeXVaT1ZPUHcxNFYmI3hBOzdmRjRaazRNZjhaNUQ4VytmKzFIYmZpSDhyaDMzOVJIWCtpUDAvTHZSZjVmWFg1Y2VSL0tYbkh6NXB4SnM1OVJ1U29ZQkc0STFiYTAmI3hBO2g2bWptUUZhL3dBd3Iwekx4WlJNV0hrZTBlejhta3lDR1Q2akVINS9xNVBsNktQekQrWWZuMEtQMzJzK1lMd2xxRDRWTWhxeDlraVQmI3hBO2YyVVpZNEwwZi9uSmJYOU90cnpSUHk4MFZ2OEFjWDVVdFVqbXBUNHJsMFVBTVJzV1NNQW4vS1pzVUI0bmlsMkt2VS95Qy9LV1R6MzUmI3hBO24rczM4Wi93M3BUTEpxREdvRXo5VXRsUCtWMWZ3WDNJeFY5dlJ4eHhSckhHb1NOQUZSRkFDcW9GQUFCMEF4UXV4VjJLdXhWMkt1eFYmI3hBO2pYNWllUk5KODhlVmJ2UWRSSEgxUnp0TGtDclFYQ2crbkt2eUpvUjNGUjN4VjhDZVpmTG1xK1c5ZHZORTFhRXdYOWpJWTVVN0dtNnUmI3hBO3A3cTYwWlQzR0tVc3hWRjZScXQvcEdxV21xYWZLWUwyeWxTZTNsSDdMeHNHSDBiYmpGWHUzNXI2SFkvbWQ1SnRmelU4c1FnNnJheEwmI3hBO2IrYXRPajNkV2lVQXljZHlmVEhmdkhRL3NuRkRFZnlvOHQrWmZOM2xuWHRMMDY0ZVpORmFIVUxiU3p1SGVZUEhONmZnNVZGMjcwcDEmI3hBO3pHMU9NeUZqbzlKN005cHcwdW9QaWJRbUt2dTd2ZzlOL0tYODU1UEx2RHkxNW9ESFNZeVlvYmxsSmt0VFdoamtXbFRHRFh0VmZsMHgmI3hBOzhPYmgyUDB2VDl2ZXpnMUg3L0IvZWN5T2t2TWVmM3NsODlma1BwSG1DTTY5NUt1WUludVI2djFRTURhUzEzNVF1dGVCSjdmWi93QlgmI3hBO0p6MDRJdUhKMW5aZnRUazA1OEhWQW5oMnYrSWU4ZGZ2OTd3N1gvS2ZtVHk5Y0dEV2RQbXNuclJXa1UrbTMrcElLbzNUc2N4aUNEUmUmI3hBOzYwbXZ3YWdYaWtKZmY4dWFVNEhMZGlxY2VYdkovbWJ6RmNDRFJ0T211eVRScEZXa1M5dmprYWlMOUp3Z0VtaHU0V3I3UXdhY1hsbUkmI3hBOy9mOEFMbTl6OGova2JvWGxhSC9FUG5TNmdubXRSNnZvTWFXa0ZOK1VqTlQxR0h5NCt4MnpLaGdFUmMzaGUwL2FmTHFqNE9sQkFsdGYmI3hBOzhSOTNkOS91WWorYkg1dzNmbTJmL0RubHBaUDBSSTZvenFyQ2E4ZXRGVUtQaUVkYVVXbFQzOE1xelp1UGJvN2ZzSDJlanBCNCtldkUmI3hBOyt5SDdmUG84MC9OL3k1NWs4bzZSb09oYWpka1JhZ3NtcXphYXV5UlRta0s4elg0blZGcDdWSUdaV254bU1kK3J5WHRIMm5EVjZqaWgmI3hBOzlFUndnOSs1M1pyK1crazJuNVMvbDlkZm1UNWdpWC9FbXJSRzM4c2FiS1BqVVNDb2RnZHh6SHh0NElLZFdwbVE4KzhDMURVTHpVYismI3hBOzR2NzJWcDd5N2tlYTRtYzFaNUpHTE14UHVUaWxENHFuSGxIeXJxM21yekZaYURwTWZxWGw2L0JTYThVVWJ2STVIUlVVRW5GWDM1NUYmI3hBOzhsNlI1TThzV2VnYVd2N2kyV3NzeEFEelROL2VTdlQ5cGo5d29PZ3hRbitLdXhWMkt1eFYyS3V4VjJLdkZmOEFuSkw4b1I1cjBML0UmI3hBO2Vqd2N2TU9reGt5Um9QaXViVmZpYVAzZVBkaytrZHhpcjQyeFM3RldiZmxSK2FHcStRUE1JdllBYm5TcnVrV3JhY2QxbWhyMUFPd2smI3hBO1NwNEg2T2hPS3ZwUHlEL3lySHl2cnNubTN5N2ZwRjVZODZCWUk0NmNZck85Z0pjeFBYKzZEaVEvQ3crRWorVWlsZVRLSUVYMWN6U2EmI3hBO0RMcUJJNHh4R0FzanJYbDdtUS9tVCtTK2grYjFiVXRQWk5QMXhoeSt0S0t3ejdiZXNxOS84dGQvR3VWWmRPSmJ4NXU0N0c5bzh1ajkmI3hBO0UvWGk3dW85MzZ2dWVLeFhuNXFmbFZxSHBNSmJXMVovN3FRZXRZeis2bjdOVC9rbFc4Y3d3WlFQYzl0TEhvTzFZWHRLWHltUHg4UTkmI3hBO0UwWC9BSnlXMEM4ZytyZVpOSGtoNWpqSzl2eHVJVzl6SEp3WUQyK0xMeHFiRlNGL2p1L2E4N3FmWXpOQThXRElENzlqOHgreEhuelAmI3hBOy93QTQ0YXFwbG5nc0lwRFF1cldVa0RWcWVwU05RVDhpY0psaEkzRmZQOURqL2t1MnNXd015UDY0UDNseSthLytjY3RJQW10b0xDV1UmI3hBO1ZLQkxLU1ovb1o0eUFmbVJnRXNJR3d2NS9wVTZIdHJOdEl6QS9yZ2ZjVXQxei9uSmZScldBMjNsblIza0tqakZKZGNZWVYrVVVaWmkmI3hBO1BhcTRuVTBLaUsvSDQ2dVRwZll6TE04V2ZKWHUzUHpQN1hueGI4MVB6VjFBQ2t0emFxMjIzbzJFSC9HdGZ2YktQVk05NWVoclFkbFEmI3hBOzZSbDg1bjhmQVBiL0FNdC95ZDBIeVpIK2tMdDB2OWFDa3ZmU0RqSEFLZkVJVlAyZmR6djhodG1aaXdDTzU1dkQ5c2UwT2JXbmdqNmMmI3hBO1g4M3FmZjhBcTVNVTg5VGZsaHIydWY4QUt3Zk1GNHQxNWM4cEo5UnRyVUtDdDdxSlByY0VxZjNxcXJMUmVoTlNUd0c5dVBLSlhUcU4mI3hBO1pvTXVtNFJrRlNrTHJxQjV2bXY4MFB6TDFyOHdQTWo2dGY4QTdtMWlCajA2d1ZpeVFRMTZiOVhicTdkejdVR1dPSXcvRld3Q1NBQlUmI3hBO25ZQVlxKzAvK2NkZnlqSGt6eTcrbU5WaDQrWmRYUldtVmg4VnRibWpKQjdNZnRTZTlCK3ppaDYvaXJzVmRpcnNWZGlyc1ZkaXJzVmQmI3hBO2lyNCsvd0NjbVB5aS93QU5hMGZOV2p3Y2RDMVdRL1dva0h3MjEyMVNSUWRJNWVxK0JxUERGTHczRlhZcXlUeU5xTUs2MWE2VHFWN0omI3hBO2E2RnFGeEdsNlZJS1J1UVk0N2dxMjM3b3ZVOStOUlhmSzhtUGpGT3c3TTdSbm84d3l3MzZFZDQ3dngxZlJsdHJuNXBmbEpJdG5xOXYmI3hBOyttL0t5dHhobUJZb2lrN0NPV2hhSTdmWWNVOFBITUlTbmkyNmZaK1B4VDJVOU5vTzFoeFl6NFdmcVAxanI3eHYzdlN2THY1ci9sNTUmI3hBO3R0ZnFyWGNVTTB3cExwdW9oVUo3OGZqckhKL3NTY3lSbmhJVWZ0ZVoxbllXczBrdUxoSkEvaWoremNJZlcveUovTGZWV2FSYkJ0UGwmI3hBO2NmM2xqSVlodjNFYmM0aDlDNG5UUVBMWnMwM3RScmNXM0Z4aitrTCszWS9heFc1LzV4ZjBGaWZxMnQzVVk3Q1NPT1QvQUlqNmVWSFMmI3hBO0hvZnMvYTdXSHR0bS9peHhQeEkvVzNiZjg0ditYMUkrdGExZHlqOW9SUnh4ay9MbDZtSTBoNm43UDJyUDIyemZ3NDRqM2tuOVRLOUYmI3hBOy9JMzh0OUlZVEhUemZTcHVKTDZReWdVOFUrR0w3MXl5T21nT2U3cWRUN1RhM050eGNJL29pdnQ1L2FxZVpmemQvTDd5cGJtMlM2anUmI3hBO3JpRmVNV25hZUZmaVIreVN0STQvcE5mYkdXZUVSUTM5ekhSZGdhelZuaTRURUgrS1g0c3ZOYmpVUHpSL051UXcyc1g2Qzhva24xSmkmI3hBO1dFYklEdnpjOFduSS9sV2krTk91WTVNOHA4dnNlbGppMEhaQXVSOFhVZmFQK0orTzc1djg0NnRGZGF0UFphZmRTM0doV00waWFZSkQmI3hBO1FNbGVKbTREWU5OeDVINkIyR1p1UEdJQ25pKzBkZlBWNWpsbnpQVHVIY2tPV09DN0ZYdm4vT01QNVFqWE5VWHpuclVITFNOT2twcGsmI3hBO0xqNFo3cEQvQUhsRDFTRS9lL3lJeFErdDhWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXFYK1lOQjB2WDlGdk5HMVNFVDZmZlJtS2VNK0ImI3hBOzZFSHN5bWpLZXgzeFY4RGZtWCtYK3FlUlBOZDFvZDhDOFMvdmJDN3BSWjdkaWVFZzk5cU1PekE0cFlyaXJzVmZaSC9PT1g1c1dubTcmI3hBO3kwdmxiV3BGZlh0TWg5SUpMUS9XN1JSeFYvaSsweUQ0WkI4bTdtZ0l2bW9KQnNNbDh6L2tMNUMxdDVKN2VCOUp1M3FUSlprTEdXUGMmI3hBO3dzQ24vQThjeDU2V0o1YlBSNkwycDFlQUFFK0pIK2x6K2ZQNTJ4QmZ5WC9OUFFLanl2NXNyYnJzdHU4azF1S2R2M1k5YUtveW44dE8mI3hBO1BJL0xiOGZOMjU5bzlCcVA4WXdiOTlBL2JzVlFRLzhBT1VGbWhWWkliMENnV3BzSy9PckNNbjZjUU0zbjlqRXk3Q21lUmovcC93QnImI3hBO2piLzg1UDNpaFhtaHNnYWhnRFlBL2Vna1AzSEVqTnkzK3hSUHNLSFF5LzAvN0ZoL0pQOEFNelhpditLdk5wOUEvYWdqZWE0Rk80NE4mI3hBOzZNWUp4L0xUbHpQNmZ4ODJYK2lUUTZmL0FCZkJ2MzBJL2J1V1krVi95SjhnNkU2VHkyemFyZUpRaWE5SWRBUnY4TVFDeC84QUJBNWQmI3hBO0RTeEhQZDAydTlxTlhuMkI4T1BkSDlmTmhuL09TLzVzMjNsenkrL2t6UnBGR3M2bkQ2ZDM2VzMxV3pZVUkyNlBLdndxT3kxTzN3NWsmI3hBO2dVODhTU2JMNUN4VjJLc3gvS3I4dWRSOC9lYmJmUjdibEZaSlNiVTd3Q29odDFQeEh3NXQ5bEI0KzFjVmZlMmo2UnAyamFWYTZWcHMmI3hBO0MyOWhaUkxEYndyMFZFRkI4ejRrOVR2aWhHWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxODgvTzM4ckxiOHdQS2oyOEtxbXUySEsmI3hBO2JTTGhxRDQ2ZkZDNS9rbHBUMk5EMnhWOEtYZHBjMmQxTmFYVVRRWE51N1JUd3lBcTZPaDRzckE5Q0NNVXFXS29yU3RWMUhTZFJ0OVMmI3hBOzAyNGUwdjdSeExiM0VSb3lNTzQvaU8rS3ZycjhwdjhBbkpueTk1amhnMHZ6VkpIbyt2YklMbGp3dExocTBCVmovZE9mNVdOUEE5c1UmI3hBO1BiMVlNQXlrRlNLZ2pvUmlyc1ZkaXJVa2lSbzBrakJJMEJaM1kwQUEzSkpPS3ZDZnphLzV5ZDBQUW9adEo4blNSNnJyUnFqMzYvSGEmI3hBO1c1OFFla3plSEg0ZkVuN09Ldmt2VU5RdnRTdnA3Ky9uZTZ2YnAybHVMaVZpenU3R3BaaWNVb2ZGVVJwK24zdW8zMXZZV01MWEY1ZHkmI3hBO0xEYndJS3M4am5pcWdlNU9LdnZEOG5QeXhzL3kvd0RLVVduampKcTEzeG4xZTZYOXVhbXlLZjVJZ2VLL1NlK0tHZDRxN0ZYWXE3RlgmI3hBO1lxN0ZYWXE3RlhZcTdGWFlxN0ZYWXErYWYrY3BmeWg1by9uN1JJZmpRQmRldDBIVmZzcGRBRHcyV1Q2Ry9tT0t2bUxGTHNWZGlyTHYmI3hBO0tYNXMvbUg1VFZZdEUxdWVDMVhwWnljWjdjRDJpbERvdit4QU9LdlJySC9uTDc4eG9ZdUYxcDJsM1RDbEpUSE5HeDhlWEdYajl3R0smI3hBOzAxZi9BUE9YdjVqenhjTFhUOUx0R05heWlLYVJoOHVjdkg3MU9LMDgzODIvbW4rWUhtME5IcjJ0VDNOc3hxYk5Dc052dDAvY3hCRU4mI3hBO1BFaXVLc1V4VjJLdXhWOVUvd0RPTG41UW14dFU4OTYzQlM4dWtJME9CeHZIQ3dvMXdRZjJwQnNuK1R2KzBNVVBvckZYWXE3RlhZcTcmI3hBO0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcXN1TGVDNWdrdDdpTlpZSmthT1dKd0dWa1lVWldCMklJTkRpcjRZL1BUOHFadklQbXBsdFYmI3hBO1p2TCtwRnB0S21OVHdGYXZic2Y1b3lkdkZhSHJYRkx6YkZYWXE3RlhZcTdGWFlxN0ZYWXE5VC9JTDhwWlBQZm1mNnpmeG4vRGVsTXMmI3hBO21vTWFnVFAxUzJVLzVYVi9CZmNqRlgyOUhISEZHc2NhaEkwQVZFVUFLcWdVQUFIUURGQzdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYWXEmI3hBOzdGWFlxN0ZYWXE3RldOZm1KNUUwbnp4NVZ1OUIxRWNmVkhPMHVRS3RCY0tENmNxL0ltaEhjVkhmRlh3SjVsOHVhcjViMTI4MFRWb1QmI3hBO0JmMk1oamxUc2FicTZudXJyUmxQY1lwU3pGWFlxN0ZYWXE3RlhZcW5IbEh5cnEzbXJ6RlphRHBNZnFYbDYvQlNhOFVVYnZJNUhSVVUmI3hBO0VuRlgzNTVGOGw2UjVNOHNXZWdhV3Y3aTJXc3N4QUR6VE4vZVN2VDlwajl3b09neFFuK0t1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjImI3hBO0t1eFYyS3V4VjJLdXhWMkt2RmYrY2t2eWhIbXZRdjhBRWVqd2N2TU9reGt5Um9QaXViVmZpYVAzZVBkaytrZHhpcjQyeFM3RlhZcTcmI3hBO0ZYWXEyQVNRQUtrN0FERlgybi96anIrVVk4bWVYZjB4cXNQSHpMcTZLMHlzUGl0cmMwWklQWmo5cVQzb1AyY1VQWDhWZGlyc1ZkaXImI3hBO3NWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZmSDMvT1RINVJmNGExbythdEhnNDZGcXNoK3RSSVBodHJ0cWtpZzYmI3hBO1J5OVY4RFVlR0tYaHVLdXhWMkt1eFY3NS93QTR3L2xDTmMxUmZPZXRRY3RJMDZTbW1RdVBobnVrUDk1UTlVaFAzdjhBSWpGRDYzeFYmI3hBOzJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLcGY1ZzBIUzlmMFc4MGJWSVJQcDk5R1lwNHo0SG8mI3hBO1FlekthTXA3SGZGWHdOK1pmNWY2cDVFODEzV2gzd0x4TCs5c0x1bEZudDJKNFNEMzJvdzdNRGlsaXVLdXhWbVA1VmZsenFQbjd6YmImI3hBOzZQYmNvckpLVGFuZUFWRU51cCtJK0hOdnNvUEgycmlyNzIwZlNOTzBiU3JYU3ROZ1czc0xLSlliZUZlaW9nb1BtZkVucWQ4VUl6RlgmI3hBO1lxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYbm41Mi9sWmJmbUI1VWUzaFZVMTJ3NVRhUmMmI3hBO05RZkhUNG9YUDhrdEtleG9lMkt2aFM3dExtenVwclM2aWFDNXQzYUtlR1FGWFIwUEZsWUhvUVJpbGZwK24zdW8zMXZZV01MWEY1ZHkmI3hBO0xEYndJS3M4am5pcWdlNU9LdnZEOG5QeXhzL3kvd0RLVVduampKcTEzeG4xZTZYOXVhbXlLZjVJZ2VLL1NlK0tHZDRxN0ZYWXE3RlgmI3hBO1lxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxK2FmOEFuS1g4b2VhUDUrMFNINDBBWFhyZEIxWDcmI3hBO0tYUUE4TmxrK2h2NWppcU0vd0NjWFB5aE5qYXA1NzF1Q2w1ZElSb2NEamVPRmhScmdnL3RTRFpQOG5mOW9ZcStpc1ZkaXJzVmRpcnMmI3hBO1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXF5ZUNDNGdrZ25qV2FDWlRITEZJQXlPakNqS3kmI3hBO25ZZ2pZZzRxM0hISEZHc2NhaEkwQVZFVUFLcWdVQUFIUURGVjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYmI3hBOzJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWRDZpSmpwOTBJZVgmI3hBO3Jlay9wY0s4dVhFOGFVNzF4VjgwZmtiWi9ubEYrWStudjVzYnpBZEVFZHg2NDFHVzdlMjVlaTNwOGhLeFN2T2xLOThWUStoMmY1N2omI3hBOzg0cmVTN2J6Ri9ocjlOa3lDU1c3Tm45VCtzR2xWTGVuNlhEdFNsTVZmVStLdXhWMkt1eFYyS3ZIZitja1lQekdtMGJSaDVJT3FDNkYmI3hBO3hLYno5RXZPaitud0hIMVBSS21sZWxjVlIvOEF6anBENTdpOGszcStkVHFKMVU2bEtZZjBxOHp6L1YvUWc0OFRNV2JoejUwN1ZyaXImI3hBOzFQRlhZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYWXE3Rlh5RCtjdjV5L21ib2Y1bTY5cE9rNjlOYTZmYXpJdHZicWtKQ0F3b3hBTEkmI3hBO1QxSjc0cXd6L29ZRDg0ZitwbW4vQU9SY0gvVlBGTlByejhtTmMxWFhmeXgwTFZ0V3VHdTlSdW9wR3VMaGdvTEZaNUZGUW9VZlpVRHAmI3hBO2loTC9BTS92TXV1ZVcveXl2OVcwUzdheTFDS2EyV080UUt4QWVaVllVY01Od2ZERlhuZi9BRGpGK1pQbmZ6WjVnMXEyOHhhckpxRUYmI3hBO3RhUnlRSklzYWhYTW5Fa2NGWHRpckUvejAvT0Q4eWZMMzVxYTNvK2phNU5aNmJhL1ZmUXRrU0VxdnFXY01qVUxJeDNkeWV1S1gwOTUmI3hBO1B2TG05OHBhSmUzVWhsdXJtd3RacDVUUUZwSklWWm1OS0RjbkZERWZ6Kzh5NjU1Yi9MSy8xYlJMdHJMVUlwclpZN2hBckVCNWxWaFImI3hBO3d3M0I4TVZmTEZ0L3prUitjbHZKNmkrWTVIN0ZaSUxXUlNLMTZORWZ3eFRUMkw4blArY25yclhOWnRmTG5uQ0NHTzV2WEVObHF0dVAmI3hBO1RScG1ORVNhTWtnRnpzR1dnclFVNzRvZlJXS3ZGUDhBbko3eno1cjhwYUpvbHg1ZDFGOVBtdXJtV09kNDFSaXlyR0NBZWF0M3hWRWYmI3hBOzg0eWVkZk5IbXp5cnExNTVodjMxQzV0NzcwWVpKRlJTcWVpamNmZ1ZSMUp4VjZaNXd2TG15OHBhM2Uyc2hpdXJhd3Vwb0pSUWxaSTQmI3hBO1daV0ZhallqRlh4TC93QkRBZm5EL3dCVE5QOEE4aTRQK3FlS2FSMmhmbngrYmx4cmVuMjgzbU9kNFpybUdPUkRIQlFxMGdCRzBmY0gmI3hBO0ZEN2p4VlR1YmlHMnRwYm1kZ2tNQ05KSzU2QlVGV1AwQVlxK0Zyci9BSnlFL04yUzVsa2k4eFR4Uk83TkhFSTRLS3BOUW9yR2VneFQmI3hBO1Q3ZjBEVkUxYlF0TzFXT25EVUxXRzZUajBwTkdzZ3Avd1dLRWRpcjVSL1AzODNQekc4dWZtZHFPazZKcmN0bHAwTVZzMFZ1aVJNQVgmI3hBO2dSbTNkR083R3ZYRldiL21qK2F1ditYdnlQOEFLbW9XZDgwZm1mekJhV0RtOEFReWY3ekpQY3loU0N2eE1RcDIvYXhWS2Y4QW5HbnomI3hBO2grWnZuTHpGcUY3cnV0ejNlaWFYQUZhQmtpVlpMaWMwakJLb3BvcXF6YkhyVEZYMGJpcnNWZWZmbnJZMlgvS3F2TTl4OVhqOWY2b1QmI3hBOzYzQmVkZWFqN1ZLNHErY2YrY1VyZUNmODBYU2VOWlUvUnR3ZUxxR0ZlY2ZZNHFYMmJGRkZGR0k0a1dPTmZzb29DZ2ZJREZYbFAvT1UmI3hBO1Ava250VC80ejJuL0FDZlhGWGxQL09HLy9LVStZZjhBbUJpLzVQWXFXRC84NUtmK1RxOHgvd0RSbC8xQVFZcGZaUGtML2xCdkx2OEEmI3hBOzJ6TEwvcUhURkRCUCtjb2YvSlBhbi94bnRQOEFrK3VLdklQK2NSdE4wN1VmTUhtTzIxQzFpdTdaN0NNUERPaXlJUVphR3FzQ01WTHkmI3hBO3pYTk50TFA4enI3VGRDSmUxZzFtUzMwMzB5U2VLM0pXSUl3TzlOZ0QzNjRwZm9WaWg4Ny9BUE9aUC9LT2VYUCtZeWIvQUpOREZVVi8mI3hBO3poei9BTW9Wcm4vYlMvNWtSNHE5OVpWZFNyQU1yQ2pLZHdRZXh4Vjh3LzhBT1pObmFXLytFUHE4RWNQTDlJOHZUVlZyVDZyU3RBUEgmI3hBO0ZReS8vbkU2eHNwdnl3bGxtdDQ1SkJxZHdBN29yTUtSeEVia1lxOXd4VmhuNXk2eWRHL0szek5mS3dWL3FNbHZHeDdQZFV0MUk5K1UmI3hBO29wNzRxK0FRamxDNEI0S1FDM1lFMUlINEhGTDdyLzV4NTFuOUsvbERvRWpOeWx0STVMS1FmeS9WNVdqUWY4aXdweFE5R3hWOFJmOEEmI3hBO09UMy9BSk9QVnY4QWpEYWY5UXlZcENVL20xNXRHc3grVWRKaGs1Mm1nZVh0TnRxQTFIMWlXMWpsbVB6RlVRKzY0cStyZnlBOGwvNFUmI3hBOy9MUFRZSm8rR29ha1AwamZWSHhCNXdDaW4zU0lJcEhqWEZEMGJGWFlxd1Q4OVA4QXlVZm1mL21EUC9FMXhWODMvd0RPSmY4QTVOUi8mI3hBOysyYmMvd0RFNHNVbDlsNG9lVC84NVEvK1NlMVAvalBhZjhuMXhWNVQvd0E0Yi84QUtVK1lmK1lHTC9rOWlwWVAvd0E1S2Y4QWs2dk0mI3hBO2YvUmwvd0JRRUdLWDJUNUMvd0NVRzh1LzlzeXkvd0NvZE1VTUUvNXloLzhBSlBhbi93QVo3VC9rK3VLdmp6UVBNUG1qUlk3NTlDdmImI3hBO214VzRpOUsrbHRTeUV4RTdCblhkUlgzeFM5TS81eGtYOHZUNTZoZnpGTElOZkRqOUFSeUtQcXBuUFFsd2ErdFgrN0REajc4cVlxK3omI3hBOzhVUG5mL25Nbi9sSFBMbi9BREdUZjhtaGlxSy81dzUvNVFyWFArMmwvd0F5SThWZS9ZcStadjhBbk5IL0FLWTcvdDVmOWl1S1F5Ly8mI3hBO0FKeEovd0RKV1RmOXRPNC81Tnc0b2UxWXE4Uy81eTMxbjZuK1d0dnA2bjk1cWQvRkd5K01jS3RLeCtoMVRGWHoxQjVWRGZrUmRlWkEmI3hBO0tTcjVoanQvK2VLMmhxZitSa294Uzl5LzV3NzFreitVTmMwaGlDYkMrUzRYeEMzVVFVRDVjcmRzVVBvREZYeEYvd0E1UGY4QWs0OVcmI3hBOy93Q01OcC8xREppa1BMWUp6RmNSVEZSSVkyVnVEN3FlSkZGSThOcVlxL1NIUWRXdGRZMFRUOVd0UDk1ZFF0b3JtRWRhSk1nZFI5QU8mI3hBO0tFZGlyc1ZZSitlbi9rby9NLzhBekJuL0FJbXVLdm0vL25Fdi93QW1vLzhBMnpibi9pY1dLUyt5OFVQS2YrY24wZHZ5ZDFVcXBJU2UmI3hBOzBMa0N0QjlZUVZQMGtERlhrMy9PRzdML0FJcjh3TFVjallSa0wzSUV3cWZ4eFVzRi93Q2NqNVk1ZnpvOHh0RzNKUTFxaEkvbVN5Z1YmI3hBO2g5REFqRkw3TzhqeHZGNUs4dnh1S09tbTJhc090Q0lFQjZZb1lGL3psRC81SjdVLytNOXAvd0FuMXhWNVAvemg1RkZMNWs4eHhTb3MmI3hBO2tVbGhHc2tiQU1ySzB0Q0NEc1FSaXBlUy9tUEZwZW0vbVBycWVYMldPd3RkUWxOazBCK0JPTDFwR1IyUnRscGlsK2dkaExMTFkyOHMmI3hBO3Uwc2tTTklLVStKbEJPM3p4UStmditjeWYrVWM4dWY4eGszL0FDYUdLb3IvQUp3NS93Q1VLMXovQUxhWC9NaVBGWHYyS3ZtYi9uTkgmI3hBOy9wanYrM2wvMks0cERMLytjU2YvQUNWazMvYlR1UDhBazNEaWg3VmlyNVkvNXpLMWt5YTE1YzBVR2d0cmFlOGNkejlZa0VTMStYMWQmI3hBO3FZcUhpYWVmZk5hZVQzOG5MZWdlWEpKZlhleDlHRGVRT0pPWHE4UFYrMG8vYjl1bUtYckgvT0lHc2kyOCthbnBidFJOUjA4dWc4WkwmI3hBO2VSU0Ivd0FBNzRxWDEzaWg4UmY4NVBmK1RqMWIvakRhZjlReVlwREh2ekIvTDkvSzJpZVQ5U0RGNC9NV2xKZlBKdlQxbll5RlIvcXcmI3hBO3pRZysrS3ZwNy9uRm56UCtsL3l2aXNKSDVYT2lYRWxtd1AydlNZK3RFVDdVa0tEL0FGY1VQWU1WZGlyQnZ6eGplVDhwdk15UnFYZHImI3hBO1FoVlVWSitOZWdHS3ZuUC9BSnhSc3J5SDgwbmVhQ1NOUDBiY0RrNk1vcnpqN2tZcVgyTGlxUmVlZksxdjVyOG82cjVlbmYwMTFHQm8mI3hBO2tscFhoSUtQRTlPL0dSVk5NVmZEVnhhZm1OK1ZubWVRajZ4b21xeGg0VnUwWDkxTkVUdVkzWUZKRWJpRC9hTVVwbitXL3dDV3ZtMzgmI3hBO3kvTnFYRnlseEpwMDAvcjYxclUzTGlWTGNwYVNOOXVWK2lnZk03WXErN1k0NDRvMWpqVUpHZ0NvbzJBQUZBQmloNVovems1RkxMK1UmI3hBO09wSkVqU09aN1NpcUN4Mm5Yc01WZkgyaHllZHJBM01HaC9wRzJlOWpFVjBsbUprYVdPdjJHOVBjclh0aWw2bitUdjhBempsNXAxalcmI3hBOzdUVmZOTmpKcFdnV3NpelBiWFNtTzR1U2hEQ0lRbWpvaC9hWmdOdW5zb2ZZZUt2bnYvbk1PM3VKL0x2bDBReFBLUmR6RWhGTFUvZEQmI3hBO3d4VkZmODRmMjg4SGt2VzFtamVKanFWUUhVcVNQUWo4Y1ZlOVlxK2F2K2N5N1c1bi93QUllaEU4dkg5STh1Q2xxVitxMHJURldYZjgmI3hBOzRuUXpRL2xmTWswYlJ2OEFwTzRQRndWTlBUaTdIRlhzK0t2aVgvbkpPNXZ0Vy9OelZmUmdsbHQ3R09DemlkVVlqNElnejBvTzBqdGkmI3hBO3I2bjAzeVBwNS9MRzI4dkd6aDlkdEZTd1pqR25JeU5haUptSnAxTEdwT0t2a2I4aVo5UzBYODJ2THR5OXRMSEhMY216bDVveWlsMGomI3hBO1FiMUhabkJ4Uys3TVVQaW4vbkpxeHZaZnpnMVY0cmVTUkREYVVaVVpoL3ZPbmNERlhwWDV2ZVZKdFYvNXh2OEFLR29SUXM5NW9kanAmI3hBO2NyS0FTNGltdFk0SkY0OWZ0c2hQeXhWaS93RHppVHJGL3BublhVTkV1SVpZN1hWN1htaFpXQyt2YW5rdlVkNDNreFY5YVlxLy85az08L3hhcEdJbWc6aW1hZ2U+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwveGFwOlRodW1ibmFpbHM+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+CiAgICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6OEI4MThEMEZDNTM3REQxMUJEQjJGMThGM0JGREVDOUY8L3hhcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6OEM4MThEMEZDNTM3REQxMUJEQjJGMThGM0JGREVDOUY8L3hhcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4YXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSIvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwVFBnPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvdC9wZy8iCiAgICAgICAgICAgIHhtbG5zOnN0RGltPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvRGltZW5zaW9ucyMiCiAgICAgICAgICAgIHhtbG5zOnhhcEc9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9nLyI+CiAgICAgICAgIDx4YXBUUGc6TWF4UGFnZVNpemUgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3REaW06dz4yMDkuOTk5OTk0PC9zdERpbTp3PgogICAgICAgICAgICA8c3REaW06aD4yOTcuMDAwMDI0PC9zdERpbTpoPgogICAgICAgICAgICA8c3REaW06dW5pdD5NaWxsaW1ldGVyczwvc3REaW06dW5pdD4KICAgICAgICAgPC94YXBUUGc6TWF4UGFnZVNpemU+CiAgICAgICAgIDx4YXBUUGc6TlBhZ2VzPjE8L3hhcFRQZzpOUGFnZXM+CiAgICAgICAgIDx4YXBUUGc6SGFzVmlzaWJsZVRyYW5zcGFyZW5jeT5GYWxzZTwveGFwVFBnOkhhc1Zpc2libGVUcmFuc3BhcmVuY3k+CiAgICAgICAgIDx4YXBUUGc6SGFzVmlzaWJsZU92ZXJwcmludD5GYWxzZTwveGFwVFBnOkhhc1Zpc2libGVPdmVycHJpbnQ+CiAgICAgICAgIDx4YXBUUGc6UGxhdGVOYW1lcz4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGk+TWFnZW50YTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPlllbGxvdzwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPkJsYWNrPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94YXBUUGc6UGxhdGVOYW1lcz4KICAgICAgICAgPHhhcFRQZzpTd2F0Y2hHcm91cHM+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHhhcEc6Z3JvdXBOYW1lPkRlZmF1bHQgU3dhdGNoIEdyb3VwPC94YXBHOmdyb3VwTmFtZT4KICAgICAgICAgICAgICAgICAgPHhhcEc6Z3JvdXBUeXBlPjA8L3hhcEc6Z3JvdXBUeXBlPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3hhcFRQZzpTd2F0Y2hHcm91cHM+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4NCg1lbmRzdHJlYW0NZW5kb2JqDTUzIDAgb2JqDTw8L01ldGFkYXRhIDUyIDAgUj4+DWVuZG9iag0xIDAgb2JqDTw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCAyMSAwIFIvQ29udGVudHMgMyAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlcyAyIDAgUi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMiAwIG9iag08PC9Gb250PDwvRjEgMjggMCBSL0YyIDM4IDAgUi9GMyA0NyAwIFIvRjQg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L01UOTcvTVQxMTYvTVQxMjEvTVQ2NS9NVDc4L01UNzkvTVQ3Ni9NVDExOCk+Pg1lbmRvYmoNMTIgMCBvYmoNPDwvRGlmZmVyZW5jZXNbMi9NVDUxL01UNDgvTVQ1MC9NVDUzL01UNDkvTVQ4NS9NVDQ3L01UMTA5L01UMTA4L01UNjYvTVQxMDEvTVQxMDIvTVQxMTEvTVQxMTQvTVQzMi9NVDY5L01UMTIwL01UOTkvTVQxMDUvTVQxMTUvTVQ3My9NVDEwMC9NVDk3L01UMTE2L01UMTIxL01UNjUvTVQ3OC9NVDc5L01UNzYvTVQxMThdL1R5cGUvRW5jb2Rpbmc+Pg1lbmRvYmoNMTMgMCBvYmoNPDwvT1BNIDEvT1AgZmFsc2Uvb3AgZmFsc2UvVHlwZS9FeHRHU3RhdGUvU0EgdHJ1ZS9TTSAwLjAwMj4+DWVuZG9iag0xNCAwIG9iag08PC9PUE0gMS9PUCB0cnVlL29wIHRydWUvVHlwZS9FeHRHU3RhdGUvU0EgdHJ1ZS9TTSAwLjAwMj4+DWVuZG9iag0xNSAwIG9iag08PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgMjEgMCBSL0NvbnRlbnRzIDE3IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzIDE2IDAgUi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTYgMCBvYmoNPDwvRm9udDw8L0YxIDI4IDAgUi9GNCAyOSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vRXh0R1N0YXRlPDwvR1MyIDM1IDAgUi9HUzMgMzYgMCBSPj4+Pg1lbmRvYmoNMTcgMCBvYmoNPDwvTGVuZ3RoIDM0MjIvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCmjejFnJdiJHFj3HVd7oK94S9YHojJxTWqF5LrWgXC5bXoSSEESRA52DbPQTvefDvOq9/8ArLfpGDoDUIPvUOUUKksh49713373Bv3c4KdrhJvlmQI7jsACvPc+xmOXYlMkdM/CY7ZNtcmb4FO98oWTHIN82mWGTE9gscKnX/Inb64/rf9Odf54OLBrnO7bFHJM8x2OG45Dtc+YHxC1meIH+0qO+0dQ3Hgx3/nnCidPwcYfzahW82DZzeBCQ53LGrYCGcfMMjmf0mGEYJg1DvDf8dadzJx9lJpNQ5rvDbzvHw63bMR2fub7bbsdGLKZvbdiPXe/HZ061jn5d7sh2mBdwe8OWuN4S477j62393OFst8dd02VO51ZEsczo7vqiSycyy9RYUv+0S9dpEoqRoAGjG1VkKqRPv6mRxJYiKXK5+8vwYsdklmXb1OPMDGw842iHmYZXP0KEYVomRU6PaUbFRNKDSqN0rEIRkQgL9aSKOaWPJJNRio8jVca9kczUkxxVaw//scMM03Tr1fBU8ZtKxvSI76YZ9iSKMpNdQuDWPlmmt0+OafdcVn25t9qZF9hWtTMkxq1gsCzPrlc1axgs5neGL88vCaJm9OlBPqtC7tFQJIu4S4PFNFpM9WuyeIxEMlpksaChmkXYbXcLDqtCYKYTNEEcoRZCqb9GT5Iu03gWqanI52kSiWyxfHKXbtIHGdFwMaNLVYhZi8daKlfIyKdqwSsV46sj+l5lU1moChhnn3jPNDZBYjeQOLxexVoVxGU5L+OwpH6Xjl6exy8J9W+79PtzLBO6vu7SgczxRDobdmmYiSdg8bS1GizTasrhOHmU01whVtRUVVBT+oQ3RiqhuzR6YfQ5KvN2RSA1VrlibeRGG7TTJM4wbARn3Hes+9094nbQ406wNffrwFmuVa9hr0K+SkuV0wXr0vk4EVmW0n3nD/mkMnW/i8iLl2xKv6PmPpGKJE1FNKOJyAuButCZS8S2+FdpylNU16fnBzGnr2K+SMIFvkzfYZHkoYwIAXnvlK7jBPUyznqesqKMyg901qXjfKrSUExpQMOX4iUJX3SKTpAs8UFkIqH/spsuneLdhL5n23bLLXdZqYmc56jBAYoqRqrO1CxFtugUjfqhADBRrD7QV5koOko/4gGZKADFSCx71zJaJrjp9XOUZK7yQiLb5XxcRiLO0U4JyWKqdP0yGpYA+QJN8KiZIpzI+L3so+dN/75jIvu20QMDbseOm3bd9qbXROfucpPZnQpKbneuRQEC+pUOwHoXaZmNJrJcRHTUpS8qmdJR/w0DnrP3mr6h2sBsqPZ2Ms+XzKfDAgxZxXyvFgWvkAJbxrIQD2kE2PO9FQ/6XoOl0pwRikKlSU4qUQkYKY6rvxn1Y6YRbJ7INAUE+/SDvkTs3Q20ep7npSSzSxZ3ehbG6jswBnVktuE3nOHt8oDxGkZUr9XpRxgYH6nPwBI6nX8+d+kr09whszSiM/Zdt219XUzFduJYo0/L4hVbd27+zNJH9TxPZ6IAnt+wyvGqetCiag5SjQDKtGLEC7oGHw5CsAhm7+YyMlBGBuOG1+Ocb+XJ9byaQZNXf9WJA1BFjEipnxSY9jHa4UBFFYE1VF61PB2Jj4tCj5R+MkVXbpsdxko/1LSA7W9k72VKODRTtangbUpOXxIwzjWSMBR6zF/i6lCFKv0YlfQdo8EM0/lEo6oRzdVfpOTt8LmVGcY7As7p9+iPl/gFJCOeVT22gEobquY3l9G7/FylW1+1JMQNHQe3XeZ1TjMJ6ro6RE+KcYJAjjCeTtFV6a+gPoJ2GUzVbIYPbq903+aTJAWdDLp/I5pWDWDeJzJ5EGVMgzudTBGhkXLdqgmqVujJrC/Qm1W7/vwf5+aX5pMNvQWqW5M8j1GpRnm9KqqjIjg0qG/uc9Pd4xbv+dvnNPeMpuc4bzFxO4NwEqtRQWdnZ180LpnGZQjauhFTkUhCF56kGUhXJyihz92tms0zmvq5LjMxohNGd1KTtKaVKtS8fIBwifBWRlFa80+LSzqWySr8wGrQTCtay+dJgVEpNVnRXf+L6drMo1iEWTqbiLEEIteghtuJwCbDNNpG+aAyc9/me+SCqEz7HUnTNoXrWa3YrZvCXPUGN+EjOkcq+QOIoaYuBYYdZlrdFuD74zEoK1fPiCDFiEVDR2qmir9RTFajLlCKmuNGlbwrtd47JkheESeatWmaZpBZUFl6AGqeqBoRd0H0vYMBFJ23Zxo9SNa/1jq4soz2u9aqbo5KKPuELrt0Bq2DAh+gTbORQpIOr/forkwSrbTlbzILVS6RrTlU/6gMt8o8gztWM2PtZlBh3Wkl/aMSa+kaiiDtM8KTQ7w8zFEQYVSO9JPW7MAmqbtsUJGg7lBWeK1WnOnKovNzeIjneaxr6bBe/UoWhZ5+MAWcu/vc4b1XoNbkyuG5NLeiGAyXu+S4zPast4y/oiN7BeHSHAFDNR7nWiyflFk4Gad48t0e/Xj+A6PzBL2XVM2Cpv+c4PUtgo7v1x3uNolCUy2bIR3PMT+gu0EgpbY7uoleqYY7mUuBx7IN/LNcBnc9NWjYQaWZ9rmFiWdvmHhO0Fa06bbt46zi/lEJ+gpfIH6FnqUfrpaXQ5DNYJ7AwNEAevQnbFbh+uJqr9nwtsBNaJv6OXVEg4YwoDRBZ2BWlGepm2mpkl4BoNaoZzkO7UYs92EiUMpyJOHVClnQITgsJ/jXquyKlG6x7rzm9F4sRwrPG73rtg5bFjxPvpXZnOkVQm1GI+qjIrTc0FC7+xRYICvPM3r4z94EdKPseUMY3F3BrF0Q+EfSxZkmdojQr4D6rlzkE4mNa4qXkYYdV1cqGeWwxDHddrdWl9+anj6KRTcICvc0xVKn2iLgLbrAxDtMYRUExGmS0ixL0fEVz69jjE5vVJnvtM48n0GMSg3nkjJ0nmRStMaekAH4fKn7dizSROXvg6zCZvgUVIs0boD6Tcd0e6ZjbS9bOBi7hdNbwflVxCJOsT+tfi7hQFOCeb1U0M1Cd+5nOccdlYiYqAw3Qj32t4MJ1ddU7FRzAPphIKal0sk4w+TNJxFW1tNXo6CfXZ2i7NGVCOF5H9dUvdtM9ePHRxkWeqD2UekPqO5Kw2vdcNxCikQcrx2VHL09KjF4e7rhN3T5qlEOwVjAP1taBzqTIiomsKOpZuhB+fANe8i772bmRozTuVhJ68q37pMbdIm7oBTP3J4b01wOI3+Vm0v5B1pzpsUdfUJ6jsosL8Fy8LQVKJX8WgfhNhJ5LLYlx7DtZqtXclYgyjdx65TcyWgpYJq7UBug0pnCbWk2Xzklrg/h9Kw4hLdV6ZPIw6r7b6Fp4dTQozr5H7WVh+JXcWU8msMLuu9oNwnqb/zHGo4wuTX8GsTqfPB+t1uJZNS6g2/y+13iPW87mku2g2vjr3RO8Fbn3KEAp/RTl27LMIcqRu9fyzCX0M3D6swPbAhc5nQLMVbmYSS3oRtYvKHWQQqjI3NwD2TBqJYHDVnoqR9KGtf8Xb23qd15a6T0QWE8m4lEYaFaF2T6hHFUi+2QauoPwQayGfxHN/21FbnRrDRCr42rIZlPJRgf7RNX8TA6gX8gaFumtTf8MOq39cdafhtOsFEhGK71f/arZu71SGD2W0e5KuzD8vk5jeD6rhhdlXm+GCf4Ux+nHmaLJ4wRBCO11O5j2wstOqHnZSLw1tbiNupIOwf4unha4PtI2QEmUJjSKa5kkiYLfXWewG/outI1Dq0nwrKQLTsvy5EbbQkFTVpTOKCy0NpcRbXEQqtoKEmMJki3PsR6lZXZqhvfcIZvNEy8dqKhU4Na03KvnhHNZd6QTyWZwC5aDKPzdZLeOQPS5p3fd2x9Amj6QS+w3tMzy2zZXrvEmpc6nECwFohbe2Sw0HwqtbZ5UtAb9ZAHMejTCzTNNaMjJYtnHcGWVK2dXyy9+bUKJ0Ki9i7SOVqD6WNP2ZqoJaBAaDlFJ3MIHyFjtRFgeMam7MtMyxlM7AgjXXfjZF7AGoY0wQ7HGXyx/hwrT0pt1Vl1ypXIaINorOTn6vgIfsNEa5iu8x6vm81GTHMF6EmmZYs+Q4YAS5IUnIP4wXlIbwvAAbxBoT1iPBPFZCKLd2Ri0MpEcHAKLsg1Zi3jaG7IdC0hzDetrwGe1JNuGa5ptDuuAdkDQ73OQvoQqXE1CwAWfEZzhDen+ujRcazuBrowfd4zA5PRX1OG7bWUsWbMLjCIpTbsIA1YsvihymtfS8AoooOqY74AzFhEsSaMA6iBrVzB2/Oz5YnVrNUUj6oAd+dNB4IZViWX1b5fvoJjY3vbTRdV5z9tIhqkV4VG/dkselVSkAu+uUeea2xiXM+1K8L161+3YFhMZiMS33CZ5Wj6izcrE2AndXaCuk4tmwW2bWINgLEusPKZRIfINUGhT/X10EqLB8AM/KsVgmoDAfkwh1bgYgMOc03td+O17u7cpHtkVem2mWciB8brTP/c+SGNcEu9rXd+AOT6SDqwlr9H2syCknn7+9/qZ0hgwRwPHMuhdH1bZ2P9V781SC3XaX58/NfO/wQYAHBmMSMKDWVuZHN0cmVhbQ1lbmRvYmoNMTggMCBvYmoNPDwvU3VidHlwZS9UeXBlMS9Gb250RGVzY3JpcHRvciAxMSAwIFIvTGFzdENoYXIgMzEvV2lkdGhzWzU1NiA1NTYgNTU2IDU1NiA1NTYgNjEyIDI3OCA3NzggMjIxIDU1NiA0NDQgMzMzIDUwMCAzODggMjc4IDU1NiA0NDQgMzg5IDIyMSAzODggMjc4IDUwMCA0NDQgMzMzIDQ0NCA1NTYgNjEyIDYxMiA0NDQgNDQ0XS9CYXNlRm9udC9ETUZLRUcrUXVvcnVtL0ZpcnN0Q2hhciAyL0VuY29kaW5nIDEyIDAgUi9UeXBlL0ZvbnQ+Pg1lbmRvYmoNMTkgMCBvYmoNPDwvTnVtc1swIDIwIDAgUl0+Pg1lbmRvYmoNMjAgMCBvYmoNPDwvU3QgMzYxL1MvRD4+DWVuZG9iag0yMSAwIG9iag08PC9Db3VudCA1L1R5cGUvUGFnZXMvS2lkc1syNiAwIFIgMSAwIFIgNCAwIFIgNyAwIFIgMTUgMCBSXT4+DWVuZG9iag0yMiAwIG9iag08PC9TdWJ0eXBlL1hNTC9MZW5ndGggMzU4MS9UeXBlL01ldGFkYXRhPj5zdHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMC1jMzE2IDQ0LjI1MzkyMSwgU3VuIE9jdCAwMSAyMDA2IDE3OjA4OjIzIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAgPHBkZjpQcm9kdWNlcj5BY3JvYmF0IERpc3RpbGxlciA4LjEuMCAoTWFjaW50b3NoKTwvcGRmOlByb2R1Y2VyPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgICAgPGRjOmNyZWF0b3I+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPnR1Yml0YWs8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L2RjOmNyZWF0b3I+CiAgICAgICAgIDxkYzp0aXRsZT4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+c2FnLTM5LTMtNC0wOTAyLTIxOnNhZy0wPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA5LTA2LTI2VDA5OjQ1OjA0KzAzOjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5RdWFya1hQcmVzcyA3LjMxPC94YXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4YXA6Q3JlYXRlRGF0ZT4yMDA5LTA2LTI2VDA5OjQ1OjA0KzAzOjAwPC94YXA6Q3JlYXRlRGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhhcE1NOkRvY3VtZW50SUQ+dXVpZDozOGViMGFhMC02M2M5LTBjNGYtYTIzZi1mNTE4NzQ1MzQwODI8L3hhcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6MGZmZjg5YzUtY2JjMy0wYjQyLTlhODItNmE2MGE2M2UyNzA4PC94YXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+DWVuZHN0cmVhbQ1lbmRvYmoNMjMgMCBvYmoNPDwvQ3JlYXRpb25EYXRlKEQ6MjAwOTA2MjYwOTQ1MDQrMDMnMDAnKS9BdXRob3IodHViaXRhaykvQ3JlYXRvcihRdWFya1hQcmVzcyA3LjMxKS9Qcm9kdWNlcihBY3JvYmF0IERpc3RpbGxlciA4LjEuMCBcKE1hY2ludG9zaFwpKS9Nb2REYXRlKEQ6MjAwOTA2MjYwOTQ1MDQrMDMnMDAnKS9UaXRsZShzYWctMzktMy00LTA5MDItMjE6c2FnLTApPj4NZW5kb2JqDXhyZWYNMCAyNA0wMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwNTc0MjIgMDAwMDAgbg0KMDAwMDA1NzU0OSAwMDAwMCBuDQowMDAwMDU3NjczIDAwMDAwIG4NCjAwMDAwNjA2NjIgMDAwMDAgbg0KMDAwMDA2MDc4OSAwMDAwMCBuDQowMDAwMDYwOTEzIDAwMDAwIG4NCjAwMDAwNjM4MDMgMDAwMDAgbg0KMDAwMDA2MzkzMCAwMDAwMCBuDQowMDAwMDY0MDY2IDAwMDAwIG4NCjAwMDAwNjcyMTUgMDAwMDAgbg0KMDAwMDA3MTcxMiAwMDAwMCBuDQowMDAwMDcyMDU0IDAwMDAwIG4NCjAwMDAwNzIyNjcgMDAwMDAgbg0KMDAwMDA3MjM0NCAwMDAwMCBuDQowMDAwMDcyNDE5IDAwMDAwIG4NCjAwMDAwNzI1NDkgMDAwMDAgbg0KMDAwMDA3MjY1NCAwMDAwMCBuDQowMDAwMDc2MTQ2IDAwMDAwIG4NCjAwMDAwNzY0MDQgMDAwMDAgbg0KMDAwMDA3NjQ0MCAwMDAwMCBuDQowMDAwMDc2NDcyIDAwMDAwIG4NCjAwMDAwNzY1NTAgMDAwMDAgbg0KMDAwMDA4MDIwOCAwMDAwMCBuDQp0cmFpbGVyDTw8L1NpemUgMjQ+Pg1zdGFydHhyZWYNMTE2DSUlRU9GDQ==", + "directory": "/tmp", + "fileName": "04-valid.pdf", + "fileSize": "81 kB" + } + }, + "json": { + "numpages": 5, + "numrender": 5, + "info": { + "object": true + }, + "metadata": { + "object": true + }, + "text": "Turk J Med Sci\n2009; 39 (3): 361-365\n© TÜBİTAK\nE-mail: medsci@tubitak.gov.tr\ndoi:10.3906/sag-0902-21\n361\nORIGINAL ARTICLE\nAcute effect of speed exercise on nitric oxide (NO)\nlevel of footballers\nAim: Exercise is one of the low-cost and easiest ways for improving life standards and physical\nfitness, and reducing body stress. Nitric oxide (NO) is defined as the “surprising soldier mediator”\nof biological systems. NO is one of the relaxation factors coming from the vascular endothelium.\nThis relaxation in smooth muscles leads to vasodilatation in veins. The purpose of this study is to\nevaluate the acute effect of 20-meter sprints of footballers on NO levels.\nMaterials and Methods: 22 footballers with an age range of 18–32 were voluntarily enrolled in the\nstudy. The heights and weights of the subjects were measured. Speed measures were taken with a\nphotocell system. The 20-meter sprint was repeated for 10 times. Blood samples were taken before\nand immediately after the sprint. For statistical analysis paired t test was used.\nResults: The mean age, height, and weight of the footballers included in the study were 24.21 ±\n3.41 years, 173 ± 7.04 cm, and 67.85 ± 5.17 kg, respectively. The mean NO values were 21.45 ± 2.08\nimmediately after the exercise and 25.59 ± 1.59 before the exercise (mean ± SD). This decrease in\nthe NO level after the exercise, compared to before, were not statistically meaningful (P = 0.052).\nConclusions: The fact that the exercise was short-term yet with maximal load and negative\ndevelopments occurred within the body may have highlighted the oxidative damage. The NO\ndefence used against this damage may have decreased the values.\nKey Words: Nitric oxide, speed exercise, footballer\nFutbolcularda sürat egzersizinin nitrik oksit (NO)\ndüzeyi üzerine akut etkisi\nAmaç: Egzersiz, insanları stresten uzaklaştıran, hayat standartlarını yükselten ve fiziksel\nuygunluğu iyi duruma getirmek için kullanılan en ucuz ve kolay yoldur. Nitrik oksit (NO)\nbiyolojik sistemlerin “şaşırtıcı asker aracısı” olarak tanımlanır. NO vasküler endotelyumdan çıkan\ndinlenme faktörüdür. Bu düz kaslardaki relaks damarlarla vasodilatasyona neden olur. Bu\nçalışmanın amacı; futbolcularda 20 metrelik sürat koşularının NO düzeylerine akut etkisini\naraştırmaktır.\nGereç ve Yöntem: Araştırmaya yaşları 18-32 yaş arasında değişen 22 futbolcu gönüllü olarak\nkatıldı. Deneklerin boy ve beden ağırlık ölçümleri alındı. Sürat ölçümleri fotosel ile yapıldı. 20\nmetrelik sürat koşusu 10 kez tekrar ettirildi. Sürat egzersizi öncesi ve hemen sonrası kan örnekleri\nalındı. İstatistiksel analiz için paired t testi kullanıldı.\nBulgular: Çalışmaya dahil edilen futbolcuların yaşları 24,21 ± 3,41 yıl, boyları 173 ± 7,04 cm. ve\nbeden ağırlığı 67,85 ± 5,17 kg. olarak belirlendi. Sürat egzersizi öncesi NO değerleri 25,59 ±\n1,59’ iken, egzersiz hemen sonrası 21,45 ± 2,08 olarak bulundu (A.O ± SS). Egzersizden hemen\nsonrasındaki NO düzeyindeki bu düşüş istatistiksel olarak anlamlı değildi (P = 0,052).\nSonuç: Egzersizin kısa süreli ancak maksimal yüklenmeli olması, vücutta meydana gelen negatif\ngelişmeler oksidatif hasarı öne çıkarmış olabilir. Bu hasara karşı kullanılan NO savunması,\ndeğerleri aşağıya düşürmüş olabilir.\nAnahtar Sözcükler: Nitrik oksit (NO), sürat egzersizi, futbolcu\nÖzcan SAYGIN\nThe School of Physical\nEducation and Sports,\nMuğla University,\nMuğla - TURKEY\nReceived: February 25, 2009\nAccepted: April 30, 2009\nCorrespondence\nÖzcan SAYGIN\nThe School of Physical\nEducation and Sports,\nMuğla University,\nMuğla - TURKEY\nosaygin@mu.edu.tr\n\nIntroduction\nUntil 15-20 years ago, NO was thought to be\nmerely the exhaust gas of automobiles, an\natmospheric gas found in cigarettes, and an agent\npolluting the atmosphere. It has been articulated in\nprevious studies that NO, which has been qualified\nas a harmful molecule since it is a free radical due to\nthe unpaired electron it bore, is actually an\nimportant molecule that balances the blood pressure\nand vasodilatation (1,2).\nNO causes vasodilatation in veins and accelerates\nblood flow. NO, which regulates the blood\ncirculation, also keeps the veins clean. The vein\nnetwork rich in NO is slippery like Teflon and allows\nfor the flow of plaques preventing the enlargement\nof clots, whereas the unhealthy vein, or the vein poor\nin NO, leads to collection of plaques in the adhesive\ninner surface of the vein (3,4).\nNO radical prevents the excessive accumulation\nof free radicals in tissues by reacting with other free\nradicals (5,6). Whereas other free oxygen radicals\nare harmful in every concentration, NO plays a role\nin regulating a range of physiological events, such as\ndigestion system, host defence and non-specific\nimmunity. However, when generated\ninappropriately and excessively, it causes a lot of\npathological conditions (7).\nSport generally has significant features like speed,\nstrength, endurance, and flexibility. Speed is the\nability to carry oneself from one point to another in\nthe shortest time possible (8).\nIn sports trainings, the organism is exposed to\nloads which are over daily life levels. In exercise, it is\nblood that provides the metabolic and O\n2 \nneeds of\nthe tissues. Blood pressure is the force that enables\nthe blood flow. Blood pressure is the pressure that\nexerts the blood on the vein walls (9).\nThe benefits of exercising have been proven\nplenty of times. However, negative changes can also\nbe expected in connection with the short-term and\nextreme changes that exercise may cause in the\nhuman body. However, exercise, if performed\nregularly and efficiently, helps strengthen the\ncardiovascular, hormonal, and immune system, and\nincrease the muscle mass.\nThis study was conducted to analyze the acute\neffect of speed exercise on NO levels of footballers.\nMaterials and Methods\nSelection of the Subjects\nTwenty-two active, healthy footballers, with an\nage range of 18-32, free of obvious health problems\nand medications were enrolled into this study. In the\nstudy, the necessary explanations were provided to\nthe subjects and their consents were obtained.\nMethod of the Study\nThe subjects carried out the test after a 20-min\nwarm-up, 15 min of which was dedicated to general\nand 5 min to specific warm-up. The test comprised\n10 sprints of 20 m. The subjects started the sprint\nwithout a start order, but when they felt ready and\ncompleted it in maximum speed. Blood measures\nwere taken twice, before and immediately after the\nsprint.\nInstruments\nHeight and Weight Measure\nThe heights of the subjects were measured\nwithout shoes, with a stadiometer (Holtain, UK) in\ncm; and they were weighed in shorts with an\nelectronic scale (Seca, Germany) in kg.\nSpeed Measure\nThe speed was measured in a gym on a smooth\nand synthetic floor. The time between the start and\nfinish points were measured with a 0.01 s sensitive\nphotocell system (New Test 2000, Finland). Cones\nwere used in order to specify the sprint field.\nBlood Measures\nBlood samples were drown from antecubital vein\nusing the heparinised tubes. The samples were taken\nbefore and immediately after the loading. The\nelements were precipitated by centrifuge for 5 min at\n3500 rpm; the plasma part at the top was taken into\nEppendorf tubes and kept at -80 °C until analysis.\nNitrite determination\nNitrite was measured using the Griess reaction\n(10). Briefly, plasma samples were diluted 4-fold\nwith distilled water and deproteinized by adding\nl/20th volume of zinc sulfate (300 g/l) to give a final\nTurk J Med SciEffect of speed exercise on NO in footballers\nSAYGIN, Ö\n362\n\nconcentration of 15 g/l. After centrifugation at\n10,000×g for 5 min at room temperature (or 1000×g\nfor 15 min), 100 μl of supernate was applied to a\nmicrotiter plate well, followed by 100/μl of Griess\nreagent (1 g/l sulfanilamide, 25 g/l phosphoric acid,\nand 0.1 g/l N-1-naphthylethylenediamine). After 10\nmin of colour development at room temperature,\nthe absorbance was measured on a microplate\nreader (Tiertek Multiskan MCC/340; Flow Lab,\nMcLean, VA) at a wavelength of 540 nm. Each\nsample was assayed in duplicate wells. Background\nvalues were obtained by treating samples as\ndescribed but by using 25 g/l phosphoric acid\ninstead of complete Griesa reagent. Calibration\ncurves were genereated with sodium nitrite and\npotassium nitrate in distilled water (linear range 0-\n100 μmol/l). The detection limit of the assay is ~1.5\nμmol/l in distilled water. There was no difference\nbetween the spectrum of authentic nitrite in distilled\nwater and the spectra of negative plasma samples\nsupplemented with exogenous nitrite or the spectra\nof positive plasma samples. In all these specimens,\nmaximal absorbance occurred at 540 nm (data not\nshown). The molar absorptivity of the coloured\nproduct was 39,500 l mol\n-1 \ncm\n-1\nNitrate determination\nNitrate was measured as nitrite after enzymatic\nconversion by nitrate reductase (EC 1.6.6.2) as\ndescribed by Schmidt et al. (11). Briefly, 100 μl of\nplasma was diluted 4-fold with distilled water.\nNADPH, FAD, and nitrate reductase from\nAspergillus spp. (Boehringer Mannheim,\nMannheim, Germany) were added to yield final\nconcentrations of 50 μmol/, 5 μmol/l, and 200 U/l,\nrespectively.\nSamples were further incubated for 5 min at 37\n°C to oxidize NADPH [which interferes with the\nassay] (11), deproteinized, and assayed with Griess\nreagent as described above. Values obtained by this\nprocedure represent the sum of nitrite and nitrate.\nNitrate concentrations were obtained by subtracting\nnitrite concentrations from the total nitrate + nitrite\nconcentrations.\nStatistical Analysis\nSPSS 16.0 statistics program was used in\nanalysing the data obtained. The arithmetic mean\nand standard deviation of all the variants of the\nfootballers included in the study were calculated.\nPaired samples t-test was used to compare the NO\nvalues taken before and immediately after the speed\nexercise. The difference was assumed significant if\nthe p value was below 0.05.\nResults\nThe demographic results of the group were\nsummarized in Tables 1 and 2. NO values were\nfound to be 21.45 ± 2.08 immediately after the\nexercise whereas they were 25.59 ± 1.59 before the\nexercise. This decrease immediately after the\nexercise, in comparison with before, was not a\nstatistically significant (P = 0.052, Figure 1).\nTable 1. Age (years), height (cm) and weight (kg) of footballers.\nArithmetic Mean Standard Deviation Minimum Maximum\nAge (years) 24.21 3.41 18.00 32.00\nHeight (cm) 173.2 7.04 162 185\nWeight (kg) 67.85 5.17 62.32 77.67\nTable 2. Serum NO (U/Ml) levels of footballers before speed exercise and immediately after speed exercise.\nArithmetic Mean Standard Deviation t p\nSERUM Before Exercise 25.59 1.59 1.980 .052\nNO U/ml Immediately After Exercise 21.45 2.08\nJune 2009Effect of speed exercise on NO in footballers\nNo: 3Vol: 39\n363\n\nTurk J Med SciEffect of speed exercise on NO in footballers\nSAYGIN, Ö\n364\nDiscussion\nRecent studies show that exercise has different\neffects on NO level. Presumed reasons for those\ndifferences are the type, duration, and degree of\nexercise. Particularly acute and heavy exercises can\ntrigger oxidative damage (12). The proportions of\noxidants and antioxidants to emerge during the\nexercise vary according to the degree of exercise.\nWhile damaging oxidant system is more activated\nduring heavy and rigorous exercises, regular and\nshort-term sport activities that are not maximal\nactivate the antioxidant systems better (13).\nThere are various basic sources of oxidant\nproducts, such as NO products, oxygen radicals\nformed through purine metabolism, and\nprostaglandin. NO products, like peroxinitrites, can\ncontribute to oxidative damage (14). NO, thus, can\ncontribute to cell damage in many cells.\nXia and colleagues studied the effect of different\ndegrees of exercise on NO level and they showed\nthat there was no significant change in NO in low\nand mild level exercises, whereas there was an\nincrease in NO concentration in high level exercises\n(15). In contrast to that study, we noted that there\nwas a 5 U/ml decrease in NO levels after the exercise\nin comparison with those before the exercise. This\ncan be attributed to a set of factors. One of them is\nthe contribution of NO to antioxidant defence in the\nfight with free radicals occurring in acute exercises\nof maximal level (16).\nYamamato et al. state that there is no meaningful\ndifference between the plasma and serum NO levels\nbefore and immediately after exercise for aerobic\ntype physical exercise (17).\nIn another study, Keçetepen and Dursun found a\ndecrease in NO values immediately after exercise in\na study where sportsmen, who do sports regularly,\nperform exercise for 2 min consecutively at 30, 40,\n50 km/h against 100 W power, and then at\nmaximum speed, using a bicycle ergometer (18).\nRadak et al. also state that muscular damage can\noccur in connection with the increase in NO \nX\nproduction in skeletal muscles during eccentric\ncontraction (19). Cuzzolin et al. state in the study\nthey carried out on 6 active and 6 sedentary subjects\nthat acute exercise can lead to NO\nX \nformation (20).\nIn another study, a decrease was observed in\nnitric oxide synthesis inhibition and active blood\nflow after the dynamic knee-extensor exercise. In the\nsame study, NO inhibition was greater in heavy\nexercise when compared with low level exercise (21).\nAnother study concludes that NO is not essential\nfor the good performance of skeleton muscles in\nhealthy humans (22).\nJungestern et al. compared long-distance runners\nand students who do not exercise regularly and\ncame up with a meaningful difference in NO levels\nof long distance runners after exercise in\ncomparison with those before exercise.\nFurthermore, there was a meaningful increase in\nNO levels of students who do not exercise regularly\nafter exercise in comparison with before (23).\nIn our study, the NO levels may have been found\nto be low for that moment since the blood samples\nwere taken immediately after maximal loading. As a\nresult of the increase in radicals during heavy\nexercise, it is possible for some of the NO to be\ndirected to radicals. However, different results could\nhave been obtained if blood samples had been taken\nat regular intervals after exercise.\nThe fact that the exercise was short-term yet with\nmaximal load and the negative developments that\noccurred within the body may have highlighted the\noxidative damage. The NO defence used against this\ndamage may have decreased the values.\n\u0002\u0003\n\u0004\u0005\n\u0004\u0003\n\u0006\u0005\n\u0006\u0003\n\u0005\n\u0003\n\u0007\b\n\u000e\u000f \u0010\u0011\u0012 \u000f\u0013\u0014\u0015\n\u0016 \u0017\u0014\u0018\u0019 \u001a\u0010\u001b \u0019 \u000f\u0010\u0011\u0012 \u000f\u0013\u0014\u0015\n\u001c\u001d\u0010\u001e \u001f\nFigure 1. Average serum NO (U/ml) Levels of footballers before\nand immediately after speed exercise.\n\nReferences\n1. Palmer RMJ, Ferrige AG, Moncada S. Nitric Oxide release\naccounts for the biological activity of endothelium-derived\nrelaxing factor. Nature, 1993; 327; 524-6.\n2. Tüzün, M. Obezite: Tanım, Sıklık, Sınıflandırma Tipleri,\nDereceleri ve Komplikasyonları. Obezite, Nobel Tıp Kitap\nevleri Limited Şirketi, 1995; 1-20.\n3. Kuyumcu A, Düzgün AP, Özmen MM, Besler HT, Travma ve\nEnfeksiyonda Nitrik Oksidin Rolü. Ulus Travma Dergisi.\n2004; 10(3): 149-159.\n4. Louis J., Ignarro (çeviri) Öztürk Ö. NO ile kalp hastalıklarına\nson, Ozbay Yayıncılık İstanbul 2007.\n5. Kurtuluş H, Eskiocak S Tütüncüler F, Başaran Ü.N, Gülen Ş.\nDeneysel Sitemik Hipoksi Geliştirilmiş Yeni Doğan ratlarda\nN-Asetisistein uygulamsının etkileri. Turk J. Of biochem.\n2003; 28(2):40-44.\n6. Matthew BG, Jourdheuıl D, Wink DA. Nitric Oxide I.\nPhysiologicalchemistry of Nitric Oxide and its metabolites:\nimplications ininflammation. Am. J. Physiol. 1999; Vol. 276,\nIssue 2, 315-321.\n7. Aladağ A.M, Turköz, Y., Özerol H.İ, Nitrik oksit ve\nNörofizyopatolojik Etkileri. Türkiye Klinikleri J Med Sci.\n2000; 20.107-111.\n8. Sevim Y. Antrenman Bilgisi. Nobel Yayın Dağıtım, Ankara,\n2007.\n9. Günay M., Tamer K., Cicioğlu İ. Spor Fizyolojisi ve\nPerformans Ölçümü, Gazi Kitapevi, Ankara 2006.\n10. Green LC, Wagner DA, Glogowski J, Skipper PL, Wishnok JS,\nTannenbaum SR. Analysis of nitrate, nitrite and [‘5N]nitrate\nin biological fluids. Anal Biochem 1982;126:131-8.\n11. Schmidt HHHW, Warner TD, Nakane M, Forstermann U,\nMurad F. Regulation and subcellular location of nitrogen\noxide synthases in RAW264.7 macrophages. Mol Pharmacol\n1992;41: 615-24.\n12. Dinçer C, Kayserilioğlu A. Egzersizde oluşan lipit\nperoksidasyonu ve E vitamninin koruyucu etkisi. Spor ve Tıp\n1995; 7:20-23.\n13. Duncan K, Harris S, Ardies CM: Running exercise may reduce\nrisk for lung and liver cancer by including activity of\nantioxidant and phase II enzymes. Cancer Lett 1997; 116;151-\n158.\n14. Moncada S, Higgs A, Furchgott R: XIV. International Union\nof Pharmacology Nomencaluture in Nitric Oxide Research.\nPharmacol Rev 1997; 49(2);137-141.\n15. Xia Y, Dawson VL, Dawson TM, Synder SH, Zureier JL: Nitric\nOxide Synthase Generates Superoxide and Nitric Oxide in\nArgininedepletet Cells leading to Proxynitrit-mediated\nCellular Injury. Proc Natl Acad Sci 1996; 93: 6770-6774.\n16. Traverse JH, Wank YL, Ruısheng D, Nelson D, Lindstorm P,\nArcher LS, Gong G, Bache JR. Coranary no production in\nresponse to exercise and entothelium dependent agaonis\nCiculationt 2000; 101: 2526-2531.\n17. Yamamoto K., Kondo T, Kimata A, Ueyama J, Shirotori A,\nOkada Y, Sakui D, Hakashlima M, and Yamada S.: Lack Of\nEffect of Aerobic Physical Exercise on Endothelium-Derived\nNitric Oxide Concentrations in Healthy Young Subjects,\nNagoya J Med Sci 2007; 69, 167-172.\n18. Keçetepen L O., Dursun N, Effects of Exercise on Plasma\nLeptin Concentrations and Relation of Leptin to Respiratory,\nCardiovascular Parameters, Sağlık Bilimleri Dergisi (Journal\nOf Health Sciences), 2006; 15 (1) 1-7.\n19. Radak Z, Pucsok S, Mecseki T, Ferdinandy P. Muscle\nSorenesinduced reduction in force generation is\naccomppanied by increased nitric oxide content and DNA\ndamage in skeletal muscle. Free rad. Biol. Med. 1999; 26:1059-\n1063.\n20. Cuzzolın L. Lussıgnolı S. Crıvellente F. Adamı A. Schena F.\nBellavıte P. Brocco G. Benonı G. Influence of an acuteexercise\nonneutrophil and platelet adhesion, nitric oxide plasma\nmetabolites in inactive and active subjects. Int J Sports Med.\n2000; 21(4): 289-93.\n21. Christopher K, Dyke, David N. Proctor, Niki M. Dietz and\nMichael. Joyner. Role of nitric oxide in exercise hyperaemia\nduring prolonged rhythmic handgripping in humans. Journel\nof Physiol. 1995; 259-265.\n22. Frank A, Dinenno, Micheal J Joyner. Blunte sympathhetic\nvasoconstriction in contracting skeletal muscle of healthy\nhumans: is nitric oxide obligatory. J physiology 2003; 553,\n281-292.\n23. Jungersten L, Ambring A, Wall B and Wennmalm A. Both\nphysical fitness and acute exercise regulate nitric oxide\nformation in healthy humans. J Appl Physiol. 1997; 82: 760-\n764.\nJune 2009Effect of speed exercise on NO in footballers\nNo: 3Vol: 39\n365", + "version": "2.16.105" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Read PDF" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-01-28T15:29:03.061Z", + "stoppedAt": "2025-01-28T15:29:03.400Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/105-snapshot.json b/test-workflows/snapshots/105-snapshot.json new file mode 100644 index 0000000000..21a74d2915 --- /dev/null +++ b/test-workflows/snapshots/105-snapshot.json @@ -0,0 +1,191 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994464, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343994464, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "binary": { + "data": { + "data": "VGVzdCBXcml0ZSBCaW5hcnkgRmlsZSBub2Rl", + "fileExtension": "txt", + "fileName": "file.txt" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Write Binary File": [ + { + "startTime": 1747343994467, + "executionIndex": 2, + "source": [ + { + "previousNode": "Function" + } + ], + "hints": [], + "executionTime": 74, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileName": "/tmp/test_write_binary_file.txt" + }, + "pairedItem": { + "item": 0 + }, + "binary": { + "data": { + "data": "VGVzdCBXcml0ZSBCaW5hcnkgRmlsZSBub2Rl", + "fileExtension": "txt", + "fileName": "file.txt" + } + } + } + ] + ] + } + } + ], + "Read Binary File": [ + { + "startTime": 1747343994541, + "executionIndex": 3, + "source": [ + { + "previousNode": "Write Binary File" + } + ], + "hints": [], + "executionTime": 18, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileName": "/tmp/test_write_binary_file.txt" + }, + "binary": { + "data": { + "mimeType": "text/plain", + "fileType": "text", + "fileExtension": "txt", + "data": "VGVzdCBXcml0ZSBCaW5hcnkgRmlsZSBub2Rl", + "directory": "/tmp", + "fileName": "test_write_binary_file.txt", + "fileSize": "27 B" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function1": [ + { + "startTime": 1747343994559, + "executionIndex": 4, + "source": [ + { + "previousNode": "Read Binary File" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileName": "/tmp/test_write_binary_file.txt" + }, + "binary": { + "data": { + "mimeType": "text/plain", + "fileType": "text", + "fileExtension": "txt", + "data": "VGVzdCBXcml0ZSBCaW5hcnkgRmlsZSBub2Rl", + "directory": "/tmp", + "fileName": "test_write_binary_file.txt", + "fileSize": "27 B" + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.464Z", + "stoppedAt": "2025-05-15T21:19:54.560Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/107-snapshot.json b/test-workflows/snapshots/107-snapshot.json new file mode 100644 index 0000000000..53baf6e7db --- /dev/null +++ b/test-workflows/snapshots/107-snapshot.json @@ -0,0 +1,63 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994481, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Read Binary Files": [ + { + "startTime": 1747343994481, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 54, + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "Read Binary Files" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.481Z", + "stoppedAt": "2025-05-15T21:19:54.535Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/108-snapshot.json b/test-workflows/snapshots/108-snapshot.json new file mode 100644 index 0000000000..a5d205582b --- /dev/null +++ b/test-workflows/snapshots/108-snapshot.json @@ -0,0 +1,1363 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994502, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1747343994502, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "value1": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1747343994502, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "value2": 5 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set2": [ + { + "startTime": 1747343994502, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set3": [ + { + "startTime": 1747343994503, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop2": 2, + "prop4": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set7": [ + { + "startTime": 1747343994503, + "executionIndex": 5, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set6": [ + { + "startTime": 1747343994503, + "executionIndex": 6, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop2": 2, + "prop3": -2, + "prop4": -3 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set9": [ + { + "startTime": 1747343994503, + "executionIndex": 7, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set8": [ + { + "startTime": 1747343994503, + "executionIndex": 8, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop3": 2, + "prop4": -4 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set11": [ + { + "startTime": 1747343994503, + "executionIndex": 9, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set10": [ + { + "startTime": 1747343994503, + "executionIndex": 10, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop3": 2, + "prop4": -4 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set13": [ + { + "startTime": 1747343994503, + "executionIndex": 11, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set12": [ + { + "startTime": 1747343994503, + "executionIndex": 12, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop3": 2, + "prop4": -4 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function11": [ + { + "startTime": 1747343994503, + "executionIndex": 13, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Input1item1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "title": "Input1item2" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "title": "Input1item3" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function12": [ + { + "startTime": 1747343994504, + "executionIndex": 14, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Input2item1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "title": "Input2item2" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "title": "Input2item3" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "title": "Input2item4" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge": [ + { + "startTime": 1747343994506, + "executionIndex": 15, + "source": [ + { + "previousNode": "Set" + }, + { + "previousNode": "Set1" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "value1": true + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "value2": 5 + }, + "pairedItem": { + "item": 0, + "input": 1 + } + } + ] + ] + } + } + ], + "Merge1": [ + { + "startTime": 1747343994506, + "executionIndex": 16, + "source": [ + { + "previousNode": "Set2" + }, + { + "previousNode": "Set3" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge5": [ + { + "startTime": 1747343994506, + "executionIndex": 17, + "source": [ + { + "previousNode": "Set7" + }, + { + "previousNode": "Set6" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge6": [ + { + "startTime": 1747343994506, + "executionIndex": 18, + "source": [ + { + "previousNode": "Set7" + }, + { + "previousNode": "Set6" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge7": [ + { + "startTime": 1747343994506, + "executionIndex": 19, + "source": [ + { + "previousNode": "Set7" + }, + { + "previousNode": "Set6" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge8": [ + { + "startTime": 1747343994506, + "executionIndex": 20, + "source": [ + { + "previousNode": "Set9" + }, + { + "previousNode": "Set8" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1, + "prop3": 2, + "prop4": -4 + }, + "pairedItem": [ + { + "item": 0 + }, + { + "item": 0, + "input": 1 + } + ] + } + ] + ] + } + } + ], + "Merge9": [ + { + "startTime": 1747343994506, + "executionIndex": 21, + "source": [ + { + "previousNode": "Set11" + }, + { + "previousNode": "Set10" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge10": [ + { + "startTime": 1747343994506, + "executionIndex": 22, + "source": [ + { + "previousNode": "Set13" + }, + { + "previousNode": "Set12" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge3": [ + { + "startTime": 1747343994506, + "executionIndex": 23, + "source": [ + { + "previousNode": "Function11" + }, + { + "previousNode": "Function12" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Input2item1" + }, + "pairedItem": [ + { + "item": 0 + }, + { + "item": 0, + "input": 1 + } + ] + }, + { + "json": { + "title": "Input2item2" + }, + "pairedItem": [ + { + "item": 1 + }, + { + "item": 1, + "input": 1 + } + ] + }, + { + "json": { + "title": "Input2item3" + }, + "pairedItem": [ + { + "item": 2 + }, + { + "item": 2, + "input": 1 + } + ] + } + ] + ] + } + } + ], + "Merge2": [ + { + "startTime": 1747343994507, + "executionIndex": 24, + "source": [ + { + "previousNode": "Function11" + }, + { + "previousNode": "Function12" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Input2item1" + }, + "pairedItem": [ + { + "item": 0 + }, + { + "item": 0, + "input": 1 + } + ] + }, + { + "json": { + "title": "Input2item2" + }, + "pairedItem": [ + { + "item": 1 + }, + { + "item": 1, + "input": 1 + } + ] + }, + { + "json": { + "title": "Input2item3" + }, + "pairedItem": [ + { + "item": 2 + }, + { + "item": 2, + "input": 1 + } + ] + } + ] + ] + } + } + ], + "Merge4": [ + { + "startTime": 1747343994507, + "executionIndex": 25, + "source": [ + { + "previousNode": "Function11" + }, + { + "previousNode": "Function12" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Input2item1" + }, + "pairedItem": [ + { + "item": 0 + }, + { + "item": 0, + "input": 1 + } + ] + }, + { + "json": { + "title": "Input2item2" + }, + "pairedItem": [ + { + "item": 1 + }, + { + "item": 1, + "input": 1 + } + ] + }, + { + "json": { + "title": "Input2item3" + }, + "pairedItem": [ + { + "item": 2 + }, + { + "item": 2, + "input": 1 + } + ] + }, + { + "json": { + "title": "Input2item4" + }, + "pairedItem": { + "item": 3, + "input": 1 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343994507, + "executionIndex": 26, + "source": [ + { + "previousNode": "Merge" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "value1": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + }, + { + "json": { + "value2": 5 + }, + "pairedItem": { + "item": 1 + }, + "index": 1 + } + ] + ] + } + } + ], + "Function1": [ + { + "startTime": 1747343994509, + "executionIndex": 27, + "source": [ + { + "previousNode": "Merge1" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Function5": [ + { + "startTime": 1747343994510, + "executionIndex": 28, + "source": [ + { + "previousNode": "Merge5" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Function6": [ + { + "startTime": 1747343994511, + "executionIndex": 29, + "source": [ + { + "previousNode": "Merge6" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Function7": [ + { + "startTime": 1747343994512, + "executionIndex": 30, + "source": [ + { + "previousNode": "Merge7" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop3": -1 + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Function8": [ + { + "startTime": 1747343994513, + "executionIndex": 31, + "source": [ + { + "previousNode": "Merge8" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1, + "prop3": 2, + "prop4": -4 + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Function9": [ + { + "startTime": 1747343994514, + "executionIndex": 32, + "source": [ + { + "previousNode": "Merge9" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1 + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Function10": [ + { + "startTime": 1747343994515, + "executionIndex": 33, + "source": [ + { + "previousNode": "Merge10" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "prop1": 1, + "prop2": -1 + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Function3": [ + { + "startTime": 1747343994516, + "executionIndex": 34, + "source": [ + { + "previousNode": "Merge3" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Input2item1" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + }, + { + "json": { + "title": "Input2item2" + }, + "pairedItem": { + "item": 1 + }, + "index": 1 + }, + { + "json": { + "title": "Input2item3" + }, + "pairedItem": { + "item": 2 + }, + "index": 2 + } + ] + ] + } + } + ], + "Function2": [ + { + "startTime": 1747343994517, + "executionIndex": 35, + "source": [ + { + "previousNode": "Merge2" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Input2item1" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + }, + { + "json": { + "title": "Input2item2" + }, + "pairedItem": { + "item": 1 + }, + "index": 1 + }, + { + "json": { + "title": "Input2item3" + }, + "pairedItem": { + "item": 2 + }, + "index": 2 + } + ] + ] + } + } + ], + "Function4": [ + { + "startTime": 1747343994518, + "executionIndex": 36, + "source": [ + { + "previousNode": "Merge4" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Input2item1" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + }, + { + "json": { + "title": "Input2item2" + }, + "pairedItem": { + "item": 1 + }, + "index": 1 + }, + { + "json": { + "title": "Input2item3" + }, + "pairedItem": { + "item": 2 + }, + "index": 2 + }, + { + "json": { + "title": "Input2item4" + }, + "pairedItem": { + "item": 3 + }, + "index": 3 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.502Z", + "stoppedAt": "2025-05-15T21:19:54.519Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/109-snapshot.json b/test-workflows/snapshots/109-snapshot.json new file mode 100644 index 0000000000..d5636a7ce8 --- /dev/null +++ b/test-workflows/snapshots/109-snapshot.json @@ -0,0 +1,423 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343895845, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo": [ + { + "startTime": 1747343895845, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 391, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1, + "deduplicate_id": "1:1621034971", + "name": "Onboarding Campaign", + "type": "segment", + "created": 1614868557, + "updated": 1621034971, + "active": false, + "state": "draft", + "actions": [ + "json array" + ], + "first_started": 0, + "created_by": "nodeqa@n8n.io", + "tags": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo3": [ + { + "startTime": 1747343896236, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 184, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "customer1747343896241", + "email": "fakeemail1747343896244@gmail.com" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo1": [ + { + "startTime": 1747343896420, + "executionIndex": 3, + "source": [ + { + "previousNode": "CustomerIo" + } + ], + "hints": [], + "executionTime": 393, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "series": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo5": [ + { + "startTime": 1747343896813, + "executionIndex": 4, + "source": [ + { + "previousNode": "CustomerIo3" + } + ], + "hints": [], + "executionTime": 173, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo7": [ + { + "startTime": 1747343896986, + "executionIndex": 5, + "source": [ + { + "previousNode": "CustomerIo3" + } + ], + "hints": [], + "executionTime": 167, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo2": [ + { + "startTime": 1747343897153, + "executionIndex": 6, + "source": [ + { + "previousNode": "CustomerIo1" + } + ], + "hints": [], + "executionTime": 365, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1, + "deduplicate_id": "1:1621034971", + "name": "Onboarding Campaign", + "type": "segment", + "created": 1614868557, + "updated": 1621034971, + "active": false, + "state": "draft", + "actions": [ + "json array" + ], + "first_started": 0, + "tags": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 2, + "deduplicate_id": "2:1621034971", + "name": "Re-engage Inactive Users", + "type": "segment", + "created": 1614868557, + "updated": 1621034971, + "active": false, + "state": "draft", + "actions": [ + "json array" + ], + "first_started": 0, + "tags": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 4, + "deduplicate_id": "4:1646029232", + "name": "Order Confirmation", + "type": "event", + "created": 1614868557, + "updated": 1646029232, + "active": false, + "state": "draft", + "actions": [ + "json array" + ], + "first_started": 0, + "tags": [ + "json array" + ], + "event_name": "purchase" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 5, + "deduplicate_id": "5:1646029232", + "name": "Anniversary Campaign", + "type": "date", + "created": 1614868557, + "updated": 1646029232, + "active": false, + "state": "draft", + "actions": [ + "json array" + ], + "first_started": 0, + "tags": [ + "json array" + ], + "frequency": "yearly", + "date_attribute": "created_at", + "timezone": "US/Eastern", + "use_customer_timezone": false, + "start_hour": 10, + "start_minutes": 0 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 7, + "deduplicate_id": "7:1657207430", + "name": "test cmpg", + "type": "segment", + "created": 1657207358, + "updated": 1657207430, + "active": false, + "state": "draft", + "actions": [ + "json array" + ], + "first_started": 0, + "tags": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo6": [ + { + "startTime": 1747343897518, + "executionIndex": 7, + "source": [ + { + "previousNode": "CustomerIo5" + } + ], + "hints": [], + "executionTime": 166, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo8": [ + { + "startTime": 1747343897684, + "executionIndex": 8, + "source": [ + { + "previousNode": "CustomerIo7" + } + ], + "hints": [], + "executionTime": 178, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CustomerIo4": [ + { + "startTime": 1747343897862, + "executionIndex": 9, + "source": [ + { + "previousNode": "CustomerIo8" + } + ], + "hints": [], + "executionTime": 168, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "CustomerIo4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:18:15.844Z", + "stoppedAt": "2025-05-15T21:18:18.030Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/11-snapshot.json b/test-workflows/snapshots/11-snapshot.json new file mode 100644 index 0000000000..07206f8aed --- /dev/null +++ b/test-workflows/snapshots/11-snapshot.json @@ -0,0 +1,642 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994528, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp1": [ + { + "startTime": 1747343994528, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 2401, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "c81277605b129fdafaacede5ae34e07c", + "email_address": "nodeqa@n8n.io", + "unique_email_id": "cb7624ba4b", + "contact_id": "2f4ff7f445018adb50969f99df88dd9e", + "full_name": "node qa", + "web_id": 502612022, + "email_type": "html", + "status": "subscribed", + "consents_to_one_to_one_messaging": true, + "sms_phone_number": "", + "sms_subscription_status": "", + "sms_subscription_last_updated": "", + "merge_fields": { + "object": true + }, + "interests": { + "object": true + }, + "stats": { + "object": true + }, + "ip_signup": "", + "timestamp_signup": "", + "ip_opt": "41.62.62.149", + "timestamp_opt": "2021-02-19T10:59:04+00:00", + "member_rating": 2, + "last_changed": "2025-05-15T21:19:00+00:00", + "language": "", + "vip": false, + "email_client": "", + "location": { + "object": true + }, + "source": "Admin Add", + "tags_count": 0, + "tags": [ + "json array" + ], + "list_id": "eb9ad4be19", + "_links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343996929, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "email": "test43996930@gmail.com" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp7": [ + { + "startTime": 1747343996930, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 398, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "category_id": "2adbc0d543", + "list_id": "eb9ad4be19", + "id": "928c597e2a", + "name": "QA", + "subscriber_count": "1", + "display_order": 1, + "_links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp8": [ + { + "startTime": 1747343997328, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 446, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "e117a6f053", + "status": "sent", + "settings": { + "object": true + }, + "tracking": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp": [ + { + "startTime": 1747343997774, + "executionIndex": 5, + "source": [ + { + "previousNode": "Mailchimp1" + } + ], + "hints": [], + "executionTime": 359, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "c81277605b129fdafaacede5ae34e07c", + "email_address": "nodeqa@n8n.io", + "unique_email_id": "cb7624ba4b", + "contact_id": "2f4ff7f445018adb50969f99df88dd9e", + "full_name": "node qa", + "web_id": 502612022, + "email_type": "html", + "status": "subscribed", + "consents_to_one_to_one_messaging": true, + "sms_phone_number": "", + "sms_subscription_status": "", + "sms_subscription_last_updated": "", + "merge_fields": { + "object": true + }, + "interests": { + "object": true + }, + "stats": { + "object": true + }, + "ip_signup": "", + "timestamp_signup": "", + "ip_opt": "41.62.62.149", + "timestamp_opt": "2021-02-19T10:59:04+00:00", + "member_rating": 2, + "last_changed": "2025-05-15T21:19:00+00:00", + "language": "", + "vip": false, + "email_client": "", + "location": { + "object": true + }, + "source": "Admin Add", + "tags_count": 0, + "tags": [ + "json array" + ], + "list_id": "eb9ad4be19", + "_links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp3": [ + { + "startTime": 1747343998133, + "executionIndex": 6, + "source": [ + { + "previousNode": "Function" + } + ], + "hints": [], + "executionTime": 571, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "e73ff29160716a59a89fa9ebe5dfb51d", + "email_address": "test43996930@gmail.com", + "unique_email_id": "a157130acb", + "contact_id": "77fbbbd43baa1fdc2164af11cdc785a5", + "full_name": "", + "web_id": 606621185, + "email_type": "html", + "status": "subscribed", + "consents_to_one_to_one_messaging": true, + "sms_phone_number": "", + "sms_subscription_status": "", + "sms_subscription_last_updated": "", + "merge_fields": { + "object": true + }, + "interests": { + "object": true + }, + "stats": { + "object": true + }, + "ip_signup": "", + "timestamp_signup": "", + "ip_opt": "193.203.152.163", + "timestamp_opt": "2025-05-15T21:19:58+00:00", + "member_rating": 2, + "last_changed": "2025-05-15T21:19:58+00:00", + "language": "", + "vip": false, + "email_client": "", + "location": { + "object": true + }, + "source": "API - Generic", + "tags_count": 0, + "tags": [ + "json array" + ], + "list_id": "eb9ad4be19", + "_links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp9": [ + { + "startTime": 1747343998704, + "executionIndex": 7, + "source": [ + { + "previousNode": "Mailchimp8" + } + ], + "hints": [], + "executionTime": 372, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "e117a6f053", + "web_id": 4820246, + "type": "plaintext", + "create_time": "2021-02-19T12:32:03+00:00", + "archive_url": "http://eepurl.com/hq3G0v", + "long_archive_url": "https://us1.campaign-archive.com/?u=396affb9e515ed83edaecbba9&id=e117a6f053", + "status": "sent", + "emails_sent": 1, + "send_time": "2021-02-19T12:33:21+00:00", + "content_type": "template", + "needs_block_refresh": false, + "resendable": false, + "recipients": { + "object": true + }, + "settings": { + "object": true + }, + "tracking": { + "object": true + }, + "report_summary": { + "object": true + }, + "delivery_status": { + "object": true + }, + "_links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp2": [ + { + "startTime": 1747343999076, + "executionIndex": 8, + "source": [ + { + "previousNode": "Mailchimp" + } + ], + "hints": [], + "executionTime": 454, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "c81277605b129fdafaacede5ae34e07c", + "email_address": "nodeqa@n8n.io", + "unique_email_id": "cb7624ba4b", + "contact_id": "2f4ff7f445018adb50969f99df88dd9e", + "full_name": "node qa", + "web_id": 502612022, + "email_type": "html", + "status": "subscribed", + "consents_to_one_to_one_messaging": true, + "sms_phone_number": "", + "sms_subscription_status": "", + "sms_subscription_last_updated": "", + "merge_fields": { + "object": true + }, + "interests": { + "object": true + }, + "stats": { + "object": true + }, + "ip_signup": "", + "timestamp_signup": "", + "ip_opt": "41.62.62.149", + "timestamp_opt": "2021-02-19T10:59:04+00:00", + "member_rating": 2, + "last_changed": "2025-05-15T21:19:00+00:00", + "language": "", + "vip": false, + "email_client": "", + "location": { + "object": true + }, + "source": "Admin Add", + "tags_count": 0, + "tags": [ + "json array" + ], + "list_id": "eb9ad4be19", + "_links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp4": [ + { + "startTime": 1747343999530, + "executionIndex": 9, + "source": [ + { + "previousNode": "Mailchimp" + } + ], + "hints": [], + "executionTime": 429, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp6": [ + { + "startTime": 1747343999959, + "executionIndex": 10, + "source": [ + { + "previousNode": "Mailchimp3" + } + ], + "hints": [], + "executionTime": 514, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp10": [ + { + "startTime": 1747344000473, + "executionIndex": 11, + "source": [ + { + "previousNode": "Mailchimp9" + } + ], + "hints": [], + "executionTime": 2041, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "3e3f70f4ea", + "web_id": 11040424, + "type": "plaintext", + "create_time": "2025-05-15T21:20:00+00:00", + "archive_url": "http://eepurl.com/jeUIs2", + "long_archive_url": "https://us1.campaign-archive.com/?u=396affb9e515ed83edaecbba9&id=3e3f70f4ea", + "status": "save", + "emails_sent": 0, + "send_time": "", + "content_type": "template", + "needs_block_refresh": false, + "resendable": false, + "recipients": { + "object": true + }, + "settings": { + "object": true + }, + "tracking": { + "object": true + }, + "delivery_status": { + "object": true + }, + "_links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp5": [ + { + "startTime": 1747344002514, + "executionIndex": 12, + "source": [ + { + "previousNode": "Mailchimp4" + } + ], + "hints": [], + "executionTime": 369, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailchimp11": [ + { + "startTime": 1747344002883, + "executionIndex": 13, + "source": [ + { + "previousNode": "Mailchimp10" + } + ], + "hints": [], + "executionTime": 621, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Mailchimp11" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.527Z", + "stoppedAt": "2025-05-15T21:20:03.504Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/110-snapshot.json b/test-workflows/snapshots/110-snapshot.json new file mode 100644 index 0000000000..a9aeaa27a3 --- /dev/null +++ b/test-workflows/snapshots/110-snapshot.json @@ -0,0 +1,105 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343907477, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "GraphQL": [ + { + "startTime": 1747343907477, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 177, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343907655, + "executionIndex": 2, + "source": [ + { + "previousNode": "GraphQL" + } + ], + "hints": [], + "executionTime": 4, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:18:27.477Z", + "stoppedAt": "2025-05-15T21:18:27.659Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/111-snapshot.json b/test-workflows/snapshots/111-snapshot.json new file mode 100644 index 0000000000..bc3ba27fcd --- /dev/null +++ b/test-workflows/snapshots/111-snapshot.json @@ -0,0 +1,320 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994482, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343994482, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spreadsheet File": [ + { + "startTime": 1747343994484, + "executionIndex": 2, + "source": [ + { + "previousNode": "Function" + } + ], + "hints": [], + "executionTime": 7, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "binary": { + "data": { + "mimeType": "text/html", + "fileType": "html", + "fileExtension": "html", + "data": "PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiLz48dGl0bGU+U2hlZXRKUyBUYWJsZSBFeHBvcnQ8L3RpdGxlPjwvaGVhZD48Ym9keT48dGFibGU+PHRyPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0ibmFtZXMuMCIgaWQ9InNqcy1BMSI+bmFtZXMuMDwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJuYW1lcy4xIiBpZD0ic2pzLUIxIj5uYW1lcy4xPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9Im5hbWVzLjIiIGlkPSJzanMtQzEiPm5hbWVzLjI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0ibmFtZXMuMyIgaWQ9InNqcy1EMSI+bmFtZXMuMzwvdGQ+PC90cj48dHI+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MSIgaWQ9InNqcy1BMiI+dGVzdDE8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDEyIiBpZD0ic2pzLUIyIj50ZXN0MTI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDEzIiBpZD0ic2pzLUMyIj50ZXN0MTM8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDE0IiBpZD0ic2pzLUQyIj50ZXN0MTQ8L3RkPjwvdHI+PHRyPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDIiIGlkPSJzanMtQTMiPnRlc3QyPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyMiIgaWQ9InNqcy1CMyI+dGVzdDIyPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyMyIgaWQ9InNqcy1DMyI+dGVzdDIzPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyNCIgaWQ9InNqcy1EMyI+dGVzdDI0PC90ZD48L3RyPjx0cj48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QzIiBpZD0ic2pzLUE0Ij50ZXN0MzwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzIiIGlkPSJzanMtQjQiPnRlc3QzMjwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzMiIGlkPSJzanMtQzQiPnRlc3QzMzwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzQiIGlkPSJzanMtRDQiPnRlc3QzNDwvdGQ+PC90cj48dHI+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0NCIgaWQ9InNqcy1BNSI+dGVzdDQ8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQyIiBpZD0ic2pzLUI1Ij50ZXN0NDI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQzIiBpZD0ic2pzLUM1Ij50ZXN0NDM8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQ0IiBpZD0ic2pzLUQ1Ij50ZXN0NDQ8L3RkPjwvdHI+PC90YWJsZT48L2JvZHk+PC9odG1sPg==", + "fileName": "spreadsheet.html", + "fileSize": "1.24 kB" + } + }, + "pairedItem": [ + { + "item": 0 + }, + { + "item": 1 + }, + { + "item": 2 + }, + { + "item": 3 + } + ] + } + ] + ] + } + } + ], + "Function1": [ + { + "startTime": 1747343994491, + "executionIndex": 3, + "source": [ + { + "previousNode": "Spreadsheet File" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "binary": { + "data": { + "mimeType": "text/html", + "fileType": "html", + "fileExtension": "html", + "data": "PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiLz48dGl0bGU+U2hlZXRKUyBUYWJsZSBFeHBvcnQ8L3RpdGxlPjwvaGVhZD48Ym9keT48dGFibGU+PHRyPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0ibmFtZXMuMCIgaWQ9InNqcy1BMSI+bmFtZXMuMDwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJuYW1lcy4xIiBpZD0ic2pzLUIxIj5uYW1lcy4xPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9Im5hbWVzLjIiIGlkPSJzanMtQzEiPm5hbWVzLjI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0ibmFtZXMuMyIgaWQ9InNqcy1EMSI+bmFtZXMuMzwvdGQ+PC90cj48dHI+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MSIgaWQ9InNqcy1BMiI+dGVzdDE8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDEyIiBpZD0ic2pzLUIyIj50ZXN0MTI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDEzIiBpZD0ic2pzLUMyIj50ZXN0MTM8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDE0IiBpZD0ic2pzLUQyIj50ZXN0MTQ8L3RkPjwvdHI+PHRyPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDIiIGlkPSJzanMtQTMiPnRlc3QyPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyMiIgaWQ9InNqcy1CMyI+dGVzdDIyPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyMyIgaWQ9InNqcy1DMyI+dGVzdDIzPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyNCIgaWQ9InNqcy1EMyI+dGVzdDI0PC90ZD48L3RyPjx0cj48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QzIiBpZD0ic2pzLUE0Ij50ZXN0MzwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzIiIGlkPSJzanMtQjQiPnRlc3QzMjwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzMiIGlkPSJzanMtQzQiPnRlc3QzMzwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzQiIGlkPSJzanMtRDQiPnRlc3QzNDwvdGQ+PC90cj48dHI+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0NCIgaWQ9InNqcy1BNSI+dGVzdDQ8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQyIiBpZD0ic2pzLUI1Ij50ZXN0NDI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQzIiBpZD0ic2pzLUM1Ij50ZXN0NDM8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQ0IiBpZD0ic2pzLUQ1Ij50ZXN0NDQ8L3RkPjwvdHI+PC90YWJsZT48L2JvZHk+PC9odG1sPg==", + "fileName": "spreadsheet.html", + "fileSize": "1.24 kB" + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Spreadsheet File1": [ + { + "startTime": 1747343994493, + "executionIndex": 4, + "source": [ + { + "previousNode": "Spreadsheet File" + } + ], + "hints": [], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "names.0": "test1", + "names.1": "test12", + "names.2": "test13", + "names.3": "test14" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "names.0": "test2", + "names.1": "test22", + "names.2": "test23", + "names.3": "test24" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "names.0": "test3", + "names.1": "test32", + "names.2": "test33", + "names.3": "test34" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "names.0": "test4", + "names.1": "test42", + "names.2": "test43", + "names.3": "test44" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function2": [ + { + "startTime": 1747343994496, + "executionIndex": 5, + "source": [ + { + "previousNode": "Spreadsheet File1" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "names.0": "test1", + "names.1": "test12", + "names.2": "test13", + "names.3": "test14" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + }, + { + "json": { + "names.0": "test2", + "names.1": "test22", + "names.2": "test23", + "names.3": "test24" + }, + "pairedItem": { + "item": 1 + }, + "index": 1 + }, + { + "json": { + "names.0": "test3", + "names.1": "test32", + "names.2": "test33", + "names.3": "test34" + }, + "pairedItem": { + "item": 2 + }, + "index": 2 + }, + { + "json": { + "names.0": "test4", + "names.1": "test42", + "names.2": "test43", + "names.3": "test44" + }, + "pairedItem": { + "item": 3 + }, + "index": 3 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.482Z", + "stoppedAt": "2025-05-15T21:19:54.498Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/112-snapshot.json b/test-workflows/snapshots/112-snapshot.json new file mode 100644 index 0000000000..ad81ee5372 --- /dev/null +++ b/test-workflows/snapshots/112-snapshot.json @@ -0,0 +1,172 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331886879, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "RabbitMQ": [ + { + "startTime": 1710331886879, + "executionTime": 703, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "RabbitMQ1": [ + { + "startTime": 1710331887582, + "executionTime": 244, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "RabbitMQ2": [ + { + "startTime": 1710331887826, + "executionTime": 262, + "source": [ + { + "previousNode": "RabbitMQ1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "RabbitMQ3": [ + { + "startTime": 1710331888088, + "executionTime": 260, + "source": [ + { + "previousNode": "RabbitMQ2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "RabbitMQ4": [ + { + "startTime": 1710331888349, + "executionTime": 240, + "source": [ + { + "previousNode": "RabbitMQ3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "RabbitMQ4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:26.879Z", + "stoppedAt": "2024-03-13T12:11:28.589Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/113-snapshot.json b/test-workflows/snapshots/113-snapshot.json new file mode 100644 index 0000000000..5d49069f3e --- /dev/null +++ b/test-workflows/snapshots/113-snapshot.json @@ -0,0 +1,94 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331887198, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1710331887198, + "executionTime": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "message": "AMQPMessage1710331887201" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AMQP Sender": [ + { + "startTime": 1710331887201, + "executionTime": 449, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AMQP Sender" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:27.197Z", + "stoppedAt": "2024-03-13T12:11:27.650Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/114-snapshot.json b/test-workflows/snapshots/114-snapshot.json new file mode 100644 index 0000000000..e2375c9096 --- /dev/null +++ b/test-workflows/snapshots/114-snapshot.json @@ -0,0 +1,619 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994499, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com": [ + { + "startTime": 1747343994499, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1493, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163279560" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com1": [ + { + "startTime": 1747343995992, + "executionIndex": 2, + "source": [ + { + "previousNode": "Monday.com" + } + ], + "hints": [], + "executionTime": 705, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163279560", + "name": "Board1747343994501", + "description": { + "object": true + }, + "state": "active", + "board_folder_id": { + "object": true + }, + "board_kind": "private", + "owners": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com2": [ + { + "startTime": 1747343996697, + "executionIndex": 3, + "source": [ + { + "previousNode": "Monday.com1" + } + ], + "hints": [], + "executionTime": 363, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163279560", + "name": "Board1747343994501", + "description": { + "object": true + }, + "state": "active", + "board_folder_id": { + "object": true + }, + "board_kind": "private", + "owners": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com4": [ + { + "startTime": 1747343997060, + "executionIndex": 4, + "source": [ + { + "previousNode": "Monday.com2" + } + ], + "hints": [], + "executionTime": 820, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "boolean_mkqzts11" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com6": [ + { + "startTime": 1747343997880, + "executionIndex": 5, + "source": [ + { + "previousNode": "Monday.com4" + } + ], + "hints": [], + "executionTime": 707, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "group_mkqzjrxd" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com9": [ + { + "startTime": 1747343998587, + "executionIndex": 6, + "source": [ + { + "previousNode": "Monday.com6" + } + ], + "hints": [], + "executionTime": 699, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163280038" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com10": [ + { + "startTime": 1747343999286, + "executionIndex": 7, + "source": [ + { + "previousNode": "Monday.com9" + } + ], + "hints": [], + "executionTime": 1154, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "4124607906" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com11": [ + { + "startTime": 1747344000440, + "executionIndex": 8, + "source": [ + { + "previousNode": "Monday.com10" + } + ], + "hints": [], + "executionTime": 627, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163280038" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com12": [ + { + "startTime": 1747344001067, + "executionIndex": 9, + "source": [ + { + "previousNode": "Monday.com11" + } + ], + "hints": [], + "executionTime": 334, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163280038", + "name": "Item1747343998592", + "created_at": "2025-05-15T21:19:59Z", + "state": "active", + "column_values": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com13": [ + { + "startTime": 1747344001401, + "executionIndex": 10, + "source": [ + { + "previousNode": "Monday.com12" + } + ], + "hints": [], + "executionTime": 568, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163280038", + "name": "Item1747343998592", + "created_at": "2025-05-15T21:19:59Z", + "state": "active", + "column_values": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com14": [ + { + "startTime": 1747344001969, + "executionIndex": 11, + "source": [ + { + "previousNode": "Monday.com13" + } + ], + "hints": [], + "executionTime": 562, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163279581", + "name": "Task 1", + "created_at": "2025-05-15T21:19:55Z", + "state": "active", + "board": { + "object": true + }, + "column_values": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com15": [ + { + "startTime": 1747344002531, + "executionIndex": 12, + "source": [ + { + "previousNode": "Monday.com14" + } + ], + "hints": [], + "executionTime": 819, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163280038" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com16": [ + { + "startTime": 1747344003350, + "executionIndex": 13, + "source": [ + { + "previousNode": "Monday.com15" + } + ], + "hints": [], + "executionTime": 809, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163280038" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com7": [ + { + "startTime": 1747344004159, + "executionIndex": 14, + "source": [ + { + "previousNode": "Monday.com16" + } + ], + "hints": [], + "executionTime": 1162, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "group_mkqzjrxd" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com8": [ + { + "startTime": 1747344005321, + "executionIndex": 15, + "source": [ + { + "previousNode": "Monday.com7" + } + ], + "hints": [], + "executionTime": 373, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "topics", + "title": "Group Title", + "color": "#037f4c", + "position": "65536", + "archived": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Monday.com5": [ + { + "startTime": 1747344005695, + "executionIndex": 16, + "source": [ + { + "previousNode": "Monday.com8" + } + ], + "hints": [], + "executionTime": 340, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "name", + "title": "Name", + "type": "name", + "settings_str": "{}", + "archived": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "boolean_mkqzts11", + "title": "Column1747343997063", + "type": "checkbox", + "settings_str": "{}", + "archived": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge": [ + { + "startTime": 1747344006035, + "executionIndex": 17, + "source": [ + { + "previousNode": "Monday.com5" + }, + { + "previousNode": "Monday.com5" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": [ + { + "item": 0 + }, + { + "item": 1 + } + ] + } + ] + ] + } + } + ], + "Monday.com3": [ + { + "startTime": 1747344006036, + "executionIndex": 18, + "source": [ + { + "previousNode": "Merge" + } + ], + "hints": [], + "executionTime": 660, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9163279560" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Monday.com3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.498Z", + "stoppedAt": "2025-05-15T21:20:06.696Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/115-snapshot.json b/test-workflows/snapshots/115-snapshot.json new file mode 100644 index 0000000000..569dc8085e --- /dev/null +++ b/test-workflows/snapshots/115-snapshot.json @@ -0,0 +1,186 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331887209, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Cockpit": [ + { + "startTime": 1710331887209, + "executionTime": 302, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Name": "entry1710331887212", + "_by": "604887bce94fea0ea177c951", + "_modified": 1710331887, + "_created": 1710331887, + "_id": "65f197ef674387269e75af55" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Cockpit3": [ + { + "startTime": 1710331887511, + "executionTime": 83, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "FixedName", + "_mby": "604887bce94fea0ea177c951", + "_by": "604887bce94fea0ea177c951" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Cockpit4": [ + { + "startTime": 1710331887594, + "executionTime": 74, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "name1710331887596", + "tag": "tag1710331887597" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Cockpit1": [ + { + "startTime": 1710331887668, + "executionTime": 76, + "source": [ + { + "previousNode": "Cockpit" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "65f197ef674387269e75af55", + "Name": "UpdatedEntry1710331887671", + "_by": "604887bce94fea0ea177c951", + "_modified": 1710331887 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Cockpit2": [ + { + "startTime": 1710331887744, + "executionTime": 55, + "source": [ + { + "previousNode": "Cockpit1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Name": "UpdatedEntry1615366572785", + "_by": "604887bce94fea0ea177c951", + "_modified": 1615366572, + "_created": 1615366532, + "_id": "6048898478f13b61a46fc881" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Cockpit2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:27.209Z", + "stoppedAt": "2024-03-13T12:11:27.799Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/116-snapshot.json b/test-workflows/snapshots/116-snapshot.json new file mode 100644 index 0000000000..3f540e7358 --- /dev/null +++ b/test-workflows/snapshots/116-snapshot.json @@ -0,0 +1,611 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891405872, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Ghost": [ + { + "startTime": 1676891405873, + "executionTime": 475, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "63f3550e3464df0001bf1bbc", + "uuid": "25ff3cb7-725f-478d-9710-8798ce3ceccd", + "title": "PostTitle1676891405907", + "slug": "posttitle1676891405907", + "mobiledoc": "{\"version\":\"0.3.1\",\"atoms\":[],\"cards\":[],\"markups\":[],\"sections\":[[1,\"p\",[[0,[],0,\"Post Content written at 1676891405907\"]]]]}", + "comment_id": "63f3550e3464df0001bf1bbc", + "feature_image": { + "object": true + }, + "featured": false, + "status": "draft", + "visibility": "public", + "created_at": "2023-02-20T11:10:06.000Z", + "updated_at": "2023-02-20T11:10:06.000Z", + "published_at": { + "object": true + }, + "custom_excerpt": { + "object": true + }, + "codeinjection_head": { + "object": true + }, + "codeinjection_foot": { + "object": true + }, + "custom_template": { + "object": true + }, + "canonical_url": { + "object": true + }, + "authors": [ + "json array" + ], + "tags": [ + "json array" + ], + "primary_author": { + "object": true + }, + "primary_tag": { + "object": true + }, + "url": "http://localhost:2368/p/25ff3cb7-725f-478d-9710-8798ce3ceccd/", + "excerpt": "Post Content written at 1676891405907", + "og_image": { + "object": true + }, + "og_title": { + "object": true + }, + "og_description": { + "object": true + }, + "twitter_image": { + "object": true + }, + "twitter_title": { + "object": true + }, + "twitter_description": { + "object": true + }, + "meta_title": { + "object": true + }, + "meta_description": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Ghost1": [ + { + "startTime": 1676891406348, + "executionTime": 386, + "source": [ + { + "previousNode": "Ghost" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "63f3550e3464df0001bf1bbc", + "uuid": "25ff3cb7-725f-478d-9710-8798ce3ceccd", + "title": "UpdateTitle1676891406349", + "slug": "posttitle1676891405907", + "mobiledoc": "{\"version\":\"0.3.1\",\"atoms\":[],\"cards\":[],\"markups\":[],\"sections\":[[1,\"p\",[[0,[],0,\"Post Content written at 1676891405907\"]]]]}", + "comment_id": "63f3550e3464df0001bf1bbc", + "feature_image": { + "object": true + }, + "featured": false, + "status": "draft", + "visibility": "public", + "created_at": "2023-02-20T11:10:06.000Z", + "updated_at": "2023-02-20T11:10:06.000Z", + "published_at": { + "object": true + }, + "custom_excerpt": { + "object": true + }, + "codeinjection_head": { + "object": true + }, + "codeinjection_foot": { + "object": true + }, + "custom_template": { + "object": true + }, + "canonical_url": { + "object": true + }, + "tags": [ + "json array" + ], + "authors": [ + "json array" + ], + "primary_author": { + "object": true + }, + "primary_tag": { + "object": true + }, + "url": "http://localhost:2368/p/25ff3cb7-725f-478d-9710-8798ce3ceccd/", + "excerpt": "Post Content written at 1676891405907", + "og_image": { + "object": true + }, + "og_title": { + "object": true + }, + "og_description": { + "object": true + }, + "twitter_image": { + "object": true + }, + "twitter_title": { + "object": true + }, + "twitter_description": { + "object": true + }, + "meta_title": { + "object": true + }, + "meta_description": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Ghost2": [ + { + "startTime": 1676891406734, + "executionTime": 248, + "source": [ + { + "previousNode": "Ghost1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "63f3550e3464df0001bf1bbc", + "uuid": "25ff3cb7-725f-478d-9710-8798ce3ceccd", + "title": "UpdateTitle1676891406349", + "slug": "posttitle1676891405907", + "mobiledoc": "{\"version\":\"0.3.1\",\"atoms\":[],\"cards\":[],\"markups\":[],\"sections\":[[1,\"p\",[[0,[],0,\"Post Content written at 1676891405907\"]]]]}", + "comment_id": "63f3550e3464df0001bf1bbc", + "feature_image": { + "object": true + }, + "featured": false, + "status": "draft", + "visibility": "public", + "created_at": "2023-02-20T11:10:06.000Z", + "updated_at": "2023-02-20T11:10:06.000Z", + "published_at": { + "object": true + }, + "custom_excerpt": { + "object": true + }, + "codeinjection_head": { + "object": true + }, + "codeinjection_foot": { + "object": true + }, + "custom_template": { + "object": true + }, + "canonical_url": { + "object": true + }, + "tags": [ + "json array" + ], + "authors": [ + "json array" + ], + "primary_author": { + "object": true + }, + "primary_tag": { + "object": true + }, + "url": "http://localhost:2368/p/25ff3cb7-725f-478d-9710-8798ce3ceccd/", + "excerpt": "Post Content written at 1676891405907", + "og_image": { + "object": true + }, + "og_title": { + "object": true + }, + "og_description": { + "object": true + }, + "twitter_image": { + "object": true + }, + "twitter_title": { + "object": true + }, + "twitter_description": { + "object": true + }, + "meta_title": { + "object": true + }, + "meta_description": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Ghost3": [ + { + "startTime": 1676891406983, + "executionTime": 244, + "source": [ + { + "previousNode": "Ghost2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "63f3550e3464df0001bf1bbc", + "uuid": "25ff3cb7-725f-478d-9710-8798ce3ceccd", + "title": "UpdateTitle1676891406349", + "slug": "posttitle1676891405907", + "mobiledoc": "{\"version\":\"0.3.1\",\"atoms\":[],\"cards\":[],\"markups\":[],\"sections\":[[1,\"p\",[[0,[],0,\"Post Content written at 1676891405907\"]]]]}", + "comment_id": "63f3550e3464df0001bf1bbc", + "feature_image": { + "object": true + }, + "featured": false, + "status": "draft", + "visibility": "public", + "created_at": "2023-02-20T11:10:06.000Z", + "updated_at": "2023-02-20T11:10:06.000Z", + "published_at": { + "object": true + }, + "custom_excerpt": { + "object": true + }, + "codeinjection_head": { + "object": true + }, + "codeinjection_foot": { + "object": true + }, + "custom_template": { + "object": true + }, + "canonical_url": { + "object": true + }, + "tags": [ + "json array" + ], + "authors": [ + "json array" + ], + "primary_author": { + "object": true + }, + "primary_tag": { + "object": true + }, + "url": "http://localhost:2368/p/25ff3cb7-725f-478d-9710-8798ce3ceccd/", + "excerpt": "Post Content written at 1676891405907", + "og_image": { + "object": true + }, + "og_title": { + "object": true + }, + "og_description": { + "object": true + }, + "twitter_image": { + "object": true + }, + "twitter_title": { + "object": true + }, + "twitter_description": { + "object": true + }, + "meta_title": { + "object": true + }, + "meta_description": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Ghost4": [ + { + "startTime": 1676891407227, + "executionTime": 164, + "source": [ + { + "previousNode": "Ghost3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "60489c2d8b68c800011955f0", + "uuid": "51c60db4-8ef0-4de9-8529-c1cde7460591", + "title": "Welcome to Ghost", + "slug": "welcome", + "html": "

A few things you should know

  1. Ghost is designed for ambitious, professional publishers who want to actively build a business around their content. That's who it works best for.
  2. The entire platform can be modified and customised to suit your needs. It's very powerful, but does require some knowledge of code. Ghost is not necessarily a good platform for beginners or people who just want a simple personal blog.
  3. It's possible to work with all your favourite tools and apps with hundreds of integrations to speed up your workflows, connect email lists, build communities and much more.

Behind the scenes

Ghost is made by an independent non-profit organisation called the Ghost Foundation. We are 100% self funded by revenue from our Ghost(Pro) service, and every penny we make is re-invested into funding further development of free, open source technology for modern publishing.

The version of Ghost you are looking at right now would not have been made possible without generous contributions from the open source community.

Next up, the editor

The main thing you'll want to read about next is probably: the Ghost editor. This is where the good stuff happens.

By the way, once you're done reading, you can simply delete the default Ghost user from your team to remove all of these introductory posts!
", + "comment_id": "60489c2d8b68c800011955f0", + "feature_image": "https://static.ghost.org/v3.0.0/images/welcome-to-ghost.png", + "featured": false, + "visibility": "public", + "email_recipient_filter": "none", + "created_at": "2021-03-10T10:15:09.000+00:00", + "updated_at": "2021-03-10T10:15:09.000+00:00", + "published_at": "2021-03-10T10:15:15.000+00:00", + "custom_excerpt": "Welcome, it's great to have you here.\nWe know that first impressions are important, so we've populated your new site with some initial getting started posts that will help you get familiar with everything in no time.", + "codeinjection_head": { + "object": true + }, + "codeinjection_foot": { + "object": true + }, + "custom_template": { + "object": true + }, + "canonical_url": { + "object": true + }, + "url": "http://localhost:2368/welcome/", + "excerpt": "Welcome, it's great to have you here.\nWe know that first impressions are important, so we've populated your new site with some initial getting started posts that will help you get familiar with everything in no time.", + "reading_time": 1, + "access": true, + "send_email_when_published": false, + "og_image": { + "object": true + }, + "og_title": { + "object": true + }, + "og_description": { + "object": true + }, + "twitter_image": { + "object": true + }, + "twitter_title": { + "object": true + }, + "twitter_description": { + "object": true + }, + "meta_title": { + "object": true + }, + "meta_description": { + "object": true + }, + "email_subject": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Ghost5": [ + { + "startTime": 1676891407391, + "executionTime": 182, + "source": [ + { + "previousNode": "Ghost4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "60489c2d8b68c800011955f0", + "uuid": "51c60db4-8ef0-4de9-8529-c1cde7460591", + "title": "Welcome to Ghost", + "slug": "welcome", + "html": "

A few things you should know

  1. Ghost is designed for ambitious, professional publishers who want to actively build a business around their content. That's who it works best for.
  2. The entire platform can be modified and customised to suit your needs. It's very powerful, but does require some knowledge of code. Ghost is not necessarily a good platform for beginners or people who just want a simple personal blog.
  3. It's possible to work with all your favourite tools and apps with hundreds of integrations to speed up your workflows, connect email lists, build communities and much more.

Behind the scenes

Ghost is made by an independent non-profit organisation called the Ghost Foundation. We are 100% self funded by revenue from our Ghost(Pro) service, and every penny we make is re-invested into funding further development of free, open source technology for modern publishing.

The version of Ghost you are looking at right now would not have been made possible without generous contributions from the open source community.

Next up, the editor

The main thing you'll want to read about next is probably: the Ghost editor. This is where the good stuff happens.

By the way, once you're done reading, you can simply delete the default Ghost user from your team to remove all of these introductory posts!
", + "comment_id": "60489c2d8b68c800011955f0", + "feature_image": "https://static.ghost.org/v3.0.0/images/welcome-to-ghost.png", + "featured": false, + "visibility": "public", + "email_recipient_filter": "none", + "created_at": "2021-03-10T10:15:09.000+00:00", + "updated_at": "2021-03-10T10:15:09.000+00:00", + "published_at": "2021-03-10T10:15:15.000+00:00", + "custom_excerpt": "Welcome, it's great to have you here.\nWe know that first impressions are important, so we've populated your new site with some initial getting started posts that will help you get familiar with everything in no time.", + "codeinjection_head": { + "object": true + }, + "codeinjection_foot": { + "object": true + }, + "custom_template": { + "object": true + }, + "canonical_url": { + "object": true + }, + "url": "http://localhost:2368/welcome/", + "excerpt": "Welcome, it's great to have you here.\nWe know that first impressions are important, so we've populated your new site with some initial getting started posts that will help you get familiar with everything in no time.", + "reading_time": 1, + "access": true, + "send_email_when_published": false, + "og_image": { + "object": true + }, + "og_title": { + "object": true + }, + "og_description": { + "object": true + }, + "twitter_image": { + "object": true + }, + "twitter_title": { + "object": true + }, + "twitter_description": { + "object": true + }, + "meta_title": { + "object": true + }, + "meta_description": { + "object": true + }, + "email_subject": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Ghost6": [ + { + "startTime": 1676891407573, + "executionTime": 170, + "source": [ + { + "previousNode": "Ghost5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Ghost6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:05.871Z", + "stoppedAt": "2023-02-20T11:10:07.743Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/117-snapshot.json b/test-workflows/snapshots/117-snapshot.json new file mode 100644 index 0000000000..d3bdd21550 --- /dev/null +++ b/test-workflows/snapshots/117-snapshot.json @@ -0,0 +1,130 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331887222, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gotify": [ + { + "startTime": 1710331887223, + "executionTime": 287, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1306, + "appid": 1, + "message": "Message content 1710331887225", + "title": "Title1710331887228", + "priority": 0, + "date": "2024-03-13T12:11:27.484571026Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gotify1": [ + { + "startTime": 1710331887510, + "executionTime": 58, + "source": [ + { + "previousNode": "Gotify" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1306, + "appid": 1, + "message": "Message content 1710331887225", + "title": "Title1710331887228", + "priority": 0, + "date": "2024-03-13T12:11:27.484571026Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gotify2": [ + { + "startTime": 1710331887568, + "executionTime": 62, + "source": [ + { + "previousNode": "Gotify1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Gotify2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:27.222Z", + "stoppedAt": "2024-03-13T12:11:27.630Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/118-snapshot.json b/test-workflows/snapshots/118-snapshot.json new file mode 100644 index 0000000000..12dd8d496a --- /dev/null +++ b/test-workflows/snapshots/118-snapshot.json @@ -0,0 +1,554 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331887342, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1710331887342, + "executionTime": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "key": "TestKey", + "value": "Value1710331887344" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Redis": [ + { + "startTime": 1710331887345, + "executionTime": 230, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "redis_version": 6.2, + "redis_git_sha1": 0, + "redis_git_dirty": 0, + "redis_build_id": "a26c8b6d79010f4f", + "redis_mode": "standalone", + "os": "Linux 5.4.0-65-generic x86_64", + "arch_bits": 64, + "multiplexing_api": "epoll", + "atomicvar_api": "c11-builtin", + "gcc_version": 8.3, + "process_id": 1, + "process_supervised": "no", + "run_id": "335ae737a685624354ebf06e053072c8dde37824", + "tcp_port": 6379, + "server_time_usec": 1710331887537701, + "uptime_in_seconds": 34307370, + "uptime_in_days": 397, + "hz": 10, + "configured_hz": 10, + "lru_clock": 15833071, + "executable": "/data/redis-server", + "config_file": "/usr/local/etc/redis.conf", + "io_threads_active": 0, + "connected_clients": 1, + "cluster_connections": 0, + "maxclients": 10000, + "client_recent_max_input_buffer": 40, + "client_recent_max_output_buffer": 0, + "blocked_clients": 0, + "tracking_clients": 0, + "clients_in_timeout_table": 0, + "used_memory": 988872, + "used_memory_human": "965.70K", + "used_memory_rss": 4448256, + "used_memory_rss_human": "4.24M", + "used_memory_peak": 3094400, + "used_memory_peak_human": "2.95M", + "used_memory_peak_perc": "31.96%", + "used_memory_overhead": 831184, + "used_memory_startup": 810184, + "used_memory_dataset": 157688, + "used_memory_dataset_perc": "88.25%", + "allocator_allocated": 1020376, + "allocator_active": 1339392, + "allocator_resident": 3866624, + "total_system_memory": 16395214848, + "total_system_memory_human": "15.27G", + "used_memory_lua": 37888, + "used_memory_lua_human": "37.00K", + "used_memory_scripts": 0, + "used_memory_scripts_human": "0B", + "number_of_cached_scripts": 0, + "maxmemory": 0, + "maxmemory_human": "0B", + "maxmemory_policy": "noeviction", + "allocator_frag_ratio": 1.31, + "allocator_frag_bytes": 319016, + "allocator_rss_ratio": 2.89, + "allocator_rss_bytes": 2527232, + "rss_overhead_ratio": 1.15, + "rss_overhead_bytes": 581632, + "mem_fragmentation_ratio": 4.51, + "mem_fragmentation_bytes": 3461176, + "mem_not_counted_for_evict": 0, + "mem_replication_backlog": 0, + "mem_clients_slaves": 0, + "mem_clients_normal": 20520, + "mem_aof_buffer": 0, + "mem_allocator": "jemalloc-5.1.0", + "active_defrag_running": 0, + "lazyfree_pending_objects": 0, + "lazyfreed_objects": 0, + "loading": 0, + "current_cow_size": 0, + "current_fork_perc": "0.00%", + "current_save_keys_processed": 0, + "current_save_keys_total": 0, + "rdb_changes_since_last_save": 0, + "rdb_bgsave_in_progress": 0, + "rdb_last_save_time": 1710299433, + "rdb_last_bgsave_status": "ok", + "rdb_last_bgsave_time_sec": 0, + "rdb_current_bgsave_time_sec": "-1", + "rdb_last_cow_size": 483328, + "aof_enabled": 0, + "aof_rewrite_in_progress": 0, + "aof_rewrite_scheduled": 0, + "aof_last_rewrite_time_sec": "-1", + "aof_current_rewrite_time_sec": "-1", + "aof_last_bgrewrite_status": "ok", + "aof_last_write_status": "ok", + "aof_last_cow_size": 0, + "module_fork_in_progress": 0, + "module_fork_last_cow_size": 0, + "total_connections_received": 43137, + "total_commands_processed": 389780, + "instantaneous_ops_per_sec": 1, + "total_net_input_bytes": 7316126, + "total_net_output_bytes": 47053879, + "instantaneous_input_kbps": 0.09, + "instantaneous_output_kbps": 0.11, + "rejected_connections": 0, + "sync_full": 0, + "sync_partial_ok": 0, + "sync_partial_err": 0, + "expired_keys": 0, + "expired_stale_perc": 0, + "expired_time_cap_reached_count": 0, + "expire_cycle_cpu_milliseconds": 1228670, + "evicted_keys": 0, + "keyspace_hits": 3820, + "keyspace_misses": 0, + "pubsub_channels": 0, + "pubsub_patterns": 0, + "latest_fork_usec": 983, + "total_forks": 108873, + "migrate_cached_sockets": 0, + "slave_expires_tracked_keys": 0, + "active_defrag_hits": 0, + "active_defrag_misses": 0, + "active_defrag_key_hits": 0, + "active_defrag_key_misses": 0, + "tracking_total_keys": 0, + "tracking_total_items": 0, + "tracking_total_prefixes": 0, + "unexpected_error_replies": 0, + "total_error_replies": 400712, + "dump_payload_sanitizations": 0, + "total_reads_processed": 266496, + "total_writes_processed": 227508, + "io_threaded_reads_processed": 0, + "io_threaded_writes_processed": 0, + "role": "master", + "connected_slaves": 0, + "master_failover_state": "no-failover", + "master_replid": "5bcfb8d0e50aae43141a6bc4de0e07b90f780906", + "master_replid2": 0, + "master_repl_offset": 0, + "second_repl_offset": "-1", + "repl_backlog_active": 0, + "repl_backlog_size": 1048576, + "repl_backlog_first_byte_offset": 0, + "repl_backlog_histlen": 0, + "used_cpu_sys": 81544.939292, + "used_cpu_user": 114072.000995, + "used_cpu_sys_children": 259.550501, + "used_cpu_user_children": 136.476364, + "used_cpu_sys_main_thread": 81531.244451, + "used_cpu_user_main_thread": 114059.326093, + "errorstat_ERR": { + "object": true + }, + "errorstat_MISCONF": { + "object": true + }, + "errorstat_NOAUTH": { + "object": true + }, + "errorstat_WRONGPASS": { + "object": true + }, + "cluster_enabled": 0, + "db0": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Redis1": [ + { + "startTime": 1710331887575, + "executionTime": 143, + "source": [ + { + "previousNode": "Redis" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "redis_version": 6.2, + "redis_git_sha1": 0, + "redis_git_dirty": 0, + "redis_build_id": "a26c8b6d79010f4f", + "redis_mode": "standalone", + "os": "Linux 5.4.0-65-generic x86_64", + "arch_bits": 64, + "multiplexing_api": "epoll", + "atomicvar_api": "c11-builtin", + "gcc_version": 8.3, + "process_id": 1, + "process_supervised": "no", + "run_id": "335ae737a685624354ebf06e053072c8dde37824", + "tcp_port": 6379, + "server_time_usec": 1710331887537701, + "uptime_in_seconds": 34307370, + "uptime_in_days": 397, + "hz": 10, + "configured_hz": 10, + "lru_clock": 15833071, + "executable": "/data/redis-server", + "config_file": "/usr/local/etc/redis.conf", + "io_threads_active": 0, + "connected_clients": 1, + "cluster_connections": 0, + "maxclients": 10000, + "client_recent_max_input_buffer": 40, + "client_recent_max_output_buffer": 0, + "blocked_clients": 0, + "tracking_clients": 0, + "clients_in_timeout_table": 0, + "used_memory": 988872, + "used_memory_human": "965.70K", + "used_memory_rss": 4448256, + "used_memory_rss_human": "4.24M", + "used_memory_peak": 3094400, + "used_memory_peak_human": "2.95M", + "used_memory_peak_perc": "31.96%", + "used_memory_overhead": 831184, + "used_memory_startup": 810184, + "used_memory_dataset": 157688, + "used_memory_dataset_perc": "88.25%", + "allocator_allocated": 1020376, + "allocator_active": 1339392, + "allocator_resident": 3866624, + "total_system_memory": 16395214848, + "total_system_memory_human": "15.27G", + "used_memory_lua": 37888, + "used_memory_lua_human": "37.00K", + "used_memory_scripts": 0, + "used_memory_scripts_human": "0B", + "number_of_cached_scripts": 0, + "maxmemory": 0, + "maxmemory_human": "0B", + "maxmemory_policy": "noeviction", + "allocator_frag_ratio": 1.31, + "allocator_frag_bytes": 319016, + "allocator_rss_ratio": 2.89, + "allocator_rss_bytes": 2527232, + "rss_overhead_ratio": 1.15, + "rss_overhead_bytes": 581632, + "mem_fragmentation_ratio": 4.51, + "mem_fragmentation_bytes": 3461176, + "mem_not_counted_for_evict": 0, + "mem_replication_backlog": 0, + "mem_clients_slaves": 0, + "mem_clients_normal": 20520, + "mem_aof_buffer": 0, + "mem_allocator": "jemalloc-5.1.0", + "active_defrag_running": 0, + "lazyfree_pending_objects": 0, + "lazyfreed_objects": 0, + "loading": 0, + "current_cow_size": 0, + "current_fork_perc": "0.00%", + "current_save_keys_processed": 0, + "current_save_keys_total": 0, + "rdb_changes_since_last_save": 0, + "rdb_bgsave_in_progress": 0, + "rdb_last_save_time": 1710299433, + "rdb_last_bgsave_status": "ok", + "rdb_last_bgsave_time_sec": 0, + "rdb_current_bgsave_time_sec": "-1", + "rdb_last_cow_size": 483328, + "aof_enabled": 0, + "aof_rewrite_in_progress": 0, + "aof_rewrite_scheduled": 0, + "aof_last_rewrite_time_sec": "-1", + "aof_current_rewrite_time_sec": "-1", + "aof_last_bgrewrite_status": "ok", + "aof_last_write_status": "ok", + "aof_last_cow_size": 0, + "module_fork_in_progress": 0, + "module_fork_last_cow_size": 0, + "total_connections_received": 43137, + "total_commands_processed": 389780, + "instantaneous_ops_per_sec": 1, + "total_net_input_bytes": 7316126, + "total_net_output_bytes": 47053879, + "instantaneous_input_kbps": 0.09, + "instantaneous_output_kbps": 0.11, + "rejected_connections": 0, + "sync_full": 0, + "sync_partial_ok": 0, + "sync_partial_err": 0, + "expired_keys": 0, + "expired_stale_perc": 0, + "expired_time_cap_reached_count": 0, + "expire_cycle_cpu_milliseconds": 1228670, + "evicted_keys": 0, + "keyspace_hits": 3820, + "keyspace_misses": 0, + "pubsub_channels": 0, + "pubsub_patterns": 0, + "latest_fork_usec": 983, + "total_forks": 108873, + "migrate_cached_sockets": 0, + "slave_expires_tracked_keys": 0, + "active_defrag_hits": 0, + "active_defrag_misses": 0, + "active_defrag_key_hits": 0, + "active_defrag_key_misses": 0, + "tracking_total_keys": 0, + "tracking_total_items": 0, + "tracking_total_prefixes": 0, + "unexpected_error_replies": 0, + "total_error_replies": 400712, + "dump_payload_sanitizations": 0, + "total_reads_processed": 266496, + "total_writes_processed": 227508, + "io_threaded_reads_processed": 0, + "io_threaded_writes_processed": 0, + "role": "master", + "connected_slaves": 0, + "master_failover_state": "no-failover", + "master_replid": "5bcfb8d0e50aae43141a6bc4de0e07b90f780906", + "master_replid2": 0, + "master_repl_offset": 0, + "second_repl_offset": "-1", + "repl_backlog_active": 0, + "repl_backlog_size": 1048576, + "repl_backlog_first_byte_offset": 0, + "repl_backlog_histlen": 0, + "used_cpu_sys": 81544.939292, + "used_cpu_user": 114072.000995, + "used_cpu_sys_children": 259.550501, + "used_cpu_user_children": 136.476364, + "used_cpu_sys_main_thread": 81531.244451, + "used_cpu_user_main_thread": 114059.326093, + "errorstat_ERR": { + "object": true + }, + "errorstat_MISCONF": { + "object": true + }, + "errorstat_NOAUTH": { + "object": true + }, + "errorstat_WRONGPASS": { + "object": true + }, + "cluster_enabled": 0, + "db0": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Redis2": [ + { + "startTime": 1710331887718, + "executionTime": 166, + "source": [ + { + "previousNode": "Redis1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "TestKey": "Value1710331887344" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Redis3": [ + { + "startTime": 1710331887885, + "executionTime": 124, + "source": [ + { + "previousNode": "Redis2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "value": "Value1710331887344" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Redis4": [ + { + "startTime": 1710331888009, + "executionTime": 126, + "source": [ + { + "previousNode": "Redis3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "value": "Value1710331887344" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1710331888135, + "executionTime": 3, + "source": [ + { + "previousNode": "Redis3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "value": "Value1710331887344" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:27.342Z", + "stoppedAt": "2024-03-13T12:11:28.138Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/119-snapshot.json b/test-workflows/snapshots/119-snapshot.json new file mode 100644 index 0000000000..d0f9c2130d --- /dev/null +++ b/test-workflows/snapshots/119-snapshot.json @@ -0,0 +1,166 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891406511, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1676891406512, + "executionTime": 65, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 90783, + "name": "Name1676891406577" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CrateDB": [ + { + "startTime": 1676891406578, + "executionTime": 322, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 90783, + "name": "Name1676891406577" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1676891406901, + "executionTime": 13, + "source": [ + { + "previousNode": "CrateDB" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 90783, + "name": "UpdatedName1676891406903" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CrateDB1": [ + { + "startTime": 1676891406916, + "executionTime": 310, + "source": [ + { + "previousNode": "Set1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 90783, + "name": "UpdatedName1676891406903" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "CrateDB2": [ + { + "startTime": 1676891407227, + "executionTime": 251, + "source": [ + { + "previousNode": "CrateDB1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "CrateDB2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:06.509Z", + "stoppedAt": "2023-02-20T11:10:07.478Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/120-snapshot.json b/test-workflows/snapshots/120-snapshot.json new file mode 100644 index 0000000000..b71f50845f --- /dev/null +++ b/test-workflows/snapshots/120-snapshot.json @@ -0,0 +1,223 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331887427, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1710331887427, + "executionTime": 10, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 65660, + "name": "Name1710331887437" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MySQL": [ + { + "startTime": 1710331887437, + "executionTime": 151, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fieldCount": 0, + "affectedRows": 1, + "insertId": 0, + "info": "", + "serverStatus": 2, + "warningStatus": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1710331887589, + "executionTime": 4, + "source": [ + { + "previousNode": "MySQL" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fieldCount": 0, + "affectedRows": 1, + "insertId": 0, + "info": "", + "serverStatus": 2, + "warningStatus": 0, + "id": 65660, + "name": "UpdatedName1710331887592" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MySQL1": [ + { + "startTime": 1710331887593, + "executionTime": 133, + "source": [ + { + "previousNode": "Set1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fieldCount": 0, + "affectedRows": 1, + "insertId": 0, + "info": "Rows matched: 1 Changed: 1 Warnings: 0", + "serverStatus": 34, + "warningStatus": 0, + "changedRows": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MySQL2": [ + { + "startTime": 1710331887726, + "executionTime": 123, + "source": [ + { + "previousNode": "MySQL1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 21457, + "name": "Name1627394768518" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MySQL3": [ + { + "startTime": 1710331887849, + "executionTime": 128, + "source": [ + { + "previousNode": "MySQL2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fieldCount": 0, + "affectedRows": 1, + "insertId": 0, + "info": "", + "serverStatus": 34, + "warningStatus": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "MySQL3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:27.426Z", + "stoppedAt": "2024-03-13T12:11:27.977Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/124-snapshot.json b/test-workflows/snapshots/124-snapshot.json new file mode 100644 index 0000000000..2e5626f4a1 --- /dev/null +++ b/test-workflows/snapshots/124-snapshot.json @@ -0,0 +1,139 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891407793, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1676891407794, + "executionTime": 100, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 545, + "name": "Name1676891407894" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "QuestDB": [ + { + "startTime": 1676891407894, + "executionTime": 172, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 545, + "name": "Name1676891407894" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "QuestDB1": [ + { + "startTime": 1676891408068, + "executionTime": 123, + "source": [ + { + "previousNode": "QuestDB" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 545, + "name": "Name1676891407894" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "QuestDB2": [ + { + "startTime": 1676891408192, + "executionTime": 119, + "source": [ + { + "previousNode": "QuestDB1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "QuestDB2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:07.791Z", + "stoppedAt": "2023-02-20T11:10:08.312Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/125-snapshot.json b/test-workflows/snapshots/125-snapshot.json new file mode 100644 index 0000000000..9d2d326573 --- /dev/null +++ b/test-workflows/snapshots/125-snapshot.json @@ -0,0 +1,338 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891408444, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1676891408445, + "executionTime": 42, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 555, + "name": "Name1676891408487" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Postgres": [ + { + "startTime": 1676891408487, + "executionTime": 187, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 555, + "name": "Name1676891408487" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1676891408675, + "executionTime": 3, + "source": [ + { + "previousNode": "Postgres" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 555, + "name": "UpdatedName1676891408677" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Postgres1": [ + { + "startTime": 1676891408678, + "executionTime": 194, + "source": [ + { + "previousNode": "Set1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 555, + "name": "UpdatedName1676891408677" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Postgres2": [ + { + "startTime": 1676891408873, + "executionTime": 202, + "source": [ + { + "previousNode": "Postgres1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": { + "object": true + }, + "name": "omar456" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar123" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar456" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar123" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar456" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar123" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar456" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar123" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar456" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar123" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar456" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": "omar123" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 555, + "name": "UpdatedName1676891408677" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": { + "object": true + }, + "name": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Postgres3": [ + { + "startTime": 1676891409075, + "executionTime": 126, + "source": [ + { + "previousNode": "Postgres2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "Postgres3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:08.443Z", + "stoppedAt": "2023-02-20T11:10:09.202Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/128-snapshot.json b/test-workflows/snapshots/128-snapshot.json new file mode 100644 index 0000000000..59f07446d0 --- /dev/null +++ b/test-workflows/snapshots/128-snapshot.json @@ -0,0 +1,137 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331887439, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Yourls": [ + { + "startTime": 1710331887439, + "executionTime": 121, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "url": { + "object": true + }, + "status": "success", + "message": "https://n8n.io/1710331887441 added to database", + "title": "n8n-ulr with random suffix", + "shorturl": "http://157.90.159.163:8095/10c", + "statusCode": 200 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Yourls1": [ + { + "startTime": 1710331887560, + "executionTime": 80, + "source": [ + { + "previousNode": "Yourls" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "shorturl": "http://157.90.159.163:8095/10c", + "url": "https://n8n.io/1710331887441", + "title": "n8n-ulr with random suffix", + "timestamp": "2024-03-13 12:11:27", + "ip": "84.145.34.143", + "clicks": "0" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Yourls2": [ + { + "startTime": 1710331887641, + "executionTime": 64, + "source": [ + { + "previousNode": "Yourls1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "keyword": "10c", + "shorturl": "http://157.90.159.163:8095/10c", + "longurl": "https://n8n.io/1710331887441", + "title": "n8n-ulr with random suffix", + "message": "success", + "statusCode": 200 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Yourls2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:27.439Z", + "stoppedAt": "2024-03-13T12:11:27.705Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/130-snapshot.json b/test-workflows/snapshots/130-snapshot.json new file mode 100644 index 0000000000..6307d07557 --- /dev/null +++ b/test-workflows/snapshots/130-snapshot.json @@ -0,0 +1,815 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891410333, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan": [ + { + "startTime": 1676891410334, + "executionTime": 226, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "QDPRfemxRr6XDXZbE", + "defaultSwimlaneId": "7EEQmusaGFfc4beR2" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan1": [ + { + "startTime": 1676891410560, + "executionTime": 93, + "source": [ + { + "previousNode": "Wekan" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "QDPRfemxRr6XDXZbE", + "title": "Board1676891410370", + "members": [ + "json array" + ], + "permission": "private", + "color": "belize", + "slug": "board1676891410370", + "archived": false, + "createdAt": "2023-02-20T11:10:10.525Z", + "modifiedAt": "2023-02-20T11:10:10.525Z", + "stars": 0, + "labels": [ + "json array" + ], + "subtasksDefaultBoardId": { + "object": true + }, + "subtasksDefaultListId": { + "object": true + }, + "dateSettingsDefaultBoardId": { + "object": true + }, + "dateSettingsDefaultListId": { + "object": true + }, + "allowsSubtasks": true, + "allowsAttachments": true, + "allowsChecklists": true, + "allowsComments": true, + "allowsDescriptionTitle": true, + "allowsDescriptionText": true, + "allowsActivities": true, + "allowsLabels": true, + "allowsAssignee": true, + "allowsMembers": true, + "allowsRequestedBy": true, + "allowsAssignedBy": true, + "allowsReceivedDate": true, + "allowsStartDate": true, + "allowsEndDate": true, + "allowsDueDate": true, + "presentParentTask": "no-parent", + "isOvertime": false, + "type": "board", + "sort": 4 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan2": [ + { + "startTime": 1676891410653, + "executionTime": 87, + "source": [ + { + "previousNode": "Wekan1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "P2rsgwsk7pdqeLvgs", + "title": "Templates" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan4": [ + { + "startTime": 1676891410741, + "executionTime": 129, + "source": [ + { + "previousNode": "Wekan2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "hmHTXSeYTdC2huq4i" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan5": [ + { + "startTime": 1676891410871, + "executionTime": 88, + "source": [ + { + "previousNode": "Wekan4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "hmHTXSeYTdC2huq4i", + "title": "List1676891410743", + "boardId": "QDPRfemxRr6XDXZbE", + "sort": 0, + "starred": false, + "archived": false, + "swimlaneId": "", + "createdAt": "2023-02-20T11:10:10.871Z", + "updatedAt": "2023-02-20T11:10:10.871Z", + "modifiedAt": "2023-02-20T11:10:10.871Z", + "wipLimit": { + "object": true + }, + "type": "list" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan6": [ + { + "startTime": 1676891410959, + "executionTime": 75, + "source": [ + { + "previousNode": "Wekan5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "hmHTXSeYTdC2huq4i", + "title": "List1676891410743" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan8": [ + { + "startTime": 1676891411034, + "executionTime": 106, + "source": [ + { + "previousNode": "Wekan6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "3eghZWSaCNrXDF5Fq" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan9": [ + { + "startTime": 1676891411140, + "executionTime": 88, + "source": [ + { + "previousNode": "Wekan8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "3eghZWSaCNrXDF5Fq" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan10": [ + { + "startTime": 1676891411228, + "executionTime": 82, + "source": [ + { + "previousNode": "Wekan9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "3eghZWSaCNrXDF5Fq", + "title": "UpdatedCard1676891411141", + "boardId": "QDPRfemxRr6XDXZbE", + "listId": "hmHTXSeYTdC2huq4i", + "userId": "E27bvzwJ5A26xfAPG", + "swimlaneId": "CJ44cd7gPRf8qT3Xb", + "sort": 0, + "archived": false, + "parentId": "", + "coverId": "", + "createdAt": "2023-02-20T11:10:11.153Z", + "modifiedAt": "2023-02-20T11:10:11.243Z", + "customFields": [ + "json array" + ], + "dateLastActivity": "2023-02-20T11:10:11.243Z", + "description": "", + "requestedBy": "", + "assignedBy": "", + "labelIds": [ + "json array" + ], + "members": [ + "json array" + ], + "assignees": [ + "json array" + ], + "spentTime": 0, + "isOvertime": false, + "subtaskSort": -1, + "type": "cardType-card", + "linkedId": "", + "vote": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan11": [ + { + "startTime": 1676891411310, + "executionTime": 97, + "source": [ + { + "previousNode": "Wekan10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "3eghZWSaCNrXDF5Fq", + "title": "UpdatedCard1676891411141", + "description": "", + "assignees": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan13": [ + { + "startTime": 1676891411407, + "executionTime": 79, + "source": [ + { + "previousNode": "Wekan11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "jYfDm5RWaj9H5cCYx" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan17": [ + { + "startTime": 1676891411486, + "executionTime": 180, + "source": [ + { + "previousNode": "Wekan11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "Kjz6WRTqtowBCsSJm" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan14": [ + { + "startTime": 1676891411666, + "executionTime": 95, + "source": [ + { + "previousNode": "Wekan13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "jYfDm5RWaj9H5cCYx", + "userId": "E27bvzwJ5A26xfAPG", + "text": "CardComment1676891411409", + "cardId": "3eghZWSaCNrXDF5Fq", + "boardId": "QDPRfemxRr6XDXZbE", + "createdAt": "2023-02-20T11:10:11.510Z", + "modifiedAt": "2023-02-20T11:10:11.510Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan18": [ + { + "startTime": 1676891411762, + "executionTime": 104, + "source": [ + { + "previousNode": "Wekan17" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "Kjz6WRTqtowBCsSJm", + "title": "Checklist1676891411489", + "cardId": "3eghZWSaCNrXDF5Fq", + "sort": 0, + "createdAt": "2023-02-20T11:10:11.607Z", + "modifiedAt": "2023-02-20T11:10:11.606Z", + "items": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan15": [ + { + "startTime": 1676891411867, + "executionTime": 76, + "source": [ + { + "previousNode": "Wekan14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "jYfDm5RWaj9H5cCYx", + "comment": "CardComment1676891411409", + "authorId": "E27bvzwJ5A26xfAPG" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan19": [ + { + "startTime": 1676891411944, + "executionTime": 82, + "source": [ + { + "previousNode": "Wekan18" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "Kjz6WRTqtowBCsSJm", + "title": "Checklist1676891411489" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan16": [ + { + "startTime": 1676891412026, + "executionTime": 122, + "source": [ + { + "previousNode": "Wekan15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "3eghZWSaCNrXDF5Fq" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan21": [ + { + "startTime": 1676891412149, + "executionTime": 91, + "source": [ + { + "previousNode": "Wekan19" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "ud2FR3gp7ki3dGx5X", + "cardId": "3eghZWSaCNrXDF5Fq", + "checklistId": "Kjz6WRTqtowBCsSJm", + "title": "ChecklistItem1676891411489", + "sort": 0, + "isFinished": false, + "createdAt": "2023-02-20T11:10:11.641Z", + "modifiedAt": "2023-02-20T11:10:11.641Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan22": [ + { + "startTime": 1676891412240, + "executionTime": 79, + "source": [ + { + "previousNode": "Wekan21" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "ud2FR3gp7ki3dGx5X" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan23": [ + { + "startTime": 1676891412319, + "executionTime": 87, + "source": [ + { + "previousNode": "Wekan22" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "ud2FR3gp7ki3dGx5X" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan20": [ + { + "startTime": 1676891412406, + "executionTime": 156, + "source": [ + { + "previousNode": "Wekan23" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "Kjz6WRTqtowBCsSJm" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge": [ + { + "startTime": 1676891412562, + "executionTime": 2, + "source": [ + { + "previousNode": "Wekan20" + }, + { + "previousNode": "Wekan16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {} + } + ] + ] + } + } + ], + "Wekan12": [ + { + "startTime": 1676891412565, + "executionTime": 112, + "source": [ + { + "previousNode": "Merge" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "3eghZWSaCNrXDF5Fq" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan7": [ + { + "startTime": 1676891412678, + "executionTime": 108, + "source": [ + { + "previousNode": "Wekan12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "hmHTXSeYTdC2huq4i" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wekan3": [ + { + "startTime": 1676891412786, + "executionTime": 137, + "source": [ + { + "previousNode": "Wekan7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "QDPRfemxRr6XDXZbE" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Wekan3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:10.328Z", + "stoppedAt": "2023-02-20T11:10:12.923Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/131-snapshot.json b/test-workflows/snapshots/131-snapshot.json new file mode 100644 index 0000000000..1d919ca46f --- /dev/null +++ b/test-workflows/snapshots/131-snapshot.json @@ -0,0 +1,71 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1738078143830, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Line": [ + { + "hints": [], + "startTime": 1738078143831, + "executionTime": 1446, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "ok" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Line" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-01-28T15:29:03.830Z", + "stoppedAt": "2025-01-28T15:29:05.277Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/132-snapshot.json b/test-workflows/snapshots/132-snapshot.json new file mode 100644 index 0000000000..93cabc03cb --- /dev/null +++ b/test-workflows/snapshots/132-snapshot.json @@ -0,0 +1,112 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994524, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mandrill": [ + { + "startTime": 1747343994524, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 578, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "email": "nodeqa1747343994527@email.test", + "status": "rejected", + "_id": "8111baeb0ff141db9aa0f2f7cc96a08d", + "reject_reason": "unsigned", + "queued_reason": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mandrill1": [ + { + "startTime": 1747343995102, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 512, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "email": "nodeqa1747343995103@email.test", + "status": "rejected", + "_id": "769293eaca9843c2926c7ec1e5df052a", + "reject_reason": "unsigned", + "queued_reason": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Mandrill1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.524Z", + "stoppedAt": "2025-05-15T21:19:55.614Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/133-snapshot.json b/test-workflows/snapshots/133-snapshot.json new file mode 100644 index 0000000000..c2f1955bdd --- /dev/null +++ b/test-workflows/snapshots/133-snapshot.json @@ -0,0 +1,99 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331887804, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twilio": [ + { + "startTime": 1710331887804, + "executionTime": 661, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "body": "Message1710331887805", + "num_segments": "1", + "direction": "outbound-api", + "from": "+15005550006", + "date_updated": "Wed, 13 Mar 2024 12:11:28 +0000", + "price": { + "object": true + }, + "error_message": { + "object": true + }, + "uri": "/2010-04-01/Accounts/AC8dd0c6e08b0f196d34adde4f00507d9f/Messages/SMd99c4e5b501391cb4fbe91937f23ec3b.json", + "account_sid": "AC8dd0c6e08b0f196d34adde4f00507d9f", + "num_media": "0", + "to": "+15005550006", + "date_created": "Wed, 13 Mar 2024 12:11:28 +0000", + "status": "queued", + "sid": "SMd99c4e5b501391cb4fbe91937f23ec3b", + "date_sent": { + "object": true + }, + "messaging_service_sid": { + "object": true + }, + "error_code": { + "object": true + }, + "price_unit": "USD", + "api_version": "2010-04-01", + "subresource_uris": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Twilio" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:27.804Z", + "stoppedAt": "2024-03-13T12:11:28.465Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/139-snapshot.json b/test-workflows/snapshots/139-snapshot.json new file mode 100644 index 0000000000..d717f2bfdb --- /dev/null +++ b/test-workflows/snapshots/139-snapshot.json @@ -0,0 +1,1081 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891410936, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify": [ + { + "startTime": 1676891410937, + "executionTime": 1041, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 7841209778338, + "title": "Product1676891410950", + "body_html": { + "object": true + }, + "vendor": "nodeqa", + "product_type": "", + "created_at": "2023-02-20T12:10:11+01:00", + "handle": "product1676891410950", + "updated_at": "2023-02-20T12:10:11+01:00", + "published_at": "2023-02-20T12:10:11+01:00", + "template_suffix": { + "object": true + }, + "status": "active", + "published_scope": "web", + "tags": "", + "admin_graphql_api_id": "gid://shopify/Product/7841209778338", + "variants": [ + "json array" + ], + "options": [ + "json array" + ], + "images": [ + "json array" + ], + "image": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify5": [ + { + "startTime": 1676891411978, + "executionTime": 1231, + "source": [ + { + "previousNode": "Shopify" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 5468425748642, + "admin_graphql_api_id": "gid://shopify/Order/5468425748642", + "app_id": 5034533, + "browser_ip": { + "object": true + }, + "buyer_accepts_marketing": false, + "cancel_reason": { + "object": true + }, + "cancelled_at": { + "object": true + }, + "cart_token": { + "object": true + }, + "checkout_id": { + "object": true + }, + "checkout_token": { + "object": true + }, + "closed_at": { + "object": true + }, + "confirmed": true, + "contact_email": "fake1676891411979@gmail.com", + "created_at": "2023-02-20T12:10:12+01:00", + "currency": "EUR", + "current_subtotal_price": "101.00", + "current_subtotal_price_set": { + "object": true + }, + "current_total_discounts": "0.00", + "current_total_discounts_set": { + "object": true + }, + "current_total_duties_set": { + "object": true + }, + "current_total_price": "101.00", + "current_total_price_set": { + "object": true + }, + "current_total_tax": "0.00", + "current_total_tax_set": { + "object": true + }, + "customer_locale": { + "object": true + }, + "device_id": { + "object": true + }, + "discount_codes": [ + "json array" + ], + "email": "fake1676891411979@gmail.com", + "estimated_taxes": false, + "financial_status": "paid", + "fulfillment_status": { + "object": true + }, + "gateway": "", + "landing_site": { + "object": true + }, + "landing_site_ref": { + "object": true + }, + "location_id": { + "object": true + }, + "name": "#1459", + "note": { + "object": true + }, + "note_attributes": [ + "json array" + ], + "number": 459, + "order_number": 1459, + "order_status_url": "https://nodeqa.myshopify.com/55417208994/orders/596116053fc1733011dffefadd82db64/authenticate?key=448c588adb1bc7e54b87b243e1c8ac74", + "original_total_duties_set": { + "object": true + }, + "payment_gateway_names": [ + "json array" + ], + "phone": { + "object": true + }, + "presentment_currency": "EUR", + "processed_at": "2023-02-20T12:10:12+01:00", + "processing_method": "", + "reference": { + "object": true + }, + "referring_site": { + "object": true + }, + "source_identifier": { + "object": true + }, + "source_name": "5034533", + "source_url": { + "object": true + }, + "subtotal_price": "101.00", + "subtotal_price_set": { + "object": true + }, + "tags": "test", + "tax_lines": [ + "json array" + ], + "taxes_included": false, + "test": true, + "token": "596116053fc1733011dffefadd82db64", + "total_discounts": "0.00", + "total_discounts_set": { + "object": true + }, + "total_line_items_price": "101.00", + "total_line_items_price_set": { + "object": true + }, + "total_outstanding": "101.00", + "total_price": "101.00", + "total_price_set": { + "object": true + }, + "total_price_usd": "108.02", + "total_shipping_price_set": { + "object": true + }, + "total_tax": "0.00", + "total_tax_set": { + "object": true + }, + "total_tip_received": "0.00", + "total_weight": 0, + "updated_at": "2023-02-20T12:10:12+01:00", + "user_id": { + "object": true + }, + "customer": { + "object": true + }, + "discount_applications": [ + "json array" + ], + "fulfillments": [ + "json array" + ], + "line_items": [ + "json array" + ], + "payment_terms": { + "object": true + }, + "refunds": [ + "json array" + ], + "shipping_lines": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify6": [ + { + "startTime": 1676891413209, + "executionTime": 610, + "source": [ + { + "previousNode": "Shopify5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 5468425748642, + "admin_graphql_api_id": "gid://shopify/Order/5468425748642", + "app_id": 5034533, + "browser_ip": { + "object": true + }, + "buyer_accepts_marketing": false, + "cancel_reason": { + "object": true + }, + "cancelled_at": { + "object": true + }, + "cart_token": { + "object": true + }, + "checkout_id": { + "object": true + }, + "checkout_token": { + "object": true + }, + "closed_at": { + "object": true + }, + "confirmed": true, + "contact_email": "updatedfake1676891411979@gmail.com", + "created_at": "2023-02-20T12:10:12+01:00", + "currency": "EUR", + "current_subtotal_price": "101.00", + "current_subtotal_price_set": { + "object": true + }, + "current_total_discounts": "0.00", + "current_total_discounts_set": { + "object": true + }, + "current_total_duties_set": { + "object": true + }, + "current_total_price": "101.00", + "current_total_price_set": { + "object": true + }, + "current_total_tax": "0.00", + "current_total_tax_set": { + "object": true + }, + "customer_locale": { + "object": true + }, + "device_id": { + "object": true + }, + "discount_codes": [ + "json array" + ], + "email": "updatedfake1676891411979@gmail.com", + "estimated_taxes": false, + "financial_status": "paid", + "fulfillment_status": { + "object": true + }, + "gateway": "", + "landing_site": { + "object": true + }, + "landing_site_ref": { + "object": true + }, + "location_id": { + "object": true + }, + "name": "#1459", + "note": { + "object": true + }, + "note_attributes": [ + "json array" + ], + "number": 459, + "order_number": 1459, + "order_status_url": "https://nodeqa.myshopify.com/55417208994/orders/596116053fc1733011dffefadd82db64/authenticate?key=448c588adb1bc7e54b87b243e1c8ac74", + "original_total_duties_set": { + "object": true + }, + "payment_gateway_names": [ + "json array" + ], + "phone": { + "object": true + }, + "presentment_currency": "EUR", + "processed_at": "2023-02-20T12:10:12+01:00", + "processing_method": "", + "reference": { + "object": true + }, + "referring_site": { + "object": true + }, + "source_identifier": { + "object": true + }, + "source_name": "5034533", + "source_url": { + "object": true + }, + "subtotal_price": "101.00", + "subtotal_price_set": { + "object": true + }, + "tags": "test", + "tax_lines": [ + "json array" + ], + "taxes_included": false, + "test": true, + "token": "596116053fc1733011dffefadd82db64", + "total_discounts": "0.00", + "total_discounts_set": { + "object": true + }, + "total_line_items_price": "101.00", + "total_line_items_price_set": { + "object": true + }, + "total_outstanding": "101.00", + "total_price": "101.00", + "total_price_set": { + "object": true + }, + "total_price_usd": "108.02", + "total_shipping_price_set": { + "object": true + }, + "total_tax": "0.00", + "total_tax_set": { + "object": true + }, + "total_tip_received": "0.00", + "total_weight": 0, + "updated_at": "2023-02-20T12:10:13+01:00", + "user_id": { + "object": true + }, + "customer": { + "object": true + }, + "discount_applications": [ + "json array" + ], + "fulfillments": [ + "json array" + ], + "line_items": [ + "json array" + ], + "payment_terms": { + "object": true + }, + "refunds": [ + "json array" + ], + "shipping_lines": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify7": [ + { + "startTime": 1676891413820, + "executionTime": 526, + "source": [ + { + "previousNode": "Shopify6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 5468425748642, + "admin_graphql_api_id": "gid://shopify/Order/5468425748642", + "app_id": 5034533, + "browser_ip": { + "object": true + }, + "buyer_accepts_marketing": false, + "cancel_reason": { + "object": true + }, + "cancelled_at": { + "object": true + }, + "cart_token": { + "object": true + }, + "checkout_id": { + "object": true + }, + "checkout_token": { + "object": true + }, + "closed_at": { + "object": true + }, + "confirmed": true, + "contact_email": "updatedfake1676891411979@gmail.com", + "created_at": "2023-02-20T12:10:12+01:00", + "currency": "EUR", + "current_subtotal_price": "101.00", + "current_subtotal_price_set": { + "object": true + }, + "current_total_discounts": "0.00", + "current_total_discounts_set": { + "object": true + }, + "current_total_duties_set": { + "object": true + }, + "current_total_price": "101.00", + "current_total_price_set": { + "object": true + }, + "current_total_tax": "0.00", + "current_total_tax_set": { + "object": true + }, + "customer_locale": { + "object": true + }, + "device_id": { + "object": true + }, + "discount_codes": [ + "json array" + ], + "email": "updatedfake1676891411979@gmail.com", + "estimated_taxes": false, + "financial_status": "paid", + "fulfillment_status": { + "object": true + }, + "gateway": "", + "landing_site": { + "object": true + }, + "landing_site_ref": { + "object": true + }, + "location_id": { + "object": true + }, + "name": "#1459", + "note": { + "object": true + }, + "note_attributes": [ + "json array" + ], + "number": 459, + "order_number": 1459, + "order_status_url": "https://nodeqa.myshopify.com/55417208994/orders/596116053fc1733011dffefadd82db64/authenticate?key=448c588adb1bc7e54b87b243e1c8ac74", + "original_total_duties_set": { + "object": true + }, + "payment_gateway_names": [ + "json array" + ], + "phone": { + "object": true + }, + "presentment_currency": "EUR", + "processed_at": "2023-02-20T12:10:12+01:00", + "processing_method": "", + "reference": { + "object": true + }, + "referring_site": { + "object": true + }, + "source_identifier": { + "object": true + }, + "source_name": "5034533", + "source_url": { + "object": true + }, + "subtotal_price": "101.00", + "subtotal_price_set": { + "object": true + }, + "tags": "test", + "tax_lines": [ + "json array" + ], + "taxes_included": false, + "test": true, + "token": "596116053fc1733011dffefadd82db64", + "total_discounts": "0.00", + "total_discounts_set": { + "object": true + }, + "total_line_items_price": "101.00", + "total_line_items_price_set": { + "object": true + }, + "total_outstanding": "101.00", + "total_price": "101.00", + "total_price_set": { + "object": true + }, + "total_price_usd": "108.02", + "total_shipping_price_set": { + "object": true + }, + "total_tax": "0.00", + "total_tax_set": { + "object": true + }, + "total_tip_received": "0.00", + "total_weight": 0, + "updated_at": "2023-02-20T12:10:13+01:00", + "user_id": { + "object": true + }, + "customer": { + "object": true + }, + "discount_applications": [ + "json array" + ], + "fulfillments": [ + "json array" + ], + "line_items": [ + "json array" + ], + "payment_terms": { + "object": true + }, + "refunds": [ + "json array" + ], + "shipping_lines": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify8": [ + { + "startTime": 1676891414347, + "executionTime": 328, + "source": [ + { + "previousNode": "Shopify7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 5468425748642, + "admin_graphql_api_id": "gid://shopify/Order/5468425748642", + "app_id": 5034533, + "browser_ip": { + "object": true + }, + "buyer_accepts_marketing": false, + "cancel_reason": { + "object": true + }, + "cancelled_at": { + "object": true + }, + "cart_token": { + "object": true + }, + "checkout_id": { + "object": true + }, + "checkout_token": { + "object": true + }, + "closed_at": { + "object": true + }, + "confirmed": true, + "contact_email": "updatedfake1676891411979@gmail.com", + "created_at": "2023-02-20T12:10:12+01:00", + "currency": "EUR", + "current_subtotal_price": "101.00", + "current_subtotal_price_set": { + "object": true + }, + "current_total_discounts": "0.00", + "current_total_discounts_set": { + "object": true + }, + "current_total_duties_set": { + "object": true + }, + "current_total_price": "101.00", + "current_total_price_set": { + "object": true + }, + "current_total_tax": "0.00", + "current_total_tax_set": { + "object": true + }, + "customer_locale": { + "object": true + }, + "device_id": { + "object": true + }, + "discount_codes": [ + "json array" + ], + "email": "updatedfake1676891411979@gmail.com", + "estimated_taxes": false, + "financial_status": "paid", + "fulfillment_status": { + "object": true + }, + "gateway": "", + "landing_site": { + "object": true + }, + "landing_site_ref": { + "object": true + }, + "location_id": { + "object": true + }, + "name": "#1459", + "note": { + "object": true + }, + "note_attributes": [ + "json array" + ], + "number": 459, + "order_number": 1459, + "order_status_url": "https://nodeqa.myshopify.com/55417208994/orders/596116053fc1733011dffefadd82db64/authenticate?key=448c588adb1bc7e54b87b243e1c8ac74", + "original_total_duties_set": { + "object": true + }, + "payment_gateway_names": [ + "json array" + ], + "phone": { + "object": true + }, + "presentment_currency": "EUR", + "processed_at": "2023-02-20T12:10:12+01:00", + "processing_method": "", + "reference": { + "object": true + }, + "referring_site": { + "object": true + }, + "source_identifier": { + "object": true + }, + "source_name": "5034533", + "source_url": { + "object": true + }, + "subtotal_price": "101.00", + "subtotal_price_set": { + "object": true + }, + "tags": "test", + "tax_lines": [ + "json array" + ], + "taxes_included": false, + "test": true, + "token": "596116053fc1733011dffefadd82db64", + "total_discounts": "0.00", + "total_discounts_set": { + "object": true + }, + "total_line_items_price": "101.00", + "total_line_items_price_set": { + "object": true + }, + "total_outstanding": "101.00", + "total_price": "101.00", + "total_price_set": { + "object": true + }, + "total_price_usd": "108.02", + "total_shipping_price_set": { + "object": true + }, + "total_tax": "0.00", + "total_tax_set": { + "object": true + }, + "total_tip_received": "0.00", + "total_weight": 0, + "updated_at": "2023-02-20T12:10:13+01:00", + "user_id": { + "object": true + }, + "customer": { + "object": true + }, + "discount_applications": [ + "json array" + ], + "fulfillments": [ + "json array" + ], + "line_items": [ + "json array" + ], + "payment_terms": { + "object": true + }, + "refunds": [ + "json array" + ], + "shipping_lines": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify9": [ + { + "startTime": 1676891414676, + "executionTime": 588, + "source": [ + { + "previousNode": "Shopify8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify1": [ + { + "startTime": 1676891415264, + "executionTime": 715, + "source": [ + { + "previousNode": "Shopify9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 7841209778338, + "title": "UpdatedProduct1676891410950", + "body_html": { + "object": true + }, + "vendor": "nodeqa", + "product_type": "", + "created_at": "2023-02-20T12:10:11+01:00", + "handle": "product1676891410950", + "updated_at": "2023-02-20T12:10:15+01:00", + "published_at": "2023-02-20T12:10:11+01:00", + "template_suffix": { + "object": true + }, + "status": "active", + "published_scope": "web", + "tags": "", + "admin_graphql_api_id": "gid://shopify/Product/7841209778338", + "variants": [ + "json array" + ], + "options": [ + "json array" + ], + "images": [ + "json array" + ], + "image": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify2": [ + { + "startTime": 1676891415979, + "executionTime": 355, + "source": [ + { + "previousNode": "Shopify1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 7841209778338, + "title": "UpdatedProduct1676891410950", + "body_html": { + "object": true + }, + "vendor": "nodeqa", + "product_type": "", + "created_at": "2023-02-20T12:10:11+01:00", + "handle": "product1676891410950", + "updated_at": "2023-02-20T12:10:15+01:00", + "published_at": "2023-02-20T12:10:11+01:00", + "template_suffix": { + "object": true + }, + "status": "active", + "published_scope": "web", + "tags": "", + "admin_graphql_api_id": "gid://shopify/Product/7841209778338", + "variants": [ + "json array" + ], + "options": [ + "json array" + ], + "images": [ + "json array" + ], + "image": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify3": [ + { + "startTime": 1676891416334, + "executionTime": 319, + "source": [ + { + "previousNode": "Shopify2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 6940369715362, + "title": "Beanie", + "body_html": { + "object": true + }, + "vendor": "nodeqa", + "product_type": "Accessories", + "created_at": "2021-07-19T18:05:28+01:00", + "handle": "beanie", + "updated_at": "2021-08-31T19:36:01+01:00", + "published_at": "2021-07-19T18:05:28+01:00", + "template_suffix": { + "object": true + }, + "status": "active", + "published_scope": "web", + "tags": "", + "admin_graphql_api_id": "gid://shopify/Product/6940369715362", + "variants": [ + "json array" + ], + "options": [ + "json array" + ], + "images": [ + "json array" + ], + "image": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Shopify4": [ + { + "startTime": 1676891416653, + "executionTime": 939, + "source": [ + { + "previousNode": "Shopify3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Shopify4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:10.928Z", + "stoppedAt": "2023-02-20T11:10:17.592Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/140-snapshot.json b/test-workflows/snapshots/140-snapshot.json new file mode 100644 index 0000000000..86625753cb --- /dev/null +++ b/test-workflows/snapshots/140-snapshot.json @@ -0,0 +1,73 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994520, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailgun": [ + { + "startTime": 1747343994520, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 689, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "<20250515211955.750e4c368fa24e88@sandbox9d3ed7f14628495f83c01d31dbc98ce4.mailgun.org>", + "message": "Queued. Thank you." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Mailgun" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.520Z", + "stoppedAt": "2025-05-15T21:19:55.209Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/143-snapshot.json b/test-workflows/snapshots/143-snapshot.json new file mode 100644 index 0000000000..086917dd30 --- /dev/null +++ b/test-workflows/snapshots/143-snapshot.json @@ -0,0 +1,278 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1738078145786, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clearbit2": [ + { + "hints": [], + "startTime": 1738078145786, + "executionTime": 523, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "f949b35a-6158-41c7-8b50-dc2c238cfbf3", + "name": { + "object": true + }, + "email": "jan@n8n.io", + "location": "Berlin, Berlin, DE", + "timeZone": "Europe/Berlin", + "utcOffset": 1, + "geo": { + "object": true + }, + "bio": { + "object": true + }, + "site": { + "object": true + }, + "avatar": "https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/f949b35a-6158-41c7-8b50-dc2c238cfbf3", + "employment": { + "object": true + }, + "facebook": { + "object": true + }, + "github": { + "object": true + }, + "twitter": { + "object": true + }, + "linkedin": { + "object": true + }, + "googleplus": { + "object": true + }, + "gravatar": { + "object": true + }, + "fuzzy": false, + "emailProvider": false, + "indexedAt": "2025-01-16T15:13:36.503Z", + "phone": { + "object": true + }, + "inactiveAt": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clearbit": [ + { + "hints": [], + "startTime": 1738078146310, + "executionTime": 530, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "546ba3f6-a6b7-41a1-aed8-4f9bba4119e8", + "name": "n8n", + "legalName": { + "object": true + }, + "domain": "n8n.io", + "domainAliases": [ + "json array" + ], + "site": { + "object": true + }, + "category": { + "object": true + }, + "tags": [ + "json array" + ], + "description": "n8n.io is a leading low-code automation tool that connects anything to everything through its open, fair code model, enabling users to build multi-step workflows with ease.", + "foundedYear": 2019, + "location": "Borsigstraße 27, 10115 Berlin, Germany", + "timeZone": "Europe/Berlin", + "utcOffset": 1, + "geo": { + "object": true + }, + "logo": "https://logo.clearbit.com/n8n.io", + "facebook": { + "object": true + }, + "linkedin": { + "object": true + }, + "twitter": { + "object": true + }, + "crunchbase": { + "object": true + }, + "emailProvider": false, + "type": "private", + "ticker": { + "object": true + }, + "identifiers": { + "object": true + }, + "phone": { + "object": true + }, + "metrics": { + "object": true + }, + "indexedAt": "2025-01-02T01:00:13.309Z", + "tech": [ + "json array" + ], + "techCategories": [ + "json array" + ], + "parent": { + "object": true + }, + "ultimateParent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clearbit1": [ + { + "hints": [], + "startTime": 1738078146840, + "executionTime": 262, + "source": [ + { + "previousNode": "Clearbit" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "Nielsen Norman Group", + "domain": "nngroup.com", + "logo": "https://logo.clearbit.com/nngroup.com" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "name": "Новости НН.ру", + "domain": "nn.ru", + "logo": "https://logo.clearbit.com/nn.ru" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "name": "NNY360", + "domain": "nny360.com", + "logo": "https://logo.clearbit.com/nny360.com" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "name": "City of Newport News, VA - Government", + "domain": "nnva.gov", + "logo": "https://logo.clearbit.com/nnva.gov" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "name": "NNNOW", + "domain": "nnnow.com", + "logo": "https://logo.clearbit.com/nnnow.com" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Clearbit1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-01-28T15:29:05.785Z", + "stoppedAt": "2025-01-28T15:29:07.103Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/145-snapshot.json b/test-workflows/snapshots/145-snapshot.json new file mode 100644 index 0000000000..142ed174a9 --- /dev/null +++ b/test-workflows/snapshots/145-snapshot.json @@ -0,0 +1,105 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1706635217888, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Peekalink1": [ + { + "startTime": 1706635217888, + "executionTime": 1099, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "url": "https://example.com/", + "domain": "example.com", + "lastUpdated": "2024-01-28T02:10:25.125799Z", + "nextUpdate": "2024-02-04T02:10:25.123122Z", + "contentType": "html", + "mimeType": "text/html", + "size": 648, + "redirected": false, + "title": "Example Domain", + "description": "This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.", + "name": "EXAMPLE.COM", + "trackersDetected": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Peekalink": [ + { + "startTime": 1706635218987, + "executionTime": 285, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "isAvailable": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Peekalink" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-01-30T17:20:17.888Z", + "stoppedAt": "2024-01-30T17:20:19.272Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/146-snapshot.json b/test-workflows/snapshots/146-snapshot.json new file mode 100644 index 0000000000..c512f6112d --- /dev/null +++ b/test-workflows/snapshots/146-snapshot.json @@ -0,0 +1,198 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891412800, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1676891412801, + "executionTime": 35, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "temperature": 40.4032385941659, + "location": "n8n", + "time": "2023-02-20T11:10:12.835Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "TimescaleDB": [ + { + "startTime": 1676891412836, + "executionTime": 177, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "time": "2023-02-20T11:10:12.835Z", + "location": "n8n", + "temperature": 40.4032385941659 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "TimescaleDB2": [ + { + "startTime": 1676891413014, + "executionTime": 178, + "source": [ + { + "previousNode": "TimescaleDB" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "time": "2023-02-20T11:10:12.835Z", + "location": "n8n", + "temperature": 40.4032385941659 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1676891413193, + "executionTime": 1, + "source": [ + { + "previousNode": "TimescaleDB2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "time": "2023-02-20T11:10:12.835Z", + "location": "updatedn8n", + "temperature": 40.4032385941659 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "TimescaleDB1": [ + { + "startTime": 1676891413195, + "executionTime": 192, + "source": [ + { + "previousNode": "Set1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "time": "2023-02-20T11:10:12.835Z", + "location": "updatedn8n", + "temperature": "40.4032385941659" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "TimescaleDB3": [ + { + "startTime": 1676891413387, + "executionTime": 157, + "source": [ + { + "previousNode": "TimescaleDB1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "TimescaleDB3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:12.798Z", + "stoppedAt": "2023-02-20T11:10:13.544Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/147-snapshot.json b/test-workflows/snapshots/147-snapshot.json new file mode 100644 index 0000000000..27e044ccc6 --- /dev/null +++ b/test-workflows/snapshots/147-snapshot.json @@ -0,0 +1,613 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1683532113975, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop": [ + { + "startTime": 1683532113976, + "executionTime": 482, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tfa": { + "object": true + }, + "files": { + "object": true + }, + "_id": 618756, + "pro": false, + "name": "nodeqa", + "fullName": "nodeqa", + "email": "nodeqa@n8n.io", + "groups": [ + "json array" + ], + "lastAction": "2023-05-08T02:25:37.144Z", + "lastVisit": "2023-05-08T02:23:04.375Z", + "registered": "2021-03-24T08:38:18.892Z", + "lastUpdate": "2023-05-08T02:25:37.144Z", + "config": { + "object": true + }, + "avatar": "", + "password": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop1": [ + { + "startTime": 1683532114459, + "executionTime": 258, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Collection1683532114491", + "description": "", + "user": { + "object": true + }, + "public": false, + "count": 0, + "cover": [ + "json array" + ], + "expanded": true, + "creatorRef": 618756, + "lastAction": "2023-05-08T07:48:34.585Z", + "created": "2023-05-08T07:48:34.586Z", + "lastUpdate": "2023-05-08T07:48:34.586Z", + "_id": 34146645, + "sort": 34146645, + "slug": "collection1683532114491", + "__v": 0, + "access": { + "object": true + }, + "author": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop2": [ + { + "startTime": 1683532114718, + "executionTime": 136, + "source": [ + { + "previousNode": "Raindrop1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "view": "list", + "_id": 34146645, + "title": "Collection1683532114491", + "description": "", + "user": { + "object": true + }, + "public": false, + "count": 0, + "cover": [ + "json array" + ], + "expanded": true, + "creatorRef": { + "object": true + }, + "lastAction": "2023-05-08T07:48:34.585Z", + "created": "2023-05-08T07:48:34.586Z", + "lastUpdate": "2023-05-08T07:48:34.586Z", + "sort": 34146645, + "slug": "collection1683532114491", + "access": { + "object": true + }, + "author": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop3": [ + { + "startTime": 1683532114854, + "executionTime": 165, + "source": [ + { + "previousNode": "Raindrop2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": 34146645, + "title": "UpdatedCollection1683532114491", + "description": "", + "slug": "updated-collection1683532114491", + "user": { + "object": true + }, + "creatorRef": { + "object": true + }, + "public": false, + "view": "list", + "count": 0, + "cover": [ + "json array" + ], + "sort": 34146645, + "expanded": true, + "lastAction": "2023-05-08T07:48:34.585Z", + "created": "2023-05-08T07:48:34.586Z", + "lastUpdate": "2023-05-08T07:48:34.983Z", + "access": { + "object": true + }, + "author": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop4": [ + { + "startTime": 1683532115020, + "executionTime": 137, + "source": [ + { + "previousNode": "Raindrop3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": 34146645, + "title": "UpdatedCollection1683532114491", + "description": "", + "user": { + "object": true + }, + "public": false, + "count": 0, + "cover": [ + "json array" + ], + "expanded": true, + "creatorRef": { + "object": true + }, + "lastAction": "2023-05-08T07:48:34.585Z", + "created": "2023-05-08T07:48:34.586Z", + "lastUpdate": "2023-05-08T07:48:34.983Z", + "sort": 34146645, + "slug": "updated-collection1683532114491", + "view": "list", + "access": { + "object": true + }, + "author": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop6": [ + { + "startTime": 1683532115158, + "executionTime": 191, + "source": [ + { + "previousNode": "Raindrop4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "link": "https://n8n.io/", + "title": "Bookmark1683532115161", + "excerpt": "", + "note": "", + "type": "link", + "user": { + "object": true + }, + "cover": "", + "tags": [ + "json array" + ], + "removed": false, + "collection": { + "object": true + }, + "media": [ + "json array" + ], + "created": "2023-05-08T07:48:35.288Z", + "lastUpdate": "2023-05-08T07:48:35.288Z", + "domain": "n8n.io", + "_id": 569394745, + "creatorRef": 618756, + "sort": 569394745, + "__v": 0, + "collectionId": 34146645 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop7": [ + { + "startTime": 1683532115349, + "executionTime": 132, + "source": [ + { + "previousNode": "Raindrop6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": 569394745, + "link": "https://n8n.io/", + "title": "Bookmark1683532115161", + "excerpt": "", + "note": "", + "type": "link", + "user": { + "object": true + }, + "cover": "", + "tags": [ + "json array" + ], + "removed": false, + "collection": { + "object": true + }, + "media": [ + "json array" + ], + "created": "2023-05-08T07:48:35.288Z", + "lastUpdate": "2023-05-08T07:48:35.288Z", + "domain": "n8n.io", + "creatorRef": { + "object": true + }, + "sort": 569394745, + "highlights": [ + "json array" + ], + "collectionId": 34146645 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop8": [ + { + "startTime": 1683532115482, + "executionTime": 175, + "source": [ + { + "previousNode": "Raindrop7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": 569394745, + "link": "https://n8n.io/", + "domain": "n8n.io", + "title": "UpdatedBookmark1683532115161", + "excerpt": "", + "note": "", + "type": "link", + "user": { + "object": true + }, + "creatorRef": { + "object": true + }, + "cover": "", + "media": [ + "json array" + ], + "tags": [ + "json array" + ], + "highlights": [ + "json array" + ], + "removed": false, + "sort": 569394745, + "created": "2023-05-08T07:48:35.288Z", + "lastUpdate": "2023-05-08T07:48:35.624Z", + "collection": { + "object": true + }, + "__v": 1, + "collectionId": 34146645 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop9": [ + { + "startTime": 1683532115658, + "executionTime": 143, + "source": [ + { + "previousNode": "Raindrop8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": 569394745, + "link": "https://n8n.io/", + "title": "UpdatedBookmark1683532115161", + "excerpt": "", + "note": "", + "type": "link", + "user": { + "object": true + }, + "cover": "", + "tags": [ + "json array" + ], + "removed": false, + "collection": { + "object": true + }, + "media": [ + "json array" + ], + "created": "2023-05-08T07:48:35.288Z", + "lastUpdate": "2023-05-08T07:48:35.624Z", + "domain": "n8n.io", + "creatorRef": { + "object": true + }, + "sort": 569394745, + "highlights": [ + "json array" + ], + "collectionId": 34146645 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop11": [ + { + "startTime": 1683532115802, + "executionTime": 272, + "source": [ + { + "previousNode": "Raindrop9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_id": "automation", + "count": 4 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop12": [ + { + "startTime": 1683532116075, + "executionTime": 153, + "source": [ + { + "previousNode": "Raindrop11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop10": [ + { + "startTime": 1683532116228, + "executionTime": 178, + "source": [ + { + "previousNode": "Raindrop12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Raindrop5": [ + { + "startTime": 1683532116406, + "executionTime": 227, + "source": [ + { + "previousNode": "Raindrop10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Raindrop5" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-05-08T07:48:33.974Z", + "stoppedAt": "2023-05-08T07:48:36.634Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/148-snapshot.json b/test-workflows/snapshots/148-snapshot.json new file mode 100644 index 0000000000..c59e62edad --- /dev/null +++ b/test-workflows/snapshots/148-snapshot.json @@ -0,0 +1,96 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891413308, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "DeepL": [ + { + "startTime": 1676891413309, + "executionTime": 601, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "detected_source_language": "EN", + "text": "n8n (ausgesprochen n-eight-n) hilft Ihnen, jede App mit einer API auf der Welt miteinander zu verbinden, um ihre Daten ohne eine einzige Zeile Code zu teilen und zu manipulieren. Es ist ein einfach zu bedienender, benutzerfreundlicher und hochgradig anpassbarer Dienst." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1676891413911, + "executionTime": 10, + "source": [ + { + "previousNode": "DeepL" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "detected_source_language": "EN", + "text": "n8n (ausgesprochen n-eight-n) hilft Ihnen, jede App mit einer API auf der Welt miteinander zu verbinden, um ihre Daten ohne eine einzige Zeile Code zu teilen und zu manipulieren. Es ist ein einfach zu bedienender, benutzerfreundlicher und hochgradig anpassbarer Dienst." + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:13.307Z", + "stoppedAt": "2023-02-20T11:10:13.921Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/15-snapshot.json b/test-workflows/snapshots/15-snapshot.json new file mode 100644 index 0000000000..8e0447d4fc --- /dev/null +++ b/test-workflows/snapshots/15-snapshot.json @@ -0,0 +1,644 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994529, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Dropbox8": [ + { + "startTime": 1747343994529, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1620, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Read Binary File": [ + { + "startTime": 1747343996149, + "executionIndex": 2, + "source": [ + { + "previousNode": "Dropbox8" + } + ], + "hints": [], + "executionTime": 6, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "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", + "directory": "/tmp", + "fileName": "n8n-logo.png", + "fileSize": "2.67 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 seconds": [ + { + "startTime": 1747343996155, + "executionIndex": 3, + "source": [ + { + "previousNode": "Read Binary File" + } + ], + "hints": [], + "executionTime": 803, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "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", + "directory": "/tmp", + "fileName": "n8n-logo.png", + "fileSize": "2.67 kB" + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Dropbox": [ + { + "startTime": 1747343996958, + "executionIndex": 4, + "source": [ + { + "previousNode": "Sleep 0.8 seconds" + } + ], + "hints": [], + "executionTime": 1679, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "testFile", + "path_lower": "/testfolder1747343995365/testfile", + "path_display": "/testFolder1747343995365/testFile", + "id": "id:2Tke52G4OWEAAAAAAAAc-A", + "client_modified": "2025-05-15T21:19:58Z", + "server_modified": "2025-05-15T21:19:58Z", + "rev": "01635333a543eef0000000222408c10", + "size": 2675, + "is_downloadable": true, + "content_hash": "1fbea2b44830c71ca338c89a5e3a45585f74d9e15c19bfef69b19b38e9da99b9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 seconds1": [ + { + "startTime": 1747343998638, + "executionIndex": 5, + "source": [ + { + "previousNode": "Dropbox" + } + ], + "hints": [], + "executionTime": 801, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "testFile", + "path_lower": "/testfolder1747343995365/testfile", + "path_display": "/testFolder1747343995365/testFile", + "id": "id:2Tke52G4OWEAAAAAAAAc-A", + "client_modified": "2025-05-15T21:19:58Z", + "server_modified": "2025-05-15T21:19:58Z", + "rev": "01635333a543eef0000000222408c10", + "size": 2675, + "is_downloadable": true, + "content_hash": "1fbea2b44830c71ca338c89a5e3a45585f74d9e15c19bfef69b19b38e9da99b9" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Dropbox2": [ + { + "startTime": 1747343999439, + "executionIndex": 6, + "source": [ + { + "previousNode": "Sleep 0.8 seconds1" + } + ], + "hints": [], + "executionTime": 3055, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Dropbox3": [ + { + "startTime": 1747344002494, + "executionIndex": 7, + "source": [ + { + "previousNode": "Dropbox2" + } + ], + "hints": [], + "executionTime": 2030, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Dropbox5": [ + { + "startTime": 1747344004524, + "executionIndex": 8, + "source": [ + { + "previousNode": "Dropbox2" + } + ], + "hints": [], + "executionTime": 1541, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "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", + "directory": "/testFolder1747343995365", + "fileName": "moveTestFile1747344000304", + "fileSize": "2.67 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 seconds2": [ + { + "startTime": 1747344006065, + "executionIndex": 9, + "source": [ + { + "previousNode": "Dropbox3" + } + ], + "hints": [], + "executionTime": 806, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.8 seconds3": [ + { + "startTime": 1747344006871, + "executionIndex": 10, + "source": [ + { + "previousNode": "Dropbox5" + } + ], + "hints": [], + "executionTime": 807, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "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", + "directory": "/testFolder1747343995365", + "fileName": "moveTestFile1747344000304", + "fileSize": "2.67 kB" + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Dropbox4": [ + { + "startTime": 1747344007678, + "executionIndex": 11, + "source": [ + { + "previousNode": "Sleep 0.8 seconds2" + } + ], + "hints": [], + "executionTime": 1769, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Dropbox6": [ + { + "startTime": 1747344009447, + "executionIndex": 12, + "source": [ + { + "previousNode": "Sleep 0.8 seconds3" + } + ], + "hints": [], + "executionTime": 1815, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 seconds6": [ + { + "startTime": 1747344011262, + "executionIndex": 13, + "source": [ + { + "previousNode": "Dropbox6" + } + ], + "hints": [], + "executionTime": 803, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Dropbox10": [ + { + "startTime": 1747344012065, + "executionIndex": 14, + "source": [ + { + "previousNode": "Sleep 0.8 seconds6" + } + ], + "hints": [], + "executionTime": 3083, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 seconds5": [ + { + "startTime": 1747344015149, + "executionIndex": 15, + "source": [ + { + "previousNode": "Dropbox10" + } + ], + "hints": [], + "executionTime": 805, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Dropbox9": [ + { + "startTime": 1747344015954, + "executionIndex": 16, + "source": [ + { + "previousNode": "Sleep 0.8 seconds5" + } + ], + "hints": [], + "executionTime": 1070, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": [ + { + "item": 0, + "input": 0 + } + ] + } + ] + ] + } + } + ], + "Sleep 0.8 seconds4": [ + { + "startTime": 1747344017024, + "executionIndex": 17, + "source": [ + { + "previousNode": "Dropbox9" + } + ], + "hints": [], + "executionTime": 806, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Dropbox11": [ + { + "startTime": 1747344017830, + "executionIndex": 18, + "source": [ + { + "previousNode": "Sleep 0.8 seconds4" + } + ], + "hints": [], + "executionTime": 1794, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Dropbox11" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.529Z", + "stoppedAt": "2025-05-15T21:20:19.624Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/150-snapshot.json b/test-workflows/snapshots/150-snapshot.json new file mode 100644 index 0000000000..b0239c7278 --- /dev/null +++ b/test-workflows/snapshots/150-snapshot.json @@ -0,0 +1,184 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994529, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PostHog": [ + { + "startTime": 1747343994529, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 175, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PostHog1": [ + { + "startTime": 1747343994704, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 79, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PostHog2": [ + { + "startTime": 1747343994783, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 75, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PostHog3": [ + { + "startTime": 1747343994858, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 82, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PostHog4": [ + { + "startTime": 1747343994940, + "executionIndex": 5, + "source": [ + { + "previousNode": "PostHog3" + } + ], + "hints": [], + "executionTime": 67, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "PostHog4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.529Z", + "stoppedAt": "2025-05-15T21:19:55.007Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/151-snapshot.json b/test-workflows/snapshots/151-snapshot.json new file mode 100644 index 0000000000..1c2a4ae4d3 --- /dev/null +++ b/test-workflows/snapshots/151-snapshot.json @@ -0,0 +1,799 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331888599, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise5": [ + { + "startTime": 1710331888600, + "executionTime": 341, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 700007874, + "business": { + "object": true + }, + "profile": 16154361, + "accountHolderName": "Node QA", + "currency": "EUR", + "country": "NL", + "type": "iban", + "details": { + "object": true + }, + "user": 5681537, + "active": true, + "ownedByCustomer": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise4": [ + { + "startTime": 1710331888941, + "executionTime": 384, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 16154361, + "type": "personal", + "details": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise3": [ + { + "startTime": 1710331889325, + "executionTime": 240, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "rate": 1.09309, + "source": "EUR", + "target": "USD", + "time": "2024-03-12T00:00:00+0000" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise2": [ + { + "startTime": 1710331889565, + "executionTime": 249, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "accountHolder": { + "object": true + }, + "issuer": { + "object": true + }, + "bankDetails": [ + "json array" + ], + "transactions": [ + "json array" + ], + "startOfStatementBalance": { + "object": true + }, + "endOfStatementBalance": { + "object": true + }, + "endOfStatementUnrealisedGainLoss": { + "object": true + }, + "balanceAssetConfiguration": { + "object": true + }, + "query": { + "object": true + }, + "request": { + "object": true + }, + "feeSummary": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise6": [ + { + "startTime": 1710331889814, + "executionTime": 751, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "sourceAmount": 2, + "guaranteedTargetAmountAllowed": false, + "targetAmountAllowed": true, + "paymentOptions": [ + "json array" + ], + "notices": [ + "json array" + ], + "transferFlowConfig": { + "object": true + }, + "rateTimestamp": "2024-03-13T12:11:29Z", + "clientId": "transferwise-personal-tokens", + "expirationTime": "2024-03-13T12:41:29Z", + "id": "9d0519da-b525-4d4d-92c2-d9ca1df535ad", + "type": "REGULAR", + "createdTime": "2024-03-13T12:11:29Z", + "user": 5681537, + "rateType": "FIXED", + "rateExpirationTime": "2024-04-12T12:11:29Z", + "payOut": "BANK_TRANSFER", + "guaranteedTargetAmount": false, + "providedAmountType": "SOURCE", + "status": "PENDING", + "profile": 16154361, + "rate": 1, + "sourceCurrency": "EUR", + "targetCurrency": "EUR", + "payInCountry": "GB", + "funding": "POST" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise14": [ + { + "startTime": 1710331890565, + "executionTime": 513, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "sourceAmount": 2, + "guaranteedTargetAmountAllowed": false, + "targetAmountAllowed": true, + "paymentOptions": [ + "json array" + ], + "notices": [ + "json array" + ], + "transferFlowConfig": { + "object": true + }, + "rateTimestamp": "2024-03-13T12:11:30Z", + "clientId": "transferwise-personal-tokens", + "expirationTime": "2024-03-13T12:41:30Z", + "id": "f4ac8d5d-2d97-4a7f-a695-c6709e1a930d", + "type": "REGULAR", + "createdTime": "2024-03-13T12:11:30Z", + "user": 5681537, + "rateType": "FIXED", + "rateExpirationTime": "2024-04-12T12:11:30Z", + "payOut": "BANK_TRANSFER", + "guaranteedTargetAmount": false, + "providedAmountType": "SOURCE", + "status": "PENDING", + "profile": 16154361, + "rate": 1, + "sourceCurrency": "EUR", + "targetCurrency": "EUR", + "payInCountry": "GB", + "funding": "POST" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise12": [ + { + "startTime": 1710331891078, + "executionTime": 304, + "source": [ + { + "previousNode": "Wise4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 16154361, + "type": "personal", + "details": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 16154362, + "type": "business", + "details": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise": [ + { + "startTime": 1710331891382, + "executionTime": 282, + "source": [ + { + "previousNode": "Wise2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 23302, + "profileId": 16154361, + "recipientId": 147784111, + "creationTime": "2021-03-24T14:32:25.979Z", + "modificationTime": "2021-03-24T14:32:25.979Z", + "active": true, + "eligible": true, + "balances": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise7": [ + { + "startTime": 1710331891664, + "executionTime": 471, + "source": [ + { + "previousNode": "Wise6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "sourceAmount": 2, + "guaranteedTargetAmountAllowed": false, + "targetAmountAllowed": true, + "paymentOptions": [ + "json array" + ], + "notices": [ + "json array" + ], + "transferFlowConfig": { + "object": true + }, + "rateTimestamp": "2024-03-13T12:11:29Z", + "clientId": "transferwise-personal-tokens", + "expirationTime": "2024-03-13T12:41:29Z", + "id": "9d0519da-b525-4d4d-92c2-d9ca1df535ad", + "type": "REGULAR", + "createdTime": "2024-03-13T12:11:29Z", + "user": 5681537, + "rateType": "FIXED", + "rateExpirationTime": "2024-04-12T12:11:29Z", + "payOut": "BANK_TRANSFER", + "guaranteedTargetAmount": false, + "providedAmountType": "SOURCE", + "payInCountry": "GB", + "funding": "POST", + "status": "PENDING", + "profile": 16154361, + "rate": 1, + "sourceCurrency": "EUR", + "targetCurrency": "EUR" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise16": [ + { + "startTime": 1710331892136, + "executionTime": 2032, + "source": [ + { + "previousNode": "Wise14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 53112532, + "user": 5681537, + "targetAccount": 700007874, + "sourceAccount": { + "object": true + }, + "quote": { + "object": true + }, + "quoteUuid": "f4ac8d5d-2d97-4a7f-a695-c6709e1a930d", + "status": "incoming_payment_waiting", + "reference": "", + "rate": 1, + "created": "2024-03-13 12:11:34", + "business": { + "object": true + }, + "transferRequest": { + "object": true + }, + "details": { + "object": true + }, + "hasActiveIssues": false, + "sourceCurrency": "EUR", + "sourceValue": 1.37, + "targetCurrency": "EUR", + "targetValue": 1.37, + "customerTransactionId": "6c67d18c-6639-4158-b8a6-325858c7d155" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise1": [ + { + "startTime": 1710331894168, + "executionTime": 136, + "source": [ + { + "previousNode": "Wise" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "code": "AED", + "hasBankDetails": false, + "payInAllowed": false, + "sampleBankDetails": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise8": [ + { + "startTime": 1710331894305, + "executionTime": 1875, + "source": [ + { + "previousNode": "Wise7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 53112534, + "user": 5681537, + "targetAccount": 700007874, + "sourceAccount": { + "object": true + }, + "quote": { + "object": true + }, + "quoteUuid": "9d0519da-b525-4d4d-92c2-d9ca1df535ad", + "status": "incoming_payment_waiting", + "reference": "", + "rate": 1, + "created": "2024-03-13 12:11:36", + "business": { + "object": true + }, + "transferRequest": { + "object": true + }, + "details": { + "object": true + }, + "hasActiveIssues": false, + "sourceCurrency": "EUR", + "sourceValue": 1.37, + "targetCurrency": "EUR", + "targetValue": 1.37, + "customerTransactionId": "f162e8de-8d10-4bc9-88ef-4840fd22b6a5" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise15": [ + { + "startTime": 1710331896180, + "executionTime": 258, + "source": [ + { + "previousNode": "Wise16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 53112532, + "user": 5681537, + "targetAccount": 700007874, + "sourceAccount": { + "object": true + }, + "quote": { + "object": true + }, + "quoteUuid": "f4ac8d5d-2d97-4a7f-a695-c6709e1a930d", + "status": "cancelled", + "reference": "", + "rate": 1, + "created": "2024-03-13 12:11:34", + "business": { + "object": true + }, + "transferRequest": { + "object": true + }, + "details": { + "object": true + }, + "hasActiveIssues": false, + "sourceCurrency": "EUR", + "sourceValue": 1.37, + "targetCurrency": "EUR", + "targetValue": 1.37, + "customerTransactionId": "6c67d18c-6639-4158-b8a6-325858c7d155" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise9": [ + { + "startTime": 1710331896438, + "executionTime": 250, + "source": [ + { + "previousNode": "Wise8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 53112534, + "user": 5681537, + "targetAccount": 700007874, + "sourceAccount": { + "object": true + }, + "quote": { + "object": true + }, + "quoteUuid": "9d0519da-b525-4d4d-92c2-d9ca1df535ad", + "status": "incoming_payment_waiting", + "reference": "", + "rate": 1, + "created": "2024-03-13 12:11:36", + "business": { + "object": true + }, + "transferRequest": { + "object": true + }, + "details": { + "object": true + }, + "hasActiveIssues": false, + "sourceCurrency": "EUR", + "sourceValue": 1.37, + "targetCurrency": "EUR", + "targetValue": 1.37, + "customerTransactionId": "f162e8de-8d10-4bc9-88ef-4840fd22b6a5" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise10": [ + { + "startTime": 1710331896689, + "executionTime": 355, + "source": [ + { + "previousNode": "Wise9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 52915297, + "user": 5681537, + "targetAccount": 147784111, + "sourceAccount": { + "object": true + }, + "quote": { + "object": true + }, + "quoteUuid": "2eabfb55-3b8f-4d8d-82dc-b92db67d5117", + "status": "cancelled", + "reference": "", + "rate": 1, + "created": "2024-02-13 02:08:50", + "business": { + "object": true + }, + "transferRequest": { + "object": true + }, + "details": { + "object": true + }, + "hasActiveIssues": false, + "sourceCurrency": "EUR", + "sourceValue": 2, + "targetCurrency": "EUR", + "targetValue": 2, + "customerTransactionId": "f0431a1e-fe5f-456a-a254-4c7cc774545d" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wise13": [ + { + "startTime": 1710331897044, + "executionTime": 0, + "source": [ + { + "previousNode": "Wise10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 52915297, + "user": 5681537, + "targetAccount": 147784111, + "sourceAccount": { + "object": true + }, + "quote": { + "object": true + }, + "quoteUuid": "2eabfb55-3b8f-4d8d-82dc-b92db67d5117", + "status": "cancelled", + "reference": "", + "rate": 1, + "created": "2024-02-13 02:08:50", + "business": { + "object": true + }, + "transferRequest": { + "object": true + }, + "details": { + "object": true + }, + "hasActiveIssues": false, + "sourceCurrency": "EUR", + "sourceValue": 2, + "targetCurrency": "EUR", + "targetValue": 2, + "customerTransactionId": "f0431a1e-fe5f-456a-a254-4c7cc774545d" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Wise13" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:28.599Z", + "stoppedAt": "2024-03-13T12:11:37.044Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/152-snapshot.json b/test-workflows/snapshots/152-snapshot.json new file mode 100644 index 0000000000..2baedf18ed --- /dev/null +++ b/test-workflows/snapshots/152-snapshot.json @@ -0,0 +1,171 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994528, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Comprehend": [ + { + "startTime": 1747343994528, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 535, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "en": 0.995190441608429 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Comprehend1": [ + { + "startTime": 1747343995063, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 441, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Sentiment": "POSITIVE", + "SentimentScore": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Comprehend2": [ + { + "startTime": 1747343995504, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 533, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "BeginOffset": 0, + "EndOffset": 3, + "Score": 0.4956623315811157, + "Text": "n8n", + "Type": "OTHER" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "BeginOffset": 18, + "EndOffset": 23, + "Score": 0.4929276704788208, + "Text": "eight", + "Type": "OTHER" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "BeginOffset": 53, + "EndOffset": 62, + "Score": 0.7383686304092407, + "Text": "every app", + "Type": "QUANTITY" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "BeginOffset": 147, + "EndOffset": 158, + "Score": 0.9422106146812439, + "Text": "single line", + "Type": "QUANTITY" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AWS Comprehend2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.528Z", + "stoppedAt": "2025-05-15T21:19:56.037Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/153-snapshot.json b/test-workflows/snapshots/153-snapshot.json new file mode 100644 index 0000000000..377e07d13b --- /dev/null +++ b/test-workflows/snapshots/153-snapshot.json @@ -0,0 +1,100 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994432, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Lambda": [ + { + "startTime": 1747343994433, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 493, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "Hello world!, this is n8n" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Lambda1": [ + { + "startTime": 1747343994926, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 296, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "Hello world!, this is nodeqa" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AWS Lambda1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.431Z", + "stoppedAt": "2025-05-15T21:19:55.222Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/154-snapshot.json b/test-workflows/snapshots/154-snapshot.json new file mode 100644 index 0000000000..ca074f3225 --- /dev/null +++ b/test-workflows/snapshots/154-snapshot.json @@ -0,0 +1,109 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994435, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343994435, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 14, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "binary": { + "data": { + "data": "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", + "mimeType": "image/png", + "fileExtension": "png", + "fileName": "n8n-logo.png" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Rekognition": [ + { + "startTime": 1747343994449, + "executionIndex": 2, + "source": [ + { + "previousNode": "Function" + } + ], + "hints": [], + "executionTime": 953, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "TextDetections": [ + "json array" + ], + "TextModelVersion": "3.0" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AWS Rekognition" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.434Z", + "stoppedAt": "2025-05-15T21:19:55.402Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/155-snapshot.json b/test-workflows/snapshots/155-snapshot.json new file mode 100644 index 0000000000..740fd25b16 --- /dev/null +++ b/test-workflows/snapshots/155-snapshot.json @@ -0,0 +1,523 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994451, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1747343994451, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 12, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "bucketName": "Bucket1747343994463" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S3": [ + { + "startTime": 1747343994463, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set" + } + ], + "hints": [], + "executionTime": 679, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S": [ + { + "startTime": 1747343995142, + "executionIndex": 3, + "source": [ + { + "previousNode": "AWS S3" + } + ], + "hints": [], + "executionTime": 399, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Name": "adi.testing", + "CreationDate": "2023-09-20T10:14:46.000Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1747343995541, + "executionIndex": 4, + "source": [ + { + "previousNode": "AWS S3" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "folderName": "Folder1747343995543" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747343995543, + "executionIndex": 5, + "source": [ + { + "previousNode": "AWS S" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "binary": { + "data": { + "data": "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", + "mimeType": "image/png", + "fileExtension": "png", + "fileName": "n8n-logo.png" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S8": [ + { + "startTime": 1747343995545, + "executionIndex": 6, + "source": [ + { + "previousNode": "Set1" + } + ], + "hints": [], + "executionTime": 881, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S2": [ + { + "startTime": 1747343996426, + "executionIndex": 7, + "source": [ + { + "previousNode": "Function" + } + ], + "hints": [], + "executionTime": 930, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S9": [ + { + "startTime": 1747343997356, + "executionIndex": 8, + "source": [ + { + "previousNode": "AWS S8" + } + ], + "hints": [], + "executionTime": 712, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Key": "Folder1747343995543/", + "LastModified": "2025-05-15T21:19:57.000Z", + "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"", + "ChecksumAlgorithm": "CRC64NVME", + "ChecksumType": "FULL_OBJECT", + "Size": "0", + "StorageClass": "STANDARD" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S4": [ + { + "startTime": 1747343998068, + "executionIndex": 9, + "source": [ + { + "previousNode": "AWS S2" + } + ], + "hints": [], + "executionTime": 714, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Key": "n8n-logo.png", + "LastModified": "2025-05-15T21:19:58.000Z", + "ETag": "\"174dbbfbcabb9dc0c2e82002e5ce289e\"", + "ChecksumAlgorithm": "CRC64NVME", + "ChecksumType": "FULL_OBJECT", + "Size": "2675", + "StorageClass": "STANDARD" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S10": [ + { + "startTime": 1747343998782, + "executionIndex": 10, + "source": [ + { + "previousNode": "AWS S9" + } + ], + "hints": [], + "executionTime": 1222, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "deleted": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S5": [ + { + "startTime": 1747344000004, + "executionIndex": 11, + "source": [ + { + "previousNode": "AWS S4" + } + ], + "hints": [], + "executionTime": 686, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Key": "n8n-logo.png", + "LastModified": "2025-05-15T21:19:58.000Z", + "ETag": "\"174dbbfbcabb9dc0c2e82002e5ce289e\"", + "ChecksumAlgorithm": "CRC64NVME", + "ChecksumType": "FULL_OBJECT", + "Size": "2675", + "StorageClass": "STANDARD" + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "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", + "fileName": "n8n-logo.png", + "fileSize": "2.67 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S6": [ + { + "startTime": 1747344000690, + "executionIndex": 12, + "source": [ + { + "previousNode": "AWS S5" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Key": "n8n-logo.png", + "LastModified": "2025-05-15T21:19:58.000Z", + "ETag": "\"174dbbfbcabb9dc0c2e82002e5ce289e\"", + "ChecksumAlgorithm": "CRC64NVME", + "ChecksumType": "FULL_OBJECT", + "Size": "2675", + "StorageClass": "STANDARD" + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "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", + "fileName": "n8n-logo.png", + "fileSize": "2.67 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S1": [ + { + "startTime": 1747344000690, + "executionIndex": 13, + "source": [ + { + "previousNode": "AWS S6" + } + ], + "hints": [], + "executionTime": 756, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Key": "n8n-logo.png", + "LastModified": "2025-05-15T21:19:58.000Z", + "ETag": "\"174dbbfbcabb9dc0c2e82002e5ce289e\"", + "ChecksumAlgorithm": "CRC64NVME", + "ChecksumType": "FULL_OBJECT", + "Size": "2675", + "StorageClass": "STANDARD" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S7": [ + { + "startTime": 1747344001446, + "executionIndex": 14, + "source": [ + { + "previousNode": "AWS S1" + } + ], + "hints": [], + "executionTime": 720, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS S31": [ + { + "startTime": 1747344002166, + "executionIndex": 15, + "source": [ + { + "previousNode": "AWS S7" + } + ], + "hints": [], + "executionTime": 525, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AWS S31" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.450Z", + "stoppedAt": "2025-05-15T21:20:02.691Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/156-snapshot.json b/test-workflows/snapshots/156-snapshot.json new file mode 100644 index 0000000000..d78e5e45d1 --- /dev/null +++ b/test-workflows/snapshots/156-snapshot.json @@ -0,0 +1,72 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994614, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS SNS": [ + { + "startTime": 1747343994614, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 524, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "MessageId": "b5fb53f6-51c2-58a7-94fd-33560d79f48c" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AWS SNS" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.614Z", + "stoppedAt": "2025-05-15T21:19:55.138Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/16-snapshot.json b/test-workflows/snapshots/16-snapshot.json new file mode 100644 index 0000000000..9c51fab1b8 --- /dev/null +++ b/test-workflows/snapshots/16-snapshot.json @@ -0,0 +1,132 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994612, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenWeatherMap": [ + { + "startTime": 1747343994612, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 145, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "coord": { + "object": true + }, + "weather": [ + "json array" + ], + "base": "stations", + "main": { + "object": true + }, + "visibility": 10000, + "wind": { + "object": true + }, + "clouds": { + "object": true + }, + "dt": 1747343894, + "sys": { + "object": true + }, + "timezone": 7200, + "id": 2950159, + "name": "Berlin", + "cod": 200 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenWeatherMap1": [ + { + "startTime": 1747343994757, + "executionIndex": 2, + "source": [ + { + "previousNode": "OpenWeatherMap" + } + ], + "hints": [], + "executionTime": 143, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "cod": "200", + "message": 0, + "cnt": 40, + "list": [ + "json array" + ], + "city": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "OpenWeatherMap1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.612Z", + "stoppedAt": "2025-05-15T21:19:54.900Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/161-snapshot.json b/test-workflows/snapshots/161-snapshot.json new file mode 100644 index 0000000000..ea8f6bd415 --- /dev/null +++ b/test-workflows/snapshots/161-snapshot.json @@ -0,0 +1,75 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994612, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vonage": [ + { + "startTime": 1747343994612, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 101, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "9", + "error-text": "Quota Exceeded - rejected", + "to": "010", + "messagePrice": "0.05000000" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Vonage" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.612Z", + "stoppedAt": "2025-05-15T21:19:54.713Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/162-snapshot.json b/test-workflows/snapshots/162-snapshot.json new file mode 100644 index 0000000000..5a6e575ecb --- /dev/null +++ b/test-workflows/snapshots/162-snapshot.json @@ -0,0 +1,105 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994616, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS SQS1": [ + { + "startTime": 1747343994616, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 477, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "MessageId": "d7d01c99-6045-4687-aa22-3696b28a71dc", + "MD5OfMessageBody": "b5c549a1b61608ae9c9e5aa4ca926eaf", + "MD5OfMessageAttributes": "563c033205d4d7ddc71dceef55cae220", + "SequenceNumber": "184914760783929180160" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS SQS": [ + { + "startTime": 1747343995093, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 458, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "MessageId": "002ae7dd-846a-4ca2-a0d6-bd95aa9ca6b0", + "MD5OfMessageBody": "a6b50b8dda796ce940cd81ac4078f1e0", + "MD5OfMessageAttributes": "563c033205d4d7ddc71dceef55cae220" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AWS SQS" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.616Z", + "stoppedAt": "2025-05-15T21:19:55.551Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/163-snapshot.json b/test-workflows/snapshots/163-snapshot.json new file mode 100644 index 0000000000..6b0c27ad18 --- /dev/null +++ b/test-workflows/snapshots/163-snapshot.json @@ -0,0 +1,302 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858540, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Slides": [ + { + "startTime": 1678116858541, + "executionTime": 1809, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "presentationId": "1-6V0k7PVcPC90kFahRHD7_TjLP6W9-3Muf-PjlNVTN0", + "pageSize": { + "object": true + }, + "slides": [ + "json array" + ], + "title": "SlidesMon, 06 Mar 2023 15:34:18 GMT", + "masters": [ + "json array" + ], + "layouts": [ + "json array" + ], + "locale": "en", + "revisionId": "M-s2cBLdEa4K1A", + "notesMaster": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Slides3": [ + { + "startTime": 1678116860351, + "executionTime": 1496, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "presentationId": "1y7glcx_2V4LQoSWXTkBbn-kWRLBEAsn7I27B6RQ3cdo", + "replies": [ + "json array" + ], + "writeControl": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Slides1": [ + { + "startTime": 1678116861848, + "executionTime": 703, + "source": [ + { + "previousNode": "Google Slides" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "presentationId": "1-6V0k7PVcPC90kFahRHD7_TjLP6W9-3Muf-PjlNVTN0", + "pageSize": { + "object": true + }, + "slides": [ + "json array" + ], + "title": "SlidesMon, 06 Mar 2023 15:34:18 GMT", + "masters": [ + "json array" + ], + "layouts": [ + "json array" + ], + "locale": "en", + "revisionId": "M-s2cBLdEa4K1A", + "notesMaster": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Slides4": [ + { + "startTime": 1678116862552, + "executionTime": 1078, + "source": [ + { + "previousNode": "Google Slides" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "width": 1600, + "height": 900, + "contentUrl": "https://lh3.googleusercontent.com/NS47n8mpkUBEGGOaqfTxrbk40A0gu3ISENHFprG6BcQDWjmrMF5-LwFVYJ9dxyTGYpJ-a1OwLvWPCabzaHTeMKFQs_ZxdgY_UmJG4vZcyaXAIIM8yDzqSuNBWwiO1Jzco0TbPQj_UXmQlU5_7f5_pO4ZVO96NpI-HVariL4E3OV8rXS7qf5BEs39975C6Rt1GuRprL-CCE5zr-lO_DXhP5imOBv07CMGwjMVKMTGq7xbxRN41rTRLDg=s1600" + }, + "pairedItem": { + "item": 0 + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "iVBORw0KGgoAAAANSUhEUgAABkAAAAOECAIAAAB2L2r1AAAAA3NCSVQICAjb4U/gAAAYxElEQVR4nOzYMQEAIAzAMMC/5+GAlx6Jgt7dM7MAAAAAoOr8DgAAAACAFwMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAIA0AwsAAACANAMLAAAAgDQDCwAAAOC2Y8cCAAAAAIP8raexozBiTWABAAAAsCawAAAAAFgTWAAAAACsCSwAAAAA1gQWAAAAAGsCCwAAAIA1gQUAAADAmsACAAAAYE1gAQAAALAmsAAAAABYE1gAAAAArAksAAAAANYEFgAAAABrAgsAAACANYEFAAAAwJrAAgAAAGBNYAEAAACwJrAAAAAAWBNYAAAAAKwJLAAAAADWBBYAAAAAawILAAAAgDWBBQAAAMCawAIAAABgTWABAAAAsCawAAAAAFgTWAAAAACsCSwAAAAA1gQWAAAAAGsCCwAAAIA1gQUAAADAmsACAAAAYE1gAQAAALAmsAAAAABYE1gAAAAArAksAAAAANYEFgAAAABrAgsAAACAtQBWkwoFDcwppQAAAABJRU5ErkJggg==", + "fileName": "p.png", + "fileSize": "6.41 kB" + } + } + } + ] + ] + } + } + ], + "Google Slides6": [ + { + "startTime": 1678116863630, + "executionTime": 370, + "source": [ + { + "previousNode": "Google Slides3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "presentationId": "1y7glcx_2V4LQoSWXTkBbn-kWRLBEAsn7I27B6RQ3cdo", + "replies": [ + "json array" + ], + "writeControl": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Slides2": [ + { + "startTime": 1678116864000, + "executionTime": 316, + "source": [ + { + "previousNode": "Google Slides1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectId": "p", + "pageElements": [ + "json array" + ], + "slideProperties": { + "object": true + }, + "pageProperties": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Slides5": [ + { + "startTime": 1678116864316, + "executionTime": 345, + "source": [ + { + "previousNode": "Google Slides4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectId": "p", + "pageElements": [ + "json array" + ], + "slideProperties": { + "object": true + }, + "revisionId": "M-s2cBLdEa4K1A", + "pageProperties": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Slides5" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.538Z", + "stoppedAt": "2023-03-06T15:34:24.661Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/164-snapshot.json b/test-workflows/snapshots/164-snapshot.json new file mode 100644 index 0000000000..8f82b91778 --- /dev/null +++ b/test-workflows/snapshots/164-snapshot.json @@ -0,0 +1,1007 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891416118, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1676891416119, + "executionTime": 22, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "SpaceTag1676891416141" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp1": [ + { + "startTime": 1676891416142, + "executionTime": 735, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "901000766205", + "name": "TestList1676891416143", + "deleted": false, + "orderindex": 0, + "content": "", + "priority": { + "object": true + }, + "assignee": { + "object": true + }, + "due_date": { + "object": true + }, + "start_date": { + "object": true + }, + "folder": { + "object": true + }, + "space": { + "object": true + }, + "inbound_address": "a.t.901000766205.u-8779387.564f037f-66ec-4d77-a344-4feb14a9593b@tasks.clickup.com", + "archived": false, + "override_statuses": false, + "statuses": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp": [ + { + "startTime": 1676891416877, + "executionTime": 345, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 second": [ + { + "startTime": 1676891417222, + "executionTime": 826, + "source": [ + { + "previousNode": "ClickUp1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "901000766205", + "name": "TestList1676891416143", + "deleted": false, + "orderindex": 0, + "content": "", + "priority": { + "object": true + }, + "assignee": { + "object": true + }, + "due_date": { + "object": true + }, + "start_date": { + "object": true + }, + "folder": { + "object": true + }, + "space": { + "object": true + }, + "inbound_address": "a.t.901000766205.u-8779387.564f037f-66ec-4d77-a344-4feb14a9593b@tasks.clickup.com", + "archived": false, + "override_statuses": false, + "statuses": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.8 second1": [ + { + "startTime": 1676891418048, + "executionTime": 804, + "source": [ + { + "previousNode": "ClickUp" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp7": [ + { + "startTime": 1676891418852, + "executionTime": 477, + "source": [ + { + "previousNode": "Sleep 0.8 second" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "901000766208", + "name": "TestList1676891418852", + "deleted": false, + "orderindex": 0, + "content": "", + "priority": { + "object": true + }, + "assignee": { + "object": true + }, + "due_date": { + "object": true + }, + "start_date": { + "object": true + }, + "folder": { + "object": true + }, + "space": { + "object": true + }, + "inbound_address": "a.t.901000766208.u-8779387.59e26336-ac3f-4f57-92f8-d4bfb70eec27@tasks.clickup.com", + "archived": false, + "override_statuses": false, + "statuses": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp2": [ + { + "startTime": 1676891419329, + "executionTime": 411, + "source": [ + { + "previousNode": "Sleep 0.8 second1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "spacetag1626268329609", + "tag_fg": "#fff", + "tag_bg": "#FF6D5A", + "creator": 8779387 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 second5": [ + { + "startTime": 1676891419740, + "executionTime": 804, + "source": [ + { + "previousNode": "ClickUp7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "901000766208", + "name": "TestList1676891418852", + "deleted": false, + "orderindex": 0, + "content": "", + "priority": { + "object": true + }, + "assignee": { + "object": true + }, + "due_date": { + "object": true + }, + "start_date": { + "object": true + }, + "folder": { + "object": true + }, + "space": { + "object": true + }, + "inbound_address": "a.t.901000766208.u-8779387.59e26336-ac3f-4f57-92f8-d4bfb70eec27@tasks.clickup.com", + "archived": false, + "override_statuses": false, + "statuses": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1676891420544, + "executionTime": 1, + "source": [ + { + "previousNode": "ClickUp2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "spacetag1626268329609", + "tag_fg": "#fff", + "tag_bg": "#FF6D5A", + "creator": 8779387, + "updatedname": "UpdatedSpaceTag1676891420545" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp5": [ + { + "startTime": 1676891420545, + "executionTime": 780, + "source": [ + { + "previousNode": "Sleep 0.8 second5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "8677f32j9", + "custom_id": { + "object": true + }, + "name": "testTask1676891420545", + "text_content": "", + "description": "", + "status": { + "object": true + }, + "orderindex": "2978.00000000000000000000000000000000", + "date_created": "1676891420964", + "date_updated": "1676891420964", + "date_closed": { + "object": true + }, + "date_done": { + "object": true + }, + "archived": false, + "creator": { + "object": true + }, + "assignees": [ + "json array" + ], + "watchers": [ + "json array" + ], + "checklists": [ + "json array" + ], + "tags": [ + "json array" + ], + "parent": { + "object": true + }, + "priority": { + "object": true + }, + "due_date": { + "object": true + }, + "start_date": { + "object": true + }, + "points": { + "object": true + }, + "time_estimate": { + "object": true + }, + "time_spent": 0, + "custom_fields": [ + "json array" + ], + "dependencies": [ + "json array" + ], + "linked_tasks": [ + "json array" + ], + "team_id": "4651110", + "url": "https://app.clickup.com/t/8677f32j9", + "permission_level": "create", + "list": { + "object": true + }, + "project": { + "object": true + }, + "folder": { + "object": true + }, + "space": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 second2": [ + { + "startTime": 1676891421325, + "executionTime": 804, + "source": [ + { + "previousNode": "Set1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "spacetag1626268329609", + "tag_fg": "#fff", + "tag_bg": "#FF6D5A", + "creator": 8779387, + "updatedname": "UpdatedSpaceTag1676891420545" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.8 second4": [ + { + "startTime": 1676891422130, + "executionTime": 804, + "source": [ + { + "previousNode": "ClickUp5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "8677f32j9", + "custom_id": { + "object": true + }, + "name": "testTask1676891420545", + "text_content": "", + "description": "", + "status": { + "object": true + }, + "orderindex": "2978.00000000000000000000000000000000", + "date_created": "1676891420964", + "date_updated": "1676891420964", + "date_closed": { + "object": true + }, + "date_done": { + "object": true + }, + "archived": false, + "creator": { + "object": true + }, + "assignees": [ + "json array" + ], + "watchers": [ + "json array" + ], + "checklists": [ + "json array" + ], + "tags": [ + "json array" + ], + "parent": { + "object": true + }, + "priority": { + "object": true + }, + "due_date": { + "object": true + }, + "start_date": { + "object": true + }, + "points": { + "object": true + }, + "time_estimate": { + "object": true + }, + "time_spent": 0, + "custom_fields": [ + "json array" + ], + "dependencies": [ + "json array" + ], + "linked_tasks": [ + "json array" + ], + "team_id": "4651110", + "url": "https://app.clickup.com/t/8677f32j9", + "permission_level": "create", + "list": { + "object": true + }, + "project": { + "object": true + }, + "folder": { + "object": true + }, + "space": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp3": [ + { + "startTime": 1676891422935, + "executionTime": 563, + "source": [ + { + "previousNode": "Sleep 0.8 second2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set2": [ + { + "startTime": 1676891423498, + "executionTime": 1, + "source": [ + { + "previousNode": "Sleep 0.8 second4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "TaskTag1676891423498" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 second3": [ + { + "startTime": 1676891423499, + "executionTime": 814, + "source": [ + { + "previousNode": "ClickUp3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp8": [ + { + "startTime": 1676891424316, + "executionTime": 420, + "source": [ + { + "previousNode": "Set2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp4": [ + { + "startTime": 1676891424736, + "executionTime": 407, + "source": [ + { + "previousNode": "Sleep 0.8 second3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 second6": [ + { + "startTime": 1676891425143, + "executionTime": 803, + "source": [ + { + "previousNode": "ClickUp8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp9": [ + { + "startTime": 1676891425946, + "executionTime": 374, + "source": [ + { + "previousNode": "Sleep 0.8 second6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 second7": [ + { + "startTime": 1676891426321, + "executionTime": 804, + "source": [ + { + "previousNode": "ClickUp9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp6": [ + { + "startTime": 1676891427125, + "executionTime": 476, + "source": [ + { + "previousNode": "Sleep 0.8 second7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.8 second8": [ + { + "startTime": 1676891427601, + "executionTime": 809, + "source": [ + { + "previousNode": "ClickUp6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp10": [ + { + "startTime": 1676891428410, + "executionTime": 391, + "source": [ + { + "previousNode": "Sleep 0.8 second8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp11": [ + { + "startTime": 1676891428802, + "executionTime": 427, + "source": [ + { + "previousNode": "ClickUp10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp12": [ + { + "startTime": 1676891429230, + "executionTime": 430, + "source": [ + { + "previousNode": "ClickUp11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp13": [ + { + "startTime": 1676891429661, + "executionTime": 1616, + "source": [ + { + "previousNode": "ClickUp12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "ClickUp13" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:16.115Z", + "stoppedAt": "2023-02-20T11:10:31.277Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/166-snapshot.json b/test-workflows/snapshots/166-snapshot.json new file mode 100644 index 0000000000..8ab9de0235 --- /dev/null +++ b/test-workflows/snapshots/166-snapshot.json @@ -0,0 +1,1263 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994642, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom5": [ + { + "startTime": 1747343994642, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 561, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "contact", + "id": "68265a7bb7d1a40b6f941f79", + "user_id": "857da08e-5ee1-4418-ab8b-798a404c72c0", + "anonymous": true, + "email": "fake1747343994644@email.com", + "phone": { + "object": true + }, + "name": { + "object": true + }, + "pseudonym": "Cyan Locomotive", + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747343995, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747343995, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom10": [ + { + "startTime": 1747343995203, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 573, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "user", + "id": "68265a7ba8bb3b69f82db784", + "user_id": "User1747343995205", + "anonymous": false, + "email": "", + "phone": { + "object": true + }, + "name": { + "object": true + }, + "pseudonym": { + "object": true + }, + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747343995, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747343995, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom1": [ + { + "startTime": 1747343995776, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 461, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "company", + "company_id": "Company1747343995777", + "id": "68265a7cf5fc73b90d4859cd", + "app_id": "t5y9d4d1", + "name": "TestingCompany2025-05-15T21:19:55.778Z", + "created_at": 1747343996, + "updated_at": 1747343996, + "monthly_spend": 0, + "session_count": 0, + "user_count": 0, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "plan": { + "object": true + }, + "custom_attributes": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom6": [ + { + "startTime": 1747343996237, + "executionIndex": 4, + "source": [ + { + "previousNode": "Intercom5" + } + ], + "hints": [], + "executionTime": 691, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "contact", + "id": "68265a7bb7d1a40b6f941f79", + "user_id": "857da08e-5ee1-4418-ab8b-798a404c72c0", + "anonymous": true, + "email": "fake1747343994644@email.com", + "phone": { + "object": true + }, + "name": { + "object": true + }, + "pseudonym": "Cyan Locomotive", + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747343995, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747343995, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom11": [ + { + "startTime": 1747343996928, + "executionIndex": 5, + "source": [ + { + "previousNode": "Intercom10" + } + ], + "hints": [], + "executionTime": 408, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "user", + "id": "68265a7ba8bb3b69f82db784", + "user_id": "User1747343995205", + "anonymous": false, + "email": "", + "phone": { + "object": true + }, + "name": { + "object": true + }, + "pseudonym": { + "object": true + }, + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747343995, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747343995, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom": [ + { + "startTime": 1747343997336, + "executionIndex": 6, + "source": [ + { + "previousNode": "Intercom1" + } + ], + "hints": [], + "executionTime": 414, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "company", + "company_id": "Company1747343995777", + "id": "68265a7cf5fc73b90d4859cd", + "app_id": "t5y9d4d1", + "name": "TestingCompany2025-05-15T21:19:55.778Z", + "created_at": 1747343996, + "updated_at": 1747343996, + "monthly_spend": 0, + "session_count": 0, + "user_count": 0, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "plan": { + "object": true + }, + "custom_attributes": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom7": [ + { + "startTime": 1747343997750, + "executionIndex": 7, + "source": [ + { + "previousNode": "Intercom6" + } + ], + "hints": [], + "executionTime": 494, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "contact", + "id": "682640e516500e28bbeaed11", + "user_id": "3691afca-c0a7-46c7-9cbf-4f5ac3e1da9a", + "anonymous": true, + "email": "fake1747337445292@email.com", + "phone": { + "object": true + }, + "name": { + "object": true + }, + "pseudonym": "Turquoise Cactus", + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747337445, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747337445, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom12": [ + { + "startTime": 1747343998244, + "executionIndex": 8, + "source": [ + { + "previousNode": "Intercom11" + } + ], + "hints": [], + "executionTime": 447, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "user", + "id": "682640e6d3d8a6ae674aea64", + "user_id": "User1747337445888", + "anonymous": false, + "email": { + "object": true + }, + "phone": { + "object": true + }, + "name": { + "object": true + }, + "pseudonym": { + "object": true + }, + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747337446, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747337446, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom2": [ + { + "startTime": 1747343998691, + "executionIndex": 9, + "source": [ + { + "previousNode": "Intercom" + } + ], + "hints": [], + "executionTime": 492, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "company", + "company_id": "607ea26e5e1f73dc32c434bd-qualification-company", + "id": "607ea26e5e1f73dc32c434bc", + "app_id": "t5y9d4d1", + "name": "Acme", + "created_at": 1618911854, + "updated_at": 1618911854, + "monthly_spend": 0, + "session_count": 0, + "user_count": 1, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "plan": { + "object": true + }, + "custom_attributes": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom8": [ + { + "startTime": 1747343999183, + "executionIndex": 10, + "source": [ + { + "previousNode": "Intercom7" + } + ], + "hints": [], + "executionTime": 478, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "contact", + "id": "68265a7bb7d1a40b6f941f79", + "user_id": "857da08e-5ee1-4418-ab8b-798a404c72c0", + "anonymous": true, + "email": "fake1747343994644@email.com", + "phone": { + "object": true + }, + "name": "UpdatedLead", + "pseudonym": "Cyan Locomotive", + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747343995, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747343999, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom13": [ + { + "startTime": 1747343999661, + "executionIndex": 11, + "source": [ + { + "previousNode": "Intercom12" + } + ], + "hints": [], + "executionTime": 438, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "user", + "id": "68265a7ba8bb3b69f82db784", + "user_id": "User1747343995205", + "anonymous": false, + "email": "", + "phone": { + "object": true + }, + "name": "UpdatedUser", + "pseudonym": { + "object": true + }, + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747343995, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747344000, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom3": [ + { + "startTime": 1747344000099, + "executionIndex": 12, + "source": [ + { + "previousNode": "Intercom2" + } + ], + "hints": [], + "executionTime": 398, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "company", + "company_id": "Company1747343995777", + "id": "68265a7cf5fc73b90d4859cd", + "app_id": "t5y9d4d1", + "name": "UpdatedTestingCompany2025-05-15T21:19:55.778Z", + "created_at": 1747343996, + "updated_at": 1747344000, + "monthly_spend": 0, + "session_count": 0, + "user_count": 0, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "plan": { + "object": true + }, + "custom_attributes": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom9": [ + { + "startTime": 1747344000497, + "executionIndex": 13, + "source": [ + { + "previousNode": "Intercom8" + } + ], + "hints": [], + "executionTime": 449, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "contact", + "id": "68265a7bb7d1a40b6f941f79", + "user_id": "857da08e-5ee1-4418-ab8b-798a404c72c0", + "anonymous": true, + "email": "fake1747343994644@email.com", + "phone": { + "object": true + }, + "name": "UpdatedLead", + "pseudonym": "Cyan Locomotive", + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747343995, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747344000, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom14": [ + { + "startTime": 1747344000946, + "executionIndex": 14, + "source": [ + { + "previousNode": "Intercom13" + } + ], + "hints": [], + "executionTime": 463, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "user", + "id": "68265a7ba8bb3b69f82db784", + "user_id": "User1747343995205", + "anonymous": false, + "email": "", + "phone": { + "object": true + }, + "name": "UpdatedUser", + "pseudonym": { + "object": true + }, + "avatar": { + "object": true + }, + "app_id": "t5y9d4d1", + "companies": { + "object": true + }, + "location_data": { + "object": true + }, + "last_request_at": { + "object": true + }, + "created_at": 1747343995, + "remote_created_at": { + "object": true + }, + "signed_up_at": { + "object": true + }, + "updated_at": 1747344001, + "session_count": 0, + "social_profiles": { + "object": true + }, + "owner_id": { + "object": true + }, + "unsubscribed_from_emails": false, + "marked_email_as_spam": false, + "has_hard_bounced": false, + "tags": { + "object": true + }, + "segments": { + "object": true + }, + "custom_attributes": { + "object": true + }, + "referrer": { + "object": true + }, + "utm_campaign": { + "object": true + }, + "utm_content": { + "object": true + }, + "utm_medium": { + "object": true + }, + "utm_source": { + "object": true + }, + "utm_term": { + "object": true + }, + "do_not_track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Intercom4": [ + { + "startTime": 1747344001409, + "executionIndex": 15, + "source": [ + { + "previousNode": "Intercom3" + } + ], + "hints": [], + "executionTime": 402, + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "Intercom4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.641Z", + "stoppedAt": "2025-05-15T21:20:01.811Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/169-snapshot.json b/test-workflows/snapshots/169-snapshot.json new file mode 100644 index 0000000000..3c1363a666 --- /dev/null +++ b/test-workflows/snapshots/169-snapshot.json @@ -0,0 +1,94 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891417098, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mocean": [ + { + "startTime": 1676891417099, + "executionTime": 1042, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 0, + "receiver": "21624827732", + "msgid": "Nodeqa0220191018996444.0004", + "type": "sms" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mocean1": [ + { + "startTime": 1676891418141, + "executionTime": 0, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Mocean1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:17.097Z", + "stoppedAt": "2023-02-20T11:10:18.141Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/17-snapshot.json b/test-workflows/snapshots/17-snapshot.json new file mode 100644 index 0000000000..1b00090fc6 --- /dev/null +++ b/test-workflows/snapshots/17-snapshot.json @@ -0,0 +1,120 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994645, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenThesaurus": [ + { + "startTime": 1747343994645, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 185, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 3913, + "categories": [ + "json array" + ], + "terms": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 11705, + "categories": [ + "json array" + ], + "terms": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 8559, + "categories": [ + "json array" + ], + "terms": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 15485, + "categories": [ + "json array" + ], + "terms": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "OpenThesaurus" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.645Z", + "stoppedAt": "2025-05-15T21:19:54.830Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/172-snapshot.json b/test-workflows/snapshots/172-snapshot.json new file mode 100644 index 0000000000..4dd486832f --- /dev/null +++ b/test-workflows/snapshots/172-snapshot.json @@ -0,0 +1,187 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994721, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PayPal": [ + { + "startTime": 1747343994721, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 636, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "batch_header": { + "object": true + }, + "links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PayPal1": [ + { + "startTime": 1747343995357, + "executionIndex": 2, + "source": [ + { + "previousNode": "PayPal" + } + ], + "hints": [], + "executionTime": 534, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "payout_item_id": "HHW94VDFSQWZQ", + "transaction_status": "PENDING", + "payout_batch_id": "WNCGA2S4EGV54", + "payout_item": { + "object": true + }, + "links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PayPal2": [ + { + "startTime": 1747343995891, + "executionIndex": 3, + "source": [ + { + "previousNode": "PayPal1" + } + ], + "hints": [], + "executionTime": 1068, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "payout_item_id": "HHW94VDFSQWZQ", + "transaction_status": "PENDING", + "payout_batch_id": "WNCGA2S4EGV54", + "sender_batch_id": "1747343994721", + "payout_item": { + "object": true + }, + "links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "PayPal3": [ + { + "startTime": 1747343996959, + "executionIndex": 4, + "source": [ + { + "previousNode": "PayPal2" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "payout_item_id": "HHW94VDFSQWZQ", + "transaction_status": "PENDING", + "payout_batch_id": "WNCGA2S4EGV54", + "sender_batch_id": "1747343994721", + "payout_item": { + "object": true + }, + "links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "PayPal3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.721Z", + "stoppedAt": "2025-05-15T21:19:56.959Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/174-snapshot.json b/test-workflows/snapshots/174-snapshot.json new file mode 100644 index 0000000000..aabe8542b6 --- /dev/null +++ b/test-workflows/snapshots/174-snapshot.json @@ -0,0 +1,305 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994838, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set id & email": [ + { + "startTime": 1747343994838, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 6, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 989, + "email": "fake1747343994844@email.com" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vero": [ + { + "startTime": 1747343994844, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set id & email" + } + ], + "hints": [], + "executionTime": 423, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "Success." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vero1": [ + { + "startTime": 1747343995267, + "executionIndex": 3, + "source": [ + { + "previousNode": "Vero" + } + ], + "hints": [], + "executionTime": 506, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "Success." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vero2": [ + { + "startTime": 1747343995773, + "executionIndex": 4, + "source": [ + { + "previousNode": "Vero1" + } + ], + "hints": [], + "executionTime": 462, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "Success." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vero3": [ + { + "startTime": 1747343996235, + "executionIndex": 5, + "source": [ + { + "previousNode": "Vero2" + } + ], + "hints": [], + "executionTime": 696, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "Success." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vero4": [ + { + "startTime": 1747343996931, + "executionIndex": 6, + "source": [ + { + "previousNode": "Vero3" + } + ], + "hints": [], + "executionTime": 531, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "Success." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vero5": [ + { + "startTime": 1747343997462, + "executionIndex": 7, + "source": [ + { + "previousNode": "Vero4" + } + ], + "hints": [], + "executionTime": 379, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "Success." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vero7": [ + { + "startTime": 1747343997841, + "executionIndex": 8, + "source": [ + { + "previousNode": "Vero5" + } + ], + "hints": [], + "executionTime": 419, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "Success." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vero6": [ + { + "startTime": 1747343998260, + "executionIndex": 9, + "source": [ + { + "previousNode": "Vero7" + } + ], + "hints": [], + "executionTime": 439, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": 200, + "message": "Success." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Vero6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.838Z", + "stoppedAt": "2025-05-15T21:19:58.699Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/177-snapshot.json b/test-workflows/snapshots/177-snapshot.json new file mode 100644 index 0000000000..5347c0c5cb --- /dev/null +++ b/test-workflows/snapshots/177-snapshot.json @@ -0,0 +1,1047 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1726655392049, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc1": [ + { + "hints": [], + "startTime": 1726655392049, + "executionTime": 210, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10032", + "time": 6, + "price": 0, + "real_price": 0.001, + "processor": "check-creditcard-checksum", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc2": [ + { + "hints": [], + "startTime": 1726655392259, + "executionTime": 135, + "source": [ + { + "previousNode": "uProc1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10032", + "time": 2, + "price": 0, + "real_price": 0.001, + "processor": "get-creditcard-type", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc3": [ + { + "hints": [], + "startTime": 1726655392394, + "executionTime": 145, + "source": [ + { + "previousNode": "uProc2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10032", + "time": 2, + "price": 0, + "real_price": 0.0015, + "processor": "check-bank-account-valid-es", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc4": [ + { + "hints": [], + "startTime": 1726655392539, + "executionTime": 172, + "source": [ + { + "previousNode": "uProc3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10032", + "time": 2, + "price": 0, + "real_price": 0.0015, + "processor": "check-bank-bic-valid", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc5": [ + { + "hints": [], + "startTime": 1726655392711, + "executionTime": 134, + "source": [ + { + "previousNode": "uProc4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10032", + "time": 2, + "price": 0, + "real_price": 0.003, + "processor": "get-bank-iban-by-account", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc6": [ + { + "hints": [], + "startTime": 1726655392845, + "executionTime": 181, + "source": [ + { + "previousNode": "uProc5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10032", + "time": 2, + "price": 0, + "real_price": 0.003, + "processor": "get-bank-iban-lookup", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc7": [ + { + "hints": [], + "startTime": 1726655393026, + "executionTime": 5276, + "source": [ + { + "previousNode": "uProc6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10032", + "time": 2, + "price": 0, + "real_price": 0.0015, + "processor": "check-bank-iban-valid", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc8": [ + { + "hints": [], + "startTime": 1726655398302, + "executionTime": 329, + "source": [ + { + "previousNode": "uProc7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0.001, + "processor": "get-currency-by-country", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc9": [ + { + "hints": [], + "startTime": 1726655398631, + "executionTime": 753, + "source": [ + { + "previousNode": "uProc8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0.001, + "processor": "get-currency-by-country-isocode", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc10": [ + { + "hints": [], + "startTime": 1726655399384, + "executionTime": 187, + "source": [ + { + "previousNode": "uProc9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0, + "processor": "get-currency-by-ip", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc11": [ + { + "hints": [], + "startTime": 1726655399571, + "executionTime": 164, + "source": [ + { + "previousNode": "uProc10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0, + "processor": "get-currency-by-isocode", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc12": [ + { + "hints": [], + "startTime": 1726655399735, + "executionTime": 197, + "source": [ + { + "previousNode": "uProc11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 8, + "price": 0.002, + "real_price": 0.002, + "processor": "get-currency-converted-between-isocode-date", + "total_rows": 1, + "balance": 50.4795 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc13": [ + { + "hints": [], + "startTime": 1726655399932, + "executionTime": 205, + "source": [ + { + "previousNode": "uProc12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "params": { + "object": true + }, + "processor": "get-currency-list-by-country", + "total_rows": 1, + "balance": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc14": [ + { + "hints": [], + "startTime": 1726655400137, + "executionTime": 5150, + "source": [ + { + "previousNode": "uProc13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": [ + "json array" + ], + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0, + "processor": "get-currency-list-by-ip", + "total_rows": 0, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc15": [ + { + "hints": [], + "startTime": 1726655405287, + "executionTime": 183, + "source": [ + { + "previousNode": "uProc14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": [ + "json array" + ], + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0, + "processor": "get-currency-list-by-isocode", + "total_rows": 0, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc16": [ + { + "hints": [], + "startTime": 1726655405470, + "executionTime": 152, + "source": [ + { + "previousNode": "uProc15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0.001, + "processor": "check-currency-valid-iso", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc17": [ + { + "hints": [], + "startTime": 1726655405623, + "executionTime": 153, + "source": [ + { + "previousNode": "uProc16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0.005, + "processor": "get-vat-by-address", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc18": [ + { + "hints": [], + "startTime": 1726655405776, + "executionTime": 5176, + "source": [ + { + "previousNode": "uProc17" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0.005, + "processor": "get-vat-by-coordinates", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc19": [ + { + "hints": [], + "startTime": 1726655410952, + "executionTime": 148, + "source": [ + { + "previousNode": "uProc18" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 1, + "price": 0, + "real_price": 0, + "processor": "get-vat-by-ip", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc20": [ + { + "hints": [], + "startTime": 1726655411101, + "executionTime": 152, + "source": [ + { + "previousNode": "uProc19" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0.005, + "processor": "get-vat-by-isocode", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc21": [ + { + "hints": [], + "startTime": 1726655411253, + "executionTime": 148, + "source": [ + { + "previousNode": "uProc20" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10063", + "time": 2, + "price": 0, + "real_price": 0.005, + "processor": "get-vat-by-number", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc22": [ + { + "hints": [], + "startTime": 1726655411401, + "executionTime": 158, + "source": [ + { + "previousNode": "uProc21" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0.005, + "processor": "get-vat-by-phone", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc23": [ + { + "hints": [], + "startTime": 1726655411559, + "executionTime": 5173, + "source": [ + { + "previousNode": "uProc22" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": false, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10040", + "time": 2, + "price": 0, + "real_price": 0, + "processor": "get-vat-by-zipcode", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "uProc24": [ + { + "hints": [], + "startTime": 1726655416732, + "executionTime": 144, + "source": [ + { + "previousNode": "uProc23" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "message": { + "object": true + }, + "status": "completed", + "params": { + "object": true + }, + "normalized": false, + "criteria": "10063", + "time": 2, + "price": 0, + "real_price": 0.0025, + "processor": "check-vat-exist", + "total_rows": 1, + "balance": 50.4815 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "uProc24" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-09-18T10:29:52.046Z", + "stoppedAt": "2024-09-18T10:30:16.876Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/182-snapshot.json b/test-workflows/snapshots/182-snapshot.json new file mode 100644 index 0000000000..7d62da355a --- /dev/null +++ b/test-workflows/snapshots/182-snapshot.json @@ -0,0 +1,244 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343994910, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Webflow": [ + { + "startTime": 1747343994910, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1513, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_cid": "608289f18593d40792d70d54", + "_id": "68265a7bcf2b25604fb8766e", + "_draft": true, + "_archived": false, + "name": "Item1747343994912", + "slug": "ItemSlug1747343994913", + "updated-on": "2025-05-15T21:19:55.285Z", + "updated-by": "Person_60828826c12bb73d4752eedb", + "created-on": "2025-05-15T21:19:55.285Z", + "created-by": "Person_60828826c12bb73d4752eedb", + "published-on": { + "object": true + }, + "published-by": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Webflow1": [ + { + "startTime": 1747343996423, + "executionIndex": 2, + "source": [ + { + "previousNode": "Webflow" + } + ], + "hints": [], + "executionTime": 677, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_cid": "608289f18593d40792d70d54", + "_id": "68265a7bcf2b25604fb8766e", + "_draft": true, + "_archived": false, + "name": "Item1747343994912", + "slug": "ItemSlug1747343994913", + "updated-on": "2025-05-15T21:19:55.285Z", + "updated-by": "Person_60828826c12bb73d4752eedb", + "created-on": "2025-05-15T21:19:55.285Z", + "created-by": "Person_60828826c12bb73d4752eedb", + "published-on": { + "object": true + }, + "published-by": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Webflow2": [ + { + "startTime": 1747343997100, + "executionIndex": 3, + "source": [ + { + "previousNode": "Webflow1" + } + ], + "hints": [], + "executionTime": 473, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_cid": "608289f18593d40792d70d54", + "_id": "68265a7bcf2b25604fb8766e", + "_draft": false, + "_archived": false, + "name": "UpdatedItem1747343994912", + "slug": "UpdatedItemSlug1747343994913", + "updated-on": "2025-05-15T21:19:57.521Z", + "updated-by": "Person_60828826c12bb73d4752eedb", + "created-on": "2025-05-15T21:19:55.285Z", + "created-by": "Person_60828826c12bb73d4752eedb", + "published-on": { + "object": true + }, + "published-by": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Webflow3": [ + { + "startTime": 1747343997573, + "executionIndex": 4, + "source": [ + { + "previousNode": "Webflow2" + } + ], + "hints": [], + "executionTime": 658, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "deleted": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Webflow4": [ + { + "startTime": 1747343998231, + "executionIndex": 5, + "source": [ + { + "previousNode": "Webflow3" + } + ], + "hints": [], + "executionTime": 479, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_cid": "608289f18593d40792d70d54", + "_id": "6826407aa3de802cc025d6b8", + "_draft": true, + "_archived": false, + "name": "Item1747337338117", + "slug": "ItemSlug1747337338118", + "updated-on": "2025-05-15T19:28:58.462Z", + "updated-by": "Person_60828826c12bb73d4752eedb", + "created-on": "2025-05-15T19:28:58.462Z", + "created-by": "Person_60828826c12bb73d4752eedb", + "published-on": { + "object": true + }, + "published-by": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Webflow4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:54.910Z", + "stoppedAt": "2025-05-15T21:19:58.710Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/184-snapshot.json b/test-workflows/snapshots/184-snapshot.json new file mode 100644 index 0000000000..39c0754178 --- /dev/null +++ b/test-workflows/snapshots/184-snapshot.json @@ -0,0 +1,1341 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1705409098591, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce7": [ + { + "startTime": 1705409098592, + "executionTime": 421, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "5000900000ts7wRAAQ", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce": [ + { + "startTime": 1705409099013, + "executionTime": 286, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0010900002NKs26AAD", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce8": [ + { + "startTime": 1705409099300, + "executionTime": 160, + "source": [ + { + "previousNode": "Salesforce7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "5000900000ts7wRAAQ", + "IsDeleted": false, + "MasterRecordId": { + "object": true + }, + "CaseNumber": "00001926", + "ContactId": { + "object": true + }, + "AccountId": { + "object": true + }, + "AssetId": { + "object": true + }, + "SourceId": { + "object": true + }, + "ParentId": { + "object": true + }, + "SuppliedName": { + "object": true + }, + "SuppliedEmail": { + "object": true + }, + "SuppliedPhone": { + "object": true + }, + "SuppliedCompany": { + "object": true + }, + "Type": "Other", + "Status": "New", + "Reason": "Installation", + "Origin": { + "object": true + }, + "Subject": "Subject1705409098603", + "Priority": "Medium", + "Description": { + "object": true + }, + "IsClosed": false, + "ClosedDate": { + "object": true + }, + "IsEscalated": false, + "OwnerId": "00509000005ntkGAAQ", + "CreatedDate": "2024-01-16T12:44:58.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:58.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:58.000+0000", + "ContactPhone": { + "object": true + }, + "ContactMobile": { + "object": true + }, + "ContactEmail": { + "object": true + }, + "ContactFax": { + "object": true + }, + "Comments": { + "object": true + }, + "LastViewedDate": "2024-01-16T12:44:58.000+0000", + "LastReferencedDate": "2024-01-16T12:44:58.000+0000", + "EngineeringReqNumber__c": { + "object": true + }, + "SLAViolation__c": { + "object": true + }, + "Product__c": { + "object": true + }, + "PotentialLiability__c": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second": [ + { + "startTime": 1705409099461, + "executionTime": 503, + "source": [ + { + "previousNode": "Salesforce" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0010900002NKs26AAD", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1705409099965, + "executionTime": 4, + "source": [ + { + "previousNode": "Salesforce8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "5000900000ts7wRAAQ", + "IsDeleted": false, + "MasterRecordId": { + "object": true + }, + "CaseNumber": "00001926", + "ContactId": { + "object": true + }, + "AccountId": { + "object": true + }, + "AssetId": { + "object": true + }, + "SourceId": { + "object": true + }, + "ParentId": { + "object": true + }, + "SuppliedName": { + "object": true + }, + "SuppliedEmail": { + "object": true + }, + "SuppliedPhone": { + "object": true + }, + "SuppliedCompany": { + "object": true + }, + "Type": "Other", + "Status": "New", + "Reason": "Installation", + "Origin": { + "object": true + }, + "Subject": "Subject1705409098603", + "Priority": "Medium", + "Description": { + "object": true + }, + "IsClosed": false, + "ClosedDate": { + "object": true + }, + "IsEscalated": false, + "OwnerId": "00509000005ntkGAAQ", + "CreatedDate": "2024-01-16T12:44:58.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:58.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:58.000+0000", + "ContactPhone": { + "object": true + }, + "ContactMobile": { + "object": true + }, + "ContactEmail": { + "object": true + }, + "ContactFax": { + "object": true + }, + "Comments": { + "object": true + }, + "LastViewedDate": "2024-01-16T12:44:58.000+0000", + "LastReferencedDate": "2024-01-16T12:44:58.000+0000", + "EngineeringReqNumber__c": { + "object": true + }, + "SLAViolation__c": { + "object": true + }, + "Product__c": { + "object": true + }, + "PotentialLiability__c": { + "object": true + }, + "data": "Attachment example" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce1": [ + { + "startTime": 1705409099969, + "executionTime": 225, + "source": [ + { + "previousNode": "Sleep 0.5 second" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "0010900002NKs26AAD", + "IsDeleted": false, + "MasterRecordId": { + "object": true + }, + "Name": "Account1705409099016", + "Type": { + "object": true + }, + "ParentId": { + "object": true + }, + "BillingStreet": { + "object": true + }, + "BillingCity": { + "object": true + }, + "BillingState": { + "object": true + }, + "BillingPostalCode": { + "object": true + }, + "BillingCountry": { + "object": true + }, + "BillingLatitude": { + "object": true + }, + "BillingLongitude": { + "object": true + }, + "BillingGeocodeAccuracy": { + "object": true + }, + "BillingAddress": { + "object": true + }, + "ShippingStreet": { + "object": true + }, + "ShippingCity": { + "object": true + }, + "ShippingState": { + "object": true + }, + "ShippingPostalCode": { + "object": true + }, + "ShippingCountry": { + "object": true + }, + "ShippingLatitude": { + "object": true + }, + "ShippingLongitude": { + "object": true + }, + "ShippingGeocodeAccuracy": { + "object": true + }, + "ShippingAddress": { + "object": true + }, + "Phone": { + "object": true + }, + "Fax": { + "object": true + }, + "AccountNumber": { + "object": true + }, + "Website": { + "object": true + }, + "PhotoUrl": "/services/images/photo/0010900002NKs26AAD", + "Sic": { + "object": true + }, + "Industry": { + "object": true + }, + "AnnualRevenue": { + "object": true + }, + "NumberOfEmployees": { + "object": true + }, + "Ownership": { + "object": true + }, + "TickerSymbol": { + "object": true + }, + "Description": { + "object": true + }, + "Rating": { + "object": true + }, + "Site": { + "object": true + }, + "OwnerId": "00509000005ntkGAAQ", + "CreatedDate": "2024-01-16T12:44:59.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:59.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:59.000+0000", + "LastActivityDate": { + "object": true + }, + "LastViewedDate": "2024-01-16T12:44:59.000+0000", + "LastReferencedDate": "2024-01-16T12:44:59.000+0000", + "Jigsaw": { + "object": true + }, + "JigsawCompanyId": { + "object": true + }, + "CleanStatus": "Pending", + "AccountSource": { + "object": true + }, + "DunsNumber": { + "object": true + }, + "Tradestyle": { + "object": true + }, + "NaicsCode": { + "object": true + }, + "NaicsDesc": { + "object": true + }, + "YearStarted": { + "object": true + }, + "SicDesc": { + "object": true + }, + "DandbCompanyId": { + "object": true + }, + "OperatingHoursId": { + "object": true + }, + "CustomerPriority__c": { + "object": true + }, + "SLA__c": { + "object": true + }, + "Active__c": { + "object": true + }, + "NumberofLocations__c": { + "object": true + }, + "UpsellOpportunity__c": { + "object": true + }, + "SLASerialNumber__c": { + "object": true + }, + "SLAExpirationDate__c": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Move Binary Data": [ + { + "startTime": 1705409100194, + "executionTime": 1, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + }, + "binary": { + "data": { + "mimeType": "application/json", + "fileType": "json", + "fileExtension": "json", + "data": "eyJhdHRyaWJ1dGVzIjp7InR5cGUiOiJDYXNlIiwidXJsIjoiL3NlcnZpY2VzL2RhdGEvdjU5LjAvc29iamVjdHMvQ2FzZS81MDAwOTAwMDAwdHM3d1JBQVEifSwiSWQiOiI1MDAwOTAwMDAwdHM3d1JBQVEiLCJJc0RlbGV0ZWQiOmZhbHNlLCJNYXN0ZXJSZWNvcmRJZCI6bnVsbCwiQ2FzZU51bWJlciI6IjAwMDAxOTI2IiwiQ29udGFjdElkIjpudWxsLCJBY2NvdW50SWQiOm51bGwsIkFzc2V0SWQiOm51bGwsIlNvdXJjZUlkIjpudWxsLCJQYXJlbnRJZCI6bnVsbCwiU3VwcGxpZWROYW1lIjpudWxsLCJTdXBwbGllZEVtYWlsIjpudWxsLCJTdXBwbGllZFBob25lIjpudWxsLCJTdXBwbGllZENvbXBhbnkiOm51bGwsIlR5cGUiOiJPdGhlciIsIlN0YXR1cyI6Ik5ldyIsIlJlYXNvbiI6Ikluc3RhbGxhdGlvbiIsIk9yaWdpbiI6bnVsbCwiU3ViamVjdCI6IlN1YmplY3QxNzA1NDA5MDk4NjAzIiwiUHJpb3JpdHkiOiJNZWRpdW0iLCJEZXNjcmlwdGlvbiI6bnVsbCwiSXNDbG9zZWQiOmZhbHNlLCJDbG9zZWREYXRlIjpudWxsLCJJc0VzY2FsYXRlZCI6ZmFsc2UsIk93bmVySWQiOiIwMDUwOTAwMDAwNW50a0dBQVEiLCJDcmVhdGVkRGF0ZSI6IjIwMjQtMDEtMTZUMTI6NDQ6NTguMDAwKzAwMDAiLCJDcmVhdGVkQnlJZCI6IjAwNTA5MDAwMDA1bnRrR0FBUSIsIkxhc3RNb2RpZmllZERhdGUiOiIyMDI0LTAxLTE2VDEyOjQ0OjU4LjAwMCswMDAwIiwiTGFzdE1vZGlmaWVkQnlJZCI6IjAwNTA5MDAwMDA1bnRrR0FBUSIsIlN5c3RlbU1vZHN0YW1wIjoiMjAyNC0wMS0xNlQxMjo0NDo1OC4wMDArMDAwMCIsIkNvbnRhY3RQaG9uZSI6bnVsbCwiQ29udGFjdE1vYmlsZSI6bnVsbCwiQ29udGFjdEVtYWlsIjpudWxsLCJDb250YWN0RmF4IjpudWxsLCJDb21tZW50cyI6bnVsbCwiTGFzdFZpZXdlZERhdGUiOiIyMDI0LTAxLTE2VDEyOjQ0OjU4LjAwMCswMDAwIiwiTGFzdFJlZmVyZW5jZWREYXRlIjoiMjAyNC0wMS0xNlQxMjo0NDo1OC4wMDArMDAwMCIsIkVuZ2luZWVyaW5nUmVxTnVtYmVyX19jIjpudWxsLCJTTEFWaW9sYXRpb25fX2MiOm51bGwsIlByb2R1Y3RfX2MiOm51bGwsIlBvdGVudGlhbExpYWJpbGl0eV9fYyI6bnVsbCwiZGF0YSI6IkF0dGFjaG1lbnQgZXhhbXBsZSJ9", + "fileSize": "1.12 kB" + } + } + } + ] + ] + } + } + ], + "Salesforce2": [ + { + "startTime": 1705409100195, + "executionTime": 186, + "source": [ + { + "previousNode": "Salesforce1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "002090000011nDgAAI", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second7": [ + { + "startTime": 1705409100381, + "executionTime": 504, + "source": [ + { + "previousNode": "Move Binary Data" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + }, + "binary": { + "data": { + "mimeType": "application/json", + "fileType": "json", + "fileExtension": "json", + "data": "eyJhdHRyaWJ1dGVzIjp7InR5cGUiOiJDYXNlIiwidXJsIjoiL3NlcnZpY2VzL2RhdGEvdjU5LjAvc29iamVjdHMvQ2FzZS81MDAwOTAwMDAwdHM3d1JBQVEifSwiSWQiOiI1MDAwOTAwMDAwdHM3d1JBQVEiLCJJc0RlbGV0ZWQiOmZhbHNlLCJNYXN0ZXJSZWNvcmRJZCI6bnVsbCwiQ2FzZU51bWJlciI6IjAwMDAxOTI2IiwiQ29udGFjdElkIjpudWxsLCJBY2NvdW50SWQiOm51bGwsIkFzc2V0SWQiOm51bGwsIlNvdXJjZUlkIjpudWxsLCJQYXJlbnRJZCI6bnVsbCwiU3VwcGxpZWROYW1lIjpudWxsLCJTdXBwbGllZEVtYWlsIjpudWxsLCJTdXBwbGllZFBob25lIjpudWxsLCJTdXBwbGllZENvbXBhbnkiOm51bGwsIlR5cGUiOiJPdGhlciIsIlN0YXR1cyI6Ik5ldyIsIlJlYXNvbiI6Ikluc3RhbGxhdGlvbiIsIk9yaWdpbiI6bnVsbCwiU3ViamVjdCI6IlN1YmplY3QxNzA1NDA5MDk4NjAzIiwiUHJpb3JpdHkiOiJNZWRpdW0iLCJEZXNjcmlwdGlvbiI6bnVsbCwiSXNDbG9zZWQiOmZhbHNlLCJDbG9zZWREYXRlIjpudWxsLCJJc0VzY2FsYXRlZCI6ZmFsc2UsIk93bmVySWQiOiIwMDUwOTAwMDAwNW50a0dBQVEiLCJDcmVhdGVkRGF0ZSI6IjIwMjQtMDEtMTZUMTI6NDQ6NTguMDAwKzAwMDAiLCJDcmVhdGVkQnlJZCI6IjAwNTA5MDAwMDA1bnRrR0FBUSIsIkxhc3RNb2RpZmllZERhdGUiOiIyMDI0LTAxLTE2VDEyOjQ0OjU4LjAwMCswMDAwIiwiTGFzdE1vZGlmaWVkQnlJZCI6IjAwNTA5MDAwMDA1bnRrR0FBUSIsIlN5c3RlbU1vZHN0YW1wIjoiMjAyNC0wMS0xNlQxMjo0NDo1OC4wMDArMDAwMCIsIkNvbnRhY3RQaG9uZSI6bnVsbCwiQ29udGFjdE1vYmlsZSI6bnVsbCwiQ29udGFjdEVtYWlsIjpudWxsLCJDb250YWN0RmF4IjpudWxsLCJDb21tZW50cyI6bnVsbCwiTGFzdFZpZXdlZERhdGUiOiIyMDI0LTAxLTE2VDEyOjQ0OjU4LjAwMCswMDAwIiwiTGFzdFJlZmVyZW5jZWREYXRlIjoiMjAyNC0wMS0xNlQxMjo0NDo1OC4wMDArMDAwMCIsIkVuZ2luZWVyaW5nUmVxTnVtYmVyX19jIjpudWxsLCJTTEFWaW9sYXRpb25fX2MiOm51bGwsIlByb2R1Y3RfX2MiOm51bGwsIlBvdGVudGlhbExpYWJpbGl0eV9fYyI6bnVsbCwiZGF0YSI6IkF0dGFjaG1lbnQgZXhhbXBsZSJ9", + "fileSize": "1.12 kB" + } + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.5 second1": [ + { + "startTime": 1705409100886, + "executionTime": 506, + "source": [ + { + "previousNode": "Salesforce2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "002090000011nDgAAI", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce14": [ + { + "startTime": 1705409101392, + "executionTime": 296, + "source": [ + { + "previousNode": "Sleep 0.5 second7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00P0900000MuBd0EAF", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce3": [ + { + "startTime": 1705409101689, + "executionTime": 163, + "source": [ + { + "previousNode": "Sleep 0.5 second1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "0010900002NKrwVAAT", + "Name": "Account1705408303842", + "Type": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce15": [ + { + "startTime": 1705409101852, + "executionTime": 166, + "source": [ + { + "previousNode": "Salesforce14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00P0900000MuBd0EAF", + "IsDeleted": false, + "ParentId": "5000900000ts7wRAAQ", + "Name": "Attachment1705409101394", + "IsPrivate": false, + "ContentType": "application/json", + "BodyLength": 1116, + "Body": "/services/data/v59.0/sobjects/Attachment/00P0900000MuBd0EAF/Body", + "OwnerId": "00509000005ntkGAAQ", + "CreatedDate": "2024-01-16T12:45:01.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:45:01.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:45:01.000+0000", + "Description": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce4": [ + { + "startTime": 1705409102019, + "executionTime": 166, + "source": [ + { + "previousNode": "Salesforce3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second6": [ + { + "startTime": 1705409102185, + "executionTime": 506, + "source": [ + { + "previousNode": "Salesforce15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00P0900000MuBd0EAF", + "IsDeleted": false, + "ParentId": "5000900000ts7wRAAQ", + "Name": "Attachment1705409101394", + "IsPrivate": false, + "ContentType": "application/json", + "BodyLength": 1116, + "Body": "/services/data/v59.0/sobjects/Attachment/00P0900000MuBd0EAF/Body", + "OwnerId": "00509000005ntkGAAQ", + "CreatedDate": "2024-01-16T12:45:01.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:45:01.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:45:01.000+0000", + "Description": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.5 second2": [ + { + "startTime": 1705409102692, + "executionTime": 507, + "source": [ + { + "previousNode": "Salesforce4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce16": [ + { + "startTime": 1705409103200, + "executionTime": 140, + "source": [ + { + "previousNode": "Sleep 0.5 second6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00P0900000MuBd0EAF", + "Name": "Attachment1705409101394" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce5": [ + { + "startTime": 1705409103341, + "executionTime": 305, + "source": [ + { + "previousNode": "Sleep 0.5 second2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce17": [ + { + "startTime": 1705409103646, + "executionTime": 164, + "source": [ + { + "previousNode": "Salesforce16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce6": [ + { + "startTime": 1705409103811, + "executionTime": 444, + "source": [ + { + "previousNode": "Salesforce5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second5": [ + { + "startTime": 1705409104256, + "executionTime": 507, + "source": [ + { + "previousNode": "Salesforce17" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce18": [ + { + "startTime": 1705409104763, + "executionTime": 187, + "source": [ + { + "previousNode": "Sleep 0.5 second5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce19": [ + { + "startTime": 1705409104951, + "executionTime": 213, + "source": [ + { + "previousNode": "Salesforce18" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce9": [ + { + "startTime": 1705409105164, + "executionTime": 243, + "source": [ + { + "previousNode": "Salesforce19" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00a09000004JUeBAAW", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second4": [ + { + "startTime": 1705409105408, + "executionTime": 507, + "source": [ + { + "previousNode": "Salesforce9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00a09000004JUeBAAW", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce10": [ + { + "startTime": 1705409105916, + "executionTime": 147, + "source": [ + { + "previousNode": "Sleep 0.5 second4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce11": [ + { + "startTime": 1705409106064, + "executionTime": 149, + "source": [ + { + "previousNode": "Salesforce10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "5000900000ts7wRAAQ", + "AccountId": { + "object": true + }, + "ContactId": { + "object": true + }, + "Priority": "Medium", + "Status": "New", + "Subject": "Subject1705409098603", + "Type": "Other" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second3": [ + { + "startTime": 1705409106213, + "executionTime": 505, + "source": [ + { + "previousNode": "Salesforce11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "5000900000ts7wRAAQ", + "AccountId": { + "object": true + }, + "ContactId": { + "object": true + }, + "Priority": "Medium", + "Status": "New", + "Subject": "Subject1705409098603", + "Type": "Other" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce12": [ + { + "startTime": 1705409106718, + "executionTime": 240, + "source": [ + { + "previousNode": "Sleep 0.5 second3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce13": [ + { + "startTime": 1705409106958, + "executionTime": 397, + "source": [ + { + "previousNode": "Salesforce12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Salesforce13" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-01-16T12:44:58.575Z", + "stoppedAt": "2024-01-16T12:45:07.356Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/185-snapshot.json b/test-workflows/snapshots/185-snapshot.json new file mode 100644 index 0000000000..8f228fe10f --- /dev/null +++ b/test-workflows/snapshots/185-snapshot.json @@ -0,0 +1,1588 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1705409098608, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce": [ + { + "startTime": 1705409098608, + "executionTime": 437, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0030900002C8F6SAAV", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce8": [ + { + "startTime": 1705409099045, + "executionTime": 172, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "a000900000jSn74AAC", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce13": [ + { + "startTime": 1705409099218, + "executionTime": 178, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "label": "FixedFlow", + "name": "FixedFlow", + "type": "FLOW", + "url": "/services/data/v59.0/actions/custom/flow/FixedFlow" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce15": [ + { + "startTime": 1705409099396, + "executionTime": 280, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00Q0900000Q92tNEAR", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce1": [ + { + "startTime": 1705409099677, + "executionTime": 179, + "source": [ + { + "previousNode": "Salesforce" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "0030900002C8F6SAAV", + "IsDeleted": false, + "MasterRecordId": { + "object": true + }, + "AccountId": { + "object": true + }, + "LastName": "Contact1705409098611", + "FirstName": { + "object": true + }, + "Salutation": { + "object": true + }, + "Name": "Contact1705409098611", + "OtherStreet": { + "object": true + }, + "OtherCity": { + "object": true + }, + "OtherState": { + "object": true + }, + "OtherPostalCode": { + "object": true + }, + "OtherCountry": { + "object": true + }, + "OtherLatitude": { + "object": true + }, + "OtherLongitude": { + "object": true + }, + "OtherGeocodeAccuracy": { + "object": true + }, + "OtherAddress": { + "object": true + }, + "MailingStreet": { + "object": true + }, + "MailingCity": { + "object": true + }, + "MailingState": { + "object": true + }, + "MailingPostalCode": { + "object": true + }, + "MailingCountry": { + "object": true + }, + "MailingLatitude": { + "object": true + }, + "MailingLongitude": { + "object": true + }, + "MailingGeocodeAccuracy": { + "object": true + }, + "MailingAddress": { + "object": true + }, + "Phone": { + "object": true + }, + "Fax": { + "object": true + }, + "MobilePhone": { + "object": true + }, + "HomePhone": { + "object": true + }, + "OtherPhone": { + "object": true + }, + "AssistantPhone": { + "object": true + }, + "ReportsToId": { + "object": true + }, + "Email": { + "object": true + }, + "Title": { + "object": true + }, + "Department": { + "object": true + }, + "AssistantName": { + "object": true + }, + "LeadSource": { + "object": true + }, + "Birthdate": { + "object": true + }, + "Description": { + "object": true + }, + "OwnerId": "00509000005ntkGAAQ", + "CreatedDate": "2024-01-16T12:44:59.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:59.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:59.000+0000", + "LastActivityDate": { + "object": true + }, + "LastCURequestDate": { + "object": true + }, + "LastCUUpdateDate": { + "object": true + }, + "LastViewedDate": "2024-01-16T12:44:59.000+0000", + "LastReferencedDate": "2024-01-16T12:44:59.000+0000", + "EmailBouncedReason": { + "object": true + }, + "EmailBouncedDate": { + "object": true + }, + "IsEmailBounced": false, + "PhotoUrl": "/services/images/photo/0030900002C8F6SAAV", + "Jigsaw": { + "object": true + }, + "JigsawContactId": { + "object": true + }, + "CleanStatus": "Pending", + "IndividualId": { + "object": true + }, + "IsPriorityRecord": false, + "Level__c": { + "object": true + }, + "Languages__c": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second7": [ + { + "startTime": 1705409099857, + "executionTime": 506, + "source": [ + { + "previousNode": "Salesforce8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "a000900000jSn74AAC", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce14": [ + { + "startTime": 1705409100366, + "executionTime": 0, + "source": [ + { + "previousNode": "Salesforce13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "label": "FixedFlow", + "name": "FixedFlow", + "type": "FLOW", + "url": "/services/data/v59.0/actions/custom/flow/FixedFlow" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce16": [ + { + "startTime": 1705409100366, + "executionTime": 175, + "source": [ + { + "previousNode": "Salesforce15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00Q0900000Q92tNEAR", + "IsDeleted": false, + "MasterRecordId": { + "object": true + }, + "LastName": "LastName1705409099400", + "FirstName": { + "object": true + }, + "Salutation": { + "object": true + }, + "Name": "LastName1705409099400", + "Title": { + "object": true + }, + "Company": "n8n", + "Street": { + "object": true + }, + "City": { + "object": true + }, + "State": { + "object": true + }, + "PostalCode": { + "object": true + }, + "Country": { + "object": true + }, + "Latitude": { + "object": true + }, + "Longitude": { + "object": true + }, + "GeocodeAccuracy": { + "object": true + }, + "Address": { + "object": true + }, + "Phone": { + "object": true + }, + "MobilePhone": { + "object": true + }, + "Fax": { + "object": true + }, + "Email": { + "object": true + }, + "Website": { + "object": true + }, + "PhotoUrl": "/services/images/photo/00Q0900000Q92tNEAR", + "Description": { + "object": true + }, + "LeadSource": { + "object": true + }, + "Status": "Open - Not Contacted", + "Industry": { + "object": true + }, + "Rating": { + "object": true + }, + "AnnualRevenue": { + "object": true + }, + "NumberOfEmployees": { + "object": true + }, + "OwnerId": "00509000005ntkGAAQ", + "IsConverted": false, + "ConvertedDate": { + "object": true + }, + "ConvertedAccountId": { + "object": true + }, + "ConvertedContactId": { + "object": true + }, + "ConvertedOpportunityId": { + "object": true + }, + "IsUnreadByOwner": true, + "CreatedDate": "2024-01-16T12:44:59.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:59.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:59.000+0000", + "LastActivityDate": { + "object": true + }, + "LastViewedDate": "2024-01-16T12:44:59.000+0000", + "LastReferencedDate": "2024-01-16T12:44:59.000+0000", + "Jigsaw": { + "object": true + }, + "JigsawContactId": { + "object": true + }, + "CleanStatus": "Pending", + "CompanyDunsNumber": { + "object": true + }, + "DandbCompanyId": { + "object": true + }, + "EmailBouncedReason": { + "object": true + }, + "EmailBouncedDate": { + "object": true + }, + "IndividualId": { + "object": true + }, + "IsPriorityRecord": false, + "SICCode__c": { + "object": true + }, + "ProductInterest__c": { + "object": true + }, + "Primary__c": { + "object": true + }, + "CurrentGenerators__c": { + "object": true + }, + "NumberofLocations__c": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second1": [ + { + "startTime": 1705409100542, + "executionTime": 505, + "source": [ + { + "previousNode": "Salesforce1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "0030900002C8F6SAAV", + "IsDeleted": false, + "MasterRecordId": { + "object": true + }, + "AccountId": { + "object": true + }, + "LastName": "Contact1705409098611", + "FirstName": { + "object": true + }, + "Salutation": { + "object": true + }, + "Name": "Contact1705409098611", + "OtherStreet": { + "object": true + }, + "OtherCity": { + "object": true + }, + "OtherState": { + "object": true + }, + "OtherPostalCode": { + "object": true + }, + "OtherCountry": { + "object": true + }, + "OtherLatitude": { + "object": true + }, + "OtherLongitude": { + "object": true + }, + "OtherGeocodeAccuracy": { + "object": true + }, + "OtherAddress": { + "object": true + }, + "MailingStreet": { + "object": true + }, + "MailingCity": { + "object": true + }, + "MailingState": { + "object": true + }, + "MailingPostalCode": { + "object": true + }, + "MailingCountry": { + "object": true + }, + "MailingLatitude": { + "object": true + }, + "MailingLongitude": { + "object": true + }, + "MailingGeocodeAccuracy": { + "object": true + }, + "MailingAddress": { + "object": true + }, + "Phone": { + "object": true + }, + "Fax": { + "object": true + }, + "MobilePhone": { + "object": true + }, + "HomePhone": { + "object": true + }, + "OtherPhone": { + "object": true + }, + "AssistantPhone": { + "object": true + }, + "ReportsToId": { + "object": true + }, + "Email": { + "object": true + }, + "Title": { + "object": true + }, + "Department": { + "object": true + }, + "AssistantName": { + "object": true + }, + "LeadSource": { + "object": true + }, + "Birthdate": { + "object": true + }, + "Description": { + "object": true + }, + "OwnerId": "00509000005ntkGAAQ", + "CreatedDate": "2024-01-16T12:44:59.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:59.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:59.000+0000", + "LastActivityDate": { + "object": true + }, + "LastCURequestDate": { + "object": true + }, + "LastCUUpdateDate": { + "object": true + }, + "LastViewedDate": "2024-01-16T12:44:59.000+0000", + "LastReferencedDate": "2024-01-16T12:44:59.000+0000", + "EmailBouncedReason": { + "object": true + }, + "EmailBouncedDate": { + "object": true + }, + "IsEmailBounced": false, + "PhotoUrl": "/services/images/photo/0030900002C8F6SAAV", + "Jigsaw": { + "object": true + }, + "JigsawContactId": { + "object": true + }, + "CleanStatus": "Pending", + "IndividualId": { + "object": true + }, + "IsPriorityRecord": false, + "Level__c": { + "object": true + }, + "Languages__c": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce9": [ + { + "startTime": 1705409101048, + "executionTime": 237, + "source": [ + { + "previousNode": "Sleep 0.5 second7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "a000900000jSn74AAC", + "OwnerId": "00509000005ntkGAAQ", + "IsDeleted": false, + "Name": "TestCustomObjectFixed", + "CreatedDate": "2024-01-16T12:44:59.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:59.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:59.000+0000" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second": [ + { + "startTime": 1705409101285, + "executionTime": 507, + "source": [ + { + "previousNode": "Salesforce16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00Q0900000Q92tNEAR", + "IsDeleted": false, + "MasterRecordId": { + "object": true + }, + "LastName": "LastName1705409099400", + "FirstName": { + "object": true + }, + "Salutation": { + "object": true + }, + "Name": "LastName1705409099400", + "Title": { + "object": true + }, + "Company": "n8n", + "Street": { + "object": true + }, + "City": { + "object": true + }, + "State": { + "object": true + }, + "PostalCode": { + "object": true + }, + "Country": { + "object": true + }, + "Latitude": { + "object": true + }, + "Longitude": { + "object": true + }, + "GeocodeAccuracy": { + "object": true + }, + "Address": { + "object": true + }, + "Phone": { + "object": true + }, + "MobilePhone": { + "object": true + }, + "Fax": { + "object": true + }, + "Email": { + "object": true + }, + "Website": { + "object": true + }, + "PhotoUrl": "/services/images/photo/00Q0900000Q92tNEAR", + "Description": { + "object": true + }, + "LeadSource": { + "object": true + }, + "Status": "Open - Not Contacted", + "Industry": { + "object": true + }, + "Rating": { + "object": true + }, + "AnnualRevenue": { + "object": true + }, + "NumberOfEmployees": { + "object": true + }, + "OwnerId": "00509000005ntkGAAQ", + "IsConverted": false, + "ConvertedDate": { + "object": true + }, + "ConvertedAccountId": { + "object": true + }, + "ConvertedContactId": { + "object": true + }, + "ConvertedOpportunityId": { + "object": true + }, + "IsUnreadByOwner": true, + "CreatedDate": "2024-01-16T12:44:59.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:59.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:59.000+0000", + "LastActivityDate": { + "object": true + }, + "LastViewedDate": "2024-01-16T12:44:59.000+0000", + "LastReferencedDate": "2024-01-16T12:44:59.000+0000", + "Jigsaw": { + "object": true + }, + "JigsawContactId": { + "object": true + }, + "CleanStatus": "Pending", + "CompanyDunsNumber": { + "object": true + }, + "DandbCompanyId": { + "object": true + }, + "EmailBouncedReason": { + "object": true + }, + "EmailBouncedDate": { + "object": true + }, + "IndividualId": { + "object": true + }, + "IsPriorityRecord": false, + "SICCode__c": { + "object": true + }, + "ProductInterest__c": { + "object": true + }, + "Primary__c": { + "object": true + }, + "CurrentGenerators__c": { + "object": true + }, + "NumberofLocations__c": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce2": [ + { + "startTime": 1705409101792, + "executionTime": 173, + "source": [ + { + "previousNode": "Sleep 0.5 second1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "002090000011nDlAAI", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce10": [ + { + "startTime": 1705409101966, + "executionTime": 131, + "source": [ + { + "previousNode": "Salesforce9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "a0009000008QNMNAA4" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce17": [ + { + "startTime": 1705409102098, + "executionTime": 203, + "source": [ + { + "previousNode": "Sleep 0.5 second" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "002090000011nDvAAI", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce3": [ + { + "startTime": 1705409102302, + "executionTime": 166, + "source": [ + { + "previousNode": "Salesforce2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second6": [ + { + "startTime": 1705409102468, + "executionTime": 506, + "source": [ + { + "previousNode": "Salesforce10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "a0009000008QNMNAA4" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce18": [ + { + "startTime": 1705409102975, + "executionTime": 160, + "source": [ + { + "previousNode": "Salesforce17" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second3": [ + { + "startTime": 1705409103135, + "executionTime": 505, + "source": [ + { + "previousNode": "Salesforce3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce11": [ + { + "startTime": 1705409103641, + "executionTime": 196, + "source": [ + { + "previousNode": "Sleep 0.5 second6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second2": [ + { + "startTime": 1705409103837, + "executionTime": 505, + "source": [ + { + "previousNode": "Salesforce18" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce4": [ + { + "startTime": 1705409104343, + "executionTime": 145, + "source": [ + { + "previousNode": "Sleep 0.5 second3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "0030900002C8EiUAAV", + "FirstName": { + "object": true + }, + "LastName": "Contact1705407559274", + "Email": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce12": [ + { + "startTime": 1705409104489, + "executionTime": 315, + "source": [ + { + "previousNode": "Salesforce11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce19": [ + { + "startTime": 1705409104804, + "executionTime": 151, + "source": [ + { + "previousNode": "Sleep 0.5 second2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00Q09000006rtukEAA", + "Company": "n8n", + "FirstName": { + "object": true + }, + "LastName": "LastName1621428976317", + "Street": { + "object": true + }, + "PostalCode": { + "object": true + }, + "City": { + "object": true + }, + "Email": { + "object": true + }, + "Status": "Open - Not Contacted" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce5": [ + { + "startTime": 1705409104955, + "executionTime": 206, + "source": [ + { + "previousNode": "Salesforce4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00v0900000ZyfD3AAJ", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce20": [ + { + "startTime": 1705409105162, + "executionTime": 259, + "source": [ + { + "previousNode": "Salesforce19" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00v0900000ZyfD8AAJ", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second5": [ + { + "startTime": 1705409105421, + "executionTime": 504, + "source": [ + { + "previousNode": "Salesforce5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00v0900000ZyfD3AAJ", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.5 second4": [ + { + "startTime": 1705409105925, + "executionTime": 504, + "source": [ + { + "previousNode": "Salesforce20" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00v0900000ZyfD8AAJ", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce6": [ + { + "startTime": 1705409106431, + "executionTime": 257, + "source": [ + { + "previousNode": "Sleep 0.5 second5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce21": [ + { + "startTime": 1705409106688, + "executionTime": 205, + "source": [ + { + "previousNode": "Sleep 0.5 second4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce7": [ + { + "startTime": 1705409106893, + "executionTime": 466, + "source": [ + { + "previousNode": "Salesforce6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce22": [ + { + "startTime": 1705409107359, + "executionTime": 509, + "source": [ + { + "previousNode": "Salesforce21" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Salesforce22" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-01-16T12:44:58.604Z", + "stoppedAt": "2024-01-16T12:45:07.868Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/186-snapshot.json b/test-workflows/snapshots/186-snapshot.json new file mode 100644 index 0000000000..555e2018ef --- /dev/null +++ b/test-workflows/snapshots/186-snapshot.json @@ -0,0 +1,919 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1705409098613, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce": [ + { + "startTime": 1705409098614, + "executionTime": 397, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0060900000WRCqkAAH", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce7": [ + { + "startTime": 1705409099012, + "executionTime": 152, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "0010900002NKrwVAAT", + "Name": "Account1705408303842", + "BillingCity": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second4": [ + { + "startTime": 1705409099164, + "executionTime": 517, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.5 second": [ + { + "startTime": 1705409099681, + "executionTime": 505, + "source": [ + { + "previousNode": "Salesforce" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0060900000WRCqkAAH", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce8": [ + { + "startTime": 1705409100187, + "executionTime": 217, + "source": [ + { + "previousNode": "Sleep 0.5 second4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "00T0900001bX5nSEAS", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce1": [ + { + "startTime": 1705409100404, + "executionTime": 169, + "source": [ + { + "previousNode": "Sleep 0.5 second" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "0060900000WRCqkAAH", + "IsDeleted": false, + "AccountId": { + "object": true + }, + "IsPrivate": false, + "Name": "Opp1705409098616", + "Description": { + "object": true + }, + "StageName": "Value Proposition", + "Amount": { + "object": true + }, + "Probability": 50, + "ExpectedRevenue": { + "object": true + }, + "TotalOpportunityQuantity": { + "object": true + }, + "CloseDate": "2021-03-31", + "Type": { + "object": true + }, + "NextStep": { + "object": true + }, + "LeadSource": { + "object": true + }, + "IsClosed": false, + "IsWon": false, + "ForecastCategory": "Pipeline", + "ForecastCategoryName": "Pipeline", + "CampaignId": { + "object": true + }, + "HasOpportunityLineItem": false, + "Pricebook2Id": { + "object": true + }, + "OwnerId": "00509000005ntkGAAQ", + "CreatedDate": "2024-01-16T12:44:58.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:44:58.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:44:59.000+0000", + "LastActivityDate": { + "object": true + }, + "PushCount": 0, + "LastStageChangeDate": { + "object": true + }, + "FiscalQuarter": 1, + "FiscalYear": 2021, + "Fiscal": "2021 1", + "ContactId": { + "object": true + }, + "LastViewedDate": "2024-01-16T12:44:59.000+0000", + "LastReferencedDate": "2024-01-16T12:44:59.000+0000", + "HasOpenActivity": false, + "HasOverdueTask": false, + "LastAmountChangedHistoryId": { + "object": true + }, + "LastCloseDateChangedHistoryId": { + "object": true + }, + "DeliveryInstallationStatus__c": { + "object": true + }, + "TrackingNumber__c": { + "object": true + }, + "OrderNumber__c": { + "object": true + }, + "CurrentGenerators__c": { + "object": true + }, + "MainCompetitors__c": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce9": [ + { + "startTime": 1705409100574, + "executionTime": 166, + "source": [ + { + "previousNode": "Salesforce8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00T0900001bX5nSEAS", + "WhoId": { + "object": true + }, + "WhatId": { + "object": true + }, + "Subject": { + "object": true + }, + "ActivityDate": { + "object": true + }, + "Status": "In Progress", + "Priority": "Normal", + "IsHighPriority": false, + "OwnerId": "00509000005ntkGAAQ", + "Description": { + "object": true + }, + "IsDeleted": false, + "AccountId": { + "object": true + }, + "IsClosed": false, + "CreatedDate": "2024-01-16T12:45:00.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:45:00.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:45:00.000+0000", + "IsArchived": false, + "CallDurationInSeconds": { + "object": true + }, + "CallType": { + "object": true + }, + "CallDisposition": { + "object": true + }, + "CallObject": { + "object": true + }, + "ReminderDateTime": { + "object": true + }, + "IsReminderSet": false, + "RecurrenceActivityId": { + "object": true + }, + "IsRecurrence": false, + "RecurrenceStartDateOnly": { + "object": true + }, + "RecurrenceEndDateOnly": { + "object": true + }, + "RecurrenceTimeZoneSidKey": { + "object": true + }, + "RecurrenceType": { + "object": true + }, + "RecurrenceInterval": { + "object": true + }, + "RecurrenceDayOfWeekMask": { + "object": true + }, + "RecurrenceDayOfMonth": { + "object": true + }, + "RecurrenceInstance": { + "object": true + }, + "RecurrenceMonthOfYear": { + "object": true + }, + "RecurrenceRegeneratedType": { + "object": true + }, + "TaskSubtype": "Task", + "CompletedDateTime": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce2": [ + { + "startTime": 1705409100741, + "executionTime": 1618, + "source": [ + { + "previousNode": "Salesforce1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "002090000011nDqAAI", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second3": [ + { + "startTime": 1705409102359, + "executionTime": 505, + "source": [ + { + "previousNode": "Salesforce9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00T0900001bX5nSEAS", + "WhoId": { + "object": true + }, + "WhatId": { + "object": true + }, + "Subject": { + "object": true + }, + "ActivityDate": { + "object": true + }, + "Status": "In Progress", + "Priority": "Normal", + "IsHighPriority": false, + "OwnerId": "00509000005ntkGAAQ", + "Description": { + "object": true + }, + "IsDeleted": false, + "AccountId": { + "object": true + }, + "IsClosed": false, + "CreatedDate": "2024-01-16T12:45:00.000+0000", + "CreatedById": "00509000005ntkGAAQ", + "LastModifiedDate": "2024-01-16T12:45:00.000+0000", + "LastModifiedById": "00509000005ntkGAAQ", + "SystemModstamp": "2024-01-16T12:45:00.000+0000", + "IsArchived": false, + "CallDurationInSeconds": { + "object": true + }, + "CallType": { + "object": true + }, + "CallDisposition": { + "object": true + }, + "CallObject": { + "object": true + }, + "ReminderDateTime": { + "object": true + }, + "IsReminderSet": false, + "RecurrenceActivityId": { + "object": true + }, + "IsRecurrence": false, + "RecurrenceStartDateOnly": { + "object": true + }, + "RecurrenceEndDateOnly": { + "object": true + }, + "RecurrenceTimeZoneSidKey": { + "object": true + }, + "RecurrenceType": { + "object": true + }, + "RecurrenceInterval": { + "object": true + }, + "RecurrenceDayOfWeekMask": { + "object": true + }, + "RecurrenceDayOfMonth": { + "object": true + }, + "RecurrenceInstance": { + "object": true + }, + "RecurrenceMonthOfYear": { + "object": true + }, + "RecurrenceRegeneratedType": { + "object": true + }, + "TaskSubtype": "Task", + "CompletedDateTime": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.5 second1": [ + { + "startTime": 1705409102865, + "executionTime": 506, + "source": [ + { + "previousNode": "Salesforce2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "002090000011nDqAAI", + "success": true, + "errors": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce10": [ + { + "startTime": 1705409103371, + "executionTime": 135, + "source": [ + { + "previousNode": "Sleep 0.5 second3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce3": [ + { + "startTime": 1705409103506, + "executionTime": 142, + "source": [ + { + "previousNode": "Sleep 0.5 second1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "objectDescribe": { + "object": true + }, + "recentItems": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce11": [ + { + "startTime": 1705409103648, + "executionTime": 164, + "source": [ + { + "previousNode": "Salesforce10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00T0900000NzAPdEAN", + "Subject": { + "object": true + }, + "Status": "In Progress", + "Priority": "Normal" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce4": [ + { + "startTime": 1705409103813, + "executionTime": 153, + "source": [ + { + "previousNode": "Salesforce3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00609000006wdbhAAA", + "AccountId": { + "object": true + }, + "Amount": { + "object": true + }, + "Probability": 50, + "Type": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second5": [ + { + "startTime": 1705409103966, + "executionTime": 507, + "source": [ + { + "previousNode": "Salesforce11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00T0900000NzAPdEAN", + "Subject": { + "object": true + }, + "Status": "In Progress", + "Priority": "Normal" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.5 second2": [ + { + "startTime": 1705409104474, + "executionTime": 506, + "source": [ + { + "previousNode": "Salesforce4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "attributes": { + "object": true + }, + "Id": "00609000006wdbhAAA", + "AccountId": { + "object": true + }, + "Amount": { + "object": true + }, + "Probability": 50, + "Type": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Salesforce12": [ + { + "startTime": 1705409104981, + "executionTime": 193, + "source": [ + { + "previousNode": "Sleep 0.5 second5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce5": [ + { + "startTime": 1705409105174, + "executionTime": 245, + "source": [ + { + "previousNode": "Sleep 0.5 second2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce13": [ + { + "startTime": 1705409105419, + "executionTime": 358, + "source": [ + { + "previousNode": "Salesforce12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Salesforce6": [ + { + "startTime": 1705409105778, + "executionTime": 409, + "source": [ + { + "previousNode": "Salesforce5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "errors": [ + "json array" + ], + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Salesforce6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-01-16T12:44:58.611Z", + "stoppedAt": "2024-01-16T12:45:06.187Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/187-snapshot.json b/test-workflows/snapshots/187-snapshot.json new file mode 100644 index 0000000000..18135b36d1 --- /dev/null +++ b/test-workflows/snapshots/187-snapshot.json @@ -0,0 +1,253 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331893392, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1710331893392, + "executionTime": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "random": 198, + "test": "Entry1710331893394" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strapi": [ + { + "startTime": 1710331893394, + "executionTime": 444, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1285, + "test": "Entry1710331893394", + "random": 198, + "published_at": "2024-03-13T12:11:33.766Z", + "created_at": "2024-03-13T12:11:33.772Z", + "updated_at": "2024-03-13T12:11:33.772Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strapi1": [ + { + "startTime": 1710331893838, + "executionTime": 389, + "source": [ + { + "previousNode": "Strapi" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1285, + "test": "Entry1710331893394", + "random": 198, + "published_at": "2024-03-13T12:11:33.766Z", + "created_at": "2024-03-13T12:11:33.772Z", + "updated_at": "2024-03-13T12:11:33.772Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strapi2": [ + { + "startTime": 1710331894228, + "executionTime": 377, + "source": [ + { + "previousNode": "Strapi1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 2, + "test": { + "object": true + }, + "random": 563, + "published_at": "2021-04-29T07:56:29.555Z", + "created_at": "2021-04-29T07:56:29.563Z", + "updated_at": "2021-04-29T07:56:29.563Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1710331894606, + "executionTime": 3, + "source": [ + { + "previousNode": "Strapi2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1285, + "test": "UpdatedEntry1710331893394" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strapi3": [ + { + "startTime": 1710331894610, + "executionTime": 379, + "source": [ + { + "previousNode": "Set1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1285, + "test": "UpdatedEntry1710331893394", + "random": 198, + "published_at": "2024-03-13T12:11:33.766Z", + "created_at": "2024-03-13T12:11:33.772Z", + "updated_at": "2024-03-13T12:11:34.964Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strapi4": [ + { + "startTime": 1710331894989, + "executionTime": 402, + "source": [ + { + "previousNode": "Strapi3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1285, + "test": "UpdatedEntry1710331893394", + "random": 198, + "published_at": "2024-03-13T12:11:33.766Z", + "created_at": "2024-03-13T12:11:33.772Z", + "updated_at": "2024-03-13T12:11:34.964Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Strapi4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:33.392Z", + "stoppedAt": "2024-03-13T12:11:35.392Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/190-snapshot.json b/test-workflows/snapshots/190-snapshot.json new file mode 100644 index 0000000000..6f3c9523e4 --- /dev/null +++ b/test-workflows/snapshots/190-snapshot.json @@ -0,0 +1,1258 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891419278, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse": [ + { + "startTime": 1676891419280, + "executionTime": 633, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 383, + "name": "Category1676891419295", + "color": "FF6D5A", + "text_color": "0000FF", + "slug": "category1676891419295", + "topic_count": 0, + "post_count": 0, + "position": 382, + "description": { + "object": true + }, + "description_text": { + "object": true + }, + "description_excerpt": { + "object": true + }, + "topic_url": "/t/about-the-category1676891419295-category/763", + "read_restricted": false, + "permission": { + "object": true + }, + "notification_level": 1, + "can_edit": true, + "topic_template": { + "object": true + }, + "has_children": { + "object": true + }, + "sort_order": { + "object": true + }, + "sort_ascending": { + "object": true + }, + "show_subcategory_list": false, + "num_featured_topics": 3, + "default_view": { + "object": true + }, + "subcategory_list_style": "rows_with_featured_topics", + "default_top_period": "all", + "default_list_filter": "all", + "minimum_required_tags": 0, + "navigate_to_first_post_after_read": false, + "custom_fields": { + "object": true + }, + "min_tags_from_required_group": 1, + "required_tag_group_name": { + "object": true + }, + "read_only_banner": { + "object": true + }, + "available_groups": [ + "json array" + ], + "auto_close_hours": { + "object": true + }, + "auto_close_based_on_last_post": false, + "group_permissions": [ + "json array" + ], + "email_in": { + "object": true + }, + "email_in_allow_strangers": false, + "mailinglist_mirror": false, + "all_topics_wiki": false, + "allow_unlimited_owner_edits_on_first_post": false, + "can_delete": true, + "allow_badges": true, + "topic_featured_link_allowed": true, + "search_priority": 0, + "default_slow_mode_seconds": { + "object": true + }, + "uploaded_logo": { + "object": true + }, + "uploaded_background": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse3": [ + { + "startTime": 1676891419914, + "executionTime": 273, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 419, + "automatic": false, + "name": "Group1676891419914", + "user_count": 0, + "mentionable_level": 0, + "messageable_level": 0, + "visibility_level": 0, + "primary_group": false, + "title": { + "object": true + }, + "grant_trust_level": { + "object": true + }, + "incoming_email": { + "object": true + }, + "has_messages": false, + "flair_url": { + "object": true + }, + "flair_bg_color": { + "object": true + }, + "flair_color": { + "object": true + }, + "bio_raw": { + "object": true + }, + "bio_cooked": { + "object": true + }, + "bio_excerpt": { + "object": true + }, + "public_admission": false, + "public_exit": false, + "allow_membership_requests": false, + "full_name": { + "object": true + }, + "default_notification_level": 3, + "membership_request_template": { + "object": true + }, + "members_visibility_level": 0, + "can_see_members": true, + "can_admin_group": true, + "publish_read_state": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse7": [ + { + "startTime": 1676891420188, + "executionTime": 1124, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 767, + "name": "UserName LastName", + "username": "nodeqa", + "avatar_template": "/letter_avatar_proxy/v4/letter/n/d78d45/{size}.png", + "created_at": "2023-02-20T11:10:20.863Z", + "cooked": "

Content Mon Feb 20 2023 12:10:20 GMT+0100 (Central European Standard Time)

", + "post_number": 1, + "post_type": 1, + "updated_at": "2023-02-20T11:10:20.863Z", + "reply_count": 0, + "reply_to_post_number": { + "object": true + }, + "quote_count": 0, + "incoming_link_count": 0, + "reads": 0, + "readers_count": 0, + "score": 0, + "yours": true, + "topic_id": 764, + "topic_slug": "post-1676891420193", + "display_username": "UserName LastName", + "primary_group_name": { + "object": true + }, + "flair_name": { + "object": true + }, + "flair_url": { + "object": true + }, + "flair_bg_color": { + "object": true + }, + "flair_color": { + "object": true + }, + "version": 1, + "can_edit": true, + "can_delete": false, + "can_recover": false, + "can_wiki": true, + "user_title": { + "object": true + }, + "bookmarked": false, + "raw": "Content Mon Feb 20 2023 12:10:20 GMT+0100 (Central European Standard Time)", + "actions_summary": [ + "json array" + ], + "moderator": false, + "admin": true, + "staff": true, + "user_id": 1, + "draft_sequence": 0, + "hidden": false, + "trust_level": 1, + "deleted_at": { + "object": true + }, + "user_deleted": false, + "edit_reason": { + "object": true + }, + "can_view_edit_history": true, + "wiki": false, + "reviewable_id": { + "object": true + }, + "reviewable_score_count": 0, + "reviewable_score_pending_count": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1676891421312, + "executionTime": 15, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "username": "Username934" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse1": [ + { + "startTime": 1676891421327, + "executionTime": 426, + "source": [ + { + "previousNode": "Discourse" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 383, + "name": "UpdatedCategory1676891419295", + "color": "FF6D5A", + "text_color": "0000FF", + "slug": "category1676891419295", + "topic_count": 0, + "post_count": 0, + "position": 382, + "description": { + "object": true + }, + "description_text": { + "object": true + }, + "description_excerpt": { + "object": true + }, + "topic_url": "/t/about-the-updatedcategory1676891419295-category/763", + "read_restricted": false, + "permission": { + "object": true + }, + "notification_level": 1, + "can_edit": true, + "topic_template": { + "object": true + }, + "has_children": { + "object": true + }, + "sort_order": { + "object": true + }, + "sort_ascending": { + "object": true + }, + "show_subcategory_list": false, + "num_featured_topics": 3, + "default_view": { + "object": true + }, + "subcategory_list_style": "rows_with_featured_topics", + "default_top_period": "all", + "default_list_filter": "all", + "minimum_required_tags": 0, + "navigate_to_first_post_after_read": false, + "custom_fields": { + "object": true + }, + "min_tags_from_required_group": 1, + "required_tag_group_name": { + "object": true + }, + "read_only_banner": { + "object": true + }, + "available_groups": [ + "json array" + ], + "auto_close_hours": { + "object": true + }, + "auto_close_based_on_last_post": false, + "group_permissions": [ + "json array" + ], + "email_in": { + "object": true + }, + "email_in_allow_strangers": false, + "mailinglist_mirror": false, + "all_topics_wiki": false, + "allow_unlimited_owner_edits_on_first_post": false, + "can_delete": true, + "allow_badges": true, + "topic_featured_link_allowed": true, + "search_priority": 0, + "default_slow_mode_seconds": { + "object": true + }, + "uploaded_logo": { + "object": true + }, + "uploaded_background": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse4": [ + { + "startTime": 1676891421755, + "executionTime": 254, + "source": [ + { + "previousNode": "Discourse3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": "OK" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse14": [ + { + "startTime": 1676891422010, + "executionTime": 204, + "source": [ + { + "previousNode": "Discourse3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": "OK", + "usernames": [ + "json array" + ], + "emails": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse8": [ + { + "startTime": 1676891422214, + "executionTime": 461, + "source": [ + { + "previousNode": "Discourse7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 767, + "name": "UserName LastName", + "username": "nodeqa", + "avatar_template": "/letter_avatar_proxy/v4/letter/n/d78d45/{size}.png", + "created_at": "2023-02-20T11:10:20.863Z", + "cooked": "

updated

Content Mon Feb 20 2023 12:10:20 GMT+0100 (Central European Standard Time)

", + "post_number": 1, + "post_type": 1, + "updated_at": "2023-02-20T11:10:22.550Z", + "reply_count": 0, + "reply_to_post_number": { + "object": true + }, + "quote_count": 0, + "incoming_link_count": 0, + "reads": 1, + "readers_count": 0, + "score": 0, + "yours": true, + "topic_id": 764, + "topic_slug": "post-1676891420193", + "display_username": "UserName LastName", + "primary_group_name": { + "object": true + }, + "flair_name": { + "object": true + }, + "flair_url": { + "object": true + }, + "flair_bg_color": { + "object": true + }, + "flair_color": { + "object": true + }, + "version": 1, + "can_edit": true, + "can_delete": false, + "can_recover": false, + "can_wiki": true, + "user_title": { + "object": true + }, + "bookmarked": false, + "raw": "updated

Content Mon Feb 20 2023 12:10:20 GMT+0100 (Central European Standard Time)

", + "actions_summary": [ + "json array" + ], + "moderator": false, + "admin": true, + "staff": true, + "user_id": 1, + "draft_sequence": 1, + "hidden": false, + "trust_level": 1, + "deleted_at": { + "object": true + }, + "user_deleted": false, + "edit_reason": { + "object": true + }, + "can_view_edit_history": true, + "wiki": false, + "reviewable_id": { + "object": true + }, + "reviewable_score_count": 0, + "reviewable_score_pending_count": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse11": [ + { + "startTime": 1676891422676, + "executionTime": 238, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": false, + "message": "Username must be unique" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse2": [ + { + "startTime": 1676891422914, + "executionTime": 981, + "source": [ + { + "previousNode": "Discourse1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1, + "name": "Uncategorized", + "color": "0088CC", + "text_color": "FFFFFF", + "slug": "uncategorized", + "topic_count": 377, + "post_count": 0, + "position": 0, + "description": "Topics that don't need a category, or don't fit into any other existing category.", + "description_text": "Topics that don't need a category, or don't fit into any other existing category.", + "description_excerpt": "Topics that don't need a category, or don't fit into any other existing category.", + "topic_url": { + "object": true + }, + "read_restricted": false, + "permission": 1, + "notification_level": 1, + "can_edit": true, + "topic_template": { + "object": true + }, + "has_children": false, + "sort_order": { + "object": true + }, + "sort_ascending": { + "object": true + }, + "show_subcategory_list": false, + "num_featured_topics": 3, + "default_view": { + "object": true + }, + "subcategory_list_style": "rows_with_featured_topics", + "default_top_period": "all", + "default_list_filter": "all", + "minimum_required_tags": 0, + "navigate_to_first_post_after_read": false, + "topics_day": 0, + "topics_week": 0, + "topics_month": 0, + "topics_year": 0, + "topics_all_time": 377, + "is_uncategorized": true, + "subcategory_ids": [ + "json array" + ], + "uploaded_logo": { + "object": true + }, + "uploaded_background": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse5": [ + { + "startTime": 1676891423896, + "executionTime": 159, + "source": [ + { + "previousNode": "Discourse4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 419, + "automatic": false, + "name": "UpGroup1676891419914", + "user_count": 1, + "mentionable_level": 0, + "messageable_level": 0, + "visibility_level": 0, + "primary_group": false, + "title": { + "object": true + }, + "grant_trust_level": { + "object": true + }, + "incoming_email": { + "object": true + }, + "has_messages": false, + "flair_url": { + "object": true + }, + "flair_bg_color": { + "object": true + }, + "flair_color": { + "object": true + }, + "bio_raw": { + "object": true + }, + "bio_cooked": { + "object": true + }, + "bio_excerpt": { + "object": true + }, + "public_admission": false, + "public_exit": false, + "allow_membership_requests": false, + "full_name": { + "object": true + }, + "default_notification_level": 3, + "membership_request_template": { + "object": true + }, + "is_group_user": true, + "members_visibility_level": 0, + "can_see_members": true, + "can_admin_group": true, + "publish_read_state": false, + "is_group_owner_display": false, + "mentionable": true, + "messageable": true, + "automatic_membership_email_domains": { + "object": true + }, + "smtp_server": { + "object": true + }, + "smtp_port": { + "object": true + }, + "smtp_ssl": { + "object": true + }, + "smtp_enabled": false, + "smtp_updated_at": { + "object": true + }, + "smtp_updated_by": { + "object": true + }, + "imap_server": { + "object": true + }, + "imap_port": { + "object": true + }, + "imap_ssl": { + "object": true + }, + "imap_mailbox_name": "", + "imap_mailboxes": [ + "json array" + ], + "imap_enabled": false, + "imap_updated_at": { + "object": true + }, + "imap_updated_by": { + "object": true + }, + "email_username": { + "object": true + }, + "email_password": { + "object": true + }, + "imap_last_error": { + "object": true + }, + "imap_old_emails": { + "object": true + }, + "imap_new_emails": { + "object": true + }, + "message_count": 0, + "allow_unknown_sender_topic_replies": false, + "watching_category_ids": [ + "json array" + ], + "tracking_category_ids": [ + "json array" + ], + "watching_first_post_category_ids": [ + "json array" + ], + "regular_category_ids": [ + "json array" + ], + "muted_category_ids": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse15": [ + { + "startTime": 1676891424055, + "executionTime": 155, + "source": [ + { + "previousNode": "Discourse14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": "OK", + "usernames": [ + "json array" + ], + "skipped_usernames": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse9": [ + { + "startTime": 1676891424211, + "executionTime": 180, + "source": [ + { + "previousNode": "Discourse8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 767, + "name": "UserName LastName", + "username": "nodeqa", + "avatar_template": "/letter_avatar_proxy/v4/letter/n/d78d45/{size}.png", + "created_at": "2023-02-20T11:10:20.863Z", + "cooked": "

updated

Content Mon Feb 20 2023 12:10:20 GMT+0100 (Central European Standard Time)

", + "post_number": 1, + "post_type": 1, + "updated_at": "2023-02-20T11:10:22.550Z", + "reply_count": 0, + "reply_to_post_number": { + "object": true + }, + "quote_count": 0, + "incoming_link_count": 0, + "reads": 1, + "readers_count": 0, + "score": 0, + "yours": true, + "topic_id": 764, + "topic_slug": "post-1676891420193", + "display_username": "UserName LastName", + "primary_group_name": { + "object": true + }, + "flair_name": { + "object": true + }, + "flair_url": { + "object": true + }, + "flair_bg_color": { + "object": true + }, + "flair_color": { + "object": true + }, + "version": 1, + "can_edit": true, + "can_delete": false, + "can_recover": false, + "can_wiki": true, + "user_title": { + "object": true + }, + "bookmarked": false, + "raw": "updated

Content Mon Feb 20 2023 12:10:20 GMT+0100 (Central European Standard Time)

", + "actions_summary": [ + "json array" + ], + "moderator": false, + "admin": true, + "staff": true, + "user_id": 1, + "hidden": false, + "trust_level": 1, + "deleted_at": { + "object": true + }, + "user_deleted": false, + "edit_reason": { + "object": true + }, + "can_view_edit_history": true, + "wiki": false, + "reviewable_id": { + "object": true + }, + "reviewable_score_count": 0, + "reviewable_score_pending_count": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse12": [ + { + "startTime": 1676891424391, + "executionTime": 319, + "source": [ + { + "previousNode": "Discourse11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "user_badges": [ + "json array" + ], + "user": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse6": [ + { + "startTime": 1676891424710, + "executionTime": 198, + "source": [ + { + "previousNode": "Discourse5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1, + "automatic": true, + "name": "admins", + "display_name": "admins", + "user_count": 2, + "mentionable_level": 0, + "messageable_level": 0, + "visibility_level": 1, + "primary_group": false, + "title": { + "object": true + }, + "grant_trust_level": { + "object": true + }, + "incoming_email": { + "object": true + }, + "has_messages": false, + "flair_url": { + "object": true + }, + "flair_bg_color": { + "object": true + }, + "flair_color": { + "object": true + }, + "bio_raw": { + "object": true + }, + "bio_cooked": { + "object": true + }, + "bio_excerpt": { + "object": true + }, + "public_admission": false, + "public_exit": false, + "allow_membership_requests": false, + "full_name": { + "object": true + }, + "default_notification_level": 3, + "membership_request_template": { + "object": true + }, + "is_group_user": true, + "members_visibility_level": 0, + "can_see_members": true, + "can_admin_group": true, + "publish_read_state": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse10": [ + { + "startTime": 1676891424909, + "executionTime": 2222, + "source": [ + { + "previousNode": "Discourse9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 767, + "name": "UserName LastName", + "username": "nodeqa", + "avatar_template": "/letter_avatar_proxy/v4/letter/n/d78d45/{size}.png", + "created_at": "2023-02-20T11:10:20.863Z", + "cooked": "

updated

Content Mon Feb 20 2023 12:10:20 GMT+0100 (Central European Standard Time)

", + "post_number": 1, + "post_type": 1, + "updated_at": "2023-02-20T11:10:22.550Z", + "reply_count": 0, + "reply_to_post_number": { + "object": true + }, + "quote_count": 0, + "incoming_link_count": 0, + "reads": 1, + "readers_count": 0, + "score": 0, + "yours": true, + "topic_id": 764, + "topic_slug": "post-1676891420193", + "topic_title": "Post 1676891420193", + "topic_html_title": "Post 1676891420193", + "category_id": 1, + "display_username": "UserName LastName", + "primary_group_name": { + "object": true + }, + "flair_name": { + "object": true + }, + "flair_url": { + "object": true + }, + "flair_bg_color": { + "object": true + }, + "flair_color": { + "object": true + }, + "version": 1, + "can_edit": true, + "can_delete": false, + "can_recover": false, + "can_wiki": true, + "user_title": { + "object": true + }, + "bookmarked": false, + "raw": "updated

Content Mon Feb 20 2023 12:10:20 GMT+0100 (Central European Standard Time)

", + "actions_summary": [ + "json array" + ], + "moderator": false, + "admin": true, + "staff": true, + "user_id": 1, + "hidden": false, + "trust_level": 1, + "deleted_at": { + "object": true + }, + "user_deleted": false, + "edit_reason": { + "object": true + }, + "can_view_edit_history": true, + "wiki": false, + "reviewable_id": { + "object": true + }, + "reviewable_score_count": 0, + "reviewable_score_pending_count": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Discourse13": [ + { + "startTime": 1676891427131, + "executionTime": 1526, + "source": [ + { + "previousNode": "Discourse12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 239, + "username": "nodeqaadmin", + "name": "UserName LastName", + "avatar_template": "/letter_avatar_proxy/v4/letter/n/7c8e57/{size}.png", + "active": true, + "admin": true, + "moderator": false, + "last_seen_at": "2022-03-07T14:54:51.733Z", + "last_emailed_at": { + "object": true + }, + "created_at": "2022-03-07T12:59:28.671Z", + "last_seen_age": 30226535.62024173, + "last_emailed_age": { + "object": true + }, + "created_at_age": 30233458.68280304, + "trust_level": 0, + "manual_locked_trust_level": { + "object": true + }, + "flag_level": 0, + "title": { + "object": true + }, + "time_read": 0, + "staged": false, + "days_visited": 1, + "posts_read_count": 0, + "topics_entered": 0, + "post_count": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Discourse13" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:19.276Z", + "stoppedAt": "2023-02-20T11:10:28.658Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/191-snapshot.json b/test-workflows/snapshots/191-snapshot.json new file mode 100644 index 0000000000..4191adc261 --- /dev/null +++ b/test-workflows/snapshots/191-snapshot.json @@ -0,0 +1,283 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891419759, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MailerLite": [ + { + "startTime": 1676891419760, + "executionTime": 303, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1493465993027103000, + "name": { + "object": true + }, + "email": "fake1676891419779@test.com", + "sent": 0, + "opened": 0, + "opened_rate": 0, + "clicked": 0, + "clicked_rate": 0, + "type": "active", + "country_id": { + "object": true + }, + "signup_ip": "", + "signup_timestamp": "", + "confirmation_ip": "", + "confirmation_timestamp": "", + "fields": [ + "json array" + ], + "webform_subscribe_date": { + "object": true + }, + "date_subscribe": { + "object": true + }, + "date_unsubscribe": { + "object": true + }, + "date_created": "2023-02-20 11:10:19", + "date_updated": "2023-02-20 11:10:20", + "user_agent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MailerLite1": [ + { + "startTime": 1676891420063, + "executionTime": 182, + "source": [ + { + "previousNode": "MailerLite" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1493465993027103000, + "name": "", + "email": "fake1676891419779@test.com", + "sent": 0, + "opened": 0, + "opened_rate": 0, + "clicked": 0, + "clicked_rate": 0, + "type": "active", + "country_id": { + "object": true + }, + "signup_ip": "", + "signup_timestamp": "", + "confirmation_ip": "", + "confirmation_timestamp": "", + "fields": [ + "json array" + ], + "webform_subscribe_date": { + "object": true + }, + "date_subscribe": { + "object": true + }, + "date_unsubscribe": { + "object": true + }, + "date_created": "2023-02-20 11:10:19", + "date_updated": "2023-02-20 11:10:20", + "user_agent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MailerLite2": [ + { + "startTime": 1676891420246, + "executionTime": 219, + "source": [ + { + "previousNode": "MailerLite1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 1493465993027103000, + "name": "UpdatedName1676891420247", + "email": "fake1676891419779@test.com", + "sent": 0, + "opened": 0, + "opened_rate": 0, + "clicked": 0, + "clicked_rate": 0, + "type": "active", + "country_id": { + "object": true + }, + "signup_ip": "", + "signup_timestamp": "", + "confirmation_ip": "", + "confirmation_timestamp": "", + "fields": [ + "json array" + ], + "webform_subscribe_date": { + "object": true + }, + "date_subscribe": { + "object": true + }, + "date_unsubscribe": { + "object": true + }, + "date_created": "2023-02-20 11:10:19", + "date_updated": "2023-02-20 11:10:20", + "user_agent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MailerLite3": [ + { + "startTime": 1676891420466, + "executionTime": 160, + "source": [ + { + "previousNode": "MailerLite2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 968892253701516000, + "name": "", + "email": "nodeqa@n8n.io", + "sent": 0, + "opened": 0, + "opened_rate": 0, + "clicked": 0, + "clicked_rate": 0, + "type": "active", + "country_id": { + "object": true + }, + "signup_ip": { + "object": true + }, + "signup_timestamp": { + "object": true + }, + "confirmation_ip": { + "object": true + }, + "confirmation_timestamp": { + "object": true + }, + "fields": [ + "json array" + ], + "webform_subscribe_date": { + "object": true + }, + "date_subscribe": { + "object": true + }, + "date_unsubscribe": { + "object": true + }, + "date_created": "2021-02-26 16:35:57", + "date_updated": "2021-02-26 16:35:57", + "user_agent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "MailerLite3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:19.756Z", + "stoppedAt": "2023-02-20T11:10:20.627Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/192-snapshot.json b/test-workflows/snapshots/192-snapshot.json new file mode 100644 index 0000000000..3956ef1725 --- /dev/null +++ b/test-workflows/snapshots/192-snapshot.json @@ -0,0 +1,729 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891419969, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost": [ + { + "startTime": 1676891419970, + "executionTime": 146, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "67chhkzc1f8s8fc598jdc6z6nr", + "create_at": 1676891420092, + "update_at": 1676891420092, + "delete_at": 0, + "team_id": "y1p853gfspdrxre5oextbii7wh", + "type": "O", + "display_name": "TestChannel1676891419984", + "name": "testchannel1676891419984", + "header": "", + "purpose": "", + "last_post_at": 0, + "total_msg_count": 0, + "extra_update_at": 0, + "creator_id": "fo4frgcntiy6jfc63wor76kxpy", + "scheme_id": { + "object": true + }, + "props": { + "object": true + }, + "group_constrained": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost13": [ + { + "startTime": 1676891420116, + "executionTime": 208, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "o9f9bza4nj8hbp7xjy1ef9h1ny", + "create_at": 1676891420220, + "update_at": 1676891420220, + "delete_at": 0, + "username": "username1676891420116", + "auth_data": "", + "auth_service": "email", + "email": "fake1676891420117@test.com", + "nickname": "", + "first_name": "", + "last_name": "", + "position": "", + "roles": "system_user", + "notify_props": { + "object": true + }, + "last_password_update": 1676891420220, + "locale": "en", + "timezone": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost1": [ + { + "startTime": 1676891420324, + "executionTime": 102, + "source": [ + { + "previousNode": "Mattermost" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "channel_id": "67chhkzc1f8s8fc598jdc6z6nr", + "user_id": "4yp7tpa3sbgk9qrf38egttbioo", + "roles": "channel_user", + "last_viewed_at": 0, + "msg_count": 0, + "mention_count": 0, + "notify_props": { + "object": true + }, + "last_update_at": 1676891420440, + "scheme_guest": false, + "scheme_user": true, + "scheme_admin": false, + "explicit_roles": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost14": [ + { + "startTime": 1676891420426, + "executionTime": 72, + "source": [ + { + "previousNode": "Mattermost13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "o9f9bza4nj8hbp7xjy1ef9h1ny", + "create_at": 1676891420220, + "update_at": 1676891420220, + "delete_at": 0, + "username": "username1676891420116", + "auth_data": "", + "auth_service": "email", + "email": "fake1676891420117@test.com", + "nickname": "", + "first_name": "", + "last_name": "", + "position": "", + "roles": "system_user", + "locale": "en", + "timezone": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost7": [ + { + "startTime": 1676891420499, + "executionTime": 110, + "source": [ + { + "previousNode": "Mattermost1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "fjpkzppmfjysmpnps1shmzxoxy", + "create_at": 1676891420598, + "update_at": 1676891420598, + "edit_at": 0, + "delete_at": 0, + "is_pinned": false, + "user_id": "fo4frgcntiy6jfc63wor76kxpy", + "channel_id": "67chhkzc1f8s8fc598jdc6z6nr", + "root_id": "", + "parent_id": "", + "original_id": "", + "message": "Message1676891420501", + "type": "", + "props": { + "object": true + }, + "hashtags": "", + "pending_post_id": "", + "reply_count": 0, + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost15": [ + { + "startTime": 1676891420610, + "executionTime": 71, + "source": [ + { + "previousNode": "Mattermost14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "o9f9bza4nj8hbp7xjy1ef9h1ny", + "create_at": 1676891420220, + "update_at": 1676891420220, + "delete_at": 0, + "username": "username1676891420116", + "auth_data": "", + "auth_service": "email", + "email": "fake1676891420117@test.com", + "nickname": "", + "first_name": "", + "last_name": "", + "position": "", + "roles": "system_user", + "locale": "en", + "timezone": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost8": [ + { + "startTime": 1676891420682, + "executionTime": 67, + "source": [ + { + "previousNode": "Mattermost7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "q1oq5ibknjnx5j53ig9dppo88c", + "create_at": 1676891420775, + "update_at": 0, + "edit_at": 0, + "delete_at": 0, + "is_pinned": false, + "user_id": "fo4frgcntiy6jfc63wor76kxpy", + "channel_id": "67chhkzc1f8s8fc598jdc6z6nr", + "root_id": "", + "parent_id": "", + "original_id": "", + "message": "EpheMessage1676891420683", + "type": "system_ephemeral", + "props": { + "object": true + }, + "hashtags": "", + "pending_post_id": "", + "reply_count": 0, + "metadata": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost16": [ + { + "startTime": 1676891420750, + "executionTime": 132, + "source": [ + { + "previousNode": "Mattermost15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "hp6pnfry6tfr8nsjbsowcpunah", + "create_at": 1619769670089, + "update_at": 1619769670089, + "delete_at": 0, + "username": "channelexport", + "auth_data": "", + "auth_service": "", + "email": "channelexport@localhost", + "nickname": "", + "first_name": "Channel Export Bot", + "last_name": "", + "position": "", + "roles": "system_user", + "locale": "en", + "timezone": { + "object": true + }, + "is_bot": true, + "bot_description": "A bot account created by the channel export plugin." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost10": [ + { + "startTime": 1676891420883, + "executionTime": 82, + "source": [ + { + "previousNode": "Mattermost8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "user_id": "fo4frgcntiy6jfc63wor76kxpy", + "post_id": "fjpkzppmfjysmpnps1shmzxoxy", + "emoji_name": "rocket", + "create_at": 1676891420884 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost17": [ + { + "startTime": 1676891420966, + "executionTime": 87, + "source": [ + { + "previousNode": "Mattermost16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "OK" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost11": [ + { + "startTime": 1676891421054, + "executionTime": 73, + "source": [ + { + "previousNode": "Mattermost10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "user_id": "fo4frgcntiy6jfc63wor76kxpy", + "post_id": "fjpkzppmfjysmpnps1shmzxoxy", + "emoji_name": "rocket", + "create_at": 1676891420884 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost18": [ + { + "startTime": 1676891421127, + "executionTime": 91, + "source": [ + { + "previousNode": "Mattermost17" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "OK" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost12": [ + { + "startTime": 1676891421219, + "executionTime": 81, + "source": [ + { + "previousNode": "Mattermost11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "OK" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost9": [ + { + "startTime": 1676891421300, + "executionTime": 85, + "source": [ + { + "previousNode": "Mattermost12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "OK" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost2": [ + { + "startTime": 1676891421385, + "executionTime": 154, + "source": [ + { + "previousNode": "Mattermost9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "fo4frgcntiy6jfc63wor76kxpy", + "create_at": 1619770719466, + "update_at": 1624374690399, + "delete_at": 0, + "username": "nodeqa", + "auth_data": "", + "auth_service": "", + "email": "nodeqa@test.com", + "nickname": "", + "first_name": "", + "last_name": "", + "position": "", + "roles": "system_admin system_user", + "locale": "en", + "timezone": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost3": [ + { + "startTime": 1676891421540, + "executionTime": 76, + "source": [ + { + "previousNode": "Mattermost2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "channel_id": "67chhkzc1f8s8fc598jdc6z6nr", + "member_count": 2, + "guest_count": 0, + "pinnedpost_count": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost4": [ + { + "startTime": 1676891421616, + "executionTime": 92, + "source": [ + { + "previousNode": "Mattermost3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "OK" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost5": [ + { + "startTime": 1676891421708, + "executionTime": 90, + "source": [ + { + "previousNode": "Mattermost4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "67chhkzc1f8s8fc598jdc6z6nr", + "create_at": 1676891420092, + "update_at": 1676891421730, + "delete_at": 0, + "team_id": "y1p853gfspdrxre5oextbii7wh", + "type": "O", + "display_name": "TestChannel1676891419984", + "name": "testchannel1676891419984", + "header": "", + "purpose": "", + "last_post_at": 1676891421719, + "total_msg_count": 2, + "extra_update_at": 0, + "creator_id": "fo4frgcntiy6jfc63wor76kxpy", + "scheme_id": { + "object": true + }, + "props": { + "object": true + }, + "group_constrained": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mattermost6": [ + { + "startTime": 1676891421799, + "executionTime": 103, + "source": [ + { + "previousNode": "Mattermost5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "OK" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Mattermost6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:19.966Z", + "stoppedAt": "2023-02-20T11:10:21.902Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/194-snapshot.json b/test-workflows/snapshots/194-snapshot.json new file mode 100644 index 0000000000..4254e6ee38 --- /dev/null +++ b/test-workflows/snapshots/194-snapshot.json @@ -0,0 +1,142 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1726655395077, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailjet": [ + { + "hints": [], + "startTime": 1726655395077, + "executionTime": 146, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Status": "success", + "CustomID": "", + "To": [ + "json array" + ], + "Cc": [ + "json array" + ], + "Bcc": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailjet2": [ + { + "hints": [], + "startTime": 1726655395223, + "executionTime": 0, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailjet1": [ + { + "hints": [], + "startTime": 1726655395223, + "executionTime": 275, + "source": [ + { + "previousNode": "Mailjet" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "Status": "success", + "CustomID": "", + "To": [ + "json array" + ], + "Cc": [ + "json array" + ], + "Bcc": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Mailjet1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-09-18T10:29:55.077Z", + "stoppedAt": "2024-09-18T10:29:55.498Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/195-snapshot.json b/test-workflows/snapshots/195-snapshot.json new file mode 100644 index 0000000000..194a8995b1 --- /dev/null +++ b/test-workflows/snapshots/195-snapshot.json @@ -0,0 +1,330 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343995018, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Kitemaker1": [ + { + "startTime": 1747343995018, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 262, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0f42cd20b0617400", + "name": "n8n-qa", + "labels": [ + "json array" + ], + "statuses": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Kitemaker": [ + { + "startTime": 1747343995280, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 255, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0f42cd2088617400", + "name": "n8n-qa" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Kitemaker2": [ + { + "startTime": 1747343995535, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 392, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0f42ccbcb93d4000", + "username": "node8qa" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Kitemaker3": [ + { + "startTime": 1747343995927, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 760, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "2ce7808ff95c8800", + "number": "2218", + "title": "WorkItem1747343995928", + "description": "", + "status": { + "object": true + }, + "members": [ + "json array" + ], + "watchers": [ + "json array" + ], + "labels": [ + "json array" + ], + "effort": { + "object": true + }, + "impact": { + "object": true + }, + "updatedAt": 1747343996386, + "createdAt": 1747343996386 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Kitemaker4": [ + { + "startTime": 1747343996687, + "executionIndex": 5, + "source": [ + { + "previousNode": "Kitemaker3" + } + ], + "hints": [], + "executionTime": 270, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "2ce7808ff95c8800", + "number": "2218", + "title": "WorkItem1747343995928", + "description": "", + "status": { + "object": true + }, + "sort": "s", + "members": [ + "json array" + ], + "watchers": [ + "json array" + ], + "labels": [ + "json array" + ], + "comments": [ + "json array" + ], + "effort": { + "object": true + }, + "impact": { + "object": true + }, + "updatedAt": 1747343996386, + "createdAt": 1747343996386 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Kitemaker5": [ + { + "startTime": 1747343996957, + "executionIndex": 6, + "source": [ + { + "previousNode": "Kitemaker4" + } + ], + "hints": [], + "executionTime": 306, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "0f42cd2103617400", + "title": "Use arrow keys to navigate work items", + "description": "# Things to explore\n\n- [ ] Press the little + sign to the top right to see different types of meta data you can add to work items\n- [ ] Learn some markdown\n - [ ] `#` On an empty line creates a headline (type ## and ### for sub headlines)\n - [ ] Type `**` or `__` before and after a section of text to make it **bold**\n - [ ] Type `*` or `_` before and after a section of text to make it _italic_\n - [ ] Type `´` before and after a section of text to make it `a code block`\n - [ ] Type `*` followed by space on an empty line to make bullet points\n - [ ] Type `[]` followed by space on an empty line to make todo-lists\n - [ ] Type `1.` followed by space on an empty line to make numbered lists\n - [ ] Type `$$` before and after Tex expression $$\\frac{1}{100}$$\n- [ ] Check out our integrations\n- [ ] Make comments (they support everything the description field supports)\n- [ ] Invite your team\n- [ ] Learn hotkeys:\n - [ ] Hovering elements gives you hotkey tips. Hover this sections to see that `D` lets you edit the description\n - [ ] Other times the hotkey hints are in the UI. If you look at the right section of this screen, `R` adds a new comment\n - [ ] Pressing `?` gives you a searchable list of all hotkeys\n - [ ] In the Kitemaker command (open it by pressing `CTRL/CMD+k`) you will also be able to see the hotkeys for the commands\n - [ ] When you have long descriptions use `SPACE` and `SHIFT+SPACE` to scroll up and down\n\n", + "labels": [ + "json array" + ], + "comments": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Kitemaker6": [ + { + "startTime": 1747343997263, + "executionIndex": 7, + "source": [ + { + "previousNode": "Kitemaker5" + } + ], + "hints": [], + "executionTime": 482, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "2ce7808ff95c8800", + "number": "2218", + "title": "UpdatedWorkItem1747343995928", + "description": "", + "status": { + "object": true + }, + "members": [ + "json array" + ], + "watchers": [ + "json array" + ], + "labels": [ + "json array" + ], + "effort": { + "object": true + }, + "impact": { + "object": true + }, + "updatedAt": 1747343997664, + "createdAt": 1747343996386 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Kitemaker6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.018Z", + "stoppedAt": "2025-05-15T21:19:57.745Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/197-snapshot.json b/test-workflows/snapshots/197-snapshot.json new file mode 100644 index 0000000000..a740b61e4d --- /dev/null +++ b/test-workflows/snapshots/197-snapshot.json @@ -0,0 +1,142 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331895822, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MQTT qos:1": [ + { + "startTime": 1710331895822, + "executionTime": 99, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MQTT1 qos:0": [ + { + "startTime": 1710331895921, + "executionTime": 113, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1710331896034, + "executionTime": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "message": "MQTT-item-message1710331896036" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MQTT2 qos:2": [ + { + "startTime": 1710331896037, + "executionTime": 128, + "source": [ + { + "previousNode": "Function" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "message": "MQTT-item-message1710331896036" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "MQTT2 qos:2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:35.822Z", + "stoppedAt": "2024-03-13T12:11:36.165Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/198-snapshot.json b/test-workflows/snapshots/198-snapshot.json new file mode 100644 index 0000000000..7a9f2545d3 --- /dev/null +++ b/test-workflows/snapshots/198-snapshot.json @@ -0,0 +1,301 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858549, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1678116858551, + "executionTime": 0, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "boolean": true, + "number": 3 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Cloud Firestore5": [ + { + "startTime": 1678116858552, + "executionTime": 728, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "FixedCollection" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Cloud Firestore": [ + { + "startTime": 1678116859281, + "executionTime": 207, + "source": [ + { + "previousNode": "Set" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_name": "projects/fixedtestproject/databases/(default)/documents/FixedCollection/YNjhZsY4raBDR2lfdZZ0", + "_id": "YNjhZsY4raBDR2lfdZZ0", + "_createTime": "2023-03-06T15:34:19.490782Z", + "_updateTime": "2023-03-06T15:34:19.490782Z", + "number": "3", + "boolean": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Cloud Firestore1": [ + { + "startTime": 1678116859488, + "executionTime": 190, + "source": [ + { + "previousNode": "Google Cloud Firestore" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_name": "projects/fixedtestproject/databases/(default)/documents/FixedCollection/YNjhZsY4raBDR2lfdZZ0", + "_id": "YNjhZsY4raBDR2lfdZZ0", + "_createTime": "2023-03-06T15:34:19.490782Z", + "_updateTime": "2023-03-06T15:34:19.490782Z", + "boolean": true, + "number": "3" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1678116859678, + "executionTime": 1, + "source": [ + { + "previousNode": "Google Cloud Firestore1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "boolean": true, + "number": 100 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Cloud Firestore2": [ + { + "startTime": 1678116859679, + "executionTime": 205, + "source": [ + { + "previousNode": "Set1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "updateTime": "2021-05-10T08:20:43.439586Z", + "status": { + "object": true + }, + "boolean": true, + "number": 100 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Cloud Firestore3": [ + { + "startTime": 1678116859884, + "executionTime": 216, + "source": [ + { + "previousNode": "Google Cloud Firestore2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_name": "projects/fixedtestproject/databases/(default)/documents/FixedCollection/5xovkMwha8R2fHwT9HiW", + "_id": "5xovkMwha8R2fHwT9HiW", + "_createTime": "2021-05-12T15:31:35.922541Z", + "_updateTime": "2021-05-12T15:31:35.922541Z", + "number": "3", + "boolean": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Cloud Firestore4": [ + { + "startTime": 1678116860100, + "executionTime": 258, + "source": [ + { + "previousNode": "Google Cloud Firestore3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_name": "projects/fixedtestproject/databases/(default)/documents/FixedCollection/undefined", + "_id": "undefined", + "_createTime": "2021-05-10T08:20:43.439586Z", + "_updateTime": "2021-05-10T08:20:43.439586Z", + "number": "100" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Cloud Firestore6": [ + { + "startTime": 1678116860359, + "executionTime": 246, + "source": [ + { + "previousNode": "Google Cloud Firestore4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Cloud Firestore6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.548Z", + "stoppedAt": "2023-03-06T15:34:20.605Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/199-snapshot.json b/test-workflows/snapshots/199-snapshot.json new file mode 100644 index 0000000000..d7be507280 --- /dev/null +++ b/test-workflows/snapshots/199-snapshot.json @@ -0,0 +1,77 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331896175, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mailcheck": [ + { + "startTime": 1710331896175, + "executionTime": 15896, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "email": "jan@n8n.io", + "trustRate": 100, + "mxExists": true, + "smtpExists": true, + "isNotSmtpCatchAll": true, + "isNotDisposable": true, + "gravatar": { + "object": true + }, + "githubUsername": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Mailcheck" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:36.175Z", + "stoppedAt": "2024-03-13T12:11:52.071Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/20-snapshot.json b/test-workflows/snapshots/20-snapshot.json new file mode 100644 index 0000000000..3666c642d5 --- /dev/null +++ b/test-workflows/snapshots/20-snapshot.json @@ -0,0 +1,578 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891385658, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot6": [ + { + "startTime": 1676891385659, + "executionTime": 463, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "companyId": 14728009312, + "isDeleted": false, + "properties": { + "object": true + }, + "additionalDomains": [ + "json array" + ], + "stateChanges": [ + "json array" + ], + "mergeAudits": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot": [ + { + "startTime": 1676891386122, + "executionTime": 539, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "vid": 19501, + "canonical-vid": 19501, + "merged-vids": [ + "json array" + ], + "portal-id": 9435114, + "is-contact": true, + "properties": { + "object": true + }, + "form-submissions": [ + "json array" + ], + "list-memberships": [ + "json array" + ], + "identity-profiles": [ + "json array" + ], + "merge-audits": [ + "json array" + ], + "isNew": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot7": [ + { + "startTime": 1676891386661, + "executionTime": 483, + "source": [ + { + "previousNode": "Hubspot6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "companyId": 5386687576, + "isDeleted": false, + "properties": { + "object": true + }, + "additionalDomains": [ + "json array" + ], + "stateChanges": [ + "json array" + ], + "mergeAudits": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second": [ + { + "startTime": 1676891387144, + "executionTime": 515, + "source": [ + { + "previousNode": "Hubspot" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "vid": 19501, + "canonical-vid": 19501, + "merged-vids": [ + "json array" + ], + "portal-id": 9435114, + "is-contact": true, + "properties": { + "object": true + }, + "form-submissions": [ + "json array" + ], + "list-memberships": [ + "json array" + ], + "identity-profiles": [ + "json array" + ], + "merge-audits": [ + "json array" + ], + "isNew": false + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Hubspot9": [ + { + "startTime": 1676891387659, + "executionTime": 200, + "source": [ + { + "previousNode": "Hubspot7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "companyId": 5441478717, + "isDeleted": false, + "properties": { + "object": true + }, + "additionalDomains": [ + "json array" + ], + "stateChanges": [ + "json array" + ], + "mergeAudits": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot2": [ + { + "startTime": 1676891387860, + "executionTime": 274, + "source": [ + { + "previousNode": "Sleep 0.5 second" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "vid": 19501, + "canonical-vid": 19501, + "merged-vids": [ + "json array" + ], + "portal-id": 9435114, + "is-contact": true, + "properties": { + "object": true + }, + "form-submissions": [ + "json array" + ], + "identity-profiles": [ + "json array" + ], + "merge-audits": [ + "json array" + ], + "addedAt": 1641349488565 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot8": [ + { + "startTime": 1676891388134, + "executionTime": 255, + "source": [ + { + "previousNode": "Hubspot9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "companyId": 12067739738, + "isDeleted": false, + "properties": { + "object": true + }, + "additionalDomains": [ + "json array" + ], + "stateChanges": [ + "json array" + ], + "mergeAudits": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second1": [ + { + "startTime": 1676891388393, + "executionTime": 517, + "source": [ + { + "previousNode": "Hubspot2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "vid": 19501, + "canonical-vid": 19501, + "merged-vids": [ + "json array" + ], + "portal-id": 9435114, + "is-contact": true, + "properties": { + "object": true + }, + "form-submissions": [ + "json array" + ], + "identity-profiles": [ + "json array" + ], + "merge-audits": [ + "json array" + ], + "addedAt": 1641349488565 + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Hubspot10": [ + { + "startTime": 1676891388911, + "executionTime": 561, + "source": [ + { + "previousNode": "Hubspot8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "companyId": 14728009312, + "isDeleted": false, + "properties": { + "object": true + }, + "additionalDomains": [ + "json array" + ], + "stateChanges": [ + "json array" + ], + "mergeAudits": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot3": [ + { + "startTime": 1676891389472, + "executionTime": 263, + "source": [ + { + "previousNode": "Sleep 0.5 second1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "19901", + "properties": { + "object": true + }, + "createdAt": "2022-12-13T09:38:40.693Z", + "updatedAt": "2022-12-13T09:38:55.035Z", + "archived": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot11": [ + { + "startTime": 1676891389735, + "executionTime": 268, + "source": [ + { + "previousNode": "Hubspot10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "companyId": 14728009312, + "isDeleted": false, + "properties": { + "object": true + }, + "additionalDomains": [ + "json array" + ], + "stateChanges": [ + "json array" + ], + "mergeAudits": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1676891390006, + "executionTime": 1510, + "source": [ + { + "previousNode": "Hubspot3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "19901", + "properties": { + "object": true + }, + "createdAt": "2022-12-13T09:38:40.693Z", + "updatedAt": "2022-12-13T09:38:55.035Z", + "archived": false + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Hubspot12": [ + { + "startTime": 1676891391516, + "executionTime": 303, + "source": [ + { + "previousNode": "Hubspot11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "companyId": 14728009312, + "deleted": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot1": [ + { + "startTime": 1676891391821, + "executionTime": 288, + "source": [ + { + "previousNode": "Function" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "Hubspot1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:45.654Z", + "stoppedAt": "2023-02-20T11:09:52.112Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/202-snapshot.json b/test-workflows/snapshots/202-snapshot.json new file mode 100644 index 0000000000..eb1ea91a80 --- /dev/null +++ b/test-workflows/snapshots/202-snapshot.json @@ -0,0 +1,260 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1726655396881, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Beeminder": [ + { + "hints": [], + "startTime": 1726655396881, + "executionTime": 2507, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "timestamp": 1726655397, + "value": 1, + "comment": "", + "id": "66eaaba5f0168a005520990a", + "updated_at": 1726655397, + "requestid": { + "object": true + }, + "canonical": "18 1", + "fulltext": "2024-Sep-18 entered at 12:29 by n8nsandbox via api", + "urtext": { + "object": true + }, + "origin": "api", + "creator": "n8nsandbox", + "created_at": "2024-09-18T10:29:57.000Z", + "daystamp": "20240918", + "status": "created" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Beeminder1": [ + { + "hints": [], + "startTime": 1726655399388, + "executionTime": 652, + "source": [ + { + "previousNode": "Beeminder" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "timestamp": 1726655397, + "value": 1, + "comment": "", + "id": "66eaaba5f0168a005520990a", + "updated_at": 1726655397, + "requestid": { + "object": true + }, + "canonical": "18 1", + "fulltext": "2024-Sep-18 entered at 12:29 by n8nsandbox via api", + "urtext": { + "object": true + }, + "origin": "api", + "creator": "n8nsandbox", + "created_at": "2024-09-18T10:29:57.000Z", + "daystamp": "20240918" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Beeminder2": [ + { + "hints": [], + "startTime": 1726655400040, + "executionTime": 5736, + "source": [ + { + "previousNode": "Beeminder1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "timestamp": 1726655397, + "value": 10, + "comment": "", + "id": "66eaaba5f0168a005520990a", + "updated_at": 1726655405, + "requestid": { + "object": true + }, + "canonical": "18 10", + "fulltext": "2024-Sep-18 entered at 12:29 by n8nsandbox via api", + "urtext": { + "object": true + }, + "origin": "api", + "creator": "n8nsandbox", + "created_at": "2024-09-18T10:29:57.000Z", + "daystamp": "20240918" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Beeminder4": [ + { + "hints": [], + "startTime": 1726655405776, + "executionTime": 5760, + "source": [ + { + "previousNode": "Beeminder2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "timestamp": 1726655411, + "value": 3, + "comment": "", + "id": "66eaabb3f0168a0069209095", + "updated_at": 1726655411, + "requestid": { + "object": true + }, + "canonical": "18 3", + "fulltext": "2024-Sep-18 entered at 12:30 by n8nsandbox via api", + "urtext": { + "object": true + }, + "origin": "api", + "creator": "n8nsandbox", + "created_at": "2024-09-18T10:30:11.000Z", + "daystamp": "20240918", + "status": "created" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Beeminder3": [ + { + "hints": [], + "startTime": 1726655411536, + "executionTime": 5731, + "source": [ + { + "previousNode": "Beeminder4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "timestamp": 1726655411, + "value": 3, + "comment": "", + "id": "66eaabb3f0168a0069209095", + "updated_at": 1726655411, + "requestid": { + "object": true + }, + "canonical": "18 3", + "fulltext": "2024-Sep-18 entered at 12:30 by n8nsandbox via api", + "urtext": { + "object": true + }, + "origin": "api", + "creator": "n8nsandbox", + "created_at": "2024-09-18T10:30:11.000Z", + "daystamp": "20240918" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Beeminder3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-09-18T10:29:56.881Z", + "stoppedAt": "2024-09-18T10:30:17.267Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/203-snapshot.json b/test-workflows/snapshots/203-snapshot.json new file mode 100644 index 0000000000..79efb66a31 --- /dev/null +++ b/test-workflows/snapshots/203-snapshot.json @@ -0,0 +1,327 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343995157, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Paddle": [ + { + "startTime": 1747343995157, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 318, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 11452, + "name": "n8n test subscription", + "billing_type": "month", + "billing_period": 3, + "initial_price": { + "object": true + }, + "recurring_price": { + "object": true + }, + "trial_days": 14 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Paddle2": [ + { + "startTime": 1747343995475, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 304, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 11451, + "name": "n8n test for Omar", + "description": "a great n8n test product", + "base_price": { + "object": true + }, + "sale_price": { + "object": true + }, + "currency": "USD", + "screenshots": [ + "json array" + ], + "icon": "https://sandbox-static.paddle.com/assets/images/checkout/default_product_icon.png" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Paddle3": [ + { + "startTime": 1747343995779, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 227, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "subscription_id": 101066, + "plan_id": 11452, + "user_id": 3076, + "user_email": "name@example.com", + "marketing_consent": false, + "update_url": "https://sandbox-subscription-management.paddle.com/subscription/101066/hash/250b0346bbd6fb46bebbd6f9c989ffb7333d628b082fe54658658bacf5311bf3/update", + "cancel_url": "https://sandbox-subscription-management.paddle.com/subscription/101066/hash/250b0346bbd6fb46bebbd6f9c989ffb7333d628b082fe54658658bacf5311bf3/cancel", + "state": "paused", + "signup_date": "2021-05-14 08:52:59", + "last_payment": { + "object": true + }, + "linked_subscriptions": [ + "json array" + ], + "custom_data": { + "object": true + }, + "payment_information": { + "object": true + }, + "paused_at": "2022-04-08 00:02:35", + "paused_from": "2022-03-24 00:00:00", + "paused_reason": "delinquent" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Paddle4": [ + { + "startTime": 1747343996006, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 212, + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ], + "Paddle1": [ + { + "startTime": 1747343996218, + "executionIndex": 5, + "source": [ + { + "previousNode": "Paddle" + } + ], + "hints": [], + "executionTime": 480, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 11452, + "name": "n8n test subscription", + "billing_type": "month", + "billing_period": 3, + "initial_price": { + "object": true + }, + "recurring_price": { + "object": true + }, + "trial_days": 14 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Paddle5": [ + { + "startTime": 1747343996698, + "executionIndex": 6, + "source": [ + { + "previousNode": "Paddle2" + } + ], + "hints": [], + "executionTime": 226, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "coupon": "76879241" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Paddle6": [ + { + "startTime": 1747343996924, + "executionIndex": 7, + "source": [ + { + "previousNode": "Paddle5" + } + ], + "hints": [], + "executionTime": 216, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "updated": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Paddle7": [ + { + "startTime": 1747343997140, + "executionIndex": 8, + "source": [ + { + "previousNode": "Paddle6" + } + ], + "hints": [], + "executionTime": 338, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "coupon": "722F58E2", + "description": { + "object": true + }, + "discount_type": "flat", + "discount_amount": "5.000000000", + "discount_currency": "USD", + "allowed_uses": 999999, + "times_used": 0, + "is_recurring": false, + "expires": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Paddle7" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.156Z", + "stoppedAt": "2025-05-15T21:19:57.478Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/205-snapshot.json b/test-workflows/snapshots/205-snapshot.json new file mode 100644 index 0000000000..e39028457c --- /dev/null +++ b/test-workflows/snapshots/205-snapshot.json @@ -0,0 +1,74 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343995217, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Pushover": [ + { + "startTime": 1747343995217, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 558, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "info": "no active devices to send to", + "status": 1, + "request": "913c6bfe-1c3d-46c6-9d04-cabd7545d426" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Pushover" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.217Z", + "stoppedAt": "2025-05-15T21:19:55.775Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/208-snapshot.json b/test-workflows/snapshots/208-snapshot.json new file mode 100644 index 0000000000..6d1e3e938a --- /dev/null +++ b/test-workflows/snapshots/208-snapshot.json @@ -0,0 +1,72 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891424945, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "RocketChat": [ + { + "startTime": 1676891424946, + "executionTime": 155, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ts": 1676891425122, + "channel": "general", + "message": { + "object": true + }, + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "RocketChat" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:10:24.943Z", + "stoppedAt": "2023-02-20T11:10:25.101Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/209-snapshot.json b/test-workflows/snapshots/209-snapshot.json new file mode 100644 index 0000000000..6216e28ad3 --- /dev/null +++ b/test-workflows/snapshots/209-snapshot.json @@ -0,0 +1,246 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343995231, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set job name": [ + { + "startTime": 1747343995231, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "job_name": "nodemation_job_1747343995232" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Transcribe": [ + { + "startTime": 1747343995232, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set job name" + } + ], + "hints": [], + "executionTime": 539, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "CreationTime": 1747343995.631, + "LanguageCode": "en-US", + "Media": { + "object": true + }, + "Settings": { + "object": true + }, + "StartTime": 1747343995.653, + "TranscriptionJobName": "nodemation_job_1747343995232", + "TranscriptionJobStatus": "IN_PROGRESS" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Transcribe1": [ + { + "startTime": 1747343995771, + "executionIndex": 3, + "source": [ + { + "previousNode": "AWS Transcribe" + } + ], + "hints": [], + "executionTime": 368, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "CreationTime": 1747343995.631, + "LanguageCode": "en-US", + "Media": { + "object": true + }, + "Settings": { + "object": true + }, + "StartTime": 1747343995.653, + "Transcript": { + "object": true + }, + "TranscriptionJobName": "nodemation_job_1747343995232", + "TranscriptionJobStatus": "IN_PROGRESS" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Transcribe2": [ + { + "startTime": 1747343996139, + "executionIndex": 4, + "source": [ + { + "previousNode": "AWS Transcribe1" + } + ], + "hints": [], + "executionTime": 551, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "CreationTime": 1747343995.631, + "LanguageCode": "en-US", + "OutputLocationType": "SERVICE_BUCKET", + "StartTime": 1747343995.653, + "TranscriptionJobName": "nodemation_job_1747343995232", + "TranscriptionJobStatus": "IN_PROGRESS" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 30 seconds": [ + { + "startTime": 1747343996690, + "executionIndex": 5, + "source": [ + { + "previousNode": "AWS Transcribe2" + } + ], + "hints": [], + "executionTime": 30001, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "CreationTime": 1747343995.631, + "LanguageCode": "en-US", + "OutputLocationType": "SERVICE_BUCKET", + "StartTime": 1747343995.653, + "TranscriptionJobName": "nodemation_job_1747343995232", + "TranscriptionJobStatus": "IN_PROGRESS" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "AWS Transcribe3": [ + { + "startTime": 1747344026691, + "executionIndex": 6, + "source": [ + { + "previousNode": "Sleep 30 seconds" + } + ], + "hints": [], + "executionTime": 440, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AWS Transcribe3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.231Z", + "stoppedAt": "2025-05-15T21:20:27.131Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/21-snapshot.json b/test-workflows/snapshots/21-snapshot.json new file mode 100644 index 0000000000..e7da28deee --- /dev/null +++ b/test-workflows/snapshots/21-snapshot.json @@ -0,0 +1,473 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891385716, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot8": [ + { + "startTime": 1676891385718, + "executionTime": 397, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "objectType": "TICKET", + "objectId": 1446939454, + "properties": { + "object": true + }, + "isDeleted": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot": [ + { + "startTime": 1676891386116, + "executionTime": 307, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "dealId": 12238637873, + "isDeleted": false, + "associations": { + "object": true + }, + "properties": { + "object": true + }, + "stateChanges": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot9": [ + { + "startTime": 1676891386423, + "executionTime": 363, + "source": [ + { + "previousNode": "Hubspot8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "objectType": "TICKET", + "objectId": 1446939454, + "properties": { + "object": true + }, + "version": 1, + "isDeleted": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot4": [ + { + "startTime": 1676891386786, + "executionTime": 233, + "source": [ + { + "previousNode": "Hubspot" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "dealId": 12238637873, + "isDeleted": false, + "associations": { + "object": true + }, + "properties": { + "object": true + }, + "stateChanges": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot10": [ + { + "startTime": 1676891387019, + "executionTime": 250, + "source": [ + { + "previousNode": "Hubspot9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "objectType": "TICKET", + "objectId": 1428212240, + "properties": { + "object": true + }, + "isDeleted": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot1": [ + { + "startTime": 1676891387269, + "executionTime": 233, + "source": [ + { + "previousNode": "Hubspot4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "dealId": 4167790328, + "isDeleted": false, + "associations": { + "object": true + }, + "properties": { + "object": true + }, + "stateChanges": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot11": [ + { + "startTime": 1676891387502, + "executionTime": 220, + "source": [ + { + "previousNode": "Hubspot10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "objectType": "TICKET", + "objectId": 1428212240, + "properties": { + "object": true + }, + "isDeleted": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot3": [ + { + "startTime": 1676891387722, + "executionTime": 243, + "source": [ + { + "previousNode": "Hubspot1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "12238377353", + "properties": { + "object": true + }, + "createdAt": "2023-02-20T10:54:32.477Z", + "updatedAt": "2023-02-20T10:54:33.440Z", + "archived": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot12": [ + { + "startTime": 1676891387965, + "executionTime": 373, + "source": [ + { + "previousNode": "Hubspot11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot5": [ + { + "startTime": 1676891388338, + "executionTime": 271, + "source": [ + { + "previousNode": "Hubspot3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "dealId": 12238377353, + "isDeleted": false, + "associations": { + "object": true + }, + "properties": { + "object": true + }, + "stateChanges": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot7": [ + { + "startTime": 1676891388623, + "executionTime": 263, + "source": [ + { + "previousNode": "Hubspot5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "dealId": 12238377353, + "isDeleted": false, + "associations": { + "object": true + }, + "properties": { + "object": true + }, + "stateChanges": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot2": [ + { + "startTime": 1676891388895, + "executionTime": 242, + "source": [ + { + "previousNode": "Hubspot7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "portalId": 9435114, + "dealId": 12238377353, + "isDeleted": false, + "associations": { + "object": true + }, + "properties": { + "object": true + }, + "stateChanges": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hubspot6": [ + { + "startTime": 1676891389141, + "executionTime": 300, + "source": [ + { + "previousNode": "Hubspot2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Hubspot6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:45.712Z", + "stoppedAt": "2023-02-20T11:09:49.441Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/212-snapshot.json b/test-workflows/snapshots/212-snapshot.json new file mode 100644 index 0000000000..0323fece44 --- /dev/null +++ b/test-workflows/snapshots/212-snapshot.json @@ -0,0 +1,546 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343995426, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Delete existing dir": [ + { + "startTime": 1747343995426, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 13, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "exitCode": 0, + "stderr": "", + "stdout": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git": [ + { + "startTime": 1747343995439, + "executionIndex": 2, + "source": [ + { + "previousNode": "Delete existing dir" + } + ], + "hints": [], + "executionTime": 515, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git1": [ + { + "startTime": 1747343995954, + "executionIndex": 3, + "source": [ + { + "previousNode": "Git" + } + ], + "hints": [], + "executionTime": 13, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "_file": "/Library/Developer/CommandLineTools/usr/share/git-core/gitconfig" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git2": [ + { + "startTime": 1747343995967, + "executionIndex": 4, + "source": [ + { + "previousNode": "Git1" + } + ], + "hints": [], + "executionTime": 170, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "success": true + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Git7": [ + { + "startTime": 1747343996137, + "executionIndex": 5, + "source": [ + { + "previousNode": "Git2" + } + ], + "hints": [], + "executionTime": 132, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "success": true + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Add file to dir": [ + { + "startTime": 1747343996269, + "executionIndex": 6, + "source": [ + { + "previousNode": "Git7" + } + ], + "hints": [], + "executionTime": 5, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "exitCode": 0, + "stderr": "", + "stdout": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git3": [ + { + "startTime": 1747343996274, + "executionIndex": 7, + "source": [ + { + "previousNode": "Add file to dir" + } + ], + "hints": [], + "executionTime": 147, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git4": [ + { + "startTime": 1747343996421, + "executionIndex": 8, + "source": [ + { + "previousNode": "Git3" + } + ], + "hints": [], + "executionTime": 273, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "not_added": [ + "json array" + ], + "conflicted": [ + "json array" + ], + "created": [ + "json array" + ], + "deleted": [ + "json array" + ], + "modified": [ + "json array" + ], + "renamed": [ + "json array" + ], + "files": [ + "json array" + ], + "staged": [ + "json array" + ], + "ahead": 0, + "behind": 0, + "current": "main", + "tracking": "origin/main", + "detached": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git5": [ + { + "startTime": 1747343996694, + "executionIndex": 9, + "source": [ + { + "previousNode": "Git4" + } + ], + "hints": [], + "executionTime": 24, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git6": [ + { + "startTime": 1747343996718, + "executionIndex": 10, + "source": [ + { + "previousNode": "Git5" + } + ], + "hints": [], + "executionTime": 13, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "hash": "103944f38dc823d0f4a9d0720c9bdbd18528cd21", + "date": "2025-05-15T22:19:56+01:00", + "message": "GitNode commit Thu, 15 May 2025 21:19:56 GMT", + "refs": "HEAD -> main", + "body": "", + "author_name": "nodemationqa", + "author_email": "nodeqa@n8n.io" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git8": [ + { + "startTime": 1747343996731, + "executionIndex": 11, + "source": [ + { + "previousNode": "Git6" + } + ], + "hints": [], + "executionTime": 63, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git9": [ + { + "startTime": 1747343996794, + "executionIndex": 12, + "source": [ + { + "previousNode": "Git8" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git10": [ + { + "startTime": 1747343996794, + "executionIndex": 13, + "source": [ + { + "previousNode": "Git9" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git11": [ + { + "startTime": 1747343996794, + "executionIndex": 14, + "source": [ + { + "previousNode": "Git10" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git12": [ + { + "startTime": 1747343996794, + "executionIndex": 15, + "source": [ + { + "previousNode": "Git11" + } + ], + "hints": [], + "executionTime": 352, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Git13": [ + { + "startTime": 1747343997146, + "executionIndex": 16, + "source": [ + { + "previousNode": "Git12" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Git13" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.426Z", + "stoppedAt": "2025-05-15T21:19:57.146Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/216-snapshot.json b/test-workflows/snapshots/216-snapshot.json new file mode 100644 index 0000000000..32b121b8c9 --- /dev/null +++ b/test-workflows/snapshots/216-snapshot.json @@ -0,0 +1,169 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343995559, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Handle JSON data": [ + { + "startTime": 1747343995559, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "arr": [ + "json array" + ], + "str": "Testing Function Item node", + "num": 1337, + "obj": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Handle Binary data": [ + { + "startTime": 1747343995561, + "executionIndex": 2, + "source": [ + { + "previousNode": "Handle JSON data" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "arr": [ + "json array" + ], + "str": "Testing Function Item node", + "num": 1337, + "obj": { + "object": true + }, + "binaryData": "NIL" + }, + "pairedItem": { + "item": 0 + }, + "binary": { + "data": { + "data": "SGVsbG8gZnJvbSBuOG4gRnVuY3Rpb24gaXRlbSB0ZXN0aW5nIHdvcmtmbG93", + "mimeType": "text", + "fileExtension": "text", + "fileName": "testfile" + } + } + } + ] + ] + } + } + ], + "Handle Static data": [ + { + "startTime": 1747343995562, + "executionIndex": 3, + "source": [ + { + "previousNode": "Handle Binary data" + } + ], + "hints": [], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "arr": [ + "json array" + ], + "str": "Testing Function Item node", + "num": 1337, + "obj": { + "object": true + }, + "binaryData": "NIL", + "globalStaticMessage": "Hello, Global Static Data", + "nodeStaticMessage": "Hello, Node Static Data" + }, + "pairedItem": { + "item": 0 + }, + "binary": { + "data": { + "data": "SGVsbG8gZnJvbSBuOG4gRnVuY3Rpb24gaXRlbSB0ZXN0aW5nIHdvcmtmbG93", + "mimeType": "text", + "fileExtension": "text", + "fileName": "testfile" + } + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Handle Static data" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.559Z", + "stoppedAt": "2025-05-15T21:19:55.565Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/223-snapshot.json b/test-workflows/snapshots/223-snapshot.json new file mode 100644 index 0000000000..97f3eeadc9 --- /dev/null +++ b/test-workflows/snapshots/223-snapshot.json @@ -0,0 +1,73 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1738078174417, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "LingvaNex": [ + { + "hints": [], + "startTime": 1738078174417, + "executionTime": 374, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "err": { + "object": true + }, + "result": "Automatisierung" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "LingvaNex" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-01-28T15:29:34.416Z", + "stoppedAt": "2025-01-28T15:29:34.791Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/229-snapshot.json b/test-workflows/snapshots/229-snapshot.json new file mode 100644 index 0000000000..5f16fc811e --- /dev/null +++ b/test-workflows/snapshots/229-snapshot.json @@ -0,0 +1,664 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747343995588, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive11": [ + { + "startTime": 1747343995588, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 700, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1QBrItvwcOaEONfCcfDHPpdK_BLTEtBNA", + "name": "testFolder" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive14": [ + { + "startTime": 1747343996288, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1739, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#file", + "id": "1MMAfuJxKmbuzT_JWF98PjJCPxXnxykMW", + "name": "testFile", + "mimeType": "text/plain" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive3": [ + { + "startTime": 1747343998027, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1616, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#file", + "id": "1KbJrxtMCxK4fFq8Cd0_-66dxnW5kSzDN", + "name": "testFile", + "mimeType": "text/plain" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive": [ + { + "startTime": 1747343999643, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 536, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1X-5udmSom0Xew6oE2g7Glrd9t7u6srsN", + "name": "testFolder" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive12": [ + { + "startTime": 1747344000179, + "executionIndex": 5, + "source": [ + { + "previousNode": "Google Drive11" + } + ], + "hints": [], + "executionTime": 601, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#permission", + "id": "anyoneWithLink", + "type": "anyone", + "role": "reader", + "allowFileDiscovery": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive15": [ + { + "startTime": 1747344000780, + "executionIndex": 6, + "source": [ + { + "previousNode": "Google Drive14" + } + ], + "hints": [], + "executionTime": 686, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#permission", + "id": "anyoneWithLink", + "type": "anyone", + "role": "reader", + "allowFileDiscovery": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive4": [ + { + "startTime": 1747344001466, + "executionIndex": 7, + "source": [ + { + "previousNode": "Google Drive3" + } + ], + "hints": [], + "executionTime": 543, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#permission", + "id": "anyoneWithLink", + "type": "anyone", + "role": "reader", + "allowFileDiscovery": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive1": [ + { + "startTime": 1747344002009, + "executionIndex": 8, + "source": [ + { + "previousNode": "Google Drive" + } + ], + "hints": [], + "executionTime": 614, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#permission", + "id": "anyoneWithLink", + "type": "anyone", + "role": "reader", + "allowFileDiscovery": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive13": [ + { + "startTime": 1747344002623, + "executionIndex": 9, + "source": [ + { + "previousNode": "Google Drive12" + } + ], + "hints": [], + "executionTime": 464, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1QBrItvwcOaEONfCcfDHPpdK_BLTEtBNA", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive16": [ + { + "startTime": 1747344003087, + "executionIndex": 10, + "source": [ + { + "previousNode": "Google Drive15" + } + ], + "hints": [], + "executionTime": 428, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1YNeDnFJOaq3mDazf8Ezm3V3K-aIKdmugke2m89Qf3dg", + "name": "oupa" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive5": [ + { + "startTime": 1747344003515, + "executionIndex": 11, + "source": [ + { + "previousNode": "Google Drive4" + } + ], + "hints": [], + "executionTime": 430, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1YNeDnFJOaq3mDazf8Ezm3V3K-aIKdmugke2m89Qf3dg", + "name": "oupa" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive2": [ + { + "startTime": 1747344003945, + "executionIndex": 12, + "source": [ + { + "previousNode": "Google Drive1" + } + ], + "hints": [], + "executionTime": 450, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1X-5udmSom0Xew6oE2g7Glrd9t7u6srsN", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive17": [ + { + "startTime": 1747344004395, + "executionIndex": 13, + "source": [ + { + "previousNode": "Google Drive16" + } + ], + "hints": [], + "executionTime": 933, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1YNeDnFJOaq3mDazf8Ezm3V3K-aIKdmugke2m89Qf3dg", + "name": "oupa" + }, + "binary": { + "data": { + "mimeType": "text/plain", + "fileType": "text", + "fileExtension": "txt", + "data": "VGVzdCBGaWxlIENvbnRlbnQ=", + "fileName": "testFile", + "fileSize": "17 B" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive6": [ + { + "startTime": 1747344005328, + "executionIndex": 14, + "source": [ + { + "previousNode": "Google Drive5" + } + ], + "hints": [], + "executionTime": 913, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1YNeDnFJOaq3mDazf8Ezm3V3K-aIKdmugke2m89Qf3dg", + "name": "oupa" + }, + "binary": { + "data": { + "mimeType": "text/plain", + "fileType": "text", + "fileExtension": "txt", + "data": "VGVzdCBGaWxlIENvbnRlbnQ=", + "fileName": "testFile", + "fileSize": "17 B" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive18": [ + { + "startTime": 1747344006241, + "executionIndex": 15, + "source": [ + { + "previousNode": "Google Drive17" + } + ], + "hints": [], + "executionTime": 881, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#file", + "id": "1tJSggHaGcdtLmpE_ZVkm_aYBShbeh1d-", + "name": "testFile", + "mimeType": "text/plain" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive7": [ + { + "startTime": 1747344007122, + "executionIndex": 16, + "source": [ + { + "previousNode": "Google Drive6" + } + ], + "hints": [], + "executionTime": 746, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#file", + "id": "1qkiRpLoY_9OrJmfq_ykRfFfy6xEXU1uW", + "name": "testFile", + "mimeType": "text/plain" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive19": [ + { + "startTime": 1747344007868, + "executionIndex": 17, + "source": [ + { + "previousNode": "Google Drive18" + } + ], + "hints": [], + "executionTime": 475, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1MMAfuJxKmbuzT_JWF98PjJCPxXnxykMW", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive8": [ + { + "startTime": 1747344008344, + "executionIndex": 18, + "source": [ + { + "previousNode": "Google Drive7" + } + ], + "hints": [], + "executionTime": 485, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1KbJrxtMCxK4fFq8Cd0_-66dxnW5kSzDN", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive10": [ + { + "startTime": 1747344008829, + "executionIndex": 19, + "source": [ + { + "previousNode": "Google Drive19" + } + ], + "hints": [], + "executionTime": 431, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1tJSggHaGcdtLmpE_ZVkm_aYBShbeh1d-", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive9": [ + { + "startTime": 1747344009260, + "executionIndex": 20, + "source": [ + { + "previousNode": "Google Drive8" + } + ], + "hints": [], + "executionTime": 520, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1qkiRpLoY_9OrJmfq_ykRfFfy6xEXU1uW", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Drive9" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.587Z", + "stoppedAt": "2025-05-15T21:20:09.780Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/230-snapshot.json b/test-workflows/snapshots/230-snapshot.json new file mode 100644 index 0000000000..4dc0cd4cfc --- /dev/null +++ b/test-workflows/snapshots/230-snapshot.json @@ -0,0 +1,79 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Execute Workflow\"": [ + { + "startTime": 1747343995774, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "VirusTotal HTTP Request": [ + { + "startTime": 1747343995774, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Execute Workflow\"" + } + ], + "hints": [ + { + "message": "To split the contents of ‘data’ into separate items for easier processing, add a ‘Split Out’ node after this one", + "location": "outputPane" + } + ], + "executionTime": 383, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "VirusTotal HTTP Request" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.773Z", + "stoppedAt": "2025-05-15T21:19:56.157Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/231-snapshot.json b/test-workflows/snapshots/231-snapshot.json new file mode 100644 index 0000000000..cbebcd3753 --- /dev/null +++ b/test-workflows/snapshots/231-snapshot.json @@ -0,0 +1,164 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343995790, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Invalid Host header": [ + { + "startTime": 1747343995791, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 64, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "error": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Internal SSL Error?": [ + { + "startTime": 1747343995855, + "executionIndex": 2, + "source": [ + { + "previousNode": "Invalid Host header" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [], + [ + { + "json": { + "error": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Success": [ + { + "startTime": 1747343995857, + "executionIndex": 3, + "source": [ + { + "previousNode": "Internal SSL Error?", + "previousNodeOutput": 1 + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "error": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Cross Domain Redirect": [ + { + "startTime": 1747343995857, + "executionIndex": 4, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 992, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "\n\nPowerful Workflow Automation Software & Tools - n8n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\"Hero

Flexible AI workflow automation for technical teams

Build with the precision of code or the speed of drag-n-drop. Host with on-prem control or in-the-cloud convenience. n8n gives you more freedom to implement multi-step AI agents and integrate apps than any other tool.

Plug AI into your own data & over 500 integrations

The fast way to actually get AI working in your business

Build multi-step agents calling custom tools

Create agentic systems on a single screen. Integrate any LLM into your workflows as fast as you can drag-n-drop.

Explore AI

\"Teams
Update Detected Running Custom Unit Testing Update Rolled Back Automatically
IT Team Notified of New Ticket Custom Unit Testing Failed Update Installed
\"Local\"Fully

Self-host everything – including AI models

Protect your data by deploying on-prem.

  • Deploy with Docker

    \n
  • Access the entire source code on Github

    \n
  • Hosted version also available

    \n

Chat with your own data

Use Slack, Teams, SMS, voice, or our embedded chat interface to get accurate answers from your data, create tasks, and complete workflows.

Who held meetings with SpaceX last week?
On Wednesday, Joe updated the status to \"won\" in Salesforce after a Zoom call.
On Thursday, Sue provided on-site setup and closed the ServiceNow ticket.
Create a task in Asana...
\"Code

Code when you need it, UI when you don't

Other tools limit you to either a visual building experience, or code. With n8n, you get the best of both worlds.

  • Write JavaScript or Python - you can always fall back to code

    \n
  • Add libraries from npm or Python for even more power

    \n
  • Paste cURL requests into your workflow

    \n
  • Merge workflow branches, don’t just split them

    \n
\"Thunder\"

Run. Tweak. Repeat

The same short feedback loops that make you smile at your scripts.

  • Re-run single steps without re-running the whole workflow

    \n
  • Replay or mock data to avoid waiting for external systems

    \n
  • Debug fast, with logs in line with your code

    \n
  • Use 1700+ templates to jump-start your project

    \n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n See The Results

Case Studies

\"Delivery

How Delivery Hero saved 200 hours each month with a single ITOps workflow

\n

Read Case Study
\"The

How StepStone finishes 2 weeks’ work in only 2 hours with n8n workflows

\n

Read Case Study
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Enterprise-ready

Secure. Reliable. Collaborative.

Remove inefficiencies across your org by rolling out automation as reliably as you deploy code. Run n8n air-gapped on your servers or on our secure cloud-based solution.

  • Security

    Fully on-prem option, SSO SAML, and LDAP, encrypted secret stores, version control, advanced RBAC permissions.

    \n
  • Performance

    Audit logs & log streaming to 3rd party, workflow history, custom variables, external storage.

    \n
  • Collaboration

    Git Control, isolated environments, multi-user workflows.

    \n

"The idea is that everybody in the organization can use n8n to manage data retrieval or data transformation."

\"Martino

Martino Bonfiglioli

Senior Product Manager

\n
See the case
\"Automation\"
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n n8n embed

Automation for your customers

Wow your customers with access to 500+ app integrations to automate their own workflows. Your branding. Our white-labelled tech. \n

\n\n" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Cross Domain Redirect" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:55.790Z", + "stoppedAt": "2025-05-15T21:19:56.849Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/232-snapshot.json b/test-workflows/snapshots/232-snapshot.json new file mode 100644 index 0000000000..43f064e438 --- /dev/null +++ b/test-workflows/snapshots/232-snapshot.json @@ -0,0 +1,126 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1709625796309, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Cohere Model": [ + { + "startTime": 1709625796771, + "executionTime": 354, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "How much is 1+1? Only provide the numerical answer without any other text.\n" + ], + "options": { + "signal": {} + } + } + } + ] + ] + } + } + ], + "Cohere Instruct": [ + { + "startTime": 1709625796309, + "executionTime": 1133, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "2" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Cohere Model", + "runIndex": 0 + } + ] + } + } + ] + }, + "lastNodeExecuted": "Cohere Instruct" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Cohere Instruct": [ + { + "subRun": [ + { + "node": "Cohere Model", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-05T08:03:16.304Z", + "stoppedAt": "2024-03-05T08:03:17.443Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/233-snapshot.json b/test-workflows/snapshots/233-snapshot.json new file mode 100644 index 0000000000..0ce9f1f621 --- /dev/null +++ b/test-workflows/snapshots/233-snapshot.json @@ -0,0 +1,961 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "hints": [], + "startTime": 1738078178841, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Code": [ + { + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "startTime": 1738078178841, + "executionTime": 10, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Default Data Loader1": [ + { + "startTime": 1738078178875, + "executionTime": 1144, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_document": [ + [ + { + "json": { + "response": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "inputOverride": { + "ai_document": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Default Data Loader1", + "runIndex": 0 + } + ] + } + } + ], + "Token Splitter1": [ + { + "startTime": 1738078178877, + "executionTime": 1142, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_textSplitter": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_textSplitter": [ + [ + { + "json": { + "textSplitter": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Token Splitter1", + "runIndex": 0 + } + ] + } + } + ], + "Embeddings OpenAI4": [ + { + "startTime": 1738078180072, + "executionTime": 2392, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "documents": [ + "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution", + " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash", + " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest", + "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need", + " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing", + " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the", + " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs", + " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early", + " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k ", + " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=", + "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4", + ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + ] + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI4", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI4", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1738078183170, + "executionTime": 820, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "test" + } + } + ] + ] + } + } + ], + "Qdrant Vector Store": [ + { + "hints": [], + "startTime": 1738078178851, + "executionTime": 6311, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k " + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Check Vector Store Populated1": [ + { + "hints": [], + "startTime": 1738078185162, + "executionTime": 10, + "source": [ + { + "previousNode": "Qdrant Vector Store" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wait1": [ + { + "hints": [], + "startTime": 1738078185173, + "executionTime": 10001, + "source": [ + { + "previousNode": "Check Vector Store Populated1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Embeddings OpenAI5": [ + { + "startTime": 1738078195902, + "executionTime": 471, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "Security risks" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI5", + "runIndex": 0 + } + ] + } + } + ], + "Qdrant Vector Store1": [ + { + "hints": [], + "startTime": 1738078195175, + "executionTime": 1652, + "source": [ + { + "previousNode": "Wait1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "document": { + "object": true + }, + "score": 0.34772277 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.34708342 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.3299051 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.31434047 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Check Vector Store Retrieval1": [ + { + "hints": [], + "startTime": 1738078196827, + "executionTime": 13, + "source": [ + { + "previousNode": "Qdrant Vector Store1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vector Store Retriever1": [ + { + "startTime": 1738078197496, + "executionTime": 874, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_retriever": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_retriever": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Vector Store Retriever1", + "runIndex": 0 + } + ] + } + } + ], + "Qdrant Vector Store2": [ + { + "startTime": 1738078197496, + "executionTime": 874, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "k": 4 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Qdrant Vector Store2", + "runIndex": 0 + } + ] + } + } + ], + "Embeddings OpenAI3": [ + { + "startTime": 1738078197496, + "executionTime": 437, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI3", + "runIndex": 0 + } + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1738078198377, + "executionTime": 499, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Use the following pieces of context to answer the users question. \nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\n new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the\n\n next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing\n\n confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs\n\n-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need\nHuman: What is the size of a block header with no transactions? Respond only with number of bytes." + ], + "estimatedTokens": 2059, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + } + ], + "Question and Answer Chain1": [ + { + "hints": [], + "startTime": 1738078196841, + "executionTime": 2036, + "source": [ + { + "previousNode": "Check Vector Store Retrieval1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields1": [ + { + "hints": [], + "startTime": 1738078198877, + "executionTime": 6, + "source": [ + { + "previousNode": "Question and Answer Chain1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_matches": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Delete Collection": [ + { + "hints": [], + "startTime": 1738078198883, + "executionTime": 490, + "source": [ + { + "previousNode": "Edit Fields1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": true, + "status": "ok", + "time": 0.011831243 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Delete Collection" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Token Splitter1": [ + { + "subRun": [ + { + "node": "Token Splitter1", + "runIndex": 0 + } + ] + } + ], + "Default Data Loader1": [ + { + "subRun": [ + { + "node": "Default Data Loader1", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI4": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI4", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI4", + "runIndex": 1 + } + ] + } + ], + "Embeddings OpenAI5": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI5", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI3": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI3", + "runIndex": 0 + } + ] + } + ], + "Qdrant Vector Store2": [ + { + "subRun": [ + { + "node": "Qdrant Vector Store2", + "runIndex": 0 + } + ] + } + ], + "Vector Store Retriever1": [ + { + "subRun": [ + { + "node": "Vector Store Retriever1", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-01-28T15:29:38.839Z", + "stoppedAt": "2025-01-28T15:29:59.373Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/234-snapshot.json b/test-workflows/snapshots/234-snapshot.json new file mode 100644 index 0000000000..100f0daa6f --- /dev/null +++ b/test-workflows/snapshots/234-snapshot.json @@ -0,0 +1,146 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343996141, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Mistral Cloud Chat Model": [ + { + "startTime": 1747343996676, + "executionTime": 200, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "Mistral Cloud Chat", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: How much is 1+1? Only provide the numerical answer without any other text.\n" + ], + "estimatedTokens": 20, + "options": { + "mistral_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "MISTRAL_API_KEY" + ] + }, + "model_name": "mistral-tiny", + "temperature": 0 + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Mistral Cloud Chat Model", + "runIndex": 0 + } + ] + } + } + ], + "Mistral Cloud Chat": [ + { + "startTime": 1747343996141, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 735, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "2" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Mistral Cloud Chat" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Mistral Cloud Chat Model": [ + { + "subRun": [ + { + "node": "Mistral Cloud Chat Model", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:56.141Z", + "stoppedAt": "2025-05-15T21:19:56.876Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/235-snapshot.json b/test-workflows/snapshots/235-snapshot.json new file mode 100644 index 0000000000..a827dc1550 --- /dev/null +++ b/test-workflows/snapshots/235-snapshot.json @@ -0,0 +1,324 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343996197, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Baseline": [ + { + "startTime": 1747343996197, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "baseline_summary": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Article": [ + { + "startTime": 1747343996197, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set Baseline" + } + ], + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\"." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1747343996676, + "executionTime": 1640, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Map", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 1543, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + } + ], + "Summary - Simple - Map": [ + { + "startTime": 1747343996200, + "executionIndex": 3, + "source": [ + { + "previousNode": "Set Article" + } + ], + "hints": [], + "executionTime": 2116, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1747343998349, + "executionTime": 1896, + "executionIndex": 6, + "executionStatus": "success", + "source": [ + { + "previousNode": "Evaluate to Baseline", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: You are assessing a submitted answer on a given task or input based on a set of criteria. Here is the data:\n[BEGIN DATA]\n***\n[Input]: Summarize Wikipedia article about the dancing plague of 1518\n***\n[Submission]: The dancing plague of 1518, also known as the dance epidemic, occurred in Strasbourg, Alsace, in the Holy Roman Empire from July to September 1518. Between 50 and 400 people danced uncontrollably for weeks, with theories suggesting stress-induced mass hysteria, ergot poisoning, or religious explanations. The outbreak began with one woman dancing and spread to others, leading to deaths and public concern. The event ended when the dancers were sent to a shrine to pray for absolution. Controversy exists over the number of deaths, with some sources claiming up to fifteen deaths per day. Modern theories include food poisoning from ergot fungi and stress-induced mass hysteria. The event has inspired various works of art and media, including films, songs, and novels.\n***\n[Criteria]: helpfulness: Is the submission helpful, insightful, and appropriate? If so, response Y. If not, respond N.\n***\n[Reference]: The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.\n***\n[END DATA]\nDoes the submission meet the Criteria? First, write out in a step by step manner your reasoning about each criterion to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character \"Y\" or \"N\" (without quotes or punctuation) on its own line corresponding to the correct answer of whether the submission meets all criteria. At the end, repeat just the letter again by itself on a new line." + ], + "estimatedTokens": 444, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + } + ], + "Evaluate to Baseline": [ + { + "startTime": 1747343998316, + "executionIndex": 5, + "source": [ + { + "previousNode": "Summary - Simple - Map" + } + ], + "hints": [], + "executionTime": 1930, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "reasoning": "Step 1: Is the submission helpful?- The submission provides a concise summary of the Wikipedia article about the dancing plague of 1518.- It includes key information such as the location, time period, number of people involved, possible causes, outcomes, and cultural impact.- The submission is informative and covers the main points of the topic.Step 2: Is the submission insightful?- The submission goes beyond just stating facts by mentioning theories about the cause of the dancing plague, controversies surrounding the event, and its cultural influence.- It provides additional context and analysis to enhance understanding of the topic.- The submission offers a well-rounded view of the dancing plague of 1518.Step 3: Is the submission appropriate?- The submission is appropriate for the given task of summarizing the Wikipedia article about the dancing plague of 1518.- It stays focused on the topic and does not include irrelevant information.- The submission is suitable for the intended audience and purpose.", + "value": "Y", + "score": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Evaluate to Baseline" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:56.197Z", + "stoppedAt": "2025-05-15T21:20:00.246Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/236-snapshot.json b/test-workflows/snapshots/236-snapshot.json new file mode 100644 index 0000000000..7a9851e9fa --- /dev/null +++ b/test-workflows/snapshots/236-snapshot.json @@ -0,0 +1,630 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343996877, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Baseline": [ + { + "startTime": 1747343996877, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "baseline_summary": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Article": [ + { + "startTime": 1747343996877, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set Baseline" + } + ], + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\"." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Convert to File": [ + { + "startTime": 1747343996879, + "executionIndex": 3, + "source": [ + { + "previousNode": "Set Article" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "binary": { + "data": { + "mimeType": "application/json", + "fileType": "json", + "fileExtension": "json", + "data": "W3sidGV4dCI6IlRoZSBkYW5jaW5nIHBsYWd1ZSBvZiAxNTE4LCBvciBkYW5jZSBlcGlkZW1pYyBvZiAxNTE4IChGcmVuY2g6IMOJcGlkw6ltaWUgZGFuc2FudGUgZGUgMTUxOCksIHdhcyBhIGNhc2Ugb2YgZGFuY2luZyBtYW5pYSB0aGF0IG9jY3VycmVkIGluIFN0cmFzYm91cmcsIEFsc2FjZSAobW9kZXJuLWRheSBGcmFuY2UpLCBpbiB0aGUgSG9seSBSb21hbiBFbXBpcmUgZnJvbSBKdWx5IDE1MTggdG8gU2VwdGVtYmVyIDE1MTguIFNvbWV3aGVyZSBiZXR3ZWVuIDUwIGFuZCA0MDAgcGVvcGxlIHRvb2sgdG8gZGFuY2luZyBmb3Igd2Vla3MuIFRoZXJlIGFyZSBtYW55IHRoZW9yaWVzIGJlaGluZCB0aGUgcGhlbm9tZW5vbiwgdGhlIG1vc3QgcG9wdWxhciBiZWluZyBzdHJlc3MtaW5kdWNlZCBtYXNzIGh5c3RlcmlhLCBzdWdnZXN0ZWQgYnkgSm9obiBXYWxsZXIuIE90aGVyIHRoZW9yaWVzIGluY2x1ZGUgZXJnb3QgYW5kIHJlbGlnaW91cyBleHBsYW5hdGlvbnMuIFRoZXJlIGlzIGNvbnRyb3ZlcnN5IGNvbmNlcm5pbmcgdGhlIG51bWJlciBvZiBkZWF0aHMuXG5cbkhpc3RvcnlcbkV2ZW50c1xuVGhlIG91dGJyZWFrIGJlZ2FuIGluIEp1bHkgMTUxOCB3aGVuIGEgd29tYW4gY2FsbGVkIEZyYXUgVHJvZmZlYSBiZWdhbiB0byBkYW5jZSBmZXJ2ZW50bHkgYW5kIHVuY29udHJvbGxhYmx5IGluIGEgc3RyZWV0IGluIFN0cmFzYm91cmcuIFRyb2ZmZWEga2VwdCB1cCB0aGUgY29uc3RhbnQgZGFuY2luZyBmb3IgYSB3ZWVrLiBTb29uLCB0aHJlZSBkb3plbiBvdGhlcnMgam9pbmVkIGluLiBCeSBBdWd1c3QsIHRoZSBcImRhbmNpbmcgcGxhZ3VlXCIgaGFkIGNsYWltZWQgNDAwIHZpY3RpbXMuIERhbmNlcnMgd2VyZSBiZWdpbm5pbmcgdG8gY29sbGFwc2UuIEl0IGlzIHNhaWQgc29tZSBldmVuIGRpZWQgZnJvbSBhIHN0cm9rZSBvciBoZWFydCBhdHRhY2suIE5vIG9uZSBrbmV3IHdoYXQgY2F1c2VkIHRoaXMgcmVhY3Rpb24sIHdoaWNoIG1lYW50IG5vIG9uZSB1bmRlcnN0b29kIGhvdyB0byByZW1lZHkgaXQuIEJ5IGVhcmx5IFNlcHRlbWJlciwgdGhlIG91dGJyZWFrIGJlZ2FuIHRvIHN1YnNpZGUsIHdoZW4gdGhlIGRhbmNlcnMgd2VyZSBzZW50IHRvIGEgbW91bnRhaW4gc2hyaW5lIHRvIHByYXkgZm9yIGFic29sdXRpb24uXG5cbkhpc3RvcmljYWwgZG9jdW1lbnRzLCBpbmNsdWRpbmcgXCJwaHlzaWNpYW4gbm90ZXMsIGNhdGhlZHJhbCBzZXJtb25zLCBsb2NhbCBhbmQgcmVnaW9uYWwgY2hyb25pY2xlcywgYW5kIGV2ZW4gbm90ZXMgaXNzdWVkIGJ5IHRoZSBTdHJhc2JvdXJnIGNpdHkgY291bmNpbFwiIGFyZSBjbGVhciB0aGF0IHRoZSB2aWN0aW1zIGRhbmNlZDsgaXQgaXMgbm90IGtub3duIHdoeS4gSGlzdG9yaWNhbCBzb3VyY2VzIGFncmVlIHRoYXQgdGhlcmUgd2FzIGFuIG91dGJyZWFrIG9mIGRhbmNpbmcgYWZ0ZXIgYSBzaW5nbGUgd29tYW4gc3RhcnRlZCBkYW5jaW5nLCBhbmQgdGhlIGRhbmNpbmcgZGlkIG5vdCBzZWVtIHRvIGRpZSBkb3duLiBJdCBsYXN0ZWQgZm9yIHN1Y2ggYSBsb25nIHRpbWUgdGhhdCBpdCBldmVuIGF0dHJhY3RlZCB0aGUgYXR0ZW50aW9uIG9mIHRoZSBhdXRob3JpdGllczsgdW50aWwgdGhlIGNvdW5jaWwgZ2F2ZSB1cCBhdXRob3JpdHkgdG8gdGhlIHBoeXNpY2lhbnMsIHdobyBwcmVzY3JpYmVkIHRoZSBhZmZsaWN0ZWQgdG8gXCJkYW5jZSB0aGVtc2VsdmVzIGZyZWUgb2YgaXQuXCIgVGhlcmUgYXJlIGNsYWltcyB0aGF0IGd1aWxkIGhhbGxzIHdlcmUgcmVmdXJiaXNoZWQgdG8gYWNjb21tb2RhdGUgdGhlIGRhbmNpbmcsIGFzIHdlbGwgYXMgbXVzaWNpYW5zIGFuZCBzdHJvbmcgcGVvcGxlIHRvIGhlbHAga2VlcCB0aG9zZSBkZWFsaW5nIHdpdGggdGhlIGRhbmNpbmcgbWFuaWEgdG8gc3RheSB1cHJpZ2h0LiBUaGlzIGJhY2tmaXJlZCwgYW5kIHRoZSBjb3VuY2lsIHdhcyBmb3JjZWQgdG8gYmFuIHB1YmxpYyBkYW5jaW5nIGFzIHBlb3BsZSBkYW5jZWQgaW4gZmVhciBpdCB3YXMgYSBwdW5pc2htZW50IGZyb20gU2FpbnQgVml0dXM7IGFuZCB0byBiZSBcImZyZWUgb2Ygc2luXCIgbWFueSBqb2luZWQgaW4gb24gdGhlIGRhbmNpbmcgZXBpZGVtaWMuIFRoZSBjb3VuY2lsIHdlbnQgYXMgZmFyIGFzIHRvIGJhbiBtdXNpYywgYXMgd2VsbC4gVGhvc2Ugd2hvIGRhbmNlZCB3ZXJlIHRoZW4gb3JkZXJlZCB0byBnbyB0byB0aGUgc2hyaW5lIG9mIFNhaW50IFZpdHVzLCB3b3JlIHJlZCBzaG9lcyB0aGF0IHdlcmUgc3ByaW5rbGVkIHdpdGggaG9seSB3YXRlciBhbmQgaGFkIHBhaW50ZWQgY3Jvc3NlcyBvbiB0aGUgdG9wcyBhbmQgc29sZXMuIFRoZXkgYWxzbyBoYWQgdG8gaG9sZCBzbWFsbCBjcm9zc2VzIGluIHRoZWlyIGhhbmRzOyBhbmQgaW5jZW5zZSBhbmQgTGF0aW4gaW5jYW50YXRpb25zIHdlcmUgcGFydCBvZiB0aGlzIFwicml0dWFsLlwiIEFwcGFyZW50bHkgXCJmb3JnaXZlbiBieSBWaXR1cyxcIiB3b3JkIHdhcyBzcHJlYWQgb2YgYSBzdWNjZXNzZnVsIHJpdHVhbCBhbmQgdGhlIERhbmNpbmcgUGxhZ3VlIGhhZCBlbmRlZC5cblxuRXZlbnRzIHNpbWlsYXIgdG8gdGhpcyBhcmUgc2FpZCB0byBoYXZlIG9jY3VycmVkIHRocm91Z2hvdXQgdGhlIG1lZGlldmFsIGFnZSBpbmNsdWRpbmcgMTF0aCBjZW50dXJ5IGluIEvDtmxiaWdrLCBTYXhvbnksIHdoZXJlIGl0IHdhcyBiZWxpZXZlZCB0byBiZSB0aGUgcmVzdWx0IG9mIGRpdmluZSBqdWRnbWVudCAuIEluIDE1dGggY2VudHVyeSBBcHVsaWEsIEl0YWx5LCBhIHdvbWFuIHdhcyBiaXR0ZW4gYnkgYSB0YXJhbnR1bGEsIHRoZSB2ZW5vbSBtYWtpbmcgaGVyIGRhbmNlIGNvbnZ1bHNpdmVseS4gVGhlIG9ubHkgd2F5IHRvIGN1cmUgdGhlIGJpdGUgd2FzIHRvIFwic2hpbW15XCIgYW5kIHRvIGhhdmUgdGhlIHJpZ2h0IHNvcnQgb2YgbXVzaWMgYXZhaWxhYmxlLCB3aGljaCB3YXMgYW4gYWNjZXB0ZWQgcmVtZWR5IGJ5IHNjaG9sYXJzIGxpa2UgQXRoYW5hc2l1cyBLaXJjaGVyLlxuXG5Db250ZW1wb3JhbmVvdXMgZXhwbGFuYXRpb25zIGluY2x1ZGVkIGRlbW9uaWMgcG9zc2Vzc2lvbiBhbmQgb3ZlcmhlYXRlZCBibG9vZC5cblxuVmVyYWNpdHkgb2YgZGVhdGhzXG5Db250cm92ZXJzeSBleGlzdHMgb3ZlciB3aGV0aGVyIHBlb3BsZSB1bHRpbWF0ZWx5IGRhbmNlZCB0byB0aGVpciBkZWF0aHMuIFNvbWUgc291cmNlcyBjbGFpbSB0aGF0IGZvciBhIHBlcmlvZCB0aGUgcGxhZ3VlIGtpbGxlZCBhcm91bmQgZmlmdGVlbiBwZW9wbGUgcGVyIGRheSwgYnV0IHRoZSBzb3VyY2VzIG9mIHRoZSBjaXR5IG9mIFN0cmFzYm91cmcgYXQgdGhlIHRpbWUgb2YgdGhlIGV2ZW50cyBkaWQgbm90IG1lbnRpb24gdGhlIG51bWJlciBvZiBkZWF0aHMsIG9yIGV2ZW4gaWYgdGhlcmUgd2VyZSBmYXRhbGl0aWVzLiBUaGVyZSBkbyBub3QgYXBwZWFyIHRvIGJlIGFueSBzb3VyY2VzIHJlbGF0ZWQgdG8gdGhlIGV2ZW50cyB0aGF0IG1ha2Ugbm90ZSBvZiBhbnkgZmF0YWxpdGllcy4gTmVkIFBlbm5hbnQtUmVhIGFsc28gY2xhaW1zIHRoYXQgdGhlIGZpbmFsIGRlYXRoIHRvbGwgaXMgbm90IGtub3duLCBidXQgaWYgdGhlIGNsYWltcyBvZiBmaWZ0ZWVuIHBlb3BsZSBkeWluZyBwZXIgZGF5IHdlcmUgdHJ1ZSB0aGVuIHRoZSB0b2xsIGNvdWxkIGJlIFwiaW50byB0aGUgaHVuZHJlZHMuXCJcblxuVGhlIG1haW4gc291cmNlIGZvciB0aGUgY2xhaW0gaXMgSm9obiBXYWxsZXIsIHdobyBoYXMgd3JpdHRlbiBzZXZlcmFsIGpvdXJuYWwgYXJ0aWNsZXMgb24gdGhlIHN1YmplY3QgYW5kIHRoZSBib29rIEEgVGltZSB0byBEYW5jZSwgYSBUaW1lIHRvIERpZTogVGhlIEV4dHJhb3JkaW5hcnkgU3Rvcnkgb2YgdGhlIERhbmNpbmcgUGxhZ3VlIG9mIDE1MTguIFRoZSBzb3VyY2VzIGNpdGVkIGJ5IFdhbGxlciB0aGF0IG1lbnRpb24gZGVhdGhzIHdlcmUgYWxsIGZyb20gbGF0ZXIgYWNjb3VudHMgb2YgdGhlIGV2ZW50cy4gVGhlcmUgaXMgYWxzbyB1bmNlcnRhaW50eSBhcm91bmQgdGhlIGlkZW50aXR5IG9mIHRoZSBpbml0aWFsIGRhbmNlciAoZWl0aGVyIGFuIHVubmFtZWQgd29tYW4gb3IgXCJGcmF1IFRyb2ZmZWFcIikgYW5kIHRoZSBudW1iZXIgb2YgZGFuY2VycyBpbnZvbHZlZCAoc29tZXdoZXJlIGJldHdlZW4gNTAgYW5kIDQwMCkuIE9mIHRoZSBzaXggY2hyb25pY2xlIGFjY291bnRzLCBmb3VyIHN1cHBvcnQgTGFkeSBUcm9mZmVhIGFzIHRoZSBmaXJzdCBkYW5jZXIuXG5cbk1vZGVybiB0aGVvcmllc1xuRm9vZCBwb2lzb25pbmdcblNvbWUgYmVsaWV2ZSB0aGUgZGFuY2luZyBjb3VsZCBoYXZlIGJlZW4gYnJvdWdodCBvbiBieSBmb29kIHBvaXNvbmluZyBjYXVzZWQgYnkgdGhlIHRveGljIGFuZCBwc3ljaG9hY3RpdmUgY2hlbWljYWwgcHJvZHVjdHMgb2YgZXJnb3QgZnVuZ2kgKGVyZ290aXNtKSwgd2hpY2ggZ3Jvd3MgY29tbW9ubHkgb24gZ3JhaW5zIChzdWNoIGFzIHJ5ZSkgdXNlZCBmb3IgYmFraW5nIGJyZWFkLiBFcmdvdGFtaW5lIGlzIHRoZSBtYWluIHBzeWNob2FjdGl2ZSBwcm9kdWN0IG9mIGVyZ290IGZ1bmdpOyBpdCBpcyBzdHJ1Y3R1cmFsbHkgcmVsYXRlZCB0byB0aGUgZHJ1ZyBseXNlcmdpYyBhY2lkIGRpZXRoeWxhbWlkZSAoTFNELTI1KSBhbmQgaXMgdGhlIHN1YnN0YW5jZSBmcm9tIHdoaWNoIExTRC0yNSB3YXMgb3JpZ2luYWxseSBzeW50aGVzaXplZC4gVGhlIHNhbWUgZnVuZ3VzIGhhcyBhbHNvIGJlZW4gaW1wbGljYXRlZCBpbiBvdGhlciBtYWpvciBoaXN0b3JpY2FsIGFub21hbGllcywgaW5jbHVkaW5nIHRoZSBTYWxlbSB3aXRjaCB0cmlhbHMuXG5cbkluIFRoZSBMYW5jZXQsIEpvaG4gV2FsbGVyIGFyZ3VlcyB0aGF0IFwidGhpcyB0aGVvcnkgZG9lcyBub3Qgc2VlbSB0ZW5hYmxlLCBzaW5jZSBpdCBpcyB1bmxpa2VseSB0aGF0IHRob3NlIHBvaXNvbmVkIGJ5IGVyZ290IGNvdWxkIGhhdmUgZGFuY2VkIGZvciBkYXlzIGF0IGEgdGltZS4gTm9yIHdvdWxkIHNvIG1hbnkgcGVvcGxlIGhhdmUgcmVhY3RlZCB0byBpdHMgcHN5Y2hvdHJvcGljIGNoZW1pY2FscyBpbiB0aGUgc2FtZSB3YXkuIFRoZSBlcmdvdGlzbSB0aGVvcnkgYWxzbyBmYWlscyB0byBleHBsYWluIHdoeSBhbG1vc3QgZXZlcnkgb3V0YnJlYWsgb2NjdXJyZWQgc29tZXdoZXJlIGFsb25nIHRoZSBSaGluZSBhbmQgTW9zZWxsZSByaXZlcnMsIGFyZWFzIGxpbmtlZCBieSB3YXRlciBidXQgd2l0aCBxdWl0ZSBkaWZmZXJlbnQgY2xpbWF0ZXMgYW5kIGNyb3BzXCIuXG5cblN0cmVzcy1pbmR1Y2VkIG1hc3MgaHlzdGVyaWFcblRoaXMgY291bGQgaGF2ZSBiZWVuIGFuIGV4YW1wbGUgb2YgZnVsbHkgZGV2ZWxvcGVkIGNhc2VzIG9mIHBzeWNob2dlbmljIG1vdmVtZW50IGRpc29yZGVyIGhhcHBlbmluZyBpbiBtYXNzIGh5c3RlcmlhIG9yIG1hc3MgcHN5Y2hvZ2VuaWMgaWxsbmVzcywgd2hpY2ggaW52b2x2ZXMgbWFueSBpbmRpdmlkdWFscyBzdWRkZW5seSBleGhpYml0aW5nIHRoZSBzYW1lIGJpemFycmUgYmVoYXZpb3IuIFRoZSBiZWhhdmlvciBzcHJlYWRzIHJhcGlkbHkgYW5kIGJyb2FkbHkgaW4gYW4gZXBpZGVtaWMgcGF0dGVybi4gVGhpcyBraW5kIG9mIGNvbXBvcnRtZW50IGNvdWxkIGhhdmUgYmVlbiBjYXVzZWQgYnkgZWxldmF0ZWQgbGV2ZWxzIG9mIHBzeWNob2xvZ2ljYWwgc3RyZXNzLCBjYXVzZWQgYnkgdGhlIHJ1dGhsZXNzIHllYXJzIChldmVuIGJ5IHRoZSByb3VnaCBzdGFuZGFyZHMgb2YgdGhlIGVhcmx5IG1vZGVybiBwZXJpb2QpIHRoZSBwZW9wbGUgb2YgQWxzYWNlIHdlcmUgc3VmZmVyaW5nLlxuXG5XYWxsZXIgc3BlY3VsYXRlcyB0aGF0IHRoZSBkYW5jaW5nIHdhcyBcInN0cmVzcy1pbmR1Y2VkIHBzeWNob3Npc1wiIG9uIGEgbWFzcyBsZXZlbCwgc2luY2UgdGhlIHJlZ2lvbiB3aGVyZSB0aGUgcGVvcGxlIGRhbmNlZCB3YXMgcmlkZGxlZCB3aXRoIHN0YXJ2YXRpb24gYW5kIGRpc2Vhc2UsIGFuZCB0aGUgaW5oYWJpdGFudHMgdGVuZGVkIHRvIGJlIHN1cGVyc3RpdGlvdXMuIFNldmVuIG90aGVyIGNhc2VzIG9mIGRhbmNpbmcgcGxhZ3VlIHdlcmUgcmVwb3J0ZWQgaW4gdGhlIHNhbWUgcmVnaW9uIGR1cmluZyB0aGUgbWVkaWV2YWwgZXJhLlxuXG5UaGlzIHBzeWNob2dlbmljIGlsbG5lc3MgY291bGQgaGF2ZSBjcmVhdGVkIGEgY2hvcmVhIChmcm9tIHRoZSBHcmVlayBraG9yZWlhIG1lYW5pbmcgXCJ0byBkYW5jZVwiKSwgYSBzaXR1YXRpb24gY29tcHJpc2luZyByYW5kb20gYW5kIGludHJpY2F0ZSB1bmludGVudGlvbmFsIG1vdmVtZW50cyB0aGF0IGZsaXQgZnJvbSBib2R5IHBhcnQgdG8gYm9keSBwYXJ0LiBEaXZlcnNlIGNob3JlYXMgKFN0LiBWaXR1cycgZGFuY2UsIFN0LiBKb2huJ3MgZGFuY2UsIGFuZCB0YXJhbnRpc20pIHdlcmUgbGFiZWxlZCBpbiB0aGUgTWlkZGxlIEFnZXMgcmVmZXJyaW5nIHRvIHRoZSBpbmRlcGVuZGVudCBlcGlkZW1pY3Mgb2YgXCJkYW5jaW5nIG1hbmlhXCIgdGhhdCBoYXBwZW5lZCBpbiBjZW50cmFsIEV1cm9wZSwgcGFydGljdWxhcmx5IGF0IHRoZSB0aW1lIG9mIHRoZSBwbGFndWUuXG5cblBvcCBjdWx0dXJlIGFuZCBtZWRpYVxuVGhlIGV2ZW50IGluc3BpcmVkIEpvbmF0aGFuIEdsYXplcidzIDIwMjAgc2hvcnQgZmlsbSBTdHJhc2JvdXJnIDE1MTguXG5cbkl0IHdhcyBhbHNvIHRoZSBpbnNwaXJhdGlvbiBiZWhpbmQgdGhlIDIwMjIgY2hvcmFsIHNvbmcgXCJDaG9yZW9tYW5pYVwiIGJ5IEZsb3JlbmNlIGFuZCB0aGUgTWFjaGluZS4gSXQgd2FzIHRoZSB0aGlyZCB0cmFjayBvbiB0aGUgYWxidW0gRGFuY2UgRmV2ZXIsIHdoaWNoIHRvb2sgaXRzIHRpdGxlIGZyb20gdGhlIHNvbmcuXG5cblRoZSBib29rIHNlcmllcyBcIkEgQ29sbGVjdGlvbiBvZiBVdHRlciBTcGVjdWxhdGlvblwiIHJlbGVhc2VkIGEgdGl0bGUgXCJUaGUgRGFuY2luZyBQbGFndWU6IEEgQ29sbGVjdGlvbiBvZiBVdHRlciBTcGVjdWxhdGlvblwiIGluIDIwMjIuIEl0IGlzIGEgZmljdGlvbmFsIGFjY291bnQgYWJvdXQgdGhlIGV2ZW50cyB0aGF0IGhhcHBlbmVkIGluIFN0cmFzYm91cmcuXG5cblRoZSAyMDIzIG5vdmVsLCBUaGUgRGFuY2UgVHJlZSwgYnkgS2lyYW4gTWlsbHdvb2QgSGFyZ3JhdmUgaXMgYSBmaWN0aW9uYWxpemVkIHZlcnNpb24gb2YgdGhlIHN1bW1lciBvZiAxNTE4IGluIFN0cmFzYm91cmcuXG5cblRoZSBldmVudCBpcyBmZWF0dXJlZCBhcyBwYXJ0IG9mIHRoZSBmaXJzdCBzZWFzb24gb2YgV2F0Y2hlciBFbnRlcnRhaW5tZW50J3MgXCJQdXBwZXQgSGlzdG9yeVwiIGluIHRoZSBlcGlzb2RlIFwiVGhlIERhbmNpbmcgUGxhZ3VlXCIuIn1d", + "fileSize": "7.29 kB", + "fileName": "file.json" + } + }, + "pairedItem": [ + { + "item": 0 + } + ] + } + ] + ] + } + } + ], + "OpenAI Chat Model4": [ + { + "startTime": 1747343996893, + "executionTime": 1283, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Map - Binary", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 787, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model4", + "runIndex": 1 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 3 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 2 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 4 + } + ] + } + }, + { + "startTime": 1747343996893, + "executionTime": 939, + "executionIndex": 6, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Map - Binary", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 772, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1747343996893, + "executionTime": 1253, + "executionIndex": 7, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Map - Binary", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 787, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1747343996893, + "executionTime": 1061, + "executionIndex": 8, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Map - Binary", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 772, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1747343998179, + "executionTime": 1337, + "executionIndex": 9, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Map - Binary", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The dancing plague of 1518 occurred in Strasbourg, Alsace, where between 50 and 400 people danced uncontrollably for weeks. The cause is unknown, with theories ranging from stress-induced mass hysteria to religious explanations. The outbreak eventually subsided when the dancers were sent to a shrine to pray for absolution. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not mention fatalities. Similar events have been reported throughout history, with explanations including demonic possession and overheated blood.\n\nThe Dancing Plague of 1518 in Strasbourg involved a large group of people dancing uncontrollably for days, with theories suggesting it was caused by food poisoning from ergot fungi or stress-induced mass hysteria. John Waller's research questions the ergotism theory and suggests the dancing was a result of stress-induced psychosis. The event has inspired various works of art and media, including films, songs, and novels.\n\nThe dancing plague of 1518 occurred in Strasbourg, Alsace, where between 50 and 400 people danced uncontrollably for weeks. The cause is unknown, with theories ranging from stress-induced mass hysteria to religious explanations. The outbreak eventually subsided when the dancers were sent to a shrine to pray for absolution. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not mention fatalities. Similar events have been reported throughout history, with explanations including demonic possession and overheated blood.\n\nThe Dancing Plague of 1518 in Strasbourg involved a large group of people dancing uncontrollably for days, with theories suggesting it was caused by food poisoning from ergot fungi or stress-induced mass hysteria. John Waller's research questions the ergotism theory and suggests the dancing was a result of stress-induced psychosis. The event has inspired various works of art and media, including films, songs, and novels.\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 413, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Summary - Simple - Map - Binary": [ + { + "startTime": 1747343996879, + "executionIndex": 4, + "source": [ + { + "previousNode": "Convert to File" + } + ], + "hints": [], + "executionTime": 2638, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model5": [ + { + "startTime": 1747343999527, + "executionTime": 1467, + "executionIndex": 11, + "executionStatus": "success", + "source": [ + { + "previousNode": "Evaluate to Baseline", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: You are assessing a submitted answer on a given task or input based on a set of criteria. Here is the data:\n[BEGIN DATA]\n***\n[Input]: Summarize Wikipedia article about the dancing plague of 1518\n***\n[Submission]: The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks, with theories ranging from stress-induced mass hysteria to religious explanations. The outbreak subsided when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not mention fatalities. Similar events have been reported throughout history, with explanations including demonic possession and overheated blood. John Waller's research questions the ergotism theory and suggests the dancing was a result of stress-induced psychosis. The event has inspired various works of art and media.\n***\n[Criteria]: helpfulness: Is the submission helpful, insightful, and appropriate? If so, response Y. If not, respond N.\n***\n[Reference]: The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.\n***\n[END DATA]\nDoes the submission meet the Criteria? First, write out in a step by step manner your reasoning about each criterion to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character \"Y\" or \"N\" (without quotes or punctuation) on its own line corresponding to the correct answer of whether the submission meets all criteria. At the end, repeat just the letter again by itself on a new line." + ], + "estimatedTokens": 423, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model5", + "runIndex": 0 + } + ] + } + } + ], + "Evaluate to Baseline": [ + { + "startTime": 1747343999517, + "executionIndex": 10, + "source": [ + { + "previousNode": "Summary - Simple - Map - Binary" + } + ], + "hints": [], + "executionTime": 1479, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "reasoning": "1. Is the submission helpful, insightful, and appropriate?- The submission provides a summary of the Wikipedia article about the dancing plague of 1518, including key details such as the location, number of people involved, possible causes, and outcomes.- The submission mentions various theories surrounding the dancing plague, historical context, and the impact of the event.- The submission is informative and covers the main points of the Wikipedia article accurately.- Overall, the submission is helpful, insightful, and appropriate.Therefore, the submission meets the criteria.", + "value": "Y", + "score": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Evaluate to Baseline" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model4": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model4", + "runIndex": 1 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 3 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 2 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 4 + } + ] + } + ], + "OpenAI Chat Model5": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model5", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:56.877Z", + "stoppedAt": "2025-05-15T21:20:00.996Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/237-snapshot.json b/test-workflows/snapshots/237-snapshot.json new file mode 100644 index 0000000000..f8fa547afa --- /dev/null +++ b/test-workflows/snapshots/237-snapshot.json @@ -0,0 +1,150 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343996926, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Azure OpenAI Chat Model": [ + { + "startTime": 1747343996936, + "executionTime": 776, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "Azure OpenAI Chat", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: How much is 1+1? Only provide the numerical answer without any other text.\n" + ], + "estimatedTokens": 20, + "options": { + "azure_endpoint": "https://n8n-ai-us.openai.azure.com/", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "model_kwargs": {}, + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "deployment_name": "gpt4" + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Azure OpenAI Chat Model", + "runIndex": 0 + } + ] + } + } + ], + "Azure OpenAI Chat": [ + { + "startTime": 1747343996926, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 787, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "2" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Azure OpenAI Chat" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Azure OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "Azure OpenAI Chat Model", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:56.926Z", + "stoppedAt": "2025-05-15T21:19:57.713Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/238-snapshot.json b/test-workflows/snapshots/238-snapshot.json new file mode 100644 index 0000000000..84129d0e6b --- /dev/null +++ b/test-workflows/snapshots/238-snapshot.json @@ -0,0 +1,149 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343996969, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Model": [ + { + "startTime": 1747343996970, + "executionTime": 422, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "Open AI Instruct", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "How much is 1+1? Only provide the numerical answer without any other text.\n\n" + ], + "estimatedTokens": 18, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-instruct", + "temperature": 0, + "configuration": {}, + "timeout": 60000, + "max_retries": 2 + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Model", + "runIndex": 0 + } + ] + } + } + ], + "Open AI Instruct": [ + { + "startTime": 1747343996969, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 423, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "2" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Open AI Instruct" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Model": [ + { + "subRun": [ + { + "node": "OpenAI Model", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:56.969Z", + "stoppedAt": "2025-05-15T21:19:57.392Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/239-snapshot.json b/test-workflows/snapshots/239-snapshot.json new file mode 100644 index 0000000000..1ccc5a68e7 --- /dev/null +++ b/test-workflows/snapshots/239-snapshot.json @@ -0,0 +1,583 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343997231, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model3": [ + { + "startTime": 1747343997245, + "executionTime": 2299, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Let's first understand the problem and devise a plan to solve the problem. Please output the plan starting with the header \"Plan:\" followed by a numbered list of steps. Please make the plan the minimum number of steps required to answer the query or complete the task accurately and precisely. You have a set of tools at your disposal to help you with this task: calculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator. You must consider these tools when coming up with your plan. If the task is a question, the final step in the plan must be the following: \"Given the above steps taken, please respond to the original query.\" At the end of your plan, say \"\"\nHuman: What is the result of 30 + (10002200 / 100)? Only respond with a number." + ], + "estimatedTokens": 188, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model3", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 1 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 2 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 3 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 4 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 5 + } + ] + } + }, + { + "startTime": 1747343999545, + "executionTime": 2549, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: Previous steps: []\n\nCurrent objective: Calculate the division part of the expression: 10002200 / 100.\n\n\n\nYou may extract and combine relevant data from your previous steps when responding to me." + ], + "estimatedTokens": 311, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1747344002096, + "executionTime": 1416, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: Previous steps: []\n\nCurrent objective: Calculate the division part of the expression: 10002200 / 100.\n\nThis was your previous work (but I haven't seen any of it! I only see what you return as final answer):\nThought: To calculate the division part of the expression \\(10002200 / 100\\), I will use the calculator tool.\nAction: \n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"10002200 / 100\"\n}\n```\n\nObservation: 100022\nThought:\n\nYou may extract and combine relevant data from your previous steps when responding to me." + ], + "estimatedTokens": 398, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1747344003513, + "executionTime": 2581, + "executionIndex": 6, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: Previous steps: [{\"action\":{\"text\":\"Calculate the division part of the expression: 10002200 / 100.\"},\"result\":{\"response\":\"The result of the division \\\\(10002200 / 100\\\\) is 100022.\"}}]\n\nCurrent objective: Add 30 to the result of step 1.\n\n\n\nYou may extract and combine relevant data from your previous steps when responding to me." + ], + "estimatedTokens": 353, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1747344006097, + "executionTime": 1567, + "executionIndex": 8, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: Previous steps: [{\"action\":{\"text\":\"Calculate the division part of the expression: 10002200 / 100.\"},\"result\":{\"response\":\"The result of the division \\\\(10002200 / 100\\\\) is 100022.\"}}]\n\nCurrent objective: Add 30 to the result of step 1.\n\nThis was your previous work (but I haven't seen any of it! I only see what you return as final answer):\nThought: To achieve the current objective, I need to add 30 to the result of step 1, which was 100022.\n\nAction: \n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"100022 + 30\"\n}\n```\n\nObservation: 100052\nThought:\n\nYou may extract and combine relevant data from your previous steps when responding to me." + ], + "estimatedTokens": 441, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1747344007667, + "executionTime": 796, + "executionIndex": 9, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: Previous steps: [{\"action\":{\"text\":\"Calculate the division part of the expression: 10002200 / 100.\"},\"result\":{\"response\":\"The result of the division \\\\(10002200 / 100\\\\) is 100022.\"}},{\"action\":{\"text\":\"Add 30 to the result of step 1.\"},\"result\":{\"response\":\"The final result after adding 30 to 100022 is 100052.\"}}]\n\nCurrent objective: Output the final result as a number.\n\n The original question was: What is the result of 30 + (10002200 / 100)? Only respond with a number..\n\n\n\nYou may extract and combine relevant data from your previous steps when responding to me." + ], + "estimatedTokens": 416, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Calculator3": [ + { + "startTime": 1747344002094, + "executionTime": 1, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "100022" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "10002200 / 100" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Calculator3", + "runIndex": 0 + }, + { + "node": "Calculator3", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344006095, + "executionTime": 0, + "executionIndex": 7, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "100052" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "100022 + 30" + } + } + ] + ] + } + } + ], + "AI Agent3": [ + { + "startTime": 1747343997232, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 11232, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "100052" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AI Agent3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model3": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model3", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 1 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 2 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 3 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 4 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 5 + } + ] + } + ], + "Calculator3": [ + { + "subRun": [ + { + "node": "Calculator3", + "runIndex": 0 + }, + { + "node": "Calculator3", + "runIndex": 1 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:57.231Z", + "stoppedAt": "2025-05-15T21:20:08.464Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/240-snapshot.json b/test-workflows/snapshots/240-snapshot.json new file mode 100644 index 0000000000..88ce472aac --- /dev/null +++ b/test-workflows/snapshots/240-snapshot.json @@ -0,0 +1,391 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343997401, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Baseline": [ + { + "startTime": 1747343997401, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "baseline_summary": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Article": [ + { + "startTime": 1747343997401, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set Baseline" + } + ], + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\"." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model2": [ + { + "startTime": 1747343997407, + "executionTime": 1366, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Refine", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 787, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747343998775, + "executionTime": 1684, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Refine", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Your job is to produce a final summary\nWe have provided an existing summary up to a certain point: \"The dancing plague of 1518 occurred in Strasbourg, Alsace, where between 50 and 400 people danced uncontrollably for weeks. The cause is believed to be stress-induced mass hysteria, with other theories including ergot poisoning and religious explanations. The outbreak began with one woman dancing and spread to others, leading to deaths from strokes or heart attacks. The epidemic ended when the dancers were sent to a shrine to pray for absolution. Similar events have been reported throughout history. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm this.\"\nWe have the opportunity to refine the existing summary\n(only if needed) with some more context below.\n------------\n\"The main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".\"\n------------\n\nGiven the new context, refine the original summary\nIf the context isn't useful, return the original summary.\n\nREFINED SUMMARY:" + ], + "estimatedTokens": 957, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Summary - Simple - Refine": [ + { + "startTime": 1747343997404, + "executionIndex": 3, + "source": [ + { + "previousNode": "Set Article" + } + ], + "hints": [], + "executionTime": 3056, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model9": [ + { + "startTime": 1747344000467, + "executionTime": 1037, + "executionIndex": 7, + "executionStatus": "success", + "source": [ + { + "previousNode": "Evaluate to Baseline4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: You are assessing a submitted answer on a given task or input based on a set of criteria. Here is the data:\n[BEGIN DATA]\n***\n[Input]: Summarize Wikipedia article about the dancing plague of 1518\n***\n[Submission]: undefined\n***\n[Criteria]: helpfulness: Is the submission helpful, insightful, and appropriate? If so, response Y. If not, respond N.\n***\n[Reference]: The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.\n***\n[END DATA]\nDoes the submission meet the Criteria? First, write out in a step by step manner your reasoning about each criterion to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character \"Y\" or \"N\" (without quotes or punctuation) on its own line corresponding to the correct answer of whether the submission meets all criteria. At the end, repeat just the letter again by itself on a new line." + ], + "estimatedTokens": 288, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model9", + "runIndex": 0 + } + ] + } + } + ], + "Evaluate to Baseline4": [ + { + "startTime": 1747344000460, + "executionIndex": 6, + "source": [ + { + "previousNode": "Summary - Simple - Refine" + } + ], + "hints": [], + "executionTime": 1044, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "reasoning": "Step by step reasoning:1. Is the submission helpful, insightful, and appropriate?- The submission provides a concise summary of the Wikipedia article about the dancing plague of 1518, including key details such as the location, number of people involved, possible causes, and outcome.- The submission is informative and relevant to the input provided.- The submission does not contain any irrelevant or misleading information.- Overall, the submission meets the criteria of being helpful, insightful, and appropriate.Therefore, the submission meets the Criteria.", + "value": "Y", + "score": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Evaluate to Baseline4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model2": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 1 + } + ] + } + ], + "OpenAI Chat Model9": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model9", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:57.401Z", + "stoppedAt": "2025-05-15T21:20:01.504Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/241-snapshot.json b/test-workflows/snapshots/241-snapshot.json new file mode 100644 index 0000000000..04721efeb8 --- /dev/null +++ b/test-workflows/snapshots/241-snapshot.json @@ -0,0 +1,296 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1746522731818, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1746522732523, + "executionTime": 920, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful AI assistant.\nHuman: What is the result of 30 + (10002200 / 100)? Only respond with a number." + ], + "estimatedTokens": 33, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1746522733445, + "executionTime": 435, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful AI assistant.\nHuman: What is the result of 30 + (10002200 / 100)? Only respond with a number.\nAI: \nFunction: calculator, 100052" + ], + "estimatedTokens": 43, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Calculator": [ + { + "startTime": 1746522733444, + "executionTime": 1, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "100052" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "30 + (10002200 / 100)" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Calculator", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent": [ + { + "startTime": 1746522731818, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 2063, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "100052", + "intermediateSteps": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields": [ + { + "startTime": 1746522733881, + "executionIndex": 5, + "source": [ + { + "previousNode": "AI Agent" + } + ], + "hints": [], + "executionTime": 6, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "calculator_called": true, + "has_correct_output": "true" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Edit Fields" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model", + "runIndex": 1 + } + ] + } + ], + "Calculator": [ + { + "subRun": [ + { + "node": "Calculator", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-06T09:12:11.817Z", + "stoppedAt": "2025-05-06T09:12:13.887Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/242-snapshot.json b/test-workflows/snapshots/242-snapshot.json new file mode 100644 index 0000000000..c3ba41e57f --- /dev/null +++ b/test-workflows/snapshots/242-snapshot.json @@ -0,0 +1,212 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343997489, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1747343997494, + "executionTime": 808, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "Open AI Chat - Output Parsing", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: What are the top 5 states of US by population?\nYou must format your output as a JSON value that adheres to a given \"JSON Schema\" instance.\n\n\"JSON Schema\" is a declarative language that allows you to annotate and validate JSON documents.\n\nFor example, the example \"JSON Schema\" instance {{\"properties\": {{\"foo\": {{\"description\": \"a list of test words\", \"type\": \"array\", \"items\": {{\"type\": \"string\"}}}}}}, \"required\": [\"foo\"]}}}}\nwould match an object with one required property, \"foo\". The \"type\" property specifies \"foo\" must be an \"array\", and the \"description\" property semantically describes it as \"a list of test words\". The items within \"foo\" must be strings.\nThus, the object {{\"foo\": [\"bar\", \"baz\"]}} is a well-formatted instance of this example \"JSON Schema\". The object {{\"properties\": {{\"foo\": [\"bar\", \"baz\"]}}}} is not well-formatted.\n\nYour output will be parsed and type-checked according to the provided schema instance, so make sure all fields in your output match the schema exactly and there are no trailing commas!\n\nHere is the JSON Schema instance your output must adhere to. Include the enclosing markdown codeblock:\n```json\n{\"type\":\"object\",\"properties\":{\"output\":{\"type\":\"object\",\"properties\":{\"state\":{\"type\":\"string\"},\"cities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"additionalProperties\":false}},\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}\n```\n" + ], + "estimatedTokens": 336, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + } + ], + "Structured Output Parser1": [ + { + "startTime": 1747343998303, + "executionTime": 2, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "Open AI Chat - Output Parsing", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "```json\n{\"output\":{\"state\":\"California\",\"cities\":[\"Los Angeles\",\"San Francisco\",\"San Diego\",\"San Jose\",\"Sacramento\"]}}\n```" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Structured Output Parser1", + "runIndex": 0 + } + ] + } + } + ], + "Open AI Chat - Output Parsing": [ + { + "startTime": 1747343997489, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 817, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Open AI Chat - Output Parsing" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + ], + "Structured Output Parser1": [ + { + "subRun": [ + { + "node": "Structured Output Parser1", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:57.489Z", + "stoppedAt": "2025-05-15T21:19:58.306Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/243-snapshot.json b/test-workflows/snapshots/243-snapshot.json new file mode 100644 index 0000000000..ccd7966f2e --- /dev/null +++ b/test-workflows/snapshots/243-snapshot.json @@ -0,0 +1,305 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343997730, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model2": [ + { + "startTime": 1747343997733, + "executionTime": 1117, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: What is the result of 30 + (10002200 / 100)? Only respond with a number.\n\n" + ], + "estimatedTokens": 294, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747343998855, + "executionTime": 811, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: What is the result of 30 + (10002200 / 100)? Only respond with a number.\n\nThis was your previous work (but I haven't seen any of it! I only see what you return as final answer):\nQuestion: What is the result of 30 + (10002200 / 100)?\nThought: I need to calculate the division first and then add 30 to the result.\nAction: \n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"30 + (10002200 / 100)\"\n}\n```\n\nObservation: 100052\nThought:" + ], + "estimatedTokens": 394, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Calculator2": [ + { + "startTime": 1747343998851, + "executionTime": 2, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "100052" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "30 + (10002200 / 100)" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Calculator2", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent2": [ + { + "startTime": 1747343997730, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 1936, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "100052", + "intermediateSteps": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields2": [ + { + "startTime": 1747343999666, + "executionIndex": 5, + "source": [ + { + "previousNode": "AI Agent2" + } + ], + "hints": [], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "calculator_called": true, + "has_correct_output": "true" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Edit Fields2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model2": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 1 + } + ] + } + ], + "Calculator2": [ + { + "subRun": [ + { + "node": "Calculator2", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:57.730Z", + "stoppedAt": "2025-05-15T21:19:59.669Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/244-snapshot.json b/test-workflows/snapshots/244-snapshot.json new file mode 100644 index 0000000000..5729dac27c --- /dev/null +++ b/test-workflows/snapshots/244-snapshot.json @@ -0,0 +1,431 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343997766, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model4": [ + { + "startTime": 1747343997768, + "executionTime": 2362, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\nget_evens: Call this tool to get upcoming events for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".\nget_weather_data: Call this tool to get weather information for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: Help me plan my day in Berlin, Germany\n1. Check current the weather \n2. Get the upcoming events\n3. Respond with weather and details about the upcoming events\n\nEach tool should only be called once.\n\n" + ], + "estimatedTokens": 380, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model4", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 1 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 2 + } + ] + } + }, + { + "startTime": 1747344000150, + "executionTime": 4919, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\nget_evens: Call this tool to get upcoming events for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".\nget_weather_data: Call this tool to get weather information for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: Help me plan my day in Berlin, Germany\n1. Check current the weather \n2. Get the upcoming events\n3. Respond with weather and details about the upcoming events\n\nEach tool should only be called once.\n\nThis was your previous work (but I haven't seen any of it! I only see what you return as final answer):\nThought: First, I need to check the current weather in Berlin, Germany.\nAction: \n```\n{\n \"action\": \"get_weather_data\",\n \"action_input\": \"Berlin, Germany\"\n}\n```\nObservation: {\n \"response\": \"{\\n \\\"created\\\": \\\"2024-03-04T09:26:23+01:00\\\",\\n \\\"symbolCode\\\": {\\n \\\"next1Hour\\\": \\\"fog\\\"\\n },\\n \\\"temperature\\\": {\\n \\\"value\\\": 5.1,\\n \\\"feelsLike\\\": 4\\n },\\n \\\"precipitation\\\": {\\n \\\"value\\\": 0.0\\n },\\n \\\"wind\\\": {\\n \\\"direction\\\": 275,\\n \\\"speed\\\": 1.7\\n },\\n \\\"status\\\": {\\n \\\"code\\\": \\\"Ok\\\"\\n }\\n}\"\n}\nThought:" + ], + "estimatedTokens": 600, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1747344005077, + "executionTime": 8985, + "executionIndex": 6, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Answer the following questions as best you can. You have access to the following tools:\n\nget_evens: Call this tool to get upcoming events for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".\nget_weather_data: Call this tool to get weather information for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".\n\nThe way you use the tools is by specifying a json blob, denoted below by $JSON_BLOB\nSpecifically, this $JSON_BLOB should have a \"action\" key (with the name of the tool to use) and a \"action_input\" key (with the input to the tool going here). \nThe $JSON_BLOB should only contain a SINGLE action, do NOT return a list of multiple actions. Here is an example of a valid $JSON_BLOB:\n\n```\n{\n \"action\": \"calculator\",\n \"action_input\": \"1 + 2\"\n}\n```\n\nALWAYS use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: \n```\n$JSON_BLOB\n```\nObservation: the result of the action\n... (this Thought/Action/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin! Reminder to always use the exact characters `Final Answer` when responding.\nHuman: Help me plan my day in Berlin, Germany\n1. Check current the weather \n2. Get the upcoming events\n3. Respond with weather and details about the upcoming events\n\nEach tool should only be called once.\n\nThis was your previous work (but I haven't seen any of it! I only see what you return as final answer):\nThought: First, I need to check the current weather in Berlin, Germany.\nAction: \n```\n{\n \"action\": \"get_weather_data\",\n \"action_input\": \"Berlin, Germany\"\n}\n```\nObservation: {\n \"response\": \"{\\n \\\"created\\\": \\\"2024-03-04T09:26:23+01:00\\\",\\n \\\"symbolCode\\\": {\\n \\\"next1Hour\\\": \\\"fog\\\"\\n },\\n \\\"temperature\\\": {\\n \\\"value\\\": 5.1,\\n \\\"feelsLike\\\": 4\\n },\\n \\\"precipitation\\\": {\\n \\\"value\\\": 0.0\\n },\\n \\\"wind\\\": {\\n \\\"direction\\\": 275,\\n \\\"speed\\\": 1.7\\n },\\n \\\"status\\\": {\\n \\\"code\\\": \\\"Ok\\\"\\n }\\n}\"\n}\nThought:With the weather in Berlin, Germany being foggy for the next hour, a temperature of 5.1°C (feeling like 4°C), no precipitation, and a light wind from the west at 1.7 m/s, it's a relatively calm and chilly day. Now, I'll check the upcoming events in Berlin to plan the day accordingly.\nAction: \n```\n{\n \"action\": \"get_evens\",\n \"action_input\": \"Berlin, Germany\"\n}\n```\nObservation: {\n \"response\": \"[\\n {\\n \\\"description\\\": \\\"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\\\n\\\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\\\",\\n \\\"name\\\": \\\"Movie Barf: Dune – Part Two\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\\\",\\n \\\"name\\\": \\\"Luboš Pospíšil & 5P\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\\\",\\n \\\"name\\\": \\\"Fight Club\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\\\",\\n \\\"name\\\": \\\"Poor Things\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\\\",\\n \\\"name\\\": \\\"Tribute to World Legends: Michael Jackson\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n }\\n]\"\n}\nThought:" + ], + "estimatedTokens": 1361, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4-turbo-preview", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Get Weather": [ + { + "startTime": 1747344000130, + "executionTime": 18, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "{\n \"created\": \"2024-03-04T09:26:23+01:00\",\n \"symbolCode\": {\n \"next1Hour\": \"fog\"\n },\n \"temperature\": {\n \"value\": 5.1,\n \"feelsLike\": 4\n },\n \"precipitation\": {\n \"value\": 0.0\n },\n \"wind\": {\n \"direction\": 275,\n \"speed\": 1.7\n },\n \"status\": {\n \"code\": \"Ok\"\n }\n}" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "Berlin, Germany" + } + } + ] + ] + }, + "metadata": { + "subExecution": { + "executionId": "3956", + "workflowId": "244" + }, + "subRun": [ + { + "node": "Get Weather", + "runIndex": 0 + } + ] + } + } + ], + "Get Events": [ + { + "startTime": 1747344005069, + "executionTime": 6, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "[\n {\n \"description\": \"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\n\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\",\n \"name\": \"Movie Barf: Dune – Part Two\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\",\n \"name\": \"Luboš Pospíšil & 5P\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\",\n \"name\": \"Fight Club\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\",\n \"name\": \"Poor Things\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\",\n \"name\": \"Tribute to World Legends: Michael Jackson\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n }\n]" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "Berlin, Germany" + } + } + ] + ] + }, + "metadata": { + "subExecution": { + "executionId": "3970", + "workflowId": "244" + }, + "subRun": [ + { + "node": "Get Events", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent4": [ + { + "startTime": 1747343997766, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 16296, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "Today in Berlin, Germany, the weather is foggy with a temperature of 5.1°C, feeling like 4°C. There's no precipitation expected, and the wind is light, coming from the west at 1.7 m/s. For activities, there are several interesting events happening:\n\n1. **Movie Barf: Dune – Part Two**: An English-friendly film night featuring *Dune: Part Two* by Denis Villeneuve. The event includes chats with guests and special drink offers.\n2. **Luboš Pospíšil & 5P**: A performance by Luboš Pospíšil with the band 5P.\n3. **Fight Club**: A screening of the iconic film *Fight Club*, offering an insomniac office worker's journey into the world of underground fighting.\n4. **Poor Things**: A film by Yorgos Lanthimos and Emma Stone, telling the fantastical story of Bella Baxter, a young woman brought back to life and her adventures across continents.\n5. **Tribute to World Legends: Michael Jackson**: A jazz tribute concert to Michael Jackson by Bharata Rajnošek.\n\nThese events provide a mix of cinematic experiences, live music, and cultural tributes suitable for a variety of interests." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields6": [ + { + "startTime": 1747344014062, + "executionIndex": 7, + "source": [ + { + "previousNode": "AI Agent4" + } + ], + "hints": [], + "executionTime": 7, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "has_weather": true, + "has_movie": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Edit Fields6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model4": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model4", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 1 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 2 + } + ] + } + ], + "Get Weather": [ + { + "subRun": [ + { + "node": "Get Weather", + "runIndex": 0 + } + ] + } + ], + "Get Events": [ + { + "subRun": [ + { + "node": "Get Events", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:57.765Z", + "stoppedAt": "2025-05-15T21:20:14.069Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/245-snapshot.json b/test-workflows/snapshots/245-snapshot.json new file mode 100644 index 0000000000..f858d2bcad --- /dev/null +++ b/test-workflows/snapshots/245-snapshot.json @@ -0,0 +1,145 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343998385, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AWS Bedrock Chat Model": [ + { + "startTime": 1747343998389, + "executionTime": 1163, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AWS Bedrock Chat", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: How much is 1+1? Only provide the numerical answer without any other text.\n" + ], + "estimatedTokens": 20, + "options": { + "lc": 1, + "type": "not_implemented", + "id": [ + "langchain", + "chat_models", + "chat_bedrock_converse", + "ChatBedrockConverse" + ] + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "AWS Bedrock Chat Model", + "runIndex": 0 + } + ] + } + } + ], + "AWS Bedrock Chat": [ + { + "startTime": 1747343998386, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 1166, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "The answer to the equation 1+1 is 2." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AWS Bedrock Chat" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "AWS Bedrock Chat Model": [ + { + "subRun": [ + { + "node": "AWS Bedrock Chat Model", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:58.385Z", + "stoppedAt": "2025-05-15T21:19:59.552Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/246-snapshot.json b/test-workflows/snapshots/246-snapshot.json new file mode 100644 index 0000000000..32bfe748b3 --- /dev/null +++ b/test-workflows/snapshots/246-snapshot.json @@ -0,0 +1,152 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343998710, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1747343998712, + "executionTime": 381, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "Open AI Chat", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: How much is 1+1? Only provide the numerical answer without any other text.\n" + ], + "estimatedTokens": 20, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + } + ], + "Open AI Chat": [ + { + "startTime": 1747343998711, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 382, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "2" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Open AI Chat" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:58.710Z", + "stoppedAt": "2025-05-15T21:19:59.093Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/247-snapshot.json b/test-workflows/snapshots/247-snapshot.json new file mode 100644 index 0000000000..5efdb71f3e --- /dev/null +++ b/test-workflows/snapshots/247-snapshot.json @@ -0,0 +1,380 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343998718, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Baseline": [ + { + "startTime": 1747343998718, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "baseline_summary": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Article": [ + { + "startTime": 1747343998718, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set Baseline" + } + ], + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\"." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Token Splitter": [ + { + "startTime": 1747343998720, + "executionTime": 3, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Advanced", + "previousNodeRun": 0 + } + ], + "data": { + "ai_textSplitter": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_textSplitter": [ + [ + { + "json": { + "textSplitter": "The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\"." + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Token Splitter", + "runIndex": 0 + } + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1747343998732, + "executionTime": 1334, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Advanced", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why.\n\n to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said\n\n crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles\n\n also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that\n\n LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintention\n\n superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 1793, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + } + ], + "Summary - Advanced": [ + { + "startTime": 1747343998719, + "executionIndex": 3, + "source": [ + { + "previousNode": "Set Article" + } + ], + "hints": [], + "executionTime": 1347, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model8": [ + { + "startTime": 1747344000077, + "executionTime": 1216, + "executionIndex": 7, + "executionStatus": "success", + "source": [ + { + "previousNode": "Evaluate to Baseline3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: You are assessing a submitted answer on a given task or input based on a set of criteria. Here is the data:\n[BEGIN DATA]\n***\n[Input]: Summarize Wikipedia article about the dancing plague of 1518\n***\n[Submission]: The dancing plague of 1518 was a case of dancing mania that occurred in Strasbourg, Alsace, where between 50 and 400 people danced uncontrollably for weeks. The cause of the phenomenon is debated, with theories including stress-induced mass hysteria, ergot poisoning, and religious explanations. The outbreak eventually subsided when the dancers were sent to a shrine to pray for absolution. The veracity of deaths during the plague is disputed, with some sources claiming fatalities while others do not mention any deaths. Modern theories suggest food poisoning from ergot fungi or stress-induced mass hysteria as possible explanations. The event has inspired various works of art and media, including films, songs, and novels.\n***\n[Criteria]: helpfulness: Is the submission helpful, insightful, and appropriate? If so, response Y. If not, respond N.\n***\n[Reference]: The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.\n***\n[END DATA]\nDoes the submission meet the Criteria? First, write out in a step by step manner your reasoning about each criterion to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character \"Y\" or \"N\" (without quotes or punctuation) on its own line corresponding to the correct answer of whether the submission meets all criteria. At the end, repeat just the letter again by itself on a new line." + ], + "estimatedTokens": 428, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model8", + "runIndex": 0 + } + ] + } + } + ], + "Evaluate to Baseline3": [ + { + "startTime": 1747344000067, + "executionIndex": 6, + "source": [ + { + "previousNode": "Summary - Advanced" + } + ], + "hints": [], + "executionTime": 1228, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "reasoning": "Step by step reasoning:1. Is the submission helpful? - Yes, the submission provides a concise summary of the Wikipedia article about the dancing plague of 1518, including key details such as the location, number of people involved, possible causes, and outcomes.2. Is the submission insightful? - Yes, the submission offers insights into the various theories surrounding the cause of the dancing plague, the controversy over the number of deaths, and the cultural impact of the event.3. Is the submission appropriate? - Yes, the submission is appropriate as it directly addresses the task of summarizing the Wikipedia article about the dancing plague of 1518.Therefore, the submission meets the Criteria.", + "value": "Y", + "score": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Evaluate to Baseline3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Token Splitter": [ + { + "subRun": [ + { + "node": "Token Splitter", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model8": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model8", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:58.718Z", + "stoppedAt": "2025-05-15T21:20:01.295Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/248-snapshot.json b/test-workflows/snapshots/248-snapshot.json new file mode 100644 index 0000000000..16af383ae7 --- /dev/null +++ b/test-workflows/snapshots/248-snapshot.json @@ -0,0 +1,946 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343999184, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Code": [ + { + "startTime": 1747343999184, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Default Data Loader2": [ + { + "startTime": 1747343999190, + "executionTime": 8, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "In-Memory Vector Store", + "previousNodeRun": 0 + } + ], + "data": { + "ai_document": [ + [ + { + "json": { + "response": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "inputOverride": { + "ai_document": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Default Data Loader2", + "runIndex": 0 + } + ] + } + } + ], + "Token Splitter2": [ + { + "startTime": 1747343999191, + "executionTime": 7, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "Default Data Loader2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_textSplitter": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_textSplitter": [ + [ + { + "json": { + "textSplitter": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Token Splitter2", + "runIndex": 0 + } + ] + } + } + ], + "Embeddings OpenAI6": [ + { + "startTime": 1747343999199, + "executionTime": 1399, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "In-Memory Vector Store", + "previousNodeRun": 0 + } + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "documents": [ + "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution", + " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash", + " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest", + "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need", + " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing", + " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the", + " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs", + " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early", + " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k ", + " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=", + "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4", + ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + ] + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI6", + "runIndex": 0 + } + ] + } + } + ], + "In-Memory Vector Store": [ + { + "startTime": 1747343999186, + "executionIndex": 2, + "source": [ + { + "previousNode": "Code" + } + ], + "hints": [], + "executionTime": 1412, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k " + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Check Vector Store Populated2": [ + { + "startTime": 1747344000598, + "executionIndex": 6, + "source": [ + { + "previousNode": "In-Memory Vector Store" + } + ], + "hints": [], + "executionTime": 6, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wait": [ + { + "startTime": 1747344000604, + "executionIndex": 7, + "source": [ + { + "previousNode": "Check Vector Store Populated2" + } + ], + "hints": [], + "executionTime": 10001, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Embeddings OpenAI8": [ + { + "startTime": 1747344010606, + "executionTime": 465, + "executionIndex": 9, + "executionStatus": "success", + "source": [ + { + "previousNode": "In-Memory Vector Store1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "Security risks" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI8", + "runIndex": 0 + } + ] + } + } + ], + "In-Memory Vector Store1": [ + { + "startTime": 1747344010605, + "executionIndex": 8, + "source": [ + { + "previousNode": "Wait" + } + ], + "hints": [], + "executionTime": 467, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "document": { + "object": true + }, + "score": 0.34844570501920435 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.34701477848846396 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.32987959970192005 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.31427364434642824 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Check Vector Store Retrieval2": [ + { + "startTime": 1747344011072, + "executionIndex": 10, + "source": [ + { + "previousNode": "In-Memory Vector Store1" + } + ], + "hints": [], + "executionTime": 4, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vector Store Retriever2": [ + { + "startTime": 1747344011084, + "executionTime": 489, + "executionIndex": 12, + "executionStatus": "success", + "source": [ + { + "previousNode": "Question and Answer Chain2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_retriever": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_retriever": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "config": { + "tags": [], + "metadata": { + "execution_id": "3953", + "workflow": { + "id": "248", + "name": "InMemoryVectorStore:*", + "active": false + }, + "node": "Question and Answer Chain2" + }, + "recursionLimit": 25, + "runName": "[InMemoryVectorStore:*] Question and Answer Chain2", + "signal": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Vector Store Retriever2", + "runIndex": 0 + } + ] + } + } + ], + "In-Memory Vector Store2": [ + { + "startTime": 1747344011084, + "executionTime": 489, + "executionIndex": 13, + "executionStatus": "success", + "source": [ + { + "previousNode": "Vector Store Retriever2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "k": 4 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "In-Memory Vector Store2", + "runIndex": 0 + } + ] + } + } + ], + "Embeddings OpenAI7": [ + { + "startTime": 1747344011084, + "executionTime": 489, + "executionIndex": 14, + "executionStatus": "success", + "source": [ + { + "previousNode": "In-Memory Vector Store2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI7", + "runIndex": 0 + } + ] + } + } + ], + "OpenAI Chat Model2": [ + { + "startTime": 1747344011576, + "executionTime": 776, + "executionIndex": 15, + "executionStatus": "success", + "source": [ + { + "previousNode": "Question and Answer Chain2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\nContext: new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the\n\n next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing\n\n confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs\n\n-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need\nHuman: What is the size of a block header with no transactions? Respond only with number of bytes." + ], + "estimatedTokens": 2071, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + } + ] + } + } + ], + "Question and Answer Chain2": [ + { + "startTime": 1747344011076, + "executionIndex": 11, + "source": [ + { + "previousNode": "Check Vector Store Retrieval2" + } + ], + "hints": [], + "executionTime": 1277, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": "80 bytes" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields2": [ + { + "startTime": 1747344012353, + "executionIndex": 16, + "source": [ + { + "previousNode": "Question and Answer Chain2" + } + ], + "hints": [], + "executionTime": 4, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_matches": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Edit Fields2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Token Splitter2": [ + { + "subRun": [ + { + "node": "Token Splitter2", + "runIndex": 0 + } + ] + } + ], + "Default Data Loader2": [ + { + "subRun": [ + { + "node": "Default Data Loader2", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI6": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI6", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI8": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI8", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI7": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI7", + "runIndex": 0 + } + ] + } + ], + "In-Memory Vector Store2": [ + { + "subRun": [ + { + "node": "In-Memory Vector Store2", + "runIndex": 0 + } + ] + } + ], + "Vector Store Retriever2": [ + { + "subRun": [ + { + "node": "Vector Store Retriever2", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model2": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:59.184Z", + "stoppedAt": "2025-05-15T21:20:12.357Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/249-snapshot.json b/test-workflows/snapshots/249-snapshot.json new file mode 100644 index 0000000000..df2aa3f608 --- /dev/null +++ b/test-workflows/snapshots/249-snapshot.json @@ -0,0 +1,324 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343999564, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Baseline": [ + { + "startTime": 1747343999564, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "baseline_summary": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set Article": [ + { + "startTime": 1747343999564, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set Baseline" + } + ], + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "executionTime": 10, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\"." + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1747343999593, + "executionTime": 1462, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "Summary - Simple - Stuff", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Write a concise summary of the following:\n\n\n\"The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who\n\ndancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".\"\n\n\nCONCISE SUMMARY:" + ], + "estimatedTokens": 1626, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + } + ], + "Summary - Simple - Stuff": [ + { + "startTime": 1747343999574, + "executionIndex": 3, + "source": [ + { + "previousNode": "Set Article" + } + ], + "hints": [], + "executionTime": 1481, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1747344001065, + "executionTime": 1074, + "executionIndex": 6, + "executionStatus": "success", + "source": [ + { + "previousNode": "Evaluate to Baseline", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: You are assessing a submitted answer on a given task or input based on a set of criteria. Here is the data:\n[BEGIN DATA]\n***\n[Input]: Summarize Wikipedia article about the dancing plague of 1518\n***\n[Submission]: The dancing plague of 1518 was a case of dancing mania that occurred in Strasbourg, Alsace, where between 50 and 400 people danced uncontrollably for weeks. The cause of the phenomenon is debated, with theories including stress-induced mass hysteria, ergot poisoning, and religious explanations. The outbreak eventually subsided when the dancers were sent to a shrine to pray for absolution. The veracity of deaths during the plague is disputed, with some sources claiming fatalities while others do not mention any deaths. Modern theories suggest food poisoning or stress-induced mass hysteria as possible explanations. The event has inspired various works of art and media, including films, songs, and novels.\n***\n[Criteria]: helpfulness: Is the submission helpful, insightful, and appropriate? If so, response Y. If not, respond N.\n***\n[Reference]: The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.\n***\n[END DATA]\nDoes the submission meet the Criteria? First, write out in a step by step manner your reasoning about each criterion to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character \"Y\" or \"N\" (without quotes or punctuation) on its own line corresponding to the correct answer of whether the submission meets all criteria. At the end, repeat just the letter again by itself on a new line." + ], + "estimatedTokens": 424, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + } + ], + "Evaluate to Baseline": [ + { + "startTime": 1747344001055, + "executionIndex": 5, + "source": [ + { + "previousNode": "Summary - Simple - Stuff" + } + ], + "hints": [], + "executionTime": 1086, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "reasoning": "1. Is the submission helpful?- The submission provides a concise summary of the Wikipedia article about the dancing plague of 1518, including key details such as the location, number of people involved, possible causes, and the outcome of the event.- The submission also mentions the controversy surrounding the number of deaths and the inspiration for various works of art and media.- Overall, the submission is informative and covers the main points of the topic.Based on the above analysis, the submission is helpful, insightful, and appropriate.Y", + "value": "Y", + "score": 1 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Evaluate to Baseline" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:59.564Z", + "stoppedAt": "2025-05-15T21:20:02.141Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/250-snapshot.json b/test-workflows/snapshots/250-snapshot.json new file mode 100644 index 0000000000..3e4363a298 --- /dev/null +++ b/test-workflows/snapshots/250-snapshot.json @@ -0,0 +1,946 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747343999763, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Code": [ + { + "startTime": 1747343999763, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Default Data Loader": [ + { + "startTime": 1747343999765, + "executionTime": 6, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "Pinecone Vector Store", + "previousNodeRun": 0 + } + ], + "data": { + "ai_document": [ + [ + { + "json": { + "response": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "inputOverride": { + "ai_document": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Default Data Loader", + "runIndex": 0 + } + ] + } + } + ], + "Token Splitter": [ + { + "startTime": 1747343999766, + "executionTime": 4, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "Default Data Loader", + "previousNodeRun": 0 + } + ], + "data": { + "ai_textSplitter": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_textSplitter": [ + [ + { + "json": { + "textSplitter": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Token Splitter", + "runIndex": 0 + } + ] + } + } + ], + "Embeddings OpenAI": [ + { + "startTime": 1747344000511, + "executionTime": 851, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "Pinecone Vector Store", + "previousNodeRun": 0 + } + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "documents": [ + "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution", + " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash", + " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest", + "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need", + " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing", + " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the", + " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs", + " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early", + " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k ", + " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=", + "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4", + ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + ] + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI", + "runIndex": 0 + } + ] + } + } + ], + "Pinecone Vector Store": [ + { + "startTime": 1747343999765, + "executionIndex": 2, + "source": [ + { + "previousNode": "Code" + } + ], + "hints": [], + "executionTime": 3065, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k " + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Check Vector Store Populated": [ + { + "startTime": 1747344002830, + "executionIndex": 6, + "source": [ + { + "previousNode": "Pinecone Vector Store" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Wait": [ + { + "startTime": 1747344002832, + "executionIndex": 7, + "source": [ + { + "previousNode": "Check Vector Store Populated" + } + ], + "hints": [], + "executionTime": 15000, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Embeddings OpenAI10": [ + { + "startTime": 1747344017838, + "executionTime": 771, + "executionIndex": 9, + "executionStatus": "success", + "source": [ + { + "previousNode": "Pinecone Vector Store1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What is bitcoin?" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI10", + "runIndex": 0 + } + ] + } + } + ], + "Pinecone Vector Store1": [ + { + "startTime": 1747344017832, + "executionIndex": 8, + "source": [ + { + "previousNode": "Wait" + } + ], + "hints": [], + "executionTime": 1228, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "document": { + "object": true + }, + "score": 0.438440055 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.383340061 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.333085746 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.329191238 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Check Vector Store Retrieval": [ + { + "startTime": 1747344019060, + "executionIndex": 10, + "source": [ + { + "previousNode": "Pinecone Vector Store1" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vector Store Retriever": [ + { + "startTime": 1747344019067, + "executionTime": 713, + "executionIndex": 12, + "executionStatus": "success", + "source": [ + { + "previousNode": "Question and Answer Chain", + "previousNodeRun": 0 + } + ], + "data": { + "ai_retriever": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_retriever": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "config": { + "tags": [], + "metadata": { + "execution_id": "3955", + "workflow": { + "id": "250", + "name": "PineconeVectorStore:*", + "active": false + }, + "node": "Question and Answer Chain" + }, + "recursionLimit": 25, + "runName": "[PineconeVectorStore:*] Question and Answer Chain", + "signal": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Vector Store Retriever", + "runIndex": 0 + } + ] + } + } + ], + "Pinecone Vector Store2": [ + { + "startTime": 1747344019067, + "executionTime": 713, + "executionIndex": 13, + "executionStatus": "success", + "source": [ + { + "previousNode": "Vector Store Retriever", + "previousNodeRun": 0 + } + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "k": 4 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Pinecone Vector Store2", + "runIndex": 0 + } + ] + } + } + ], + "Embeddings OpenAI9": [ + { + "startTime": 1747344019067, + "executionTime": 600, + "executionIndex": 14, + "executionStatus": "success", + "source": [ + { + "previousNode": "Pinecone Vector Store2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI9", + "runIndex": 0 + } + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1747344019786, + "executionTime": 362, + "executionIndex": 15, + "executionStatus": "success", + "source": [ + { + "previousNode": "Question and Answer Chain", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\nContext: new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the\n\n next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing\n\n confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs\n\n-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need\nHuman: What is the size of a block header with no transactions? Respond only with number of bytes." + ], + "estimatedTokens": 2071, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + } + ], + "Question and Answer Chain": [ + { + "startTime": 1747344019062, + "executionIndex": 11, + "source": [ + { + "previousNode": "Check Vector Store Retrieval" + } + ], + "hints": [], + "executionTime": 1086, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": "80 bytes" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields": [ + { + "startTime": 1747344020148, + "executionIndex": 16, + "source": [ + { + "previousNode": "Question and Answer Chain" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_matches": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Edit Fields" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Token Splitter": [ + { + "subRun": [ + { + "node": "Token Splitter", + "runIndex": 0 + } + ] + } + ], + "Default Data Loader": [ + { + "subRun": [ + { + "node": "Default Data Loader", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI10": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI10", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI9": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI9", + "runIndex": 0 + } + ] + } + ], + "Pinecone Vector Store2": [ + { + "subRun": [ + { + "node": "Pinecone Vector Store2", + "runIndex": 0 + } + ] + } + ], + "Vector Store Retriever": [ + { + "subRun": [ + { + "node": "Vector Store Retriever", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:19:59.763Z", + "stoppedAt": "2025-05-15T21:20:20.150Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/251-snapshot.json b/test-workflows/snapshots/251-snapshot.json new file mode 100644 index 0000000000..e4a5bfb741 --- /dev/null +++ b/test-workflows/snapshots/251-snapshot.json @@ -0,0 +1,276 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747344000257, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1747344000262, + "executionTime": 886, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Assistant is a large language model trained by OpenAI.\n\nAssistant is designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, Assistant is able to generate human-like text based on the input it receives, allowing it to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.\n\nAssistant is constantly learning and improving, and its capabilities are constantly evolving. It is able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. Additionally, Assistant is able to generate its own text based on the input it receives, allowing it to engage in discussions and provide explanations and descriptions on a wide range of topics.\n\nOverall, Assistant is a powerful system that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether you need help with a specific question or just want to have a conversation about a particular topic, Assistant is here to assist. However, above all else, all responses must adhere to the format of RESPONSE FORMAT INSTRUCTIONS.\nHuman: TOOLS\n------\nAssistant can ask the user to use tools to look up information that may be helpful in answering the users original question. The tools the human can use are:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nRESPONSE FORMAT INSTRUCTIONS\n----------------------------\n\nOutput a JSON markdown code snippet containing a valid JSON object in one of two formats:\n\n**Option 1:**\nUse this if you want the human to use a tool.\nMarkdown code snippet formatted in the following schema:\n\n```json\n{\n \"action\": string, // The action to take. Must be one of [calculator]\n \"action_input\": string // The input to the action. May be a stringified object.\n}\n```\n\n**Option #2:**\nUse this if you want to respond directly and conversationally to the human. Markdown code snippet formatted in the following schema:\n\n```json\n{\n \"action\": \"Final Answer\",\n \"action_input\": string // You should put what you want to return to user here and make sure to use valid json newline characters.\n}\n```\n\nFor both options, remember to always include the surrounding markdown code snippet delimiters (begin with \"```json\" and end with \"```\")!\n\n\nUSER'S INPUT\n--------------------\nHere is the user's input (remember to respond with a markdown code snippet of a json blob with a single action, and NOTHING else):\n\nWhat is the result of 30 + (10002200 / 100)? Only respond with a number." + ], + "estimatedTokens": 567, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model1", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344001150, + "executionTime": 691, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Assistant is a large language model trained by OpenAI.\n\nAssistant is designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, Assistant is able to generate human-like text based on the input it receives, allowing it to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.\n\nAssistant is constantly learning and improving, and its capabilities are constantly evolving. It is able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. Additionally, Assistant is able to generate its own text based on the input it receives, allowing it to engage in discussions and provide explanations and descriptions on a wide range of topics.\n\nOverall, Assistant is a powerful system that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether you need help with a specific question or just want to have a conversation about a particular topic, Assistant is here to assist. However, above all else, all responses must adhere to the format of RESPONSE FORMAT INSTRUCTIONS.\nHuman: TOOLS\n------\nAssistant can ask the user to use tools to look up information that may be helpful in answering the users original question. The tools the human can use are:\n\ncalculator: Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.\n\nRESPONSE FORMAT INSTRUCTIONS\n----------------------------\n\nOutput a JSON markdown code snippet containing a valid JSON object in one of two formats:\n\n**Option 1:**\nUse this if you want the human to use a tool.\nMarkdown code snippet formatted in the following schema:\n\n```json\n{\n \"action\": string, // The action to take. Must be one of [calculator]\n \"action_input\": string // The input to the action. May be a stringified object.\n}\n```\n\n**Option #2:**\nUse this if you want to respond directly and conversationally to the human. Markdown code snippet formatted in the following schema:\n\n```json\n{\n \"action\": \"Final Answer\",\n \"action_input\": string // You should put what you want to return to user here and make sure to use valid json newline characters.\n}\n```\n\nFor both options, remember to always include the surrounding markdown code snippet delimiters (begin with \"```json\" and end with \"```\")!\n\n\nUSER'S INPUT\n--------------------\nHere is the user's input (remember to respond with a markdown code snippet of a json blob with a single action, and NOTHING else):\n\nWhat is the result of 30 + (10002200 / 100)? Only respond with a number.\nAI: ```json\n{\n \"action\": \"calculator\",\n \"action_input\": \"30 + (10002200 / 100)\"\n}\n```\nHuman: TOOL RESPONSE:\n---------------------\n100052\n\nUSER'S INPUT\n--------------------\n\nOkay, so what is the response to my last comment? If using information obtained from the tools you must mention it explicitly without mentioning the tool names - I have forgotten all TOOL RESPONSES! Remember to respond with a markdown code snippet of a json blob with a single action, and NOTHING else." + ], + "estimatedTokens": 675, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Calculator1": [ + { + "startTime": 1747344001148, + "executionTime": 1, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "100052" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "30 + (10002200 / 100)" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Calculator1", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent1": [ + { + "startTime": 1747344000257, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 1584, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "The result of your calculation is 100052.", + "intermediateSteps": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AI Agent1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model1", + "runIndex": 1 + } + ] + } + ], + "Calculator1": [ + { + "subRun": [ + { + "node": "Calculator1", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:00.257Z", + "stoppedAt": "2025-05-15T21:20:01.841Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/252-snapshot.json b/test-workflows/snapshots/252-snapshot.json new file mode 100644 index 0000000000..dd909a8db0 --- /dev/null +++ b/test-workflows/snapshots/252-snapshot.json @@ -0,0 +1,1719 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "hints": [], + "startTime": 1727952497590, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Code": [ + { + "hints": [], + "startTime": 1727952497590, + "executionTime": 15, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Default Data Loader1": [ + { + "startTime": 1727952497624, + "executionTime": 377, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_document": [ + [ + { + "json": { + "response": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "inputOverride": { + "ai_document": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Token Splitter1": [ + { + "startTime": 1727952497625, + "executionTime": 375, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_textSplitter": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_textSplitter": [ + [ + { + "json": { + "textSplitter": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + } + } + ] + ] + } + } + ], + "Embeddings OpenAI4": [ + { + "startTime": 1727952498054, + "executionTime": 608, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "documents": [ + "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution", + " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash", + " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest", + "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need", + " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing", + " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the", + " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs", + " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early", + " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k ", + " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=", + "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4", + ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + ] + } + } + ] + ] + } + } + ], + "Postgres PGVector Store": [ + { + "hints": [], + "startTime": 1727952497605, + "executionTime": 1078, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k " + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Token Splitter1", + "runIndex": 0 + }, + { + "node": "Default Data Loader1", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI4", + "runIndex": 0 + } + ] + } + } + ], + "Default Data Loader3": [ + { + "startTime": 1727952498685, + "executionTime": 8, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_document": [ + [ + { + "json": { + "response": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "inputOverride": { + "ai_document": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Token Splitter3": [ + { + "startTime": 1727952498685, + "executionTime": 7, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_textSplitter": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_textSplitter": [ + [ + { + "json": { + "textSplitter": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + } + } + ] + ] + } + } + ], + "Embeddings OpenAI8": [ + { + "startTime": 1727952498712, + "executionTime": 833, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "documents": [ + "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution", + " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash", + " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest", + "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need", + " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing", + " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the", + " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs", + " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early", + " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k ", + " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=", + "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4", + ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + ] + } + } + ] + ] + } + } + ], + "Postgres PGVector Store6": [ + { + "hints": [], + "startTime": 1727952498683, + "executionTime": 876, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k " + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Token Splitter3", + "runIndex": 0 + }, + { + "node": "Default Data Loader3", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI8", + "runIndex": 0 + } + ] + } + } + ], + "Default Data Loader4": [ + { + "startTime": 1727952499561, + "executionTime": 6, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_document": [ + [ + { + "json": { + "response": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "inputOverride": { + "ai_document": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Token Splitter4": [ + { + "startTime": 1727952499561, + "executionTime": 5, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_textSplitter": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_textSplitter": [ + [ + { + "json": { + "textSplitter": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + } + } + ] + ] + } + } + ], + "Embeddings OpenAI9": [ + { + "startTime": 1727952499585, + "executionTime": 1173, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "documents": [ + "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution", + " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash", + " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest", + "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need", + " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing", + " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the", + " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs", + " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early", + " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k ", + " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=", + "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4", + ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + ] + } + } + ] + ] + } + } + ], + "Postgres PGVector Store7": [ + { + "hints": [], + "startTime": 1727952499559, + "executionTime": 1215, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k " + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Token Splitter4", + "runIndex": 0 + }, + { + "node": "Default Data Loader4", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI9", + "runIndex": 0 + } + ] + } + } + ], + "Postgres PGVector Store3": [ + { + "startTime": 1727952500811, + "executionTime": 211, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "Some query", + "k": 40 + } + } + ] + ] + } + } + ], + "Embeddings OpenAI": [ + { + "startTime": 1727952500811, + "executionTime": 206, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "Some query" + } + } + ] + ] + } + } + ], + "LangChain Code": [ + { + "hints": [], + "startTime": 1727952500774, + "executionTime": 249, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "documents": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI", + "runIndex": 0 + }, + { + "node": "Postgres PGVector Store3", + "runIndex": 0 + } + ] + } + } + ], + "Edit Fields": [ + { + "hints": [], + "startTime": 1727952501023, + "executionTime": 2, + "source": [ + { + "previousNode": "LangChain Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "has_correct_length": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vector Store Retriever1": [ + { + "startTime": 1727952501043, + "executionTime": 430, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_retriever": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_retriever": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + } + } + ], + "Postgres PGVector Store2": [ + { + "startTime": 1727952501043, + "executionTime": 430, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "k": 40 + } + } + ] + ] + } + } + ], + "Embeddings OpenAI3": [ + { + "startTime": 1727952501043, + "executionTime": 423, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1727952501482, + "executionTime": 782, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: Use the following pieces of context to answer the users question. \nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\n new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the\n\n next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing\n\n confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs\n\n-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need\n\n model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest\n\n1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4\n\n see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early\n\n ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k \n\nBitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution\n\n uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash\n\n, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9\n\n ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=\nHuman: What is the size of a block header with no transactions? Respond only with number of bytes." + ], + "estimatedTokens": 5882, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": {}, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Question and Answer Chain1": [ + { + "hints": [], + "startTime": 1727952501025, + "executionTime": 1240, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI3", + "runIndex": 0 + }, + { + "node": "Postgres PGVector Store2", + "runIndex": 0 + }, + { + "node": "Vector Store Retriever1", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + } + ], + "Edit Fields1": [ + { + "hints": [], + "startTime": 1727952502265, + "executionTime": 2, + "source": [ + { + "previousNode": "Question and Answer Chain1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_matches": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Embeddings OpenAI5": [ + { + "startTime": 1727952502288, + "executionTime": 227, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "n8n_vectors" + } + } + ] + ] + } + } + ], + "Postgres PGVector Store1": [ + { + "hints": [], + "startTime": 1727952502267, + "executionTime": 255, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "document": { + "object": true + }, + "score": 0.827576607465744 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8277368792217039 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8307313815849079 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8333492577075958 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8375973798276553 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8381176336863466 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8473298135602686 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8492151380520884 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8496658981244675 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8727368712425232 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.8730872796125839 + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "document": { + "object": true + }, + "score": 0.886498898267746 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI5", + "runIndex": 0 + } + ] + } + } + ], + "Aggregate": [ + { + "hints": [], + "startTime": 1727952502523, + "executionTime": 0, + "source": [ + { + "previousNode": "Postgres PGVector Store1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "documents": [ + "json array" + ] + }, + "pairedItem": [ + { + "item": 0 + }, + { + "item": 1 + }, + { + "item": 2 + }, + { + "item": 3 + }, + { + "item": 4 + }, + { + "item": 5 + }, + { + "item": 6 + }, + { + "item": 7 + }, + { + "item": 8 + }, + { + "item": 9 + }, + { + "item": 10 + }, + { + "item": 11 + } + ] + } + ] + ] + } + } + ], + "Edit Fields2": [ + { + "hints": [], + "startTime": 1727952502523, + "executionTime": 0, + "source": [ + { + "previousNode": "Aggregate" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "has_correct_length": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Postgres": [ + { + "hints": [], + "startTime": 1727952502523, + "executionTime": 19, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": [ + { + "item": 0 + } + ] + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Postgres" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Postgres PGVector Store": [ + { + "subRun": [ + { + "node": "Token Splitter1", + "runIndex": 0 + }, + { + "node": "Default Data Loader1", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI4", + "runIndex": 0 + } + ] + } + ], + "Postgres PGVector Store6": [ + { + "subRun": [ + { + "node": "Token Splitter3", + "runIndex": 0 + }, + { + "node": "Default Data Loader3", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI8", + "runIndex": 0 + } + ] + } + ], + "Postgres PGVector Store7": [ + { + "subRun": [ + { + "node": "Token Splitter4", + "runIndex": 0 + }, + { + "node": "Default Data Loader4", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI9", + "runIndex": 0 + } + ] + } + ], + "LangChain Code": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI", + "runIndex": 0 + }, + { + "node": "Postgres PGVector Store3", + "runIndex": 0 + } + ] + } + ], + "Question and Answer Chain1": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI3", + "runIndex": 0 + }, + { + "node": "Postgres PGVector Store2", + "runIndex": 0 + }, + { + "node": "Vector Store Retriever1", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + ], + "Postgres PGVector Store1": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI5", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-10-03T10:48:17.588Z", + "stoppedAt": "2024-10-03T10:48:22.542Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/253-snapshot.json b/test-workflows/snapshots/253-snapshot.json new file mode 100644 index 0000000000..dc337826c8 --- /dev/null +++ b/test-workflows/snapshots/253-snapshot.json @@ -0,0 +1,1821 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747344001053, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Window Buffer Memory1": [ + { + "startTime": 1747344001060, + "executionTime": 0, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent5", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "values": { + "input": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Window Buffer Memory1", + "runIndex": 0 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 1 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 2 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 3 + } + ] + } + }, + { + "startTime": 1747344004762, + "executionTime": 0, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent5", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "input": { + "input": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + }, + "output": { + "input": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.", + "chat_history": [], + "output": { + "english_answer": "Magnets are special things that can pull some metals, like iron, towards them. They can stick to your fridge or make toys move without touching them! There are two sides to a magnet: one side is called 'north' and the other is 'south.' If you put two magnets together, the north side of one will stick to the south side of the other, but if you try to put two north sides together, they will push away from each other!", + "czech_answer": "Magnety jsou zvláštní věci, které mohou přitahovat některé kovy, jako je železo. Mohou se přichytit na vaši lednici nebo pohybovat hračkami, aniž byste se jich dotkli! Magnet má dvě strany: jedna se nazývá 'sever' a druhá 'jih.' Když dáte dva magnety k sobě, severní strana jednoho se přichytí k jižní straně druhého, ale když se pokusíte dát dvě severní strany k sobě, budou se od sebe odtlačovat!" + } + } + } + } + ] + ] + } + }, + { + "startTime": 1747344004765, + "executionTime": 0, + "executionIndex": 7, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "values": { + "input": "Can you still remember my name?", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + } + } + } + ] + ] + } + }, + { + "startTime": 1747344005687, + "executionTime": 0, + "executionIndex": 10, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "input": { + "input": "Can you still remember my name?", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + }, + "output": { + "input": "Can you still remember my name?", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.", + "chat_history": [ + { + "lc": 1, + "type": "constructor", + "id": [ + "langchain_core", + "messages", + "HumanMessage" + ], + "kwargs": { + "content": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "additional_kwargs": {}, + "response_metadata": {} + } + }, + { + "lc": 1, + "type": "constructor", + "id": [ + "langchain_core", + "messages", + "AIMessage" + ], + "kwargs": { + "content": "{\"output\":{\"english_answer\":\"Magnets are special things that can pull some metals, like iron, towards them. They can stick to your fridge or make toys move without touching them! There are two sides to a magnet: one side is called 'north' and the other is 'south.' If you put two magnets together, the north side of one will stick to the south side of the other, but if you try to put two north sides together, they will push away from each other!\",\"czech_answer\":\"Magnety jsou zvláštní věci, které mohou přitahovat některé kovy, jako je železo. Mohou se přichytit na vaši lednici nebo pohybovat hračkami, aniž byste se jich dotkli! Magnet má dvě strany: jedna se nazývá 'sever' a druhá 'jih.' Když dáte dva magnety k sobě, severní strana jednoho se přichytí k jižní straně druhého, ale když se pokusíte dát dvě severní strany k sobě, budou se od sebe odtlačovat!\"}}", + "tool_calls": [], + "invalid_tool_calls": [], + "additional_kwargs": {}, + "response_metadata": {} + } + } + ], + "output": { + "english_answer": "Yes, your name is Oleg!", + "czech_answer": "Ano, vaše jméno je Oleg!" + } + } + } + } + ] + ] + } + } + ], + "OpenAI Chat Model3": [ + { + "startTime": 1747344001063, + "executionTime": 3698, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent5", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: Hi, my name is Oleg. Tell me about magnets like I'm 5." + ], + "estimatedTokens": 122, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0.1, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model3", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344004773, + "executionTime": 913, + "executionIndex": 8, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: Hi, my name is Oleg. Tell me about magnets like I'm 5.\nAI: {\"output\":{\"english_answer\":\"Magnets are special things that can pull some metals, like iron, towards them. They can stick to your fridge or make toys move without touching them! There are two sides to a magnet: one side is called 'north' and the other is 'south.' If you put two magnets together, the north side of one will stick to the south side of the other, but if you try to put two north sides together, they will push away from each other!\",\"czech_answer\":\"Magnety jsou zvláštní věci, které mohou přitahovat některé kovy, jako je železo. Mohou se přichytit na vaši lednici nebo pohybovat hračkami, aniž byste se jich dotkli! Magnet má dvě strany: jedna se nazývá 'sever' a druhá 'jih.' Když dáte dva magnety k sobě, severní strana jednoho se přichytí k jižní straně druhého, ale když se pokusíte dát dvě severní strany k sobě, budou se od sebe odtlačovat!\"}}\nHuman: Can you still remember my name?" + ], + "estimatedTokens": 373, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0.1, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Structured Output Parser1": [ + { + "startTime": 1747344004761, + "executionTime": 0, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent5", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"english_answer\":\"Magnets are special things that can pull some metals, like iron, towards them. They can stick to your fridge or make toys move without touching them! There are two sides to a magnet: one side is called 'north' and the other is 'south.' If you put two magnets together, the north side of one will stick to the south side of the other, but if you try to put two north sides together, they will push away from each other!\",\"czech_answer\":\"Magnety jsou zvláštní věci, které mohou přitahovat některé kovy, jako je železo. Mohou se přichytit na vaši lednici nebo pohybovat hračkami, aniž byste se jich dotkli! Magnet má dvě strany: jedna se nazývá 'sever' a druhá 'jih.' Když dáte dva magnety k sobě, severní strana jednoho se přichytí k jižní straně druhého, ale když se pokusíte dát dvě severní strany k sobě, budou se od sebe odtlačovat!\"}}" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Structured Output Parser1", + "runIndex": 0 + }, + { + "node": "Structured Output Parser1", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344005686, + "executionTime": 0, + "executionIndex": 9, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent3", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"english_answer\":\"Yes, your name is Oleg!\",\"czech_answer\":\"Ano, vaše jméno je Oleg!\"}}" + } + } + ] + ] + } + } + ], + "AI Agent5": [ + { + "startTime": 1747344001053, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 3709, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AI Agent3": [ + { + "startTime": 1747344004762, + "executionIndex": 6, + "source": [ + { + "previousNode": "AI Agent5" + } + ], + "hints": [], + "executionTime": 925, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields1": [ + { + "startTime": 1747344005687, + "executionIndex": 11, + "source": [ + { + "previousNode": "AI Agent3" + } + ], + "hints": [], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "contain_both_answers": true, + "recalled_name": "true" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model2": [ + { + "startTime": 1747344005694, + "executionTime": 558, + "executionIndex": 13, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Fetch example website" + ], + "estimatedTokens": 13, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0.3, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344006735, + "executionTime": 6742, + "executionIndex": 15, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Fetch example website\nAI: \nTool: \n\n\n Example Domain\n\n \n \n \n \n\n\n\n
\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

More information...

\n
\n\n\n" + ], + "estimatedTokens": 378, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0.3, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "HTTP Request": [ + { + "startTime": 1747344006253, + "executionTime": 481, + "executionIndex": 14, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent2", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "\n\n\n Example Domain\n\n \n \n \n \n\n\n\n
\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

More information...

\n
\n\n\n" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": {} + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "HTTP Request", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent2": [ + { + "startTime": 1747344005690, + "executionIndex": 12, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 7788, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "Here is the content of the example website:\n\n```html\n\n\n\n Example Domain\n\n \n \n \n \n\n\n\n
\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

More information...

\n
\n\n\n```\n\n### Summary of the Content:\n- **Title**: Example Domain\n- **Description**: This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.\n- **Link**: [More information...](https://www.iana.org/domains/example) \n\nThe page has a simple layout with a heading, a paragraph, and a link.", + "intermediateSteps": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields9": [ + { + "startTime": 1747344013478, + "executionIndex": 16, + "source": [ + { + "previousNode": "AI Agent2" + } + ], + "hints": [], + "executionTime": 4, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "empty_args": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1747344013488, + "executionTime": 791, + "executionIndex": 18, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Convert this JSON array to a single string: ['This', 'Is', 'An', 'Array!']." + ], + "estimatedTokens": 32, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0.3, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model1", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344014286, + "executionTime": 710, + "executionIndex": 20, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Convert this JSON array to a single string: ['This', 'Is', 'An', 'Array!'].\nAI: \nTool: This, Is, An, Array!" + ], + "estimatedTokens": 46, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0.3, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Code Tool": [ + { + "startTime": 1747344014280, + "executionTime": 4, + "executionIndex": 19, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "This, Is, An, Array!" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": { + "strings_array": [ + "This", + "Is", + "An", + "Array!" + ] + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Code Tool", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent1": [ + { + "startTime": 1747344013482, + "executionIndex": 17, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 1515, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "The JSON array has been converted to a single string: \"This, Is, An, Array!\"", + "intermediateSteps": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields8": [ + { + "startTime": 1747344014997, + "executionIndex": 21, + "source": [ + { + "previousNode": "AI Agent1" + } + ], + "hints": [], + "executionTime": 8, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "passed_array_parameter": { + "object": true + }, + "has_correct_length": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1747344015011, + "executionTime": 612, + "executionIndex": 23, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: Tell me about M.C. Escher" + ], + "estimatedTokens": 91, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0.1, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344015633, + "executionTime": 1154, + "executionIndex": 25, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: Tell me about M.C. Escher\nAI: \nTool: {\n \"response\": \"Maurits Cornelis Escher (Dutch pronunciation: [ˈmʌurɪts kɔrˈneːlɪs ˈɛɕər]; 17 June 1898 – 27 March 1972) was a Dutch graphic artist who made woodcuts, lithographs, and mezzotints, many of which were inspired by mathematics. Despite wide popular interest, for most of his life Escher was neglected in the art world, even in his native Netherlands. He was 70 before a retrospective exhibition was held. In the late twentieth century, he became more widely appreciated, and in the twenty-first century he has been celebrated in exhibitions around the world.\\n\\nHis work features mathematical objects and operations including impossible objects, explorations of infinity, reflection, symmetry, perspective, truncated and stellated polyhedra, hyperbolic geometry, and tessellations. Although Escher believed he had no mathematical ability, he interacted with the mathematicians George Pólya, Roger Penrose, and Donald Coxeter, and the crystallographer Friedrich Haag, and conducted his own research into tessellation.\\n\\nEarly in his career, he drew inspiration from nature, making studies of insects, landscapes, and plants such as lichens, all of which he used as details in his artworks. He traveled in Italy and Spain, sketching buildings, townscapes, architecture and the tilings of the Alhambra and the Mezquita of Cordoba, and became steadily more interested in their mathematical structure.\\n\\nEscher's art became well known among scientists and mathematicians, and in popular culture, especially after it was featured by Martin Gardner in his April 1966 Mathematical Games column in Scientific American. Apart from being used in a variety of technical papers, his work has appeared on the covers of many books and albums. He was one of the major inspirations for Douglas Hofstadter's Pulitzer Prize-winning 1979 book Gödel, Escher, Bach.\\n\\nExhibitions\\n\\nPoster advertising the first major exhibition of Escher's work in Britain (Dulwich Picture Gallery, 14 October 2015 – 17 January 2016). The image, which shows Escher and his interest in geometric distortion and multiple levels of distance from reality, is based on his Hand with Reflecting Sphere, 1935.[62][22]\\nDespite wide popular interest, Escher was for a long time somewhat neglected in the art world; even in his native Netherlands, he was 70 before a retrospective exhibition was held.[43][k] In the twenty-first century, major exhibitions have been held in cities around the world.[63][64][65] An exhibition of his work in Rio de Janeiro attracted more than 573,000 visitors in 2011;[63] its daily visitor count of 9,677 made it the most visited museum exhibition of the year, anywhere in the world.[66] No major exhibition of Escher's work was held in Britain until 2015, when the Scottish National Gallery of Modern Art ran one in Edinburgh from June to September 2015,[64] moving in October 2015 to the Dulwich Picture Gallery, London. The exhibition poster is based on Hand with Reflecting Sphere, 1935, which shows Escher in his house reflected in a handheld sphere, thus illustrating the artist, his interest in levels of reality in art (e.g., is the hand in the foreground more real than the reflected one?), perspective, and spherical geometry.[22][62][67] The exhibition moved to Italy in 2015–2016, attracting over 500,000 visitors in Rome and Bologna,[65] and then Milan.[68][69][70]\"\n}" + ], + "estimatedTokens": 867, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0.1, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Search Wiki": [ + { + "startTime": 1747344015624, + "executionTime": 7, + "executionIndex": 24, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "Maurits Cornelis Escher (Dutch pronunciation: [ˈmʌurɪts kɔrˈneːlɪs ˈɛɕər]; 17 June 1898 – 27 March 1972) was a Dutch graphic artist who made woodcuts, lithographs, and mezzotints, many of which were inspired by mathematics. Despite wide popular interest, for most of his life Escher was neglected in the art world, even in his native Netherlands. He was 70 before a retrospective exhibition was held. In the late twentieth century, he became more widely appreciated, and in the twenty-first century he has been celebrated in exhibitions around the world.\n\nHis work features mathematical objects and operations including impossible objects, explorations of infinity, reflection, symmetry, perspective, truncated and stellated polyhedra, hyperbolic geometry, and tessellations. Although Escher believed he had no mathematical ability, he interacted with the mathematicians George Pólya, Roger Penrose, and Donald Coxeter, and the crystallographer Friedrich Haag, and conducted his own research into tessellation.\n\nEarly in his career, he drew inspiration from nature, making studies of insects, landscapes, and plants such as lichens, all of which he used as details in his artworks. He traveled in Italy and Spain, sketching buildings, townscapes, architecture and the tilings of the Alhambra and the Mezquita of Cordoba, and became steadily more interested in their mathematical structure.\n\nEscher's art became well known among scientists and mathematicians, and in popular culture, especially after it was featured by Martin Gardner in his April 1966 Mathematical Games column in Scientific American. Apart from being used in a variety of technical papers, his work has appeared on the covers of many books and albums. He was one of the major inspirations for Douglas Hofstadter's Pulitzer Prize-winning 1979 book Gödel, Escher, Bach.\n\nExhibitions\n\nPoster advertising the first major exhibition of Escher's work in Britain (Dulwich Picture Gallery, 14 October 2015 – 17 January 2016). The image, which shows Escher and his interest in geometric distortion and multiple levels of distance from reality, is based on his Hand with Reflecting Sphere, 1935.[62][22]\nDespite wide popular interest, Escher was for a long time somewhat neglected in the art world; even in his native Netherlands, he was 70 before a retrospective exhibition was held.[43][k] In the twenty-first century, major exhibitions have been held in cities around the world.[63][64][65] An exhibition of his work in Rio de Janeiro attracted more than 573,000 visitors in 2011;[63] its daily visitor count of 9,677 made it the most visited museum exhibition of the year, anywhere in the world.[66] No major exhibition of Escher's work was held in Britain until 2015, when the Scottish National Gallery of Modern Art ran one in Edinburgh from June to September 2015,[64] moving in October 2015 to the Dulwich Picture Gallery, London. The exhibition poster is based on Hand with Reflecting Sphere, 1935, which shows Escher in his house reflected in a handheld sphere, thus illustrating the artist, his interest in levels of reality in art (e.g., is the hand in the foreground more real than the reflected one?), perspective, and spherical geometry.[22][62][67] The exhibition moved to Italy in 2015–2016, attracting over 500,000 visitors in Rome and Bologna,[65] and then Milan.[68][69][70]" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "M.C. Escher" + } + } + ] + ] + }, + "metadata": { + "subExecution": { + "executionId": "3991", + "workflowId": "253" + }, + "subRun": [ + { + "node": "Search Wiki", + "runIndex": 0 + } + ] + } + } + ], + "Structured Output Parser": [ + { + "startTime": 1747344016787, + "executionTime": 1, + "executionIndex": 26, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"name\":\"Maurits Cornelis Escher\",\"birthDate\":\"1898-06-17\",\"deathDate\":\"1972-03-27\",\"nationality\":\"Dutch\",\"profession\":\"Graphic Artist\",\"notableWorks\":[\"Relativity\",\"Waterfall\",\"Ascending and Descending\",\"Drawing Hands\",\"Metamorphosis II\"]}}" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Structured Output Parser", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent": [ + { + "startTime": 1747344015005, + "executionIndex": 22, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 1784, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields7": [ + { + "startTime": 1747344016789, + "executionIndex": 27, + "source": [ + { + "previousNode": "AI Agent" + } + ], + "hints": [], + "executionTime": 8, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "has_birth_date": true, + "has_death_date": "true", + "has_name": "true", + "has_works": "false" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model4": [ + { + "startTime": 1747344016801, + "executionTime": 1075, + "executionIndex": 29, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Help me plan my day in Berlin, Germany. Check current the weather and get the upcoming events and respond with weather and details about the upcoming events.\n\nEach tool should only be called only once." + ], + "estimatedTokens": 50, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model4", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344017902, + "executionTime": 5549, + "executionIndex": 32, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Help me plan my day in Berlin, Germany. Check current the weather and get the upcoming events and respond with weather and details about the upcoming events.\n\nEach tool should only be called only once.\nAI: \nTool: {\n \"response\": \"{\\n \\\"created\\\": \\\"2024-03-04T09:26:23+01:00\\\",\\n \\\"symbolCode\\\": {\\n \\\"next1Hour\\\": \\\"fog\\\"\\n },\\n \\\"temperature\\\": {\\n \\\"value\\\": 5.1,\\n \\\"feelsLike\\\": 4\\n },\\n \\\"precipitation\\\": {\\n \\\"value\\\": 0.0\\n },\\n \\\"wind\\\": {\\n \\\"direction\\\": 275,\\n \\\"speed\\\": 1.7\\n },\\n \\\"status\\\": {\\n \\\"code\\\": \\\"Ok\\\"\\n }\\n}\"\n}\nTool: {\n \"response\": \"[\\n {\\n \\\"description\\\": \\\"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\\\n\\\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\\\",\\n \\\"name\\\": \\\"Movie Barf: Dune – Part Two\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\\\",\\n \\\"name\\\": \\\"Luboš Pospíšil & 5P\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\\\",\\n \\\"name\\\": \\\"Fight Club\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\\\",\\n \\\"name\\\": \\\"Poor Things\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\\\",\\n \\\"name\\\": \\\"Tribute to World Legends: Michael Jackson\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n }\\n]\"\n}" + ], + "estimatedTokens": 862, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Get Weather": [ + { + "startTime": 1747344017877, + "executionTime": 22, + "executionIndex": 30, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "{\n \"created\": \"2024-03-04T09:26:23+01:00\",\n \"symbolCode\": {\n \"next1Hour\": \"fog\"\n },\n \"temperature\": {\n \"value\": 5.1,\n \"feelsLike\": 4\n },\n \"precipitation\": {\n \"value\": 0.0\n },\n \"wind\": {\n \"direction\": 275,\n \"speed\": 1.7\n },\n \"status\": {\n \"code\": \"Ok\"\n }\n}" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "Berlin, Germany" + } + } + ] + ] + }, + "metadata": { + "subExecution": { + "executionId": "3992", + "workflowId": "253" + }, + "subRun": [ + { + "node": "Get Weather", + "runIndex": 0 + } + ] + } + } + ], + "Get Events": [ + { + "startTime": 1747344017878, + "executionTime": 21, + "executionIndex": 31, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent4", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "[\n {\n \"description\": \"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\n\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\",\n \"name\": \"Movie Barf: Dune – Part Two\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\",\n \"name\": \"Luboš Pospíšil & 5P\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\",\n \"name\": \"Fight Club\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\",\n \"name\": \"Poor Things\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\",\n \"name\": \"Tribute to World Legends: Michael Jackson\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n }\n]" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "Berlin, Germany" + } + } + ] + ] + }, + "metadata": { + "subExecution": { + "executionId": "3993", + "workflowId": "253" + }, + "subRun": [ + { + "node": "Get Events", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent4": [ + { + "startTime": 1747344016797, + "executionIndex": 28, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 6656, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "### Weather in Berlin, Germany\n- **Current Temperature**: 5.1°C (Feels like 4°C)\n- **Weather Condition**: Fog\n- **Wind**: 1.7 m/s from the west (275°)\n- **Precipitation**: None expected\n\n### Upcoming Events in Berlin\n1. **Movie Barf: Dune – Part Two**\n - **Description**: A new English-friendly film night featuring *Dune: Part Two*, where Paul Atreides seeks revenge against the conspirators who destroyed his family. Includes intriguing chats with guests and special drink offers.\n - **End Date**: March 4, 2024, 23:59\n\n2. **Luboš Pospíšil & 5P**\n - **Description**: Performance by Luboš Pospíšil with the band 5P at the cultural house of Barikadníků.\n - **End Date**: March 4, 2024, 23:59\n\n3. **Fight Club**\n - **Description**: A film screening about an insomniac office worker who forms an underground fight club that evolves into something much more.\n - **End Date**: March 4, 2024, 23:59\n\n4. **Poor Things**\n - **Description**: A film about Bella Baxter, a young woman brought back to life by an unorthodox scientist, who embarks on a whirlwind adventure seeking equality and liberation.\n - **End Date**: March 4, 2024, 23:59\n\n5. **Tribute to World Legends: Michael Jackson**\n - **Description**: A concert paying tribute to the King of Pop, Michael Jackson, in a jazz style by Bharata Rajnošek.\n - **End Date**: March 4, 2024, 23:59\n\n### Summary\nYou can enjoy a cozy day in Berlin with foggy weather, perfect for indoor activities. Consider attending one of the film screenings or the Michael Jackson tribute concert for a fun evening!" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields6": [ + { + "startTime": 1747344023453, + "executionIndex": 33, + "source": [ + { + "previousNode": "AI Agent4" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "has_weather": true, + "has_movie": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Edit Fields6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Window Buffer Memory1": [ + { + "subRun": [ + { + "node": "Window Buffer Memory1", + "runIndex": 0 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 1 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 2 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 3 + } + ] + } + ], + "OpenAI Chat Model3": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model3", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model3", + "runIndex": 1 + } + ] + } + ], + "Structured Output Parser1": [ + { + "subRun": [ + { + "node": "Structured Output Parser1", + "runIndex": 0 + }, + { + "node": "Structured Output Parser1", + "runIndex": 1 + } + ] + } + ], + "OpenAI Chat Model2": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 1 + } + ] + } + ], + "HTTP Request": [ + { + "subRun": [ + { + "node": "HTTP Request", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model1", + "runIndex": 1 + } + ] + } + ], + "Code Tool": [ + { + "subRun": [ + { + "node": "Code Tool", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model", + "runIndex": 1 + } + ] + } + ], + "Search Wiki": [ + { + "subRun": [ + { + "node": "Search Wiki", + "runIndex": 0 + } + ] + } + ], + "Structured Output Parser": [ + { + "subRun": [ + { + "node": "Structured Output Parser", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model4": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model4", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model4", + "runIndex": 1 + } + ] + } + ], + "Get Weather": [ + { + "subRun": [ + { + "node": "Get Weather", + "runIndex": 0 + } + ] + } + ], + "Get Events": [ + { + "subRun": [ + { + "node": "Get Events", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:01.053Z", + "stoppedAt": "2025-05-15T21:20:23.454Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/254-snapshot.json b/test-workflows/snapshots/254-snapshot.json new file mode 100644 index 0000000000..2113c3a2e4 --- /dev/null +++ b/test-workflows/snapshots/254-snapshot.json @@ -0,0 +1,1763 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1746522733442, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Window Buffer Memory1": [ + { + "startTime": 1746522733448, + "executionTime": 0, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "values": { + "input": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Window Buffer Memory1", + "runIndex": 0 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 1 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 2 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 3 + } + ] + } + }, + { + "startTime": 1746522736491, + "executionTime": 0, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "input": { + "input": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + }, + "output": { + "input": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.", + "chat_history": [], + "output": { + "english_answer": "Magnets are special things that can pull other things towards them. They have a special power inside that makes them able to attract certain objects, like metal. You can play with magnets and see how they stick to things! Some magnets are really strong and can even pick up heavy objects. Magnets are used in lots of things we use every day, like your refrigerator or your toys. Isn't that cool?", + "czech_answer": "Magnety jsou speciální věci, které mohou přitahovat jiné věci k sobě. Mají v sobě zvláštní sílu, která jim umožňuje přitahovat určité předměty, jako je kov. Můžeš si s magnety hrát a vidět, jak se k věcem lepí! Některé magnety jsou opravdu silné a mohou zvedat i těžké předměty. Magnety se používají v mnoha věcech, které používáme každý den, jako je tvá lednice nebo tvé hračky. Není to skvělé?" + } + } + } + } + ] + ] + } + }, + { + "startTime": 1746522736493, + "executionTime": 0, + "executionIndex": 7, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "values": { + "input": "Can you still remember my name?", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + } + } + } + ] + ] + } + }, + { + "startTime": 1746522737598, + "executionTime": 0, + "executionIndex": 10, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "input": { + "input": "Can you still remember my name?", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + }, + "output": { + "input": "Can you still remember my name?", + "system_message": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.", + "chat_history": [ + { + "lc": 1, + "type": "constructor", + "id": [ + "langchain_core", + "messages", + "HumanMessage" + ], + "kwargs": { + "content": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "additional_kwargs": {}, + "response_metadata": {} + } + }, + { + "lc": 1, + "type": "constructor", + "id": [ + "langchain_core", + "messages", + "AIMessage" + ], + "kwargs": { + "content": "{\"output\":{\"english_answer\":\"Magnets are special things that can pull other things towards them. They have a special power inside that makes them able to attract certain objects, like metal. You can play with magnets and see how they stick to things! Some magnets are really strong and can even pick up heavy objects. Magnets are used in lots of things we use every day, like your refrigerator or your toys. Isn't that cool?\",\"czech_answer\":\"Magnety jsou speciální věci, které mohou přitahovat jiné věci k sobě. Mají v sobě zvláštní sílu, která jim umožňuje přitahovat určité předměty, jako je kov. Můžeš si s magnety hrát a vidět, jak se k věcem lepí! Některé magnety jsou opravdu silné a mohou zvedat i těžké předměty. Magnety se používají v mnoha věcech, které používáme každý den, jako je tvá lednice nebo tvé hračky. Není to skvělé?\"}}", + "tool_calls": [], + "invalid_tool_calls": [], + "additional_kwargs": {}, + "response_metadata": {} + } + } + ], + "output": { + "english_answer": "Yes, your name is Oleg.", + "czech_answer": "Ano, tvé jméno je Oleg." + } + } + } + } + ] + ] + } + } + ], + "Anthropic Chat Model5": [ + { + "startTime": 1746522733451, + "executionTime": 3010, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: Hi, my name is Oleg. Tell me about magnets like I'm 5." + ], + "estimatedTokens": 122, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Anthropic Chat Model5", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model5", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1746522736497, + "executionTime": 1100, + "executionIndex": 8, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise.\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: Hi, my name is Oleg. Tell me about magnets like I'm 5.\nAI: {\"output\":{\"english_answer\":\"Magnets are special things that can pull other things towards them. They have a special power inside that makes them able to attract certain objects, like metal. You can play with magnets and see how they stick to things! Some magnets are really strong and can even pick up heavy objects. Magnets are used in lots of things we use every day, like your refrigerator or your toys. Isn't that cool?\",\"czech_answer\":\"Magnety jsou speciální věci, které mohou přitahovat jiné věci k sobě. Mají v sobě zvláštní sílu, která jim umožňuje přitahovat určité předměty, jako je kov. Můžeš si s magnety hrát a vidět, jak se k věcem lepí! Některé magnety jsou opravdu silné a mohou zvedat i těžké předměty. Magnety se používají v mnoha věcech, které používáme každý den, jako je tvá lednice nebo tvé hračky. Není to skvělé?\"}}\nHuman: Can you still remember my name?" + ], + "estimatedTokens": 358, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + } + } + ], + "Structured Output Parser1": [ + { + "startTime": 1746522736462, + "executionTime": 1, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"english_answer\":\"Magnets are special things that can pull other things towards them. They have a special power inside that makes them able to attract certain objects, like metal. You can play with magnets and see how they stick to things! Some magnets are really strong and can even pick up heavy objects. Magnets are used in lots of things we use every day, like your refrigerator or your toys. Isn't that cool?\",\"czech_answer\":\"Magnety jsou speciální věci, které mohou přitahovat jiné věci k sobě. Mají v sobě zvláštní sílu, která jim umožňuje přitahovat určité předměty, jako je kov. Můžeš si s magnety hrát a vidět, jak se k věcem lepí! Některé magnety jsou opravdu silné a mohou zvedat i těžké předměty. Magnety se používají v mnoha věcech, které používáme každý den, jako je tvá lednice nebo tvé hračky. Není to skvělé?\"}}" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Structured Output Parser1", + "runIndex": 0 + }, + { + "node": "Structured Output Parser1", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1746522737598, + "executionTime": 0, + "executionIndex": 9, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"english_answer\":\"Yes, your name is Oleg.\",\"czech_answer\":\"Ano, tvé jméno je Oleg.\"}}" + } + } + ] + ] + } + } + ], + "AI Agent5": [ + { + "startTime": 1746522733442, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 3049, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AI Agent3": [ + { + "startTime": 1746522736491, + "executionIndex": 6, + "source": [ + { + "previousNode": "AI Agent5" + } + ], + "hints": [], + "executionTime": 1107, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields2": [ + { + "startTime": 1746522737599, + "executionIndex": 11, + "source": [ + { + "previousNode": "AI Agent3" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "contain_both_answers": true, + "recalled_name": "true" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Anthropic Chat Model4": [ + { + "startTime": 1746522737608, + "executionTime": 737, + "executionIndex": 13, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Fetch example website" + ], + "estimatedTokens": 13, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Anthropic Chat Model4", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model4", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1746522738869, + "executionTime": 1196, + "executionIndex": 15, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Fetch example website\nAI: [\n {\n \"index\": 0,\n \"type\": \"tool_use\",\n \"id\": \"toolu_016WJuPW6LgQaghP1ZUE1ocR\",\n \"name\": \"HTTP_Request\",\n \"input\": {}\n }\n]\nTool: \n\n\n Example Domain\n\n \n \n \n \n\n\n\n
\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

More information...

\n
\n\n\n" + ], + "estimatedTokens": 435, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + } + } + ], + "HTTP Request": [ + { + "startTime": 1746522738349, + "executionTime": 511, + "executionIndex": 14, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "\n\n\n Example Domain\n\n \n \n \n \n\n\n\n
\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

More information...

\n
\n\n\n" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": {} + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "HTTP Request", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent2": [ + { + "startTime": 1746522737601, + "executionIndex": 12, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 2470, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "The HTTP_Request tool fetched the content of the example website, which is a simple HTML page with some basic information about the example domain.", + "intermediateSteps": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields9": [ + { + "startTime": 1746522740071, + "executionIndex": 16, + "source": [ + { + "previousNode": "AI Agent2" + } + ], + "hints": [], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "empty_args": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Anthropic Chat Model3": [ + { + "startTime": 1746522740079, + "executionTime": 857, + "executionIndex": 18, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Convert this JSON array to a single string: ['This', 'Is', 'An', 'Array!']." + ], + "estimatedTokens": 32, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Anthropic Chat Model3", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model3", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1746522740950, + "executionTime": 611, + "executionIndex": 20, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Convert this JSON array to a single string: ['This', 'Is', 'An', 'Array!'].\nAI: [\n {\n \"index\": 0,\n \"type\": \"tool_use\",\n \"id\": \"toolu_01Tayi7StUPcjbUZgxFhmTpn\",\n \"name\": \"array_merge\",\n \"input\": \"{\\\"strings_array\\\": [\\\"This\\\",\\\"Is\\\",\\\"An\\\",\\\"Array!\\\"]}\"\n }\n]\nTool: This, Is, An, Array!" + ], + "estimatedTokens": 117, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + } + } + ], + "Code Tool": [ + { + "startTime": 1746522740940, + "executionTime": 5, + "executionIndex": 19, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "This, Is, An, Array!" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": { + "strings_array": [ + "This", + "Is", + "An", + "Array!" + ] + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Code Tool", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent1": [ + { + "startTime": 1746522740074, + "executionIndex": 17, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 1492, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "The JSON array ['This', 'Is', 'An', 'Array!'] has been merged into a single string \"This, Is, An, Array!\".", + "intermediateSteps": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields8": [ + { + "startTime": 1746522741566, + "executionIndex": 21, + "source": [ + { + "previousNode": "AI Agent1" + } + ], + "hints": [], + "executionTime": 7, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "passed_array_parameter": { + "object": true + }, + "has_correct_length": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Anthropic Chat Model": [ + { + "startTime": 1746522741582, + "executionTime": 1746, + "executionIndex": 23, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: Tell me about M.C. Escher" + ], + "estimatedTokens": 91, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Anthropic Chat Model", + "runIndex": 0 + } + ] + } + } + ], + "Structured Output Parser": [ + { + "startTime": 1746522743329, + "executionTime": 1, + "executionIndex": 24, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"name\":\"Maurits Cornelis Escher\",\"birthDate\":\"1898-06-17\",\"deathDate\":\"1972-03-27\",\"nationality\":\"Dutch\",\"profession\":\"Graphic artist\",\"notableWorks\":[\"Relativity\",\"Ascending and Descending\",\"Waterfall\",\"Möbius Strip II\"]}}" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Structured Output Parser", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent": [ + { + "startTime": 1746522741573, + "executionIndex": 22, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 1758, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields7": [ + { + "startTime": 1746522743331, + "executionIndex": 25, + "source": [ + { + "previousNode": "AI Agent" + } + ], + "hints": [], + "executionTime": 7, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "has_birth_date": true, + "has_death_date": "true", + "has_name": "true", + "has_works": "true" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Anthropic Chat Model2": [ + { + "startTime": 1746522743344, + "executionTime": 1095, + "executionIndex": 27, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Help me plan my day in Berlin, Germany. Check current the weather and get the upcoming events and respond with weather and details about the upcoming events.\n\nEach tool should only be called only once." + ], + "estimatedTokens": 50, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Anthropic Chat Model2", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model2", + "runIndex": 1 + }, + { + "node": "Anthropic Chat Model2", + "runIndex": 2 + } + ] + } + }, + { + "startTime": 1746522744458, + "executionTime": 1125, + "executionIndex": 29, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Help me plan my day in Berlin, Germany. Check current the weather and get the upcoming events and respond with weather and details about the upcoming events.\n\nEach tool should only be called only once.\nAI: [\n {\n \"index\": 0,\n \"type\": \"text\",\n \"text\": \"Okay, let's plan your day in Berlin, Germany. First, let's check the weather:\"\n },\n {\n \"index\": 1,\n \"type\": \"tool_use\",\n \"id\": \"toolu_01Nk7Qi4rM581m5L3FwCnEmw\",\n \"name\": \"get_weather_data\",\n \"input\": \"{\\\"input\\\": \\\"Berlin, Germany\\\"}\"\n }\n]\nTool: {\n \"response\": \"{\\n \\\"created\\\": \\\"2024-03-04T09:26:23+01:00\\\",\\n \\\"symbolCode\\\": {\\n \\\"next1Hour\\\": \\\"fog\\\"\\n },\\n \\\"temperature\\\": {\\n \\\"value\\\": 5.1,\\n \\\"feelsLike\\\": 4\\n },\\n \\\"precipitation\\\": {\\n \\\"value\\\": 0.0\\n },\\n \\\"wind\\\": {\\n \\\"direction\\\": 275,\\n \\\"speed\\\": 1.7\\n },\\n \\\"status\\\": {\\n \\\"code\\\": \\\"Ok\\\"\\n }\\n}\"\n}" + ], + "estimatedTokens": 311, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + } + }, + { + "startTime": 1746522745610, + "executionTime": 1637, + "executionIndex": 31, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: Help me plan my day in Berlin, Germany. Check current the weather and get the upcoming events and respond with weather and details about the upcoming events.\n\nEach tool should only be called only once.\nAI: [\n {\n \"index\": 0,\n \"type\": \"text\",\n \"text\": \"Okay, let's plan your day in Berlin, Germany. First, let's check the weather:\"\n },\n {\n \"index\": 1,\n \"type\": \"tool_use\",\n \"id\": \"toolu_01Nk7Qi4rM581m5L3FwCnEmw\",\n \"name\": \"get_weather_data\",\n \"input\": \"{\\\"input\\\": \\\"Berlin, Germany\\\"}\"\n }\n]\nTool: {\n \"response\": \"{\\n \\\"created\\\": \\\"2024-03-04T09:26:23+01:00\\\",\\n \\\"symbolCode\\\": {\\n \\\"next1Hour\\\": \\\"fog\\\"\\n },\\n \\\"temperature\\\": {\\n \\\"value\\\": 5.1,\\n \\\"feelsLike\\\": 4\\n },\\n \\\"precipitation\\\": {\\n \\\"value\\\": 0.0\\n },\\n \\\"wind\\\": {\\n \\\"direction\\\": 275,\\n \\\"speed\\\": 1.7\\n },\\n \\\"status\\\": {\\n \\\"code\\\": \\\"Ok\\\"\\n }\\n}\"\n}\nAI: [\n {\n \"index\": 0,\n \"type\": \"text\",\n \"text\": \"The weather in Berlin today is foggy with a temperature of 5.1°C and a feels-like temperature of 4°C. There is minimal precipitation and light winds.\\n\\nNow let's check for upcoming events in Berlin:\"\n },\n {\n \"index\": 1,\n \"type\": \"tool_use\",\n \"id\": \"toolu_01GtTEjaabpzmERMyV2DpWBb\",\n \"name\": \"get_evens\",\n \"input\": \"{\\\"input\\\": \\\"Berlin, Germany\\\"}\"\n }\n]\nTool: {\n \"response\": \"[\\n {\\n \\\"description\\\": \\\"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\\\n\\\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\\\",\\n \\\"name\\\": \\\"Movie Barf: Dune – Part Two\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\\\",\\n \\\"name\\\": \\\"Luboš Pospíšil & 5P\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\\\",\\n \\\"name\\\": \\\"Fight Club\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\\\",\\n \\\"name\\\": \\\"Poor Things\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n },\\n {\\n \\\"description\\\": \\\"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\\\",\\n \\\"name\\\": \\\"Tribute to World Legends: Michael Jackson\\\",\\n \\\"endDate\\\": \\\"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\\\"\\n }\\n]\"\n}" + ], + "estimatedTokens": 1107, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-haiku-20240307", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 0.1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + } + } + ], + "Get Weather": [ + { + "startTime": 1746522744442, + "executionTime": 12, + "executionIndex": 28, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "{\n \"created\": \"2024-03-04T09:26:23+01:00\",\n \"symbolCode\": {\n \"next1Hour\": \"fog\"\n },\n \"temperature\": {\n \"value\": 5.1,\n \"feelsLike\": 4\n },\n \"precipitation\": {\n \"value\": 0.0\n },\n \"wind\": {\n \"direction\": 275,\n \"speed\": 1.7\n },\n \"status\": {\n \"code\": \"Ok\"\n }\n}" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "Berlin, Germany" + } + } + ] + ] + }, + "metadata": { + "subExecution": { + "executionId": "225", + "workflowId": "254" + }, + "subRun": [ + { + "node": "Get Weather", + "runIndex": 0 + } + ] + } + } + ], + "Get Events": [ + { + "startTime": 1746522745587, + "executionTime": 17, + "executionIndex": 30, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "response": "[\n {\n \"description\": \"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\n\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\",\n \"name\": \"Movie Barf: Dune – Part Two\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\",\n \"name\": \"Luboš Pospíšil & 5P\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\",\n \"name\": \"Fight Club\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\",\n \"name\": \"Poor Things\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\",\n \"name\": \"Tribute to World Legends: Michael Jackson\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n }\n]" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "Berlin, Germany" + } + } + ] + ] + }, + "metadata": { + "subExecution": { + "executionId": "226", + "workflowId": "254" + }, + "subRun": [ + { + "node": "Get Events", + "runIndex": 0 + } + ] + } + } + ], + "AI Agent4": [ + { + "startTime": 1746522743338, + "executionIndex": 26, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 3913, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "The key upcoming events in Berlin include:\n\n1. \"Movie Barf: Dune - Part Two\" - A film screening and discussion event on March 4th.\n2. \"Luboš Pospíšil & 5P\" - A concert by the band Luboš Pospíšil & 5P on March 14th.\n3. \"Fight Club\" - A screening of the classic film Fight Club.\n4. \"Poor Things\" - A screening of the new film Poor Things.\n5. \"Tribute to World Legends: Michael Jackson\" - A jazz concert paying tribute to Michael Jackson.\n\nLet me know if you need any other information to plan your day in Berlin!", + "intermediateSteps": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Edit Fields6": [ + { + "startTime": 1746522747251, + "executionIndex": 32, + "source": [ + { + "previousNode": "AI Agent4" + } + ], + "hints": [], + "executionTime": 5, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "has_weather": false, + "has_movie": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Edit Fields6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Window Buffer Memory1": [ + { + "subRun": [ + { + "node": "Window Buffer Memory1", + "runIndex": 0 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 1 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 2 + }, + { + "node": "Window Buffer Memory1", + "runIndex": 3 + } + ] + } + ], + "Anthropic Chat Model5": [ + { + "subRun": [ + { + "node": "Anthropic Chat Model5", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model5", + "runIndex": 1 + } + ] + } + ], + "Structured Output Parser1": [ + { + "subRun": [ + { + "node": "Structured Output Parser1", + "runIndex": 0 + }, + { + "node": "Structured Output Parser1", + "runIndex": 1 + } + ] + } + ], + "Anthropic Chat Model4": [ + { + "subRun": [ + { + "node": "Anthropic Chat Model4", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model4", + "runIndex": 1 + } + ] + } + ], + "HTTP Request": [ + { + "subRun": [ + { + "node": "HTTP Request", + "runIndex": 0 + } + ] + } + ], + "Anthropic Chat Model3": [ + { + "subRun": [ + { + "node": "Anthropic Chat Model3", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model3", + "runIndex": 1 + } + ] + } + ], + "Code Tool": [ + { + "subRun": [ + { + "node": "Code Tool", + "runIndex": 0 + } + ] + } + ], + "Anthropic Chat Model": [ + { + "subRun": [ + { + "node": "Anthropic Chat Model", + "runIndex": 0 + } + ] + } + ], + "Structured Output Parser": [ + { + "subRun": [ + { + "node": "Structured Output Parser", + "runIndex": 0 + } + ] + } + ], + "Anthropic Chat Model2": [ + { + "subRun": [ + { + "node": "Anthropic Chat Model2", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model2", + "runIndex": 1 + }, + { + "node": "Anthropic Chat Model2", + "runIndex": 2 + } + ] + } + ], + "Get Weather": [ + { + "subRun": [ + { + "node": "Get Weather", + "runIndex": 0 + } + ] + } + ], + "Get Events": [ + { + "subRun": [ + { + "node": "Get Events", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-06T09:12:13.441Z", + "stoppedAt": "2025-05-06T09:12:27.256Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/255-snapshot.json b/test-workflows/snapshots/255-snapshot.json new file mode 100644 index 0000000000..15de13e3d9 --- /dev/null +++ b/test-workflows/snapshots/255-snapshot.json @@ -0,0 +1,179 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking ‘Test workflow’": [ + { + "startTime": 1747344001310, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1747344001313, + "executionTime": 150, + "executionIndex": 2, + "executionStatus": "error", + "source": [ + { + "previousNode": "Basic LLM Chain", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "json array" + ], + "estimatedTokens": 3, + "options": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "json array" + ], + "estimatedTokens": 3, + "options": { + "object": true + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + }, + "error": { + "message": "The resource you are requesting could not be found", + "timestamp": 1747344001463, + "name": "NodeApiError", + "description": "The model `gpt-4o-mini123` does not exist or you do not have access to it.", + "context": {}, + "cause": { + "status": 404, + "headers": { + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9405ad488cd1b881-DUB", + "connection": "keep-alive", + "content-encoding": "gzip", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 15 May 2025 21:20:01 GMT", + "server": "cloudflare", + "set-cookie": "__cf_bm=RxKUPES9cEyDoWlsYmoTb0R_2MnzrTE6J0Dkvn77yFE-1747344001-1.0.1.1-DWgxWjJDJ6mlrytbHI5D5mdX6cG1oppGccnhiiOpAE_S96pwCZY4NuEnJJwGWrH9o9fF9P09A8EwDRwUg0IN8KxyV1CK0GxHHFZi_KkJJkU; path=/; expires=Thu, 15-May-25 21:50:01 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=TfxIIk5sfQ6RMO1kRjn1mpAlnxEg7ILyvvyDNqXvpDY-1747344001498-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "vary": "Origin", + "x-content-type-options": "nosniff", + "x-request-id": "req_26d1b9de0d7db778c7849a3a6dd99db1" + }, + "request_id": "req_26d1b9de0d7db778c7849a3a6dd99db1", + "error": { + "message": "The model `gpt-4o-mini123` does not exist or you do not have access to it.", + "type": "invalid_request_error", + "param": null, + "code": "model_not_found" + }, + "code": "model_not_found", + "param": null, + "type": "invalid_request_error", + "lc_error_code": "MODEL_NOT_FOUND", + "attemptNumber": 1, + "retriesLeft": 2 + } + } + } + ], + "Basic LLM Chain": [ + { + "startTime": 1747344001310, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking ‘Test workflow’" + } + ], + "hints": [], + "executionTime": 154, + "executionStatus": "success", + "data": { + "main": [ + [], + [ + { + "json": { + "error": "The resource you are requesting could not be found" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Basic LLM Chain" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:01.310Z", + "stoppedAt": "2025-05-15T21:20:01.464Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/256-snapshot.json b/test-workflows/snapshots/256-snapshot.json new file mode 100644 index 0000000000..349a9ae7a5 --- /dev/null +++ b/test-workflows/snapshots/256-snapshot.json @@ -0,0 +1,535 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking ‘Test workflow’": [ + { + "startTime": 1747344001481, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1747344001486, + "executionTime": 660, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: What happened yesterday?" + ], + "estimatedTokens": 14, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344002730, + "executionTime": 667, + "executionIndex": 7, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\nHuman: What happened yesterday?\nAI: \nTool: " + ], + "estimatedTokens": 20, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Vector Store Tool": [ + { + "startTime": 1747344002162, + "executionTime": 567, + "executionIndex": 3, + "executionStatus": "error", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_tool": [ + [ + { + "json": { + "query": "What happened on October 23, 2023?" + } + } + ] + ] + }, + "inputOverride": { + "ai_tool": [ + [ + { + "json": { + "query": "What happened on October 23, 2023?" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Vector Store Tool", + "runIndex": 0 + } + ] + }, + "error": { + "message": "The resource you are requesting could not be found", + "timestamp": 1747344002729, + "name": "NodeOperationError", + "description": "The resource you are requesting could not be found", + "context": {}, + "cause": { + "message": "The resource you are requesting could not be found", + "timestamp": 1747344002729, + "name": "NodeApiError", + "description": "The model `gpt-4o-mini123` does not exist or you do not have access to it.", + "context": {}, + "cause": { + "status": 404, + "headers": { + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9405ad506891b881-DUB", + "connection": "keep-alive", + "content-encoding": "gzip", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 15 May 2025 21:20:02 GMT", + "server": "cloudflare", + "set-cookie": "__cf_bm=_3t8lA2EICfoAVnY8jS2pZ8vSSfa8N26DkIApllAMH8-1747344002-1.0.1.1-FLg_gCTgMgTTRm3_JoXq9N_TPKW6rr7xWPcCoC_Pa6DtV4BDsZhreK9e7Csam5QfoKEZPRGyDdeLdO7Qow6ZW9hI3ticwUSjDNTQqgwhNKU; path=/; expires=Thu, 15-May-25 21:50:02 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=974ecBFWT36IeNWLLAlnKDyMYU2zpqoQnqHSdftSXQE-1747344002766-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "vary": "Origin", + "x-content-type-options": "nosniff", + "x-request-id": "req_f04a3a26fad606a682c63896539732e7" + }, + "request_id": "req_f04a3a26fad606a682c63896539732e7", + "error": { + "message": "The model `gpt-4o-mini123` does not exist or you do not have access to it.", + "type": "invalid_request_error", + "param": null, + "code": "model_not_found" + }, + "code": "model_not_found", + "param": null, + "type": "invalid_request_error", + "lc_error_code": "MODEL_NOT_FOUND", + "attemptNumber": 1, + "retriesLeft": 2 + } + } + } + } + ], + "In-Memory Vector Store": [ + { + "startTime": 1747344002162, + "executionTime": 406, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "Vector Store Tool", + "previousNodeRun": 0 + } + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "What happened on October 23, 2023?", + "k": 4 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "In-Memory Vector Store", + "runIndex": 0 + } + ] + } + } + ], + "Embeddings OpenAI": [ + { + "startTime": 1747344002162, + "executionTime": 406, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "In-Memory Vector Store", + "previousNodeRun": 0 + } + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What happened on October 23, 2023?" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI", + "runIndex": 0 + } + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1747344002569, + "executionTime": 160, + "executionIndex": 6, + "executionStatus": "error", + "source": [ + { + "previousNode": "Vector Store Tool", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "json array" + ], + "estimatedTokens": 52, + "options": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "json array" + ], + "estimatedTokens": 52, + "options": { + "object": true + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + }, + "error": { + "message": "The resource you are requesting could not be found", + "timestamp": 1747344002729, + "name": "NodeApiError", + "description": "The model `gpt-4o-mini123` does not exist or you do not have access to it.", + "context": {}, + "cause": { + "status": 404, + "headers": { + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9405ad506891b881-DUB", + "connection": "keep-alive", + "content-encoding": "gzip", + "content-type": "application/json; charset=utf-8", + "date": "Thu, 15 May 2025 21:20:02 GMT", + "server": "cloudflare", + "set-cookie": "__cf_bm=_3t8lA2EICfoAVnY8jS2pZ8vSSfa8N26DkIApllAMH8-1747344002-1.0.1.1-FLg_gCTgMgTTRm3_JoXq9N_TPKW6rr7xWPcCoC_Pa6DtV4BDsZhreK9e7Csam5QfoKEZPRGyDdeLdO7Qow6ZW9hI3ticwUSjDNTQqgwhNKU; path=/; expires=Thu, 15-May-25 21:50:02 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=974ecBFWT36IeNWLLAlnKDyMYU2zpqoQnqHSdftSXQE-1747344002766-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "vary": "Origin", + "x-content-type-options": "nosniff", + "x-request-id": "req_f04a3a26fad606a682c63896539732e7" + }, + "request_id": "req_f04a3a26fad606a682c63896539732e7", + "error": { + "message": "The model `gpt-4o-mini123` does not exist or you do not have access to it.", + "type": "invalid_request_error", + "param": null, + "code": "model_not_found" + }, + "code": "model_not_found", + "param": null, + "type": "invalid_request_error", + "lc_error_code": "MODEL_NOT_FOUND", + "attemptNumber": 1, + "retriesLeft": 2 + } + } + } + ], + "AI Agent": [ + { + "startTime": 1747344001481, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking ‘Test workflow’" + } + ], + "hints": [], + "executionTime": 1919, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": "I'm unable to retrieve the information about what happened yesterday. Would you like to ask about a specific event or topic?" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AI Agent" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model", + "runIndex": 1 + } + ] + } + ], + "Embeddings OpenAI": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI", + "runIndex": 0 + } + ] + } + ], + "In-Memory Vector Store": [ + { + "subRun": [ + { + "node": "In-Memory Vector Store", + "runIndex": 0 + } + ] + } + ], + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + } + ] + } + ], + "Vector Store Tool": [ + { + "subRun": [ + { + "node": "Vector Store Tool", + "runIndex": 0 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:01.481Z", + "stoppedAt": "2025-05-15T21:20:03.400Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/257-snapshot.json b/test-workflows/snapshots/257-snapshot.json new file mode 100644 index 0000000000..7e35c56a1f --- /dev/null +++ b/test-workflows/snapshots/257-snapshot.json @@ -0,0 +1,734 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747344001514, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Simple Memory": [ + { + "startTime": 1747344001519, + "executionTime": 0, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "values": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Simple Memory", + "runIndex": 0 + }, + { + "node": "Simple Memory", + "runIndex": 1 + }, + { + "node": "Simple Memory", + "runIndex": 2 + }, + { + "node": "Simple Memory", + "runIndex": 3 + } + ] + } + }, + { + "startTime": 1747344006541, + "executionTime": 0, + "executionIndex": 6, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "input": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + }, + "output": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.", + "chat_history": [], + "output": { + "resolution": "I don't have access to your reservation or booking information. To help you find your check-in time, could you please provide more details about what type of check-in you're referring to (hotel, flight, appointment, etc.) and any booking reference or confirmation number you might have? With that information, I can better assist you or direct you to the appropriate resource.", + "reasoning": "The user is asking about a check-in time, which could refer to a hotel reservation, flight, appointment, or similar scheduled event. However, I don't have access to any specific reservation systems or the user's personal calendar information. Without additional context about what type of check-in they're referring to and specific booking details, I cannot provide the requested information." + } + } + } + } + ] + ] + } + }, + { + "startTime": 1747344006544, + "executionTime": 0, + "executionIndex": 8, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "values": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + } + } + } + ] + ] + } + }, + { + "startTime": 1747344010996, + "executionTime": 0, + "executionIndex": 12, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "input": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + }, + "output": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.", + "chat_history": [ + { + "lc": 1, + "type": "constructor", + "id": [ + "langchain_core", + "messages", + "HumanMessage" + ], + "kwargs": { + "content": "What time is my check-in?", + "additional_kwargs": {}, + "response_metadata": {} + } + }, + { + "lc": 1, + "type": "constructor", + "id": [ + "langchain_core", + "messages", + "AIMessage" + ], + "kwargs": { + "content": "{\"output\":{\"resolution\":\"I don't have access to your reservation or booking information. To help you find your check-in time, could you please provide more details about what type of check-in you're referring to (hotel, flight, appointment, etc.) and any booking reference or confirmation number you might have? With that information, I can better assist you or direct you to the appropriate resource.\",\"reasoning\":\"The user is asking about a check-in time, which could refer to a hotel reservation, flight, appointment, or similar scheduled event. However, I don't have access to any specific reservation systems or the user's personal calendar information. Without additional context about what type of check-in they're referring to and specific booking details, I cannot provide the requested information.\"}}", + "tool_calls": [], + "invalid_tool_calls": [], + "additional_kwargs": {}, + "response_metadata": {} + } + } + ], + "output": { + "resolution": "I don't have access to your reservation or booking information. To help you find your check-in time, could you please provide more details about what type of check-in you're referring to (hotel, flight, appointment, etc.) and any booking reference or confirmation number you might have? With that information, I can better assist you or direct you to the appropriate resource.", + "reasoning": "The user is asking about a check-in time, but I don't have access to any reservation systems, personal calendars, or booking information. Without specific details about what type of check-in they're referring to (hotel, flight, appointment, etc.) and relevant booking information, I cannot provide the requested information. I need to ask for clarification to properly assist." + } + } + } + } + ] + ] + } + } + ], + "Anthropic Chat Model": [ + { + "startTime": 1747344001520, + "executionTime": 5020, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: What time is my check-in?" + ], + "estimatedTokens": 90, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-7-sonnet-20250219", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Anthropic Chat Model", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344006545, + "executionTime": 4451, + "executionIndex": 9, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsageEstimate": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: What time is my check-in?\nAI: {\"output\":{\"resolution\":\"I don't have access to your reservation or booking information. To help you find your check-in time, could you please provide more details about what type of check-in you're referring to (hotel, flight, appointment, etc.) and any booking reference or confirmation number you might have? With that information, I can better assist you or direct you to the appropriate resource.\",\"reasoning\":\"The user is asking about a check-in time, which could refer to a hotel reservation, flight, appointment, or similar scheduled event. However, I don't have access to any specific reservation systems or the user's personal calendar information. Without additional context about what type of check-in they're referring to and specific booking details, I cannot provide the requested information.\"}}\nHuman: What time is my check-in?" + ], + "estimatedTokens": 251, + "options": { + "anthropic_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + }, + "model": "claude-3-7-sonnet-20250219", + "anthropic_api_url": "https://api.anthropic.com", + "max_tokens": 2048, + "temperature": 1, + "top_k": -1, + "top_p": -1, + "invocation_kwargs": {}, + "api_key": { + "lc": 1, + "type": "secret", + "id": [ + "ANTHROPIC_API_KEY" + ] + } + } + } + } + ] + ] + } + } + ], + "Auto-fixing Output Parser": [ + { + "startTime": 1747344006540, + "executionTime": 1, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"reasoning\":\"The user is asking about a check-in time, which could refer to a hotel reservation, flight, appointment, or similar scheduled event. However, I don't have access to any specific reservation systems or the user's personal calendar information. Without additional context about what type of check-in they're referring to and specific booking details, I cannot provide the requested information.\",\"resolution\":\"I don't have access to your reservation or booking information. To help you find your check-in time, could you please provide more details about what type of check-in you're referring to (hotel, flight, appointment, etc.) and any booking reference or confirmation number you might have? With that information, I can better assist you or direct you to the appropriate resource.\"}}" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Auto-fixing Output Parser", + "runIndex": 0 + }, + { + "node": "Auto-fixing Output Parser", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344010996, + "executionTime": 0, + "executionIndex": 10, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"reasoning\":\"The user is asking about a check-in time, but I don't have access to any reservation systems, personal calendars, or booking information. Without specific details about what type of check-in they're referring to (hotel, flight, appointment, etc.) and relevant booking information, I cannot provide the requested information. I need to ask for clarification to properly assist.\",\"resolution\":\"I don't have access to your reservation or booking information. To help you find your check-in time, could you please provide more details about what type of check-in you're referring to (hotel, flight, appointment, etc.) and any booking reference or confirmation number you might have? With that information, I can better assist you or direct you to the appropriate resource.\"}}" + } + } + ] + ] + } + } + ], + "Structured Output Parser": [ + { + "startTime": 1747344006540, + "executionTime": 1, + "executionIndex": 5, + "executionStatus": "success", + "source": [ + { + "previousNode": "Auto-fixing Output Parser", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"reasoning\":\"The user is asking about a check-in time, which could refer to a hotel reservation, flight, appointment, or similar scheduled event. However, I don't have access to any specific reservation systems or the user's personal calendar information. Without additional context about what type of check-in they're referring to and specific booking details, I cannot provide the requested information.\",\"resolution\":\"I don't have access to your reservation or booking information. To help you find your check-in time, could you please provide more details about what type of check-in you're referring to (hotel, flight, appointment, etc.) and any booking reference or confirmation number you might have? With that information, I can better assist you or direct you to the appropriate resource.\"}}" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Structured Output Parser", + "runIndex": 0 + }, + { + "node": "Structured Output Parser", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344010996, + "executionTime": 0, + "executionIndex": 11, + "executionStatus": "success", + "source": [ + { + "previousNode": "Auto-fixing Output Parser", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "{\"output\":{\"reasoning\":\"The user is asking about a check-in time, but I don't have access to any reservation systems, personal calendars, or booking information. Without specific details about what type of check-in they're referring to (hotel, flight, appointment, etc.) and relevant booking information, I cannot provide the requested information. I need to ask for clarification to properly assist.\",\"resolution\":\"I don't have access to your reservation or booking information. To help you find your check-in time, could you please provide more details about what type of check-in you're referring to (hotel, flight, appointment, etc.) and any booking reference or confirmation number you might have? With that information, I can better assist you or direct you to the appropriate resource.\"}}" + } + } + ] + ] + } + } + ], + "AI Agent": [ + { + "startTime": 1747344001514, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 5027, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AI Agent1": [ + { + "startTime": 1747344006541, + "executionIndex": 7, + "source": [ + { + "previousNode": "AI Agent" + } + ], + "hints": [], + "executionTime": 4455, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AI Agent1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Simple Memory": [ + { + "subRun": [ + { + "node": "Simple Memory", + "runIndex": 0 + }, + { + "node": "Simple Memory", + "runIndex": 1 + }, + { + "node": "Simple Memory", + "runIndex": 2 + }, + { + "node": "Simple Memory", + "runIndex": 3 + } + ] + } + ], + "Anthropic Chat Model": [ + { + "subRun": [ + { + "node": "Anthropic Chat Model", + "runIndex": 0 + }, + { + "node": "Anthropic Chat Model", + "runIndex": 1 + } + ] + } + ], + "Structured Output Parser": [ + { + "subRun": [ + { + "node": "Structured Output Parser", + "runIndex": 0 + }, + { + "node": "Structured Output Parser", + "runIndex": 1 + } + ] + } + ], + "Auto-fixing Output Parser": [ + { + "subRun": [ + { + "node": "Auto-fixing Output Parser", + "runIndex": 0 + }, + { + "node": "Auto-fixing Output Parser", + "runIndex": 1 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:01.514Z", + "stoppedAt": "2025-05-15T21:20:10.996Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/258-snapshot.json b/test-workflows/snapshots/258-snapshot.json new file mode 100644 index 0000000000..b1f70c0bd4 --- /dev/null +++ b/test-workflows/snapshots/258-snapshot.json @@ -0,0 +1,980 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "startTime": 1747344001828, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Simple Memory": [ + { + "startTime": 1747344001833, + "executionTime": 0, + "executionIndex": 2, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "values": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Simple Memory", + "runIndex": 0 + }, + { + "node": "Simple Memory", + "runIndex": 1 + }, + { + "node": "Simple Memory", + "runIndex": 2 + }, + { + "node": "Simple Memory", + "runIndex": 3 + } + ] + } + }, + { + "startTime": 1747344003839, + "executionTime": 0, + "executionIndex": 8, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "input": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + }, + "output": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.", + "chat_history": [], + "output": { + "resolution": "Please check your booking confirmation for your check-in time.", + "reasoning": "The customer requested information about their check-in time, which is typically included in their booking confirmation. Therefore, directing them to that document is the best course of action." + } + } + } + } + ] + ] + } + }, + { + "startTime": 1747344003846, + "executionTime": 0, + "executionIndex": 10, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "loadMemoryVariables", + "values": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + } + } + } + ] + ] + } + }, + { + "startTime": 1747344007006, + "executionTime": 0, + "executionIndex": 16, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "chatHistory": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_memory": [ + [ + { + "json": { + "action": "saveContext", + "input": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer." + }, + "output": { + "input": "What time is my check-in?", + "system_message": "You are a helpful assistant", + "formatting_instructions": "IMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.", + "chat_history": [ + { + "lc": 1, + "type": "constructor", + "id": [ + "langchain_core", + "messages", + "HumanMessage" + ], + "kwargs": { + "content": "What time is my check-in?", + "additional_kwargs": {}, + "response_metadata": {} + } + }, + { + "lc": 1, + "type": "constructor", + "id": [ + "langchain_core", + "messages", + "AIMessage" + ], + "kwargs": { + "content": "{\"output\":{\"resolution\":\"Please check your booking confirmation for your check-in time.\",\"reasoning\":\"The customer requested information about their check-in time, which is typically included in their booking confirmation. Therefore, directing them to that document is the best course of action.\"}}", + "tool_calls": [], + "invalid_tool_calls": [], + "additional_kwargs": {}, + "response_metadata": {} + } + } + ], + "output": { + "resolution": "Please provide details such as the hotel name, booking reference number, or any other relevant information to assist with your check-in time.", + "reasoning": "The customer did not provide sufficient information regarding their booking, which is needed to determine the correct check-in time. Requesting additional details ensures that we can offer accurate assistance." + } + } + } + } + ] + ] + } + } + ], + "OpenAI Chat Model": [ + { + "startTime": 1747344001835, + "executionTime": 738, + "executionIndex": 3, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: What time is my check-in?" + ], + "estimatedTokens": 90, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-2024-05-13", + "temperature": 0, + "max_retries": 3, + "timeout": 60000, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344003848, + "executionTime": 990, + "executionIndex": 11, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are a helpful assistant\n\nIMPORTANT: For your response to user, you MUST use the `format_final_json_response` tool with your complete answer formatted according to the required schema. Do not attempt to format the JSON manually - always use this tool. Your response will be rejected if it is not properly formatted through this tool. Only use this tool once you are ready to provide your final answer.\nHuman: What time is my check-in?\nAI: {\"output\":{\"resolution\":\"Please check your booking confirmation for your check-in time.\",\"reasoning\":\"The customer requested information about their check-in time, which is typically included in their booking confirmation. Therefore, directing them to that document is the best course of action.\"}}\nHuman: What time is my check-in?" + ], + "estimatedTokens": 154, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-2024-05-13", + "temperature": 0, + "max_retries": 3, + "timeout": 60000, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Auto-fixing Output Parser": [ + { + "startTime": 1747344002573, + "executionTime": 1265, + "executionIndex": 4, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "I don't have access to your personal information, including your check-in time. Please refer to your booking confirmation or contact the relevant service provider for this information." + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Auto-fixing Output Parser", + "runIndex": 0 + }, + { + "node": "Auto-fixing Output Parser", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344004839, + "executionTime": 2166, + "executionIndex": 12, + "executionStatus": "success", + "source": [ + { + "previousNode": "AI Agent1", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "To provide you with the correct check-in time, I would need more information about your booking. Please provide details such as the hotel name, booking reference number, or any other relevant information." + } + } + ] + ] + } + } + ], + "Structured Output Parser": [ + { + "startTime": 1747344002574, + "executionTime": 0, + "executionIndex": 5, + "executionStatus": "error", + "source": [ + { + "previousNode": "Auto-fixing Output Parser", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "I don't have access to your personal information, including your check-in time. Please refer to your booking confirmation or contact the relevant service provider for this information." + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "I don't have access to your personal information, including your check-in time. Please refer to your booking confirmation or contact the relevant service provider for this information." + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Structured Output Parser", + "runIndex": 0 + }, + { + "node": "Structured Output Parser", + "runIndex": 1 + }, + { + "node": "Structured Output Parser", + "runIndex": 2 + }, + { + "node": "Structured Output Parser", + "runIndex": 3 + } + ] + }, + "error": { + "message": "Model output doesn't fit required format", + "timestamp": 1747344002574, + "name": "NodeOperationError", + "description": "To continue the execution when this happens, change the 'On Error' parameter in the root node's settings", + "context": {}, + "cause": { + "level": "warning", + "tags": { + "packageName": "@n8n" + } + } + } + }, + { + "startTime": 1747344003837, + "executionTime": 1, + "executionIndex": 7, + "executionStatus": "success", + "source": [ + { + "previousNode": "Auto-fixing Output Parser", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "```json\n{\"output\":{\"resolution\":\"Please check your booking confirmation for your check-in time.\",\"reasoning\":\"The customer requested information about their check-in time, which is typically included in their booking confirmation. Therefore, directing them to that document is the best course of action.\"}}\n```" + } + } + ] + ] + } + }, + { + "startTime": 1747344004839, + "executionTime": 0, + "executionIndex": 13, + "executionStatus": "error", + "source": [ + { + "previousNode": "Auto-fixing Output Parser", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "To provide you with the correct check-in time, I would need more information about your booking. Please provide details such as the hotel name, booking reference number, or any other relevant information." + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "To provide you with the correct check-in time, I would need more information about your booking. Please provide details such as the hotel name, booking reference number, or any other relevant information." + } + } + ] + ] + }, + "error": { + "message": "Model output doesn't fit required format", + "timestamp": 1747344004839, + "name": "NodeOperationError", + "description": "To continue the execution when this happens, change the 'On Error' parameter in the root node's settings", + "context": {}, + "cause": { + "level": "warning", + "tags": { + "packageName": "@n8n" + } + } + } + }, + { + "startTime": 1747344007005, + "executionTime": 0, + "executionIndex": 15, + "executionStatus": "success", + "source": [ + { + "previousNode": "Auto-fixing Output Parser", + "previousNodeRun": 0 + } + ], + "data": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "response": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_outputParser": [ + [ + { + "json": { + "action": "parse", + "text": "```json\n{\n \"output\": {\n \"resolution\": \"Please provide details such as the hotel name, booking reference number, or any other relevant information to assist with your check-in time.\",\n \"reasoning\": \"The customer did not provide sufficient information regarding their booking, which is needed to determine the correct check-in time. Requesting additional details ensures that we can offer accurate assistance.\"\n }\n}\n```" + } + } + ] + ] + } + } + ], + "OpenAI Chat Model1": [ + { + "startTime": 1747344002576, + "executionTime": 1261, + "executionIndex": 6, + "executionStatus": "success", + "source": [ + { + "previousNode": "Auto-fixing Output Parser", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Instructions:\n--------------\nYou must format your output as a JSON value that adheres to a given \"JSON Schema\" instance.\n\n\"JSON Schema\" is a declarative language that allows you to annotate and validate JSON documents.\n\nFor example, the example \"JSON Schema\" instance {{\"properties\": {{\"foo\": {{\"description\": \"a list of test words\", \"type\": \"array\", \"items\": {{\"type\": \"string\"}}}}}}, \"required\": [\"foo\"]}}}}\nwould match an object with one required property, \"foo\". The \"type\" property specifies \"foo\" must be an \"array\", and the \"description\" property semantically describes it as \"a list of test words\". The items within \"foo\" must be strings.\nThus, the object {{\"foo\": [\"bar\", \"baz\"]}} is a well-formatted instance of this example \"JSON Schema\". The object {{\"properties\": {{\"foo\": [\"bar\", \"baz\"]}}}} is not well-formatted.\n\nYour output will be parsed and type-checked according to the provided schema instance, so make sure all fields in your output match the schema exactly and there are no trailing commas!\n\nHere is the JSON Schema instance your output must adhere to. Include the enclosing markdown codeblock:\n```json\n{\"type\":\"object\",\"properties\":{\"output\":{\"type\":\"object\",\"properties\":{\"resolution\":{\"type\":\"string\",\"description\":\"The customer-facing resolution or response that should be communicated to the customer\"},\"reasoning\":{\"type\":\"string\",\"description\":\"Detailed explanation of the solution and reasoning for internal use\"}},\"required\":[\"resolution\",\"reasoning\"],\"additionalProperties\":{}}},\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}\n```\n\n--------------\nCompletion:\n--------------\nI don't have access to your personal information, including your check-in time. Please refer to your booking confirmation or contact the relevant service provider for this information.\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\nUnexpected token 'I', \"I don't ha\"... is not valid JSON\n\nTroubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/OUTPUT_PARSING_FAILURE/\n\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:" + ], + "estimatedTokens": 471, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model1", + "runIndex": 1 + } + ] + } + }, + { + "startTime": 1747344004841, + "executionTime": 2164, + "executionIndex": 14, + "executionStatus": "success", + "source": [ + { + "previousNode": "Auto-fixing Output Parser", + "previousNodeRun": 0 + } + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "Human: Instructions:\n--------------\nYou must format your output as a JSON value that adheres to a given \"JSON Schema\" instance.\n\n\"JSON Schema\" is a declarative language that allows you to annotate and validate JSON documents.\n\nFor example, the example \"JSON Schema\" instance {{\"properties\": {{\"foo\": {{\"description\": \"a list of test words\", \"type\": \"array\", \"items\": {{\"type\": \"string\"}}}}}}, \"required\": [\"foo\"]}}}}\nwould match an object with one required property, \"foo\". The \"type\" property specifies \"foo\" must be an \"array\", and the \"description\" property semantically describes it as \"a list of test words\". The items within \"foo\" must be strings.\nThus, the object {{\"foo\": [\"bar\", \"baz\"]}} is a well-formatted instance of this example \"JSON Schema\". The object {{\"properties\": {{\"foo\": [\"bar\", \"baz\"]}}}} is not well-formatted.\n\nYour output will be parsed and type-checked according to the provided schema instance, so make sure all fields in your output match the schema exactly and there are no trailing commas!\n\nHere is the JSON Schema instance your output must adhere to. Include the enclosing markdown codeblock:\n```json\n{\"type\":\"object\",\"properties\":{\"output\":{\"type\":\"object\",\"properties\":{\"resolution\":{\"type\":\"string\",\"description\":\"The customer-facing resolution or response that should be communicated to the customer\"},\"reasoning\":{\"type\":\"string\",\"description\":\"Detailed explanation of the solution and reasoning for internal use\"}},\"required\":[\"resolution\",\"reasoning\"],\"additionalProperties\":{}}},\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}\n```\n\n--------------\nCompletion:\n--------------\nTo provide you with the correct check-in time, I would need more information about your booking. Please provide details such as the hotel name, booking reference number, or any other relevant information.\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\nUnexpected token 'T', \"To provide\"... is not valid JSON\n\nTroubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/OUTPUT_PARSING_FAILURE/\n\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:" + ], + "estimatedTokens": 477, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-4o-mini", + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "AI Agent": [ + { + "startTime": 1747344001828, + "executionIndex": 1, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "hints": [], + "executionTime": 2011, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "AI Agent1": [ + { + "startTime": 1747344003839, + "executionIndex": 9, + "source": [ + { + "previousNode": "AI Agent" + } + ], + "hints": [], + "executionTime": 3167, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "AI Agent1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Simple Memory": [ + { + "subRun": [ + { + "node": "Simple Memory", + "runIndex": 0 + }, + { + "node": "Simple Memory", + "runIndex": 1 + }, + { + "node": "Simple Memory", + "runIndex": 2 + }, + { + "node": "Simple Memory", + "runIndex": 3 + } + ] + } + ], + "OpenAI Chat Model": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model", + "runIndex": 1 + } + ] + } + ], + "Structured Output Parser": [ + { + "subRun": [ + { + "node": "Structured Output Parser", + "runIndex": 0 + }, + { + "node": "Structured Output Parser", + "runIndex": 1 + }, + { + "node": "Structured Output Parser", + "runIndex": 2 + }, + { + "node": "Structured Output Parser", + "runIndex": 3 + } + ] + } + ], + "OpenAI Chat Model1": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model1", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model1", + "runIndex": 1 + } + ] + } + ], + "Auto-fixing Output Parser": [ + { + "subRun": [ + { + "node": "Auto-fixing Output Parser", + "runIndex": 0 + }, + { + "node": "Auto-fixing Output Parser", + "runIndex": 1 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:01.828Z", + "stoppedAt": "2025-05-15T21:20:07.006Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/259-snapshot.json b/test-workflows/snapshots/259-snapshot.json new file mode 100644 index 0000000000..dfb8163b75 --- /dev/null +++ b/test-workflows/snapshots/259-snapshot.json @@ -0,0 +1,1380 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "When clicking \"Test workflow\"": [ + { + "hints": [], + "startTime": 1741788353186, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Code": [ + { + "hints": [ + { + "message": "To make sure expressions after this node work, return the input items that produced each output item. More info", + "location": "outputPane" + } + ], + "startTime": 1741788353187, + "executionTime": 11, + "source": [ + { + "previousNode": "When clicking \"Test workflow\"" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Default Data Loader2": [ + { + "startTime": 1741788353215, + "executionTime": 900, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_document": [ + [ + { + "json": { + "response": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "inputOverride": { + "ai_document": [ + [ + { + "json": { + "text": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Default Data Loader2", + "runIndex": 0 + } + ] + } + } + ], + "Token Splitter2": [ + { + "startTime": 1741788353215, + "executionTime": 899, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_textSplitter": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_textSplitter": [ + [ + { + "json": { + "textSplitter": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Token Splitter2", + "runIndex": 0 + } + ] + } + } + ], + "Embeddings OpenAI6": [ + { + "startTime": 1741788354115, + "executionTime": 1416, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "documents": [ + "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution", + " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash", + " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest", + "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need", + " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing", + " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the", + " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs", + " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early", + " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k ", + " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=", + "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4", + ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + ] + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI6", + "runIndex": 0 + } + ] + } + } + ], + "In-Memory Vector Store": [ + { + "hints": [], + "startTime": 1741788353198, + "executionTime": 2335, + "source": [ + { + "previousNode": "Code" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k " + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": " ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": "1008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "metadata": { + "object": true + }, + "pageContent": ", X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Check Vector Store Populated2": [ + { + "hints": [], + "startTime": 1741788355533, + "executionTime": 22, + "source": [ + { + "previousNode": "In-Memory Vector Store" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_length_matches": true, + "has_content": true, + "has_meta": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Vector Store Retriever2": [ + { + "startTime": 1741788355568, + "executionTime": 851, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_retriever": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_retriever": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "config": { + "handlers": [ + { + "lc": 1, + "type": "not_implemented", + "id": [ + "langchain_core", + "callbacks", + "langchain_tracer", + "LangChainTracer" + ] + } + ], + "inheritableHandlers": [ + { + "lc": 1, + "type": "not_implemented", + "id": [ + "langchain_core", + "callbacks", + "langchain_tracer", + "LangChainTracer" + ] + } + ], + "tags": [ + "retriever" + ], + "inheritableTags": [], + "metadata": { + "execution_id": "138", + "workflow": { + "id": "259", + "name": "ChainQA", + "active": false + }, + "node": "Question and Answer Chain 1.3" + }, + "inheritableMetadata": { + "execution_id": "138", + "workflow": { + "id": "259", + "name": "ChainQA", + "active": false + }, + "node": "Question and Answer Chain 1.3" + }, + "name": "callback_manager", + "_parentRunId": "3b7e540a-2f07-47e8-ab8d-6fde6ebeb4a5" + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Vector Store Retriever2", + "runIndex": 0 + }, + { + "node": "Vector Store Retriever2", + "runIndex": 1 + }, + { + "node": "Vector Store Retriever2", + "runIndex": 2 + } + ] + } + }, + { + "startTime": 1741788357754, + "executionTime": 678, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_retriever": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_retriever": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "config": { + "handlers": [ + { + "lc": 1, + "type": "not_implemented", + "id": [ + "langchain_core", + "callbacks", + "langchain_tracer", + "LangChainTracer" + ] + } + ], + "inheritableHandlers": [ + { + "lc": 1, + "type": "not_implemented", + "id": [ + "langchain_core", + "callbacks", + "langchain_tracer", + "LangChainTracer" + ] + } + ], + "tags": [ + "retriever" + ], + "inheritableTags": [], + "metadata": { + "execution_id": "138", + "workflow": { + "id": "259", + "name": "ChainQA", + "active": false + }, + "node": "Question and Answer Chain 1.4" + }, + "inheritableMetadata": { + "execution_id": "138", + "workflow": { + "id": "259", + "name": "ChainQA", + "active": false + }, + "node": "Question and Answer Chain 1.4" + }, + "name": "callback_manager", + "_parentRunId": "c589ca8c-9526-4512-b88a-1e4cbdbcf607" + } + } + } + ] + ] + }, + "metadata": {} + }, + { + "startTime": 1741788358866, + "executionTime": 513, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_retriever": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_retriever": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "config": { + "tags": [], + "metadata": { + "execution_id": "138", + "workflow": { + "id": "259", + "name": "ChainQA", + "active": false + }, + "node": "Question and Answer Chain 1.5" + }, + "recursionLimit": 25, + "signal": {}, + "callbacks": { + "handlers": [ + { + "lc": 1, + "type": "not_implemented", + "id": [ + "langchain_core", + "callbacks", + "langchain_tracer", + "LangChainTracer" + ] + } + ], + "inheritableHandlers": [ + { + "lc": 1, + "type": "not_implemented", + "id": [ + "langchain_core", + "callbacks", + "langchain_tracer", + "LangChainTracer" + ] + } + ], + "tags": [ + "seq:step:2" + ], + "inheritableTags": [], + "metadata": { + "execution_id": "138", + "workflow": { + "id": "259", + "name": "ChainQA", + "active": false + }, + "node": "Question and Answer Chain 1.5" + }, + "inheritableMetadata": { + "execution_id": "138", + "workflow": { + "id": "259", + "name": "ChainQA", + "active": false + }, + "node": "Question and Answer Chain 1.5" + }, + "name": "callback_manager", + "_parentRunId": "49e2e7a0-6e6b-41b2-a74d-f7dbe71055fa" + } + } + } + } + ] + ] + }, + "metadata": {} + } + ], + "In-Memory Vector Store2": [ + { + "startTime": 1741788355569, + "executionTime": 848, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "k": 4 + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "In-Memory Vector Store2", + "runIndex": 0 + }, + { + "node": "In-Memory Vector Store2", + "runIndex": 1 + }, + { + "node": "In-Memory Vector Store2", + "runIndex": 2 + } + ] + } + }, + { + "startTime": 1741788357754, + "executionTime": 677, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "k": 4 + } + } + ] + ] + } + }, + { + "startTime": 1741788358867, + "executionTime": 511, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_vectorStore": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_vectorStore": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "k": 4 + } + } + ] + ] + } + } + ], + "Embeddings OpenAI7": [ + { + "startTime": 1741788355569, + "executionTime": 842, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "Embeddings OpenAI7", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI7", + "runIndex": 1 + }, + { + "node": "Embeddings OpenAI7", + "runIndex": 2 + } + ] + } + }, + { + "startTime": 1741788357754, + "executionTime": 677, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + } + }, + { + "startTime": 1741788358867, + "executionTime": 511, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_embedding": [ + [ + { + "json": { + "response": [ + "json array" + ] + } + } + ] + ] + }, + "inputOverride": { + "ai_embedding": [ + [ + { + "json": { + "query": "What is the size of a block header with no transactions? Respond only with number of bytes." + } + } + ] + ] + } + } + ], + "OpenAI Chat Model2": [ + { + "startTime": 1741788357187, + "executionTime": 559, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\nContext: new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the\n\n next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing\n\n confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs\n\n-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need\nHuman: What is the size of a block header with no transactions? Respond only with number of bytes." + ], + "estimatedTokens": 2071, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + }, + "metadata": { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 1 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 2 + } + ] + } + }, + { + "startTime": 1741788358443, + "executionTime": 408, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\nContext: new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the\n\n next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing\n\n confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs\n\n-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need\nHuman: What is the size of a block header with no transactions? Respond only with number of bytes." + ], + "estimatedTokens": 2071, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + }, + { + "startTime": 1741788359403, + "executionTime": 550, + "executionStatus": "success", + "source": [ + null + ], + "data": { + "ai_languageModel": [ + [ + { + "json": { + "response": { + "object": true + }, + "tokenUsage": { + "object": true + } + } + } + ] + ] + }, + "inputOverride": { + "ai_languageModel": [ + [ + { + "json": { + "messages": [ + "System: You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n----------------\nContext: new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the\n\n next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing\n\n confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs\n\n-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need\nHuman: What is the size of a block header with no transactions? Respond only with number of bytes." + ], + "estimatedTokens": 2071, + "options": { + "openai_api_key": { + "lc": 1, + "type": "secret", + "id": [ + "OPENAI_API_KEY" + ] + }, + "model": "gpt-3.5-turbo-0125", + "temperature": 0, + "timeout": 60000, + "max_retries": 2, + "configuration": { + "baseURL": "https://api.openai.com/v1" + }, + "model_kwargs": {} + } + } + } + ] + ] + } + } + ], + "Question and Answer Chain 1.3": [ + { + "hints": [], + "startTime": 1741788355555, + "executionTime": 2193, + "source": [ + { + "previousNode": "Check Vector Store Populated2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Question and Answer Chain 1.4": [ + { + "hints": [], + "startTime": 1741788357748, + "executionTime": 1104, + "source": [ + { + "previousNode": "Check Vector Store Populated2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Question and Answer Chain 1.5": [ + { + "hints": [], + "startTime": 1741788358852, + "executionTime": 1103, + "source": [ + { + "previousNode": "Check Vector Store Populated2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": "80 bytes" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge": [ + { + "hints": [], + "startTime": 1741788359955, + "executionTime": 17, + "source": [ + { + "previousNode": "Question and Answer Chain 1.3" + }, + { + "previousNode": "Question and Answer Chain 1.4" + }, + { + "previousNode": "Question and Answer Chain 1.5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "response": { + "object": true + } + }, + "pairedItem": { + "item": 0, + "input": 1 + } + }, + { + "json": { + "response": "80 bytes" + }, + "pairedItem": { + "item": 0, + "input": 2 + } + } + ] + ] + } + } + ], + "Edit Fields2": [ + { + "hints": [], + "startTime": 1741788359972, + "executionTime": 10, + "source": [ + { + "previousNode": "Merge" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "output_matches": true + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "output_matches": true + }, + "pairedItem": { + "item": 1 + } + }, + { + "json": { + "output_matches": true + }, + "pairedItem": { + "item": 2 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Edit Fields2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": { + "Token Splitter2": [ + { + "subRun": [ + { + "node": "Token Splitter2", + "runIndex": 0 + } + ] + } + ], + "Default Data Loader2": [ + { + "subRun": [ + { + "node": "Default Data Loader2", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI6": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI6", + "runIndex": 0 + } + ] + } + ], + "Embeddings OpenAI7": [ + { + "subRun": [ + { + "node": "Embeddings OpenAI7", + "runIndex": 0 + }, + { + "node": "Embeddings OpenAI7", + "runIndex": 1 + }, + { + "node": "Embeddings OpenAI7", + "runIndex": 2 + } + ] + } + ], + "In-Memory Vector Store2": [ + { + "subRun": [ + { + "node": "In-Memory Vector Store2", + "runIndex": 0 + }, + { + "node": "In-Memory Vector Store2", + "runIndex": 1 + }, + { + "node": "In-Memory Vector Store2", + "runIndex": 2 + } + ] + } + ], + "Vector Store Retriever2": [ + { + "subRun": [ + { + "node": "Vector Store Retriever2", + "runIndex": 0 + }, + { + "node": "Vector Store Retriever2", + "runIndex": 1 + }, + { + "node": "Vector Store Retriever2", + "runIndex": 2 + } + ] + } + ], + "OpenAI Chat Model2": [ + { + "subRun": [ + { + "node": "OpenAI Chat Model2", + "runIndex": 0 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 1 + }, + { + "node": "OpenAI Chat Model2", + "runIndex": 2 + } + ] + } + ] + }, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-03-12T14:05:53.185Z", + "stoppedAt": "2025-03-12T14:05:59.982Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/26-snapshot.json b/test-workflows/snapshots/26-snapshot.json new file mode 100644 index 0000000000..9aec0b4eda --- /dev/null +++ b/test-workflows/snapshots/26-snapshot.json @@ -0,0 +1,408 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331918635, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp": [ + { + "startTime": 1710331918635, + "executionTime": 444, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90121105892", + "name": "testFolder1710331918638", + "orderindex": 101, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds": [ + { + "startTime": 1710331919079, + "executionTime": 803, + "source": [ + { + "previousNode": "ClickUp" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90121105892", + "name": "testFolder1710331918638", + "orderindex": 101, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp1": [ + { + "startTime": 1710331919882, + "executionTime": 471, + "source": [ + { + "previousNode": "Sleep 8 Seconds" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90121105892", + "name": "testFolderUpdated1710331919885", + "orderindex": 101, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds1": [ + { + "startTime": 1710331920353, + "executionTime": 803, + "source": [ + { + "previousNode": "ClickUp1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90121105892", + "name": "testFolderUpdated1710331919885", + "orderindex": 101, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp2": [ + { + "startTime": 1710331921156, + "executionTime": 1580, + "source": [ + { + "previousNode": "Sleep 8 Seconds1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "34002010", + "name": "test1627629155971", + "orderindex": 2, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds2": [ + { + "startTime": 1710331922737, + "executionTime": 802, + "source": [ + { + "previousNode": "ClickUp2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "34002010", + "name": "test1627629155971", + "orderindex": 2, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp3": [ + { + "startTime": 1710331923540, + "executionTime": 612, + "source": [ + { + "previousNode": "Sleep 8 Seconds2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90121105892", + "name": "testFolderUpdated1710331919885", + "orderindex": 101, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds3": [ + { + "startTime": 1710331924152, + "executionTime": 802, + "source": [ + { + "previousNode": "ClickUp3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90121105892", + "name": "testFolderUpdated1710331919885", + "orderindex": 101, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp4": [ + { + "startTime": 1710331924954, + "executionTime": 458, + "source": [ + { + "previousNode": "Sleep 8 Seconds3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "ClickUp4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:58.634Z", + "stoppedAt": "2024-03-13T12:12:05.412Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/29-snapshot.json b/test-workflows/snapshots/29-snapshot.json new file mode 100644 index 0000000000..698015295e --- /dev/null +++ b/test-workflows/snapshots/29-snapshot.json @@ -0,0 +1,561 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331919258, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ClickUp": [ + { + "startTime": 1710331919258, + "executionTime": 1567, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90121105894", + "name": "Test21710331919261", + "orderindex": 102, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds": [ + { + "startTime": 1710331920826, + "executionTime": 802, + "source": [ + { + "previousNode": "ClickUp" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90121105894", + "name": "Test21710331919261", + "orderindex": 102, + "override_statuses": false, + "hidden": false, + "space": { + "object": true + }, + "task_count": "0", + "archived": false, + "statuses": [ + "json array" + ], + "lists": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp1": [ + { + "startTime": 1710331921629, + "executionTime": 473, + "source": [ + { + "previousNode": "Sleep 8 Seconds" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "901201909617", + "name": "testingList21710331921631", + "deleted": false, + "orderindex": 0, + "content": "", + "priority": { + "object": true + }, + "assignee": { + "object": true + }, + "due_date": { + "object": true + }, + "start_date": { + "object": true + }, + "folder": { + "object": true + }, + "space": { + "object": true + }, + "inbound_address": "a.t.901201909617.u-8779387.a621f41b-e48a-477a-b1d1-b6bf5f95b97c@tasks.clickup.com", + "archived": false, + "override_statuses": false, + "statuses": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds1": [ + { + "startTime": 1710331922103, + "executionTime": 802, + "source": [ + { + "previousNode": "ClickUp1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "901201909617", + "name": "testingList21710331921631", + "deleted": false, + "orderindex": 0, + "content": "", + "priority": { + "object": true + }, + "assignee": { + "object": true + }, + "due_date": { + "object": true + }, + "start_date": { + "object": true + }, + "folder": { + "object": true + }, + "space": { + "object": true + }, + "inbound_address": "a.t.901201909617.u-8779387.a621f41b-e48a-477a-b1d1-b6bf5f95b97c@tasks.clickup.com", + "archived": false, + "override_statuses": false, + "statuses": [ + "json array" + ], + "permission_level": "create" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp2": [ + { + "startTime": 1710331922905, + "executionTime": 323, + "source": [ + { + "previousNode": "Sleep 8 Seconds1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 90120030547385, + "hist_id": "bf5d7961-3473-4ba7-9ba2-3ccd75f11f4d", + "date": 1710331923158, + "version": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds2": [ + { + "startTime": 1710331923228, + "executionTime": 803, + "source": [ + { + "previousNode": "ClickUp2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 90120030547385, + "hist_id": "bf5d7961-3473-4ba7-9ba2-3ccd75f11f4d", + "date": 1710331923158, + "version": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp3": [ + { + "startTime": 1710331924031, + "executionTime": 408, + "source": [ + { + "previousNode": "Sleep 8 Seconds2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds3": [ + { + "startTime": 1710331924439, + "executionTime": 802, + "source": [ + { + "previousNode": "ClickUp3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp4": [ + { + "startTime": 1710331925241, + "executionTime": 325, + "source": [ + { + "previousNode": "Sleep 8 Seconds3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90120030547385", + "comment": [ + "json array" + ], + "comment_text": "commentUpdated1710331924035", + "user": { + "object": true + }, + "reactions": [ + "json array" + ], + "date": "1710331923158" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds4": [ + { + "startTime": 1710331925566, + "executionTime": 802, + "source": [ + { + "previousNode": "ClickUp4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "90120030547385", + "comment": [ + "json array" + ], + "comment_text": "commentUpdated1710331924035", + "user": { + "object": true + }, + "reactions": [ + "json array" + ], + "date": "1710331923158" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp5": [ + { + "startTime": 1710331926369, + "executionTime": 407, + "source": [ + { + "previousNode": "Sleep 8 Seconds4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds5": [ + { + "startTime": 1710331926777, + "executionTime": 802, + "source": [ + { + "previousNode": "ClickUp5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp6": [ + { + "startTime": 1710331927579, + "executionTime": 2324, + "source": [ + { + "previousNode": "Sleep 8 Seconds5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 8 Seconds6": [ + { + "startTime": 1710331929903, + "executionTime": 803, + "source": [ + { + "previousNode": "ClickUp6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "ClickUp7": [ + { + "startTime": 1710331930706, + "executionTime": 426, + "source": [ + { + "previousNode": "Sleep 8 Seconds6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "ClickUp7" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:11:59.256Z", + "stoppedAt": "2024-03-13T12:12:11.132Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/32-snapshot.json b/test-workflows/snapshots/32-snapshot.json new file mode 100644 index 0000000000..4139a6ace4 --- /dev/null +++ b/test-workflows/snapshots/32-snapshot.json @@ -0,0 +1,168 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344001850, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Drift ": [ + { + "startTime": 1747344001850, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 632, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 25164082913, + "createdAt": 1747344002321, + "attributes": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Drift 1": [ + { + "startTime": 1747344002482, + "executionIndex": 2, + "source": [ + { + "previousNode": "Drift " + } + ], + "hints": [], + "executionTime": 527, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 25164082913, + "createdAt": 1747344002321, + "attributes": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Drift 2": [ + { + "startTime": 1747344003010, + "executionIndex": 3, + "source": [ + { + "previousNode": "Drift 1" + } + ], + "hints": [], + "executionTime": 520, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 25164082913, + "createdAt": 1747344002321, + "attributes": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Drift 3": [ + { + "startTime": 1747344003530, + "executionIndex": 4, + "source": [ + { + "previousNode": "Drift 2" + } + ], + "hints": [], + "executionTime": 466, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Drift 3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:01.850Z", + "stoppedAt": "2025-05-15T21:20:03.996Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/33-snapshot.json b/test-workflows/snapshots/33-snapshot.json new file mode 100644 index 0000000000..603b454e14 --- /dev/null +++ b/test-workflows/snapshots/33-snapshot.json @@ -0,0 +1,220 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891385930, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zoom": [ + { + "startTime": 1676891385931, + "executionTime": 635, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "uuid": "oRlR90RNTw2pd8VI4b+Wcw==", + "id": 78415116127, + "host_id": "nRgFaftbSnmu0V5MWWIDAA", + "host_email": "nodeqa@n8n.io", + "topic": "test", + "type": 2, + "status": "waiting", + "start_time": "2023-02-20T11:09:46Z", + "duration": 60, + "timezone": "Europe/Paris", + "created_at": "2023-02-20T11:09:46Z", + "start_url": "https://us04web.zoom.us/s/78415116127?zak=eyJ0eXAiOiJKV1QiLCJzdiI6IjAwMDAwMSIsInptX3NrbSI6InptX28ybSIsImFsZyI6IkhTMjU2In0.eyJhdWQiOiJjbGllbnRzbSIsInVpZCI6Im5SZ0ZhZnRiU25tdTBWNU1XV0lEQUEiLCJpc3MiOiJ3ZWIiLCJzayI6IjAiLCJzdHkiOjEwMCwid2NkIjoidXMwNCIsImNsdCI6MCwibW51bSI6Ijc4NDE1MTE2MTI3IiwiZXhwIjoxNjc2ODk4NTg2LCJpYXQiOjE2NzY4OTEzODYsImFpZCI6IjFHdXNnSGsxVFAyVVFvUDRNVkU1UlEiLCJjaWQiOiIifQ.EwHxHLdTe-vrH2YMZusYTiShmKhzyOtAT4RYH0UnYQ4", + "join_url": "https://us04web.zoom.us/j/78415116127?pwd=xaYBX8khiADyaoIR03LByEVLuRB4IM.1", + "password": "mV6LuA", + "h323_password": "171732", + "pstn_password": "171732", + "encrypted_password": "xaYBX8khiADyaoIR03LByEVLuRB4IM.1", + "settings": { + "object": true + }, + "pre_schedule": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zoom1": [ + { + "startTime": 1676891386566, + "executionTime": 367, + "source": [ + { + "previousNode": "Zoom" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zoom2": [ + { + "startTime": 1676891386933, + "executionTime": 248, + "source": [ + { + "previousNode": "Zoom1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "uuid": "oRlR90RNTw2pd8VI4b+Wcw==", + "id": 78415116127, + "host_id": "nRgFaftbSnmu0V5MWWIDAA", + "topic": "test", + "type": 2, + "start_time": "2023-02-20T11:09:46Z", + "duration": 30, + "timezone": "Europe/Paris", + "created_at": "2023-02-20T11:09:46Z", + "join_url": "https://us04web.zoom.us/j/78415116127?pwd=xaYBX8khiADyaoIR03LByEVLuRB4IM.1" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zoom3": [ + { + "startTime": 1676891387181, + "executionTime": 277, + "source": [ + { + "previousNode": "Zoom2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "uuid": "oRlR90RNTw2pd8VI4b+Wcw==", + "id": 78415116127, + "host_id": "nRgFaftbSnmu0V5MWWIDAA", + "host_email": "nodeqa@n8n.io", + "topic": "test", + "type": 2, + "status": "waiting", + "start_time": "2023-02-20T11:09:46Z", + "duration": 30, + "timezone": "Europe/Paris", + "created_at": "2023-02-20T11:09:46Z", + "start_url": "https://us04web.zoom.us/s/78415116127?zak=eyJ0eXAiOiJKV1QiLCJzdiI6IjAwMDAwMSIsInptX3NrbSI6InptX28ybSIsImFsZyI6IkhTMjU2In0.eyJhdWQiOiJjbGllbnRzbSIsInVpZCI6Im5SZ0ZhZnRiU25tdTBWNU1XV0lEQUEiLCJpc3MiOiJ3ZWIiLCJzayI6IjAiLCJzdHkiOjEwMCwid2NkIjoidXMwNCIsImNsdCI6MCwibW51bSI6Ijc4NDE1MTE2MTI3IiwiZXhwIjoxNjc2ODk4NTg3LCJpYXQiOjE2NzY4OTEzODcsImFpZCI6IjFHdXNnSGsxVFAyVVFvUDRNVkU1UlEiLCJjaWQiOiIifQ.T6-x2VI8MjhMP0vG-bNtYKMP8gTL5xrZE5NTha2jmqM", + "join_url": "https://us04web.zoom.us/j/78415116127?pwd=xaYBX8khiADyaoIR03LByEVLuRB4IM.1", + "password": "mV6LuA", + "h323_password": "171732", + "pstn_password": "171732", + "encrypted_password": "xaYBX8khiADyaoIR03LByEVLuRB4IM.1", + "settings": { + "object": true + }, + "pre_schedule": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zoom4": [ + { + "startTime": 1676891387458, + "executionTime": 279, + "source": [ + { + "previousNode": "Zoom3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Zoom4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:45.929Z", + "stoppedAt": "2023-02-20T11:09:47.737Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/34-snapshot.json b/test-workflows/snapshots/34-snapshot.json new file mode 100644 index 0000000000..fb3475c745 --- /dev/null +++ b/test-workflows/snapshots/34-snapshot.json @@ -0,0 +1,544 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891385888, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strava": [ + { + "startTime": 1676891385889, + "executionTime": 523, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resource_state": 3, + "athlete": { + "object": true + }, + "name": "TestActivity", + "distance": 0, + "moving_time": 5, + "elapsed_time": 5, + "total_elevation_gain": 0, + "type": "Run", + "sport_type": "Run", + "workout_type": { + "object": true + }, + "id": 8591820220, + "start_date": "2023-02-20T10:09:45Z", + "start_date_local": "2023-02-20T11:09:45Z", + "timezone": "(GMT+01:00) Africa/Tunis", + "utc_offset": 3600, + "location_city": { + "object": true + }, + "location_state": { + "object": true + }, + "location_country": "Tunisia", + "achievement_count": 0, + "kudos_count": 0, + "comment_count": 0, + "athlete_count": 1, + "photo_count": 0, + "map": { + "object": true + }, + "trainer": false, + "commute": false, + "manual": true, + "private": false, + "visibility": "everyone", + "flagged": false, + "gear_id": { + "object": true + }, + "start_latlng": [ + "json array" + ], + "end_latlng": [ + "json array" + ], + "average_speed": 0, + "max_speed": 0, + "has_heartrate": false, + "heartrate_opt_out": false, + "display_hide_heartrate_option": false, + "upload_id": { + "object": true + }, + "external_id": { + "object": true + }, + "from_accepted_tag": false, + "pr_count": 0, + "total_photo_count": 0, + "has_kudoed": false, + "description": { + "object": true + }, + "calories": 0, + "perceived_exertion": { + "object": true + }, + "prefer_perceived_exertion": { + "object": true + }, + "segment_efforts": [ + "json array" + ], + "best_efforts": [ + "json array" + ], + "photos": { + "object": true + }, + "stats_visibility": [ + "json array" + ], + "hide_from_home": false, + "embed_token": "8dda88c56f0b4c907a917db2e642635586e4c338", + "similar_activities": { + "object": true + }, + "available_zones": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strava4": [ + { + "startTime": 1676891386412, + "executionTime": 202, + "source": [ + { + "previousNode": "Strava" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {} + } + ] + ] + } + } + ], + "Strava3": [ + { + "startTime": 1676891386614, + "executionTime": 423, + "source": [ + { + "previousNode": "Strava" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resource_state": 3, + "athlete": { + "object": true + }, + "name": "TestActivity", + "distance": 0, + "moving_time": 5, + "elapsed_time": 5, + "total_elevation_gain": 0, + "type": "Run", + "sport_type": "Run", + "workout_type": { + "object": true + }, + "id": 8591820220, + "start_date": "2023-02-20T10:09:45Z", + "start_date_local": "2023-02-20T11:09:45Z", + "timezone": "(GMT+01:00) Africa/Tunis", + "utc_offset": 3600, + "location_city": { + "object": true + }, + "location_state": { + "object": true + }, + "location_country": "Tunisia", + "achievement_count": 0, + "kudos_count": 0, + "comment_count": 0, + "athlete_count": 1, + "photo_count": 0, + "map": { + "object": true + }, + "trainer": false, + "commute": false, + "manual": true, + "private": false, + "visibility": "everyone", + "flagged": false, + "gear_id": { + "object": true + }, + "start_latlng": [ + "json array" + ], + "end_latlng": [ + "json array" + ], + "average_speed": 0, + "max_speed": 0, + "has_heartrate": false, + "heartrate_opt_out": false, + "display_hide_heartrate_option": false, + "upload_id": { + "object": true + }, + "external_id": { + "object": true + }, + "from_accepted_tag": false, + "pr_count": 0, + "total_photo_count": 0, + "has_kudoed": false, + "description": { + "object": true + }, + "calories": 0, + "perceived_exertion": { + "object": true + }, + "prefer_perceived_exertion": { + "object": true + }, + "segment_efforts": [ + "json array" + ], + "best_efforts": [ + "json array" + ], + "photos": { + "object": true + }, + "stats_visibility": [ + "json array" + ], + "hide_from_home": false, + "embed_token": "8dda88c56f0b4c907a917db2e642635586e4c338", + "similar_activities": { + "object": true + }, + "available_zones": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strava5": [ + { + "startTime": 1676891387037, + "executionTime": 196, + "source": [ + { + "previousNode": "Strava4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {} + } + ] + ] + } + } + ], + "Strava1": [ + { + "startTime": 1676891387233, + "executionTime": 416, + "source": [ + { + "previousNode": "Strava3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resource_state": -1, + "athlete": { + "object": true + }, + "name": "TestActivity", + "distance": 0, + "moving_time": 5, + "elapsed_time": 5, + "total_elevation_gain": 0, + "type": "Ride", + "sport_type": "Ride", + "workout_type": { + "object": true + }, + "id": 8591820220, + "start_date": "2023-02-20T10:09:45Z", + "start_date_local": "2023-02-20T11:09:45Z", + "timezone": "(GMT+01:00) Africa/Tunis", + "utc_offset": 3600, + "location_city": { + "object": true + }, + "location_state": { + "object": true + }, + "location_country": "Tunisia", + "achievement_count": 0, + "kudos_count": 0, + "comment_count": 0, + "athlete_count": 1, + "photo_count": 0, + "map": { + "object": true + }, + "trainer": false, + "commute": false, + "manual": true, + "private": false, + "visibility": "everyone", + "flagged": false, + "gear_id": { + "object": true + }, + "start_latlng": [ + "json array" + ], + "end_latlng": [ + "json array" + ], + "average_speed": 0, + "max_speed": 0, + "has_heartrate": false, + "heartrate_opt_out": false, + "display_hide_heartrate_option": false, + "upload_id": { + "object": true + }, + "external_id": { + "object": true + }, + "from_accepted_tag": false, + "pr_count": 0, + "total_photo_count": 0, + "has_kudoed": false, + "description": { + "object": true + }, + "calories": 0, + "perceived_exertion": { + "object": true + }, + "prefer_perceived_exertion": { + "object": true + }, + "segment_efforts": [ + "json array" + ], + "photos": { + "object": true + }, + "stats_visibility": [ + "json array" + ], + "hide_from_home": false, + "embed_token": "8dda88c56f0b4c907a917db2e642635586e4c338", + "available_zones": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Strava6": [ + { + "startTime": 1676891387649, + "executionTime": 187, + "source": [ + { + "previousNode": "Strava5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {} + } + ] + ] + } + } + ], + "Strava2": [ + { + "startTime": 1676891387836, + "executionTime": 227, + "source": [ + { + "previousNode": "Strava1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resource_state": 2, + "athlete": { + "object": true + }, + "name": "TestActivity", + "distance": 0, + "moving_time": 5, + "elapsed_time": 5, + "total_elevation_gain": 0, + "type": "Ride", + "sport_type": "Ride", + "workout_type": { + "object": true + }, + "id": 8591820220, + "start_date": "2023-02-20T10:09:45Z", + "start_date_local": "2023-02-20T11:09:45Z", + "timezone": "(GMT+01:00) Africa/Tunis", + "utc_offset": 3600, + "location_city": { + "object": true + }, + "location_state": { + "object": true + }, + "location_country": "Tunisia", + "achievement_count": 0, + "kudos_count": 0, + "comment_count": 0, + "athlete_count": 1, + "photo_count": 0, + "map": { + "object": true + }, + "trainer": false, + "commute": false, + "manual": true, + "private": false, + "visibility": "everyone", + "flagged": false, + "gear_id": { + "object": true + }, + "start_latlng": [ + "json array" + ], + "end_latlng": [ + "json array" + ], + "average_speed": 0, + "max_speed": 0, + "has_heartrate": false, + "heartrate_opt_out": false, + "display_hide_heartrate_option": false, + "upload_id": { + "object": true + }, + "external_id": { + "object": true + }, + "from_accepted_tag": false, + "pr_count": 0, + "total_photo_count": 0, + "has_kudoed": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Strava2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:45.886Z", + "stoppedAt": "2023-02-20T11:09:48.063Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/35-snapshot.json b/test-workflows/snapshots/35-snapshot.json new file mode 100644 index 0000000000..41e57df854 --- /dev/null +++ b/test-workflows/snapshots/35-snapshot.json @@ -0,0 +1,476 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344002190, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack": [ + { + "startTime": 1747344002190, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 121, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "", + "phone": "", + "skype": "", + "real_name": "nodeqa", + "real_name_normalized": "nodeqa", + "display_name": "", + "display_name_normalized": "", + "fields": { + "object": true + }, + "status_text": "Testing...", + "status_emoji": ":speech_balloon:", + "status_emoji_display_info": [ + "json array" + ], + "status_expiration": 0, + "avatar_hash": "gc81277605b1", + "email": "nodeqa@n8n.io", + "image_24": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-24.png", + "image_32": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-32.png", + "image_48": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-48.png", + "image_72": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-72.png", + "image_192": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-192.png", + "image_512": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-512.png", + "status_text_canonical": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack13": [ + { + "startTime": 1747344002311, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 253, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true, + "channel": "C01MZ82T9TR", + "ts": "1747344002.517089", + "message": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack1": [ + { + "startTime": 1747344002564, + "executionIndex": 3, + "source": [ + { + "previousNode": "Slack" + } + ], + "hints": [], + "executionTime": 250, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "", + "phone": "", + "skype": "", + "real_name": "nodeqa", + "real_name_normalized": "nodeqa", + "display_name": "", + "display_name_normalized": "", + "fields": { + "object": true + }, + "status_text": "Testing...", + "status_emoji": ":speech_balloon:", + "status_emoji_display_info": [ + "json array" + ], + "status_expiration": 0, + "avatar_hash": "gc81277605b1", + "email": "nodeqa@n8n.io", + "image_24": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-24.png", + "image_32": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-32.png", + "image_48": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-48.png", + "image_72": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-72.png", + "image_192": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-192.png", + "image_512": "https://secure.gravatar.com/avatar/c81277605b129fdafaacede5ae34e07c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0015-512.png", + "status_text_canonical": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack18": [ + { + "startTime": 1747344002814, + "executionIndex": 4, + "source": [ + { + "previousNode": "Slack13" + } + ], + "hints": [], + "executionTime": 165, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack24": [ + { + "startTime": 1747344002979, + "executionIndex": 5, + "source": [ + { + "previousNode": "Slack13" + } + ], + "hints": [], + "executionTime": 138, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true, + "presence": "away", + "online": false, + "auto_away": false, + "manual_away": false, + "connection_count": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack19": [ + { + "startTime": 1747344003117, + "executionIndex": 6, + "source": [ + { + "previousNode": "Slack18" + } + ], + "hints": [], + "executionTime": 223, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true, + "type": "message", + "message": { + "object": true + }, + "channel": "C01MZ82T9TR" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack25": [ + { + "startTime": 1747344003340, + "executionIndex": 7, + "source": [ + { + "previousNode": "Slack24" + } + ], + "hints": [], + "executionTime": 189, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "U01NE1E8FFU", + "team_id": "T01MZ82R8NB", + "name": "nodeqa", + "deleted": false, + "color": "9f69e7", + "real_name": "nodeqa", + "tz": "Europe/Brussels", + "tz_label": "Central European Summer Time", + "tz_offset": 7200, + "profile": { + "object": true + }, + "is_admin": true, + "is_owner": true, + "is_primary_owner": true, + "is_restricted": false, + "is_ultra_restricted": false, + "is_bot": false, + "is_app_user": false, + "updated": 1747344002, + "is_email_confirmed": true, + "has_2fa": false, + "who_can_share_contact_card": "EVERYONE" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack20": [ + { + "startTime": 1747344003529, + "executionIndex": 8, + "source": [ + { + "previousNode": "Slack19" + } + ], + "hints": [], + "executionTime": 152, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack14": [ + { + "startTime": 1747344003681, + "executionIndex": 9, + "source": [ + { + "previousNode": "Slack20" + } + ], + "hints": [], + "executionTime": 214, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true, + "permalink": "https://n8n-qa.slack.com/archives/C01MZ82T9TR/p1747344002517089", + "channel": "C01MZ82T9TR" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack15": [ + { + "startTime": 1747344003895, + "executionIndex": 10, + "source": [ + { + "previousNode": "Slack14" + } + ], + "hints": [], + "executionTime": 233, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true, + "channel": "C01MZ82T9TR", + "ts": "1747344002.517089", + "text": "Message Updated ", + "message": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack16": [ + { + "startTime": 1747344004128, + "executionIndex": 11, + "source": [ + { + "previousNode": "Slack15" + } + ], + "hints": [], + "executionTime": 222, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true, + "message_ts": "1747344004.002900" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack17": [ + { + "startTime": 1747344004351, + "executionIndex": 12, + "source": [ + { + "previousNode": "Slack16" + } + ], + "hints": [], + "executionTime": 208, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true, + "channel": "C01MZ82T9TR", + "ts": "1747344002.517089" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Slack17" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:02.189Z", + "stoppedAt": "2025-05-15T21:20:04.559Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/36-snapshot.json b/test-workflows/snapshots/36-snapshot.json new file mode 100644 index 0000000000..16b6d7df90 --- /dev/null +++ b/test-workflows/snapshots/36-snapshot.json @@ -0,0 +1,1007 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344002707, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack10": [ + { + "startTime": 1747344002707, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 466, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "F08SQHFSW92", + "created": 1747344002, + "timestamp": 1747344002, + "name": "-.txt", + "title": "Untitled", + "mimetype": "text/plain", + "filetype": "text", + "pretty_type": "Plain Text", + "user": "U01NE1E8FFU", + "user_team": "T01MZ82R8NB", + "editable": true, + "size": 72, + "mode": "snippet", + "is_external": false, + "external_type": "", + "is_public": true, + "public_url_shared": false, + "display_as_bot": false, + "username": "", + "url_private": "https://files.slack.com/files-pri/T01MZ82R8NB-F08SQHFSW92/-.txt", + "url_private_download": "https://files.slack.com/files-pri/T01MZ82R8NB-F08SQHFSW92/download/-.txt", + "permalink": "https://n8n-qa.slack.com/files/U01NE1E8FFU/F08SQHFSW92/-.txt", + "permalink_public": "https://slack-files.com/T01MZ82R8NB-F08SQHFSW92-b62bcefe91", + "edit_link": "https://n8n-qa.slack.com/files/U01NE1E8FFU/F08SQHFSW92/-.txt/edit", + "preview": "Test file upload Thu May 15 2025 22:20:02 GMT+0100 (Irish Standard Time)", + "preview_highlight": "
\n
\n
Test file upload Thu May 15 2025 22:20:02 GMT+0100 (Irish Standard Time)
\n
\n
\n", + "lines": 1, + "lines_more": 0, + "preview_is_truncated": false, + "comments_count": 0, + "is_starred": false, + "shares": { + "object": true + }, + "channels": [ + "json array" + ], + "groups": [ + "json array" + ], + "ims": [ + "json array" + ], + "has_more_shares": false, + "has_rich_preview": false, + "file_access": "visible" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack2": [ + { + "startTime": 1747344003173, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 584, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "C08SK5EM3HT", + "name": "testchannelzpixicyzv", + "is_channel": true, + "is_group": false, + "is_im": false, + "is_mpim": false, + "is_private": false, + "created": 1747344003, + "is_archived": false, + "is_general": false, + "unlinked": 0, + "name_normalized": "testchannelzpixicyzv", + "is_shared": false, + "is_org_shared": false, + "is_pending_ext_shared": false, + "pending_shared": [ + "json array" + ], + "context_team_id": "T01MZ82R8NB", + "updated": 1747344003395, + "parent_conversation": { + "object": true + }, + "creator": "U01NE1E8FFU", + "is_ext_shared": false, + "shared_team_ids": [ + "json array" + ], + "pending_connected_team_ids": [ + "json array" + ], + "is_member": true, + "last_read": "0000000000.000000", + "topic": { + "object": true + }, + "purpose": { + "object": true + }, + "previous_names": [ + "json array" + ], + "priority": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack24": [ + { + "startTime": 1747344003757, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 133, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack11": [ + { + "startTime": 1747344003890, + "executionIndex": 4, + "source": [ + { + "previousNode": "Slack10" + } + ], + "hints": [], + "executionTime": 164, + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ], + "Slack9": [ + { + "startTime": 1747344004055, + "executionIndex": 5, + "source": [ + { + "previousNode": "Slack2" + } + ], + "hints": [], + "executionTime": 562, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "C08SK5EM3HT", + "name": "renamedtestchannelzpixicyzv", + "is_channel": true, + "is_group": false, + "is_im": false, + "is_mpim": false, + "is_private": false, + "created": 1747344003, + "is_archived": false, + "is_general": false, + "unlinked": 0, + "name_normalized": "renamedtestchannelzpixicyzv", + "is_shared": false, + "is_org_shared": false, + "is_pending_ext_shared": false, + "pending_shared": [ + "json array" + ], + "context_team_id": "T01MZ82R8NB", + "updated": 1747344004305, + "parent_conversation": { + "object": true + }, + "creator": "U01NE1E8FFU", + "is_ext_shared": false, + "shared_team_ids": [ + "json array" + ], + "pending_connected_team_ids": [ + "json array" + ], + "is_member": true, + "last_read": "0000000000.000000", + "topic": { + "object": true + }, + "purpose": { + "object": true + }, + "previous_names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack21": [ + { + "startTime": 1747344004617, + "executionIndex": 6, + "source": [ + { + "previousNode": "Slack24" + } + ], + "hints": [], + "executionTime": 220, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack3": [ + { + "startTime": 1747344004837, + "executionIndex": 7, + "source": [ + { + "previousNode": "Slack9" + } + ], + "hints": [], + "executionTime": 189, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "C08SK5EM3HT", + "name": "renamedtestchannelzpixicyzv", + "is_channel": true, + "is_group": false, + "is_im": false, + "is_mpim": false, + "is_private": false, + "created": 1747344003, + "is_archived": false, + "is_general": false, + "unlinked": 0, + "name_normalized": "renamedtestchannelzpixicyzv", + "is_shared": false, + "is_org_shared": false, + "is_pending_ext_shared": false, + "pending_shared": [ + "json array" + ], + "context_team_id": "T01MZ82R8NB", + "updated": 1747344004977, + "parent_conversation": { + "object": true + }, + "creator": "U01NE1E8FFU", + "is_ext_shared": false, + "shared_team_ids": [ + "json array" + ], + "pending_connected_team_ids": [ + "json array" + ], + "is_member": false, + "topic": { + "object": true + }, + "purpose": { + "object": true + }, + "previous_names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack22": [ + { + "startTime": 1747344005026, + "executionIndex": 8, + "source": [ + { + "previousNode": "Slack21" + } + ], + "hints": [], + "executionTime": 131, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "type": "channel", + "channel": "C01MZ82T9TR", + "date_create": 1747344004 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack4": [ + { + "startTime": 1747344005157, + "executionIndex": 9, + "source": [ + { + "previousNode": "Slack3" + } + ], + "hints": [], + "executionTime": 268, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "C08SK5EM3HT", + "name": "renamedtestchannelzpixicyzv", + "is_channel": true, + "is_group": false, + "is_im": false, + "is_mpim": false, + "is_private": false, + "created": 1747344003, + "is_archived": false, + "is_general": false, + "unlinked": 0, + "name_normalized": "renamedtestchannelzpixicyzv", + "is_shared": false, + "is_org_shared": false, + "is_pending_ext_shared": false, + "pending_shared": [ + "json array" + ], + "context_team_id": "T01MZ82R8NB", + "updated": 1747344005369, + "parent_conversation": { + "object": true + }, + "creator": "U01NE1E8FFU", + "is_ext_shared": false, + "shared_team_ids": [ + "json array" + ], + "pending_connected_team_ids": [ + "json array" + ], + "is_member": false, + "topic": { + "object": true + }, + "purpose": { + "object": true + }, + "previous_names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack23": [ + { + "startTime": 1747344005425, + "executionIndex": 10, + "source": [ + { + "previousNode": "Slack22" + } + ], + "hints": [], + "executionTime": 257, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack5": [ + { + "startTime": 1747344005682, + "executionIndex": 11, + "source": [ + { + "previousNode": "Slack4" + } + ], + "hints": [], + "executionTime": 206, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "C08SK5EM3HT", + "name": "renamedtestchannelzpixicyzv", + "is_channel": true, + "is_group": false, + "is_im": false, + "is_mpim": false, + "is_private": false, + "created": 1747344003, + "is_archived": false, + "is_general": false, + "unlinked": 0, + "name_normalized": "renamedtestchannelzpixicyzv", + "is_shared": false, + "is_org_shared": false, + "is_pending_ext_shared": false, + "pending_shared": [ + "json array" + ], + "context_team_id": "T01MZ82R8NB", + "updated": 1747344005369, + "parent_conversation": { + "object": true + }, + "creator": "U01NE1E8FFU", + "is_ext_shared": false, + "shared_team_ids": [ + "json array" + ], + "pending_connected_team_ids": [ + "json array" + ], + "is_member": true, + "last_read": "0000000000.000000", + "topic": { + "object": true + }, + "purpose": { + "object": true + }, + "previous_names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack13": [ + { + "startTime": 1747344005888, + "executionIndex": 12, + "source": [ + { + "previousNode": "Slack5" + } + ], + "hints": [], + "executionTime": 267, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "C08SK5EM3HT", + "name": "renamedtestchannelzpixicyzv", + "is_channel": true, + "is_group": false, + "is_im": false, + "is_mpim": false, + "is_private": false, + "created": 1747344003, + "is_archived": false, + "is_general": false, + "unlinked": 0, + "name_normalized": "renamedtestchannelzpixicyzv", + "is_shared": false, + "is_org_shared": false, + "is_pending_ext_shared": false, + "pending_shared": [ + "json array" + ], + "context_team_id": "T01MZ82R8NB", + "updated": 1747344005369, + "parent_conversation": { + "object": true + }, + "creator": "U01NE1E8FFU", + "is_ext_shared": false, + "shared_team_ids": [ + "json array" + ], + "pending_connected_team_ids": [ + "json array" + ], + "is_member": true, + "last_read": "0000000000.000000", + "topic": { + "object": true + }, + "purpose": { + "object": true + }, + "previous_names": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack17": [ + { + "startTime": 1747344006155, + "executionIndex": 13, + "source": [ + { + "previousNode": "Slack13" + } + ], + "hints": [], + "executionTime": 268, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack16": [ + { + "startTime": 1747344006423, + "executionIndex": 14, + "source": [ + { + "previousNode": "Slack17" + } + ], + "hints": [], + "executionTime": 497, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "C08SK5EM3HT", + "name": "renamedtestchannelzpixicyzv", + "is_channel": true, + "is_group": false, + "is_im": false, + "is_mpim": false, + "is_private": false, + "created": 1747344003, + "is_archived": false, + "is_general": false, + "unlinked": 0, + "name_normalized": "renamedtestchannelzpixicyzv", + "is_shared": false, + "is_org_shared": false, + "is_pending_ext_shared": false, + "pending_shared": [ + "json array" + ], + "context_team_id": "T01MZ82R8NB", + "updated": 1747344005369, + "parent_conversation": { + "object": true + }, + "creator": "U01NE1E8FFU", + "is_ext_shared": false, + "shared_team_ids": [ + "json array" + ], + "pending_connected_team_ids": [ + "json array" + ], + "is_member": true, + "last_read": "1747344005.401359", + "topic": { + "object": true + }, + "purpose": { + "object": true + }, + "previous_names": [ + "json array" + ], + "priority": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack6": [ + { + "startTime": 1747344006920, + "executionIndex": 15, + "source": [ + { + "previousNode": "Slack16" + } + ], + "hints": [], + "executionTime": 216, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "C01MZ82T9TR", + "name": "random", + "is_channel": true, + "is_group": false, + "is_im": false, + "is_mpim": false, + "is_private": false, + "created": 1613575358, + "is_archived": false, + "is_general": false, + "unlinked": 0, + "name_normalized": "random", + "is_shared": false, + "is_org_shared": false, + "is_pending_ext_shared": false, + "pending_shared": [ + "json array" + ], + "context_team_id": "T01MZ82R8NB", + "updated": 1746595136190, + "parent_conversation": { + "object": true + }, + "creator": "U01NE1E8FFU", + "is_ext_shared": false, + "shared_team_ids": [ + "json array" + ], + "pending_connected_team_ids": [ + "json array" + ], + "is_member": true, + "topic": { + "object": true + }, + "purpose": { + "object": true + }, + "properties": { + "object": true + }, + "previous_names": [ + "json array" + ], + "num_members": 2 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack7": [ + { + "startTime": 1747344007136, + "executionIndex": 16, + "source": [ + { + "previousNode": "Slack6" + } + ], + "hints": [], + "executionTime": 207, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "subtype": "channel_join", + "user": "U01NE1E8FFU", + "text": "<@U01NE1E8FFU> has joined the channel", + "type": "message", + "ts": "1747344006.709799" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack18": [ + { + "startTime": 1747344007343, + "executionIndex": 17, + "source": [ + { + "previousNode": "Slack7" + } + ], + "hints": [], + "executionTime": 150, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "subtype": "channel_join", + "user": "U01NE1E8FFU", + "text": "<@U01NE1E8FFU> has joined the channel", + "type": "message", + "ts": "1747344006.709799" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack8": [ + { + "startTime": 1747344007493, + "executionIndex": 18, + "source": [ + { + "previousNode": "Slack18" + } + ], + "hints": [], + "executionTime": 195, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "member": "U01N08LEY9M" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack": [ + { + "startTime": 1747344007688, + "executionIndex": 19, + "source": [ + { + "previousNode": "Slack8" + } + ], + "hints": [], + "executionTime": 279, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack14": [ + { + "startTime": 1747344007967, + "executionIndex": 20, + "source": [ + { + "previousNode": "Slack" + } + ], + "hints": [], + "executionTime": 439, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Slack1": [ + { + "startTime": 1747344008406, + "executionIndex": 21, + "source": [ + { + "previousNode": "Slack14" + } + ], + "hints": [], + "executionTime": 283, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ok": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Slack1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:02.706Z", + "stoppedAt": "2025-05-15T21:20:08.689Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/37-snapshot.json b/test-workflows/snapshots/37-snapshot.json new file mode 100644 index 0000000000..6e62adb609 --- /dev/null +++ b/test-workflows/snapshots/37-snapshot.json @@ -0,0 +1,1205 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344003419, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab": [ + { + "startTime": 1747344003419, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 610, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 24497029, + "description": { + "object": true + }, + "name": "nodemationQA", + "name_with_namespace": "nodeqa / nodemationQA", + "path": "nodemationqa", + "path_with_namespace": "nodeqa/nodemationqa", + "created_at": "2021-02-18T08:25:21.075Z", + "default_branch": "master", + "tag_list": [ + "json array" + ], + "ssh_url_to_repo": "git@gitlab.com:nodeqa/nodemationqa.git", + "http_url_to_repo": "https://gitlab.com/nodeqa/nodemationqa.git", + "web_url": "https://gitlab.com/nodeqa/nodemationqa", + "readme_url": "https://gitlab.com/nodeqa/nodemationqa/-/blob/master/README.md", + "forks_count": 0, + "avatar_url": { + "object": true + }, + "star_count": 0, + "last_activity_at": "2025-05-15T21:11:56.291Z", + "namespace": { + "object": true + }, + "container_registry_image_prefix": "registry.gitlab.com/nodeqa/nodemationqa", + "_links": { + "object": true + }, + "marked_for_deletion_at": { + "object": true + }, + "marked_for_deletion_on": { + "object": true + }, + "packages_enabled": true, + "empty_repo": false, + "archived": false, + "visibility": "private", + "resolve_outdated_diff_discussions": false, + "container_expiration_policy": { + "object": true + }, + "repository_object_format": "sha1", + "issues_enabled": true, + "merge_requests_enabled": true, + "wiki_enabled": true, + "jobs_enabled": true, + "snippets_enabled": true, + "container_registry_enabled": true, + "service_desk_enabled": true, + "service_desk_address": "contact-project+nodeqa-nodemationqa-24497029-issue-@incoming.gitlab.com", + "can_create_merge_request_in": true, + "issues_access_level": "enabled", + "repository_access_level": "enabled", + "merge_requests_access_level": "enabled", + "forking_access_level": "enabled", + "wiki_access_level": "enabled", + "builds_access_level": "enabled", + "snippets_access_level": "enabled", + "pages_access_level": "private", + "analytics_access_level": "enabled", + "container_registry_access_level": "enabled", + "security_and_compliance_access_level": "private", + "releases_access_level": "enabled", + "environments_access_level": "enabled", + "feature_flags_access_level": "enabled", + "infrastructure_access_level": "enabled", + "monitor_access_level": "enabled", + "model_experiments_access_level": "enabled", + "model_registry_access_level": "enabled", + "emails_disabled": false, + "emails_enabled": true, + "shared_runners_enabled": true, + "lfs_enabled": true, + "creator_id": 8226562, + "import_url": { + "object": true + }, + "import_type": { + "object": true + }, + "import_status": "none", + "import_error": { + "object": true + }, + "open_issues_count": 2632, + "description_html": "", + "updated_at": "2025-05-15T21:19:09.484Z", + "ci_default_git_depth": 50, + "ci_delete_pipelines_in_seconds": { + "object": true + }, + "ci_forward_deployment_enabled": true, + "ci_forward_deployment_rollback_allowed": true, + "ci_job_token_scope_enabled": false, + "ci_separated_caches": true, + "ci_allow_fork_pipelines_to_run_in_parent_project": true, + "ci_id_token_sub_claim_components": [ + "json array" + ], + "build_git_strategy": "fetch", + "keep_latest_artifact": true, + "restrict_user_defined_variables": false, + "ci_pipeline_variables_minimum_override_role": "developer", + "runner_token_expiration_interval": { + "object": true + }, + "group_runners_enabled": true, + "auto_cancel_pending_pipelines": "enabled", + "build_timeout": 3600, + "auto_devops_enabled": false, + "auto_devops_deploy_strategy": "continuous", + "ci_push_repository_for_job_token_allowed": false, + "ci_config_path": "", + "public_jobs": true, + "shared_with_groups": [ + "json array" + ], + "only_allow_merge_if_pipeline_succeeds": false, + "allow_merge_on_skipped_pipeline": { + "object": true + }, + "request_access_enabled": true, + "only_allow_merge_if_all_discussions_are_resolved": false, + "remove_source_branch_after_merge": true, + "printing_merge_request_link_enabled": true, + "merge_method": "merge", + "merge_request_title_regex": { + "object": true + }, + "squash_option": "default_off", + "enforce_auth_checks_on_uploads": true, + "suggestion_commit_message": { + "object": true + }, + "merge_commit_template": { + "object": true + }, + "squash_commit_template": { + "object": true + }, + "issue_branch_template": { + "object": true + }, + "warn_about_potentially_unwanted_characters": true, + "autoclose_referenced_issues": true, + "max_artifacts_size": { + "object": true + }, + "external_authorization_classification_label": "", + "requirements_enabled": false, + "requirements_access_level": "enabled", + "security_and_compliance_enabled": true, + "compliance_frameworks": [ + "json array" + ], + "permissions": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab2": [ + { + "startTime": 1747344004029, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 555, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 167427044, + "iid": 2633, + "project_id": 24497029, + "title": "Issue - Thu May 15 2025", + "description": "QA Test on Thu May 15 2025", + "state": "opened", + "created_at": "2025-05-15T21:20:04.389Z", + "updated_at": "2025-05-15T21:20:04.389Z", + "closed_at": { + "object": true + }, + "closed_by": { + "object": true + }, + "labels": [ + "json array" + ], + "milestone": { + "object": true + }, + "assignees": [ + "json array" + ], + "author": { + "object": true + }, + "type": "ISSUE", + "assignee": { + "object": true + }, + "user_notes_count": 0, + "merge_requests_count": 0, + "upvotes": 0, + "downvotes": 0, + "due_date": { + "object": true + }, + "confidential": false, + "discussion_locked": { + "object": true + }, + "issue_type": "issue", + "web_url": "https://gitlab.com/nodeqa/nodemationqa/-/issues/2633", + "time_stats": { + "object": true + }, + "task_completion_status": { + "object": true + }, + "blocking_issues_count": 0, + "has_tasks": true, + "task_status": "0 of 0 checklist items completed", + "_links": { + "object": true + }, + "references": { + "object": true + }, + "severity": "UNKNOWN", + "subscribed": true, + "moved_to_id": { + "object": true + }, + "imported": false, + "imported_from": "none", + "service_desk_reply_to": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab7": [ + { + "startTime": 1747344004584, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 909, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "Release1747344004587", + "tag_name": "Release-tag-test1747344004589", + "description": { + "object": true + }, + "created_at": "2025-05-15T21:20:05.363Z", + "released_at": "2025-05-15T21:20:05.363Z", + "upcoming_release": false, + "author": { + "object": true + }, + "commit": { + "object": true + }, + "commit_path": "/nodeqa/nodemationqa/-/commit/dd2f13c1cc94dfd37e0c3063841860c5d0ae7252", + "tag_path": "/nodeqa/nodemationqa/-/tags/Release-tag-test1747344004589", + "assets": { + "object": true + }, + "evidences": [ + "json array" + ], + "_links": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab8": [ + { + "startTime": 1747344005493, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 626, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 24497628, + "description": "Project created for gitlab node QA teting", + "name": "QATestProject", + "name_with_namespace": "n8n qa / QATestProject", + "path": "qatestproject", + "path_with_namespace": "n8nqa/qatestproject", + "created_at": "2021-02-18T08:40:49.130Z", + "default_branch": "main", + "tag_list": [ + "json array" + ], + "ssh_url_to_repo": "git@gitlab.com:n8nqa/qatestproject.git", + "http_url_to_repo": "https://gitlab.com/n8nqa/qatestproject.git", + "web_url": "https://gitlab.com/n8nqa/qatestproject", + "readme_url": { + "object": true + }, + "forks_count": 0, + "avatar_url": { + "object": true + }, + "star_count": 0, + "last_activity_at": "2023-04-30T00:20:13.620Z", + "namespace": { + "object": true + }, + "container_registry_image_prefix": "registry.gitlab.com/n8nqa/qatestproject", + "_links": { + "object": true + }, + "marked_for_deletion_at": { + "object": true + }, + "marked_for_deletion_on": { + "object": true + }, + "packages_enabled": true, + "empty_repo": true, + "archived": false, + "visibility": "private", + "owner": { + "object": true + }, + "resolve_outdated_diff_discussions": false, + "container_expiration_policy": { + "object": true + }, + "repository_object_format": "sha1", + "issues_enabled": true, + "merge_requests_enabled": true, + "wiki_enabled": true, + "jobs_enabled": true, + "snippets_enabled": true, + "container_registry_enabled": true, + "service_desk_enabled": true, + "service_desk_address": "contact-project+n8nqa-qatestproject-24497628-issue-@incoming.gitlab.com", + "can_create_merge_request_in": true, + "issues_access_level": "enabled", + "repository_access_level": "enabled", + "merge_requests_access_level": "enabled", + "forking_access_level": "enabled", + "wiki_access_level": "enabled", + "builds_access_level": "enabled", + "snippets_access_level": "enabled", + "pages_access_level": "private", + "analytics_access_level": "enabled", + "container_registry_access_level": "enabled", + "security_and_compliance_access_level": "private", + "releases_access_level": "enabled", + "environments_access_level": "enabled", + "feature_flags_access_level": "enabled", + "infrastructure_access_level": "enabled", + "monitor_access_level": "enabled", + "model_experiments_access_level": "enabled", + "model_registry_access_level": "enabled", + "emails_disabled": false, + "emails_enabled": true, + "shared_runners_enabled": true, + "lfs_enabled": true, + "creator_id": 8226562, + "import_url": { + "object": true + }, + "import_type": { + "object": true + }, + "import_status": "none", + "open_issues_count": 2, + "description_html": "

Project created for gitlab node QA teting

", + "updated_at": "2024-01-16T16:24:11.955Z", + "ci_default_git_depth": 50, + "ci_delete_pipelines_in_seconds": { + "object": true + }, + "ci_forward_deployment_enabled": true, + "ci_forward_deployment_rollback_allowed": true, + "ci_job_token_scope_enabled": false, + "ci_separated_caches": true, + "ci_allow_fork_pipelines_to_run_in_parent_project": true, + "ci_id_token_sub_claim_components": [ + "json array" + ], + "build_git_strategy": "fetch", + "keep_latest_artifact": true, + "restrict_user_defined_variables": false, + "ci_pipeline_variables_minimum_override_role": "developer", + "runner_token_expiration_interval": { + "object": true + }, + "group_runners_enabled": true, + "auto_cancel_pending_pipelines": "enabled", + "build_timeout": 3600, + "auto_devops_enabled": false, + "auto_devops_deploy_strategy": "continuous", + "ci_push_repository_for_job_token_allowed": false, + "runners_token": "GR1348941pyFzz2y953wFx1bxKt4A", + "ci_config_path": "", + "public_jobs": true, + "shared_with_groups": [ + "json array" + ], + "only_allow_merge_if_pipeline_succeeds": false, + "allow_merge_on_skipped_pipeline": { + "object": true + }, + "request_access_enabled": true, + "only_allow_merge_if_all_discussions_are_resolved": false, + "remove_source_branch_after_merge": true, + "printing_merge_request_link_enabled": true, + "merge_method": "merge", + "merge_request_title_regex": { + "object": true + }, + "squash_option": "default_off", + "enforce_auth_checks_on_uploads": true, + "suggestion_commit_message": { + "object": true + }, + "merge_commit_template": { + "object": true + }, + "squash_commit_template": { + "object": true + }, + "issue_branch_template": { + "object": true + }, + "warn_about_potentially_unwanted_characters": true, + "autoclose_referenced_issues": true, + "max_artifacts_size": { + "object": true + }, + "external_authorization_classification_label": "", + "requirements_enabled": false, + "requirements_access_level": "enabled", + "security_and_compliance_enabled": true, + "compliance_frameworks": [ + "json array" + ], + "permissions": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab1": [ + { + "startTime": 1747344006119, + "executionIndex": 5, + "source": [ + { + "previousNode": "Gitlab" + } + ], + "hints": [], + "executionTime": 1674, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 167427044, + "iid": 2633, + "project_id": 24497029, + "title": "Issue - Thu May 15 2025", + "description": "QA Test on Thu May 15 2025", + "state": "opened", + "created_at": "2025-05-15T21:20:04.389Z", + "updated_at": "2025-05-15T21:20:04.389Z", + "closed_at": { + "object": true + }, + "closed_by": { + "object": true + }, + "labels": [ + "json array" + ], + "milestone": { + "object": true + }, + "assignees": [ + "json array" + ], + "author": { + "object": true + }, + "type": "ISSUE", + "assignee": { + "object": true + }, + "user_notes_count": 0, + "merge_requests_count": 0, + "upvotes": 0, + "downvotes": 0, + "due_date": { + "object": true + }, + "confidential": false, + "discussion_locked": { + "object": true + }, + "issue_type": "issue", + "web_url": "https://gitlab.com/nodeqa/nodemationqa/-/issues/2633", + "time_stats": { + "object": true + }, + "task_completion_status": { + "object": true + }, + "blocking_issues_count": 0, + "has_tasks": true, + "task_status": "0 of 0 checklist items completed", + "_links": { + "object": true + }, + "references": { + "object": true + }, + "severity": "UNKNOWN", + "moved_to_id": { + "object": true + }, + "imported": false, + "imported_from": "none", + "service_desk_reply_to": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab3": [ + { + "startTime": 1747344007793, + "executionIndex": 6, + "source": [ + { + "previousNode": "Gitlab2" + } + ], + "hints": [], + "executionTime": 410, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 2507656340, + "type": { + "object": true + }, + "body": "Comment on issue - Thu May 15 2025 22:20:07 GMT+0100 (Irish Standard Time)", + "author": { + "object": true + }, + "created_at": "2025-05-15T21:20:08.100Z", + "updated_at": "2025-05-15T21:20:08.100Z", + "system": false, + "noteable_id": 167427044, + "noteable_type": "Issue", + "project_id": 24497029, + "resolvable": false, + "confidential": false, + "internal": false, + "imported": false, + "imported_from": "none", + "noteable_iid": 2633, + "commands_changes": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab9": [ + { + "startTime": 1747344008203, + "executionIndex": 7, + "source": [ + { + "previousNode": "Gitlab7" + } + ], + "hints": [], + "executionTime": 618, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "Release1747344004587", + "tag_name": "Release-tag-test1747344004589", + "description": { + "object": true + }, + "created_at": "2025-05-15T21:20:05.363Z", + "released_at": "2025-05-15T21:20:05.363Z", + "upcoming_release": false, + "author": { + "object": true + }, + "commit": { + "object": true + }, + "commit_path": "/nodeqa/nodemationqa/-/commit/dd2f13c1cc94dfd37e0c3063841860c5d0ae7252", + "tag_path": "/nodeqa/nodemationqa/-/tags/Release-tag-test1747344004589", + "assets": { + "object": true + }, + "evidences": [ + "json array" + ], + "_links": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab4": [ + { + "startTime": 1747344008821, + "executionIndex": 8, + "source": [ + { + "previousNode": "Gitlab3" + } + ], + "hints": [], + "executionTime": 613, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 167427044, + "iid": 2633, + "project_id": 24497029, + "title": "Issue - Thu May 15 2025", + "description": "Edited QA Test on Thu May 15 2025", + "state": "opened", + "created_at": "2025-05-15T21:20:04.389Z", + "updated_at": "2025-05-15T21:20:09.169Z", + "closed_at": { + "object": true + }, + "closed_by": { + "object": true + }, + "labels": [ + "json array" + ], + "milestone": { + "object": true + }, + "assignees": [ + "json array" + ], + "author": { + "object": true + }, + "type": "ISSUE", + "assignee": { + "object": true + }, + "user_notes_count": 1, + "merge_requests_count": 0, + "upvotes": 0, + "downvotes": 0, + "due_date": { + "object": true + }, + "confidential": false, + "discussion_locked": { + "object": true + }, + "issue_type": "issue", + "web_url": "https://gitlab.com/nodeqa/nodemationqa/-/issues/2633", + "time_stats": { + "object": true + }, + "task_completion_status": { + "object": true + }, + "blocking_issues_count": 0, + "has_tasks": true, + "task_status": "0 of 0 checklist items completed", + "_links": { + "object": true + }, + "references": { + "object": true + }, + "severity": "UNKNOWN", + "subscribed": true, + "moved_to_id": { + "object": true + }, + "imported": false, + "imported_from": "none", + "service_desk_reply_to": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab10": [ + { + "startTime": 1747344009434, + "executionIndex": 9, + "source": [ + { + "previousNode": "Gitlab9" + } + ], + "hints": [], + "executionTime": 662, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "Release1747344004587", + "tag_name": "Release-tag-test1747344004589", + "description": { + "object": true + }, + "created_at": "2025-05-15T21:20:05.363Z", + "released_at": "2025-05-15T21:20:05.363Z", + "upcoming_release": false, + "author": { + "object": true + }, + "commit": { + "object": true + }, + "commit_path": "/nodeqa/nodemationqa/-/commit/dd2f13c1cc94dfd37e0c3063841860c5d0ae7252", + "tag_path": "/nodeqa/nodemationqa/-/tags/Release-tag-test1747344004589", + "assets": { + "object": true + }, + "evidences": [ + "json array" + ], + "_links": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab5": [ + { + "startTime": 1747344010096, + "executionIndex": 10, + "source": [ + { + "previousNode": "Gitlab4" + } + ], + "hints": [], + "executionTime": 581, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 167427044, + "iid": 2633, + "project_id": 24497029, + "title": "Issue - Thu May 15 2025", + "description": "Edited QA Test on Thu May 15 2025", + "state": "opened", + "created_at": "2025-05-15T21:20:04.389Z", + "updated_at": "2025-05-15T21:20:09.169Z", + "closed_at": { + "object": true + }, + "closed_by": { + "object": true + }, + "labels": [ + "json array" + ], + "milestone": { + "object": true + }, + "assignees": [ + "json array" + ], + "author": { + "object": true + }, + "type": "ISSUE", + "assignee": { + "object": true + }, + "user_notes_count": 1, + "merge_requests_count": 0, + "upvotes": 0, + "downvotes": 0, + "due_date": { + "object": true + }, + "confidential": false, + "discussion_locked": { + "object": true + }, + "issue_type": "issue", + "web_url": "https://gitlab.com/nodeqa/nodemationqa/-/issues/2633", + "time_stats": { + "object": true + }, + "task_completion_status": { + "object": true + }, + "blocking_issues_count": 0, + "has_tasks": true, + "task_status": "0 of 0 checklist items completed", + "_links": { + "object": true + }, + "references": { + "object": true + }, + "severity": "UNKNOWN", + "subscribed": true, + "moved_to_id": { + "object": true + }, + "imported": false, + "imported_from": "none", + "service_desk_reply_to": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab11": [ + { + "startTime": 1747344010677, + "executionIndex": 11, + "source": [ + { + "previousNode": "Gitlab10" + } + ], + "hints": [], + "executionTime": 497, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "UpdatedRelease1747344004587", + "tag_name": "Release-tag-test1747344004589", + "description": { + "object": true + }, + "created_at": "2025-05-15T21:20:05.363Z", + "released_at": "2025-05-15T21:20:05.363Z", + "upcoming_release": false, + "author": { + "object": true + }, + "commit": { + "object": true + }, + "commit_path": "/nodeqa/nodemationqa/-/commit/dd2f13c1cc94dfd37e0c3063841860c5d0ae7252", + "tag_path": "/nodeqa/nodemationqa/-/tags/Release-tag-test1747344004589", + "assets": { + "object": true + }, + "evidences": [ + "json array" + ], + "_links": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab6": [ + { + "startTime": 1747344011174, + "executionIndex": 12, + "source": [ + { + "previousNode": "Gitlab5" + } + ], + "hints": [], + "executionTime": 505, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 167427044, + "iid": 2633, + "project_id": 24497029, + "title": "Issue - Thu May 15 2025", + "description": "Edited QA Test on Thu May 15 2025", + "state": "opened", + "created_at": "2025-05-15T21:20:04.389Z", + "updated_at": "2025-05-15T21:20:09.169Z", + "closed_at": { + "object": true + }, + "closed_by": { + "object": true + }, + "labels": [ + "json array" + ], + "milestone": { + "object": true + }, + "assignees": [ + "json array" + ], + "author": { + "object": true + }, + "type": "ISSUE", + "assignee": { + "object": true + }, + "user_notes_count": 1, + "merge_requests_count": 0, + "upvotes": 0, + "downvotes": 0, + "due_date": { + "object": true + }, + "confidential": false, + "discussion_locked": { + "object": true + }, + "issue_type": "issue", + "web_url": "https://gitlab.com/nodeqa/nodemationqa/-/issues/2633", + "time_stats": { + "object": true + }, + "task_completion_status": { + "object": true + }, + "blocking_issues_count": 0, + "has_tasks": true, + "task_status": "0 of 0 checklist items completed", + "_links": { + "object": true + }, + "references": { + "object": true + }, + "severity": "UNKNOWN", + "subscribed": true, + "moved_to_id": { + "object": true + }, + "imported": false, + "imported_from": "none", + "service_desk_reply_to": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gitlab12": [ + { + "startTime": 1747344011679, + "executionIndex": 13, + "source": [ + { + "previousNode": "Gitlab11" + } + ], + "hints": [], + "executionTime": 479, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "UpdatedRelease1747344004587", + "tag_name": "Release-tag-test1747344004589", + "description": { + "object": true + }, + "created_at": "2025-05-15T21:20:05.363Z", + "released_at": "2025-05-15T21:20:05.363Z", + "upcoming_release": false, + "author": { + "object": true + }, + "commit": { + "object": true + }, + "commit_path": "/nodeqa/nodemationqa/-/commit/dd2f13c1cc94dfd37e0c3063841860c5d0ae7252", + "tag_path": "/nodeqa/nodemationqa/-/tags/Release-tag-test1747344004589", + "assets": { + "object": true + }, + "evidences": [ + "json array" + ], + "_links": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Gitlab12" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:03.418Z", + "stoppedAt": "2025-05-15T21:20:12.158Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/38-snapshot.json b/test-workflows/snapshots/38-snapshot.json new file mode 100644 index 0000000000..21ed8f5542 --- /dev/null +++ b/test-workflows/snapshots/38-snapshot.json @@ -0,0 +1,107 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891387033, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Medium": [ + { + "startTime": 1676891387034, + "executionTime": 642, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "537ba1e07580", + "title": "Medium node TestQA Draft Mon, 20 Feb 2023 11:09:47 GMT", + "authorId": "14cdac018d33eefeb5cc1a5acbb70b7a7baea3b748f4a7183f782fb3dcac8b393", + "url": "https://medium.com/@nodeqa/537ba1e07580", + "canonicalUrl": "", + "publishStatus": "draft", + "license": "", + "licenseUrl": "https://policy.medium.com/medium-terms-of-service-9db0094a1e0f", + "tags": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Medium1": [ + { + "startTime": 1676891387677, + "executionTime": 430, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "f639e888aee4", + "name": "TestPublication[n8n]", + "description": "test", + "url": "https://medium.com/testpublication-n8n", + "imageUrl": "https://cdn-images-1.medium.com/fit/c/400/400/1*F027-8q7ncDC6CAC5c4ong.png" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Medium1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:47.032Z", + "stoppedAt": "2023-02-20T11:09:48.107Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/40-snapshot.json b/test-workflows/snapshots/40-snapshot.json new file mode 100644 index 0000000000..b9dc786e39 --- /dev/null +++ b/test-workflows/snapshots/40-snapshot.json @@ -0,0 +1,620 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858578, + "executionTime": 2, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail8": [ + { + "startTime": 1678116858580, + "executionTime": 896, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "186b78f2c87140e8", + "threadId": "186b78f2c87140e8", + "labelIds": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail4": [ + { + "startTime": 1678116859476, + "executionTime": 340, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "Label_226", + "name": "TestLabel1678116859477", + "messageListVisibility": "show", + "labelListVisibility": "labelShow" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail": [ + { + "startTime": 1678116859816, + "executionTime": 326, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "r30886123786721106", + "message": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail13": [ + { + "startTime": 1678116860142, + "executionTime": 890, + "source": [ + { + "previousNode": "Gmail8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "186b78f2c87140e8", + "threadId": "186b78f2c87140e8", + "labelIds": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail5": [ + { + "startTime": 1678116861032, + "executionTime": 221, + "source": [ + { + "previousNode": "Gmail4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "CHAT", + "name": "CHAT", + "messageListVisibility": "hide", + "labelListVisibility": "labelHide", + "type": "system" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail1": [ + { + "startTime": 1678116861253, + "executionTime": 392, + "source": [ + { + "previousNode": "Gmail" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "r30886123786721106", + "threadId": "186b78f30f9d05d9", + "labelIds": [ + "json array" + ], + "sizeEstimate": 434, + "headers": { + "object": true + }, + "text": "Draft Test Body\n", + "textAsHtml": "

Draft Test Body

", + "subject": "Draft created at Mon, 06 Mar 2023 15:34:19 GMT", + "date": "2023-03-06T15:34:19.000Z", + "from": { + "object": true + }, + "messageId": "186b78f30f9d05d9", + "html": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail15": [ + { + "startTime": 1678116861645, + "executionTime": 437, + "source": [ + { + "previousNode": "Gmail13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "186b78f2c87140e8", + "threadId": "186b78f2c87140e8", + "labelIds": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail7": [ + { + "startTime": 1678116862082, + "executionTime": 190, + "source": [ + { + "previousNode": "Gmail5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "Label_226", + "name": "TestLabel1678116859477", + "messageListVisibility": "show", + "labelListVisibility": "labelShow", + "type": "user", + "messagesTotal": 0, + "messagesUnread": 0, + "threadsTotal": 0, + "threadsUnread": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail2": [ + { + "startTime": 1678116862273, + "executionTime": 220, + "source": [ + { + "previousNode": "Gmail1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "r30886123786721106", + "threadId": "186b78f30f9d05d9", + "labelIds": [ + "json array" + ], + "sizeEstimate": 434, + "headers": { + "object": true + }, + "text": "Draft Test Body\n", + "textAsHtml": "

Draft Test Body

", + "subject": "Draft created at Mon, 06 Mar 2023 15:34:19 GMT", + "date": "2023-03-06T15:34:19.000Z", + "from": { + "object": true + }, + "messageId": "186b78f30f9d05d9", + "html": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail9": [ + { + "startTime": 1678116862493, + "executionTime": 320, + "source": [ + { + "previousNode": "Gmail15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "186b78f30f9d05d9", + "threadId": "186b78f30f9d05d9", + "labelIds": [ + "json array" + ], + "sizeEstimate": 434, + "headers": { + "object": true + }, + "text": "Draft Test Body\n", + "textAsHtml": "

Draft Test Body

", + "subject": "Draft created at Mon, 06 Mar 2023 15:34:19 GMT", + "date": "2023-03-06T15:34:19.000Z", + "from": { + "object": true + }, + "messageId": "", + "html": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail16": [ + { + "startTime": 1678116862813, + "executionTime": 326, + "source": [ + { + "previousNode": "Gmail7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail3": [ + { + "startTime": 1678116863140, + "executionTime": 423, + "source": [ + { + "previousNode": "Gmail2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail10": [ + { + "startTime": 1678116863563, + "executionTime": 160, + "source": [ + { + "previousNode": "Gmail9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "186b78f2c87140e8", + "threadId": "186b78f2c87140e8", + "labelIds": [ + "json array" + ], + "sizeEstimate": 474, + "headers": { + "object": true + }, + "text": "Email Body Mon, 06 Mar 2023 15:34:18 GMT\n", + "textAsHtml": "

Email Body Mon, 06 Mar 2023 15:34:18 GMT

", + "subject": "Subject Mon, 06 Mar 2023 15:34:18 GMT", + "date": "2023-03-06T15:34:19.000Z", + "to": { + "object": true + }, + "from": { + "object": true + }, + "messageId": "", + "html": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Gmail12": [ + { + "startTime": 1678116863723, + "executionTime": 504, + "source": [ + { + "previousNode": "Gmail10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "186b78f41bd42c16", + "threadId": "186b78f2c87140e8", + "labelIds": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 Second": [ + { + "startTime": 1678116864227, + "executionTime": 510, + "source": [ + { + "previousNode": "Gmail12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "186b78f41bd42c16", + "threadId": "186b78f2c87140e8", + "labelIds": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Gmail11": [ + { + "startTime": 1678116864738, + "executionTime": 693, + "source": [ + { + "previousNode": "Sleep 0.5 Second" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 Second1": [ + { + "startTime": 1678116865431, + "executionTime": 504, + "source": [ + { + "previousNode": "Gmail11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Gmail14": [ + { + "startTime": 1678116865935, + "executionTime": 465, + "source": [ + { + "previousNode": "Sleep 0.5 Second1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Gmail14" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.574Z", + "stoppedAt": "2023-03-06T15:34:26.401Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/41-snapshot.json b/test-workflows/snapshots/41-snapshot.json new file mode 100644 index 0000000000..3b7c303de2 --- /dev/null +++ b/test-workflows/snapshots/41-snapshot.json @@ -0,0 +1,299 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858375, + "executionTime": 2, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Calendar1": [ + { + "startTime": 1678116858378, + "executionTime": 930, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "calendar#event", + "etag": "\"3356233718144000\"", + "id": "47hbcbv038ub5d4rvhu6adpl7c", + "status": "confirmed", + "htmlLink": "https://www.google.com/calendar/event?eid=NDdoYmNidjAzOHViNWQ0cnZodTZhZHBsN2Mgbm9kZThxYUBt", + "created": "2023-03-06T15:34:19.000Z", + "updated": "2023-03-06T15:34:19.072Z", + "description": "Test", + "creator": { + "object": true + }, + "organizer": { + "object": true + }, + "start": { + "object": true + }, + "end": { + "object": true + }, + "iCalUID": "47hbcbv038ub5d4rvhu6adpl7c@google.com", + "sequence": 0, + "reminders": { + "object": true + }, + "eventType": "default" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Calendar": [ + { + "startTime": 1678116859308, + "executionTime": 364, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "available": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Calendar3": [ + { + "startTime": 1678116859673, + "executionTime": 368, + "source": [ + { + "previousNode": "Google Calendar1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "calendar#event", + "etag": "\"3228659471956000\"", + "id": "svnpd5hm5nifk9sgl76vc5o0bk", + "status": "confirmed", + "htmlLink": "https://www.google.com/calendar/event?eid=c3ZucGQ1aG01bmlmazlzZ2w3NnZjNW8wYmsgbm9kZThxYUBt", + "created": "2021-02-26T08:55:33.000Z", + "updated": "2021-02-26T08:55:35.978Z", + "description": "Test", + "colorId": "7", + "creator": { + "object": true + }, + "organizer": { + "object": true + }, + "start": { + "object": true + }, + "end": { + "object": true + }, + "iCalUID": "svnpd5hm5nifk9sgl76vc5o0bk@google.com", + "sequence": 0, + "reminders": { + "object": true + }, + "eventType": "default" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Calendar2": [ + { + "startTime": 1678116860041, + "executionTime": 351, + "source": [ + { + "previousNode": "Google Calendar3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "calendar#event", + "etag": "\"3356233718144000\"", + "id": "47hbcbv038ub5d4rvhu6adpl7c", + "status": "confirmed", + "htmlLink": "https://www.google.com/calendar/event?eid=NDdoYmNidjAzOHViNWQ0cnZodTZhZHBsN2Mgbm9kZThxYUBt", + "created": "2023-03-06T15:34:19.000Z", + "updated": "2023-03-06T15:34:19.072Z", + "description": "Test", + "creator": { + "object": true + }, + "organizer": { + "object": true + }, + "start": { + "object": true + }, + "end": { + "object": true + }, + "iCalUID": "47hbcbv038ub5d4rvhu6adpl7c@google.com", + "sequence": 0, + "reminders": { + "object": true + }, + "eventType": "default" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Calendar4": [ + { + "startTime": 1678116860392, + "executionTime": 639, + "source": [ + { + "previousNode": "Google Calendar2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "calendar#event", + "etag": "\"3356233721642000\"", + "id": "47hbcbv038ub5d4rvhu6adpl7c", + "status": "confirmed", + "htmlLink": "https://www.google.com/calendar/event?eid=NDdoYmNidjAzOHViNWQ0cnZodTZhZHBsN2Mgbm9kZThxYUBt", + "created": "2023-03-06T15:34:19.000Z", + "updated": "2023-03-06T15:34:20.821Z", + "description": "Test", + "colorId": "7", + "creator": { + "object": true + }, + "organizer": { + "object": true + }, + "start": { + "object": true + }, + "end": { + "object": true + }, + "iCalUID": "47hbcbv038ub5d4rvhu6adpl7c@google.com", + "sequence": 0, + "reminders": { + "object": true + }, + "eventType": "default" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Calendar5": [ + { + "startTime": 1678116861031, + "executionTime": 509, + "source": [ + { + "previousNode": "Google Calendar4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Calendar5" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.372Z", + "stoppedAt": "2023-03-06T15:34:21.540Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/42-snapshot.json b/test-workflows/snapshots/42-snapshot.json new file mode 100644 index 0000000000..d474a37a67 --- /dev/null +++ b/test-workflows/snapshots/42-snapshot.json @@ -0,0 +1,214 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858303, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Tasks": [ + { + "startTime": 1678116858304, + "executionTime": 713, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "tasks#task", + "id": "eVRMM3dMeGw5Qjd1a05yTg", + "etag": "\"LTEyMTUzNTM1OTI\"", + "title": "Do Testing", + "updated": "2023-03-06T15:34:19.000Z", + "selfLink": "https://www.googleapis.com/tasks/v1/lists/MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow/tasks/eVRMM3dMeGw5Qjd1a05yTg", + "position": "00000000000000000000", + "status": "needsAction", + "links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Tasks1": [ + { + "startTime": 1678116859017, + "executionTime": 306, + "source": [ + { + "previousNode": "Google Tasks" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "tasks#task", + "id": "eVRMM3dMeGw5Qjd1a05yTg", + "etag": "\"LTEyMTUzNTM4MDA\"", + "title": "Do Testing", + "updated": "2023-03-06T15:34:19.000Z", + "selfLink": "https://www.googleapis.com/tasks/v1/lists/MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow/tasks/eVRMM3dMeGw5Qjd1a05yTg", + "position": "00000000000000000000", + "status": "completed", + "completed": "2023-03-06T15:34:19.000Z", + "links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Tasks4": [ + { + "startTime": 1678116859324, + "executionTime": 193, + "source": [ + { + "previousNode": "Google Tasks1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "tasks#task", + "id": "eVRMM3dMeGw5Qjd1a05yTg", + "etag": "\"LTEyMTUzNTM4MDA\"", + "title": "Do Testing", + "updated": "2023-03-06T15:34:19.000Z", + "selfLink": "https://www.googleapis.com/tasks/v1/lists/MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow/tasks/eVRMM3dMeGw5Qjd1a05yTg", + "position": "00000000000000000000", + "status": "completed", + "completed": "2023-03-06T15:34:19.000Z", + "links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Tasks2": [ + { + "startTime": 1678116859518, + "executionTime": 168, + "source": [ + { + "previousNode": "Google Tasks4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "tasks#task", + "id": "eVRMM3dMeGw5Qjd1a05yTg", + "etag": "\"LTEyMTUzNTM4MDA\"", + "title": "Do Testing", + "updated": "2023-03-06T15:34:19.000Z", + "selfLink": "https://www.googleapis.com/tasks/v1/lists/MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow/tasks/eVRMM3dMeGw5Qjd1a05yTg", + "position": "00000000000000000000", + "status": "completed", + "completed": "2023-03-06T15:34:19.000Z", + "links": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Tasks3": [ + { + "startTime": 1678116859686, + "executionTime": 213, + "source": [ + { + "previousNode": "Google Tasks2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Tasks3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.302Z", + "stoppedAt": "2023-03-06T15:34:19.899Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/43-snapshot.json b/test-workflows/snapshots/43-snapshot.json new file mode 100644 index 0000000000..f2c99a64e5 --- /dev/null +++ b/test-workflows/snapshots/43-snapshot.json @@ -0,0 +1,265 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858417, + "executionTime": 2, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Contacts": [ + { + "startTime": 1678116858448, + "executionTime": 1054, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resourceName": "people/c4926459161634783331", + "etag": "%EigBAgMEBQYHCAkKCwwNDg8QERITFBUWFxkfISIjJCUmJy40NTc9Pj9AGgQBAgUHIgxLNHlqR3dpUnBYST0=", + "metadata": { + "object": true + }, + "names": [ + "json array" + ], + "photos": [ + "json array" + ], + "organizations": [ + "json array" + ], + "memberships": [ + "json array" + ], + "contactId": "c4926459161634783331" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 3 seconds": [ + { + "startTime": 1678116859502, + "executionTime": 3025, + "source": [ + { + "previousNode": "Google Contacts" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resourceName": "people/c4926459161634783331", + "etag": "%EigBAgMEBQYHCAkKCwwNDg8QERITFBUWFxkfISIjJCUmJy40NTc9Pj9AGgQBAgUHIgxLNHlqR3dpUnBYST0=", + "metadata": { + "object": true + }, + "names": [ + "json array" + ], + "photos": [ + "json array" + ], + "organizations": [ + "json array" + ], + "memberships": [ + "json array" + ], + "contactId": "c4926459161634783331" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Google Contacts1": [ + { + "startTime": 1678116862527, + "executionTime": 782, + "source": [ + { + "previousNode": "Sleep 3 seconds" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resourceName": "people/c4926459161634783331", + "etag": "%EgUBAi43PRoEAQIFByIMbUdBM3NCWUx0UFE9", + "names": [ + "json array" + ], + "contactId": "c4926459161634783331" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Contacts2": [ + { + "startTime": 1678116863309, + "executionTime": 191, + "source": [ + { + "previousNode": "Google Contacts1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resourceName": "people/c2992217910493048592", + "etag": "%Eh4BAgMFBgcICQoLDA0ODxATFBUWGSEiJS41Nz0+P0AaBAECBQciDHZTVjkvK2I5YWZBPQ==", + "names": { + "object": true + }, + "photos": [ + "json array" + ], + "organizations": [ + "json array" + ], + "memberships": [ + "json array" + ], + "contactId": "c2992217910493048592" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Contacts3": [ + { + "startTime": 1678116863501, + "executionTime": 161, + "source": [ + { + "previousNode": "Google Contacts2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "resourceName": "people/c4926459161634783331", + "etag": "%Eh4BAgMFBgcICQoLDA0ODxATFBUWGSEiJS41Nz0+P0AaBAECBQciDG1HQTNzQllMdFBRPQ==", + "names": { + "object": true + }, + "photos": [ + "json array" + ], + "organizations": [ + "json array" + ], + "memberships": [ + "json array" + ], + "contactId": "c4926459161634783331" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Contacts4": [ + { + "startTime": 1678116863662, + "executionTime": 334, + "source": [ + { + "previousNode": "Google Contacts3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Contacts4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.413Z", + "stoppedAt": "2023-03-06T15:34:23.997Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/44-snapshot.json b/test-workflows/snapshots/44-snapshot.json new file mode 100644 index 0000000000..062b953691 --- /dev/null +++ b/test-workflows/snapshots/44-snapshot.json @@ -0,0 +1,380 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344003525, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive": [ + { + "startTime": 1747344003525, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 498, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1gadLOxnVKQnXqTeIDoqgAkKvzJP6pHTr", + "name": "testFolder" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive3": [ + { + "startTime": 1747344004023, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1527, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#file", + "id": "1CTnOyuVQ8YxOWcFDg2hU5KyCDGOMN4cP", + "name": "testFile", + "mimeType": "text/plain" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive10": [ + { + "startTime": 1747344005550, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive1": [ + { + "startTime": 1747344005550, + "executionIndex": 4, + "source": [ + { + "previousNode": "Google Drive" + } + ], + "hints": [], + "executionTime": 533, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#permission", + "id": "anyoneWithLink", + "type": "anyone", + "role": "reader", + "allowFileDiscovery": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive4": [ + { + "startTime": 1747344006083, + "executionIndex": 5, + "source": [ + { + "previousNode": "Google Drive3" + } + ], + "hints": [], + "executionTime": 604, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#permission", + "id": "anyoneWithLink", + "type": "anyone", + "role": "reader", + "allowFileDiscovery": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive2": [ + { + "startTime": 1747344006687, + "executionIndex": 6, + "source": [ + { + "previousNode": "Google Drive1" + } + ], + "hints": [], + "executionTime": 497, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1gadLOxnVKQnXqTeIDoqgAkKvzJP6pHTr", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive5": [ + { + "startTime": 1747344007184, + "executionIndex": 7, + "source": [ + { + "previousNode": "Google Drive4" + } + ], + "hints": [], + "executionTime": 493, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1YNeDnFJOaq3mDazf8Ezm3V3K-aIKdmugke2m89Qf3dg", + "name": "oupa" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive6": [ + { + "startTime": 1747344007677, + "executionIndex": 8, + "source": [ + { + "previousNode": "Google Drive5" + } + ], + "hints": [], + "executionTime": 971, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "1YNeDnFJOaq3mDazf8Ezm3V3K-aIKdmugke2m89Qf3dg", + "name": "oupa" + }, + "binary": { + "data": { + "mimeType": "text/plain", + "fileType": "text", + "fileExtension": "txt", + "data": "VGVzdCBGaWxlIENvbnRlbnQ=", + "fileName": "testFile", + "fileSize": "17 B" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive7": [ + { + "startTime": 1747344008648, + "executionIndex": 9, + "source": [ + { + "previousNode": "Google Drive6" + } + ], + "hints": [], + "executionTime": 830, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "drive#file", + "id": "1GEYV0Db2ABpygxCcKuAtDA35cgtrz4EQ", + "name": "testFile", + "mimeType": "text/plain" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive8": [ + { + "startTime": 1747344009479, + "executionIndex": 10, + "source": [ + { + "previousNode": "Google Drive7" + } + ], + "hints": [], + "executionTime": 420, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1CTnOyuVQ8YxOWcFDg2hU5KyCDGOMN4cP", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Drive9": [ + { + "startTime": 1747344009899, + "executionIndex": 11, + "source": [ + { + "previousNode": "Google Drive8" + } + ], + "hints": [], + "executionTime": 516, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "fileId": "1GEYV0Db2ABpygxCcKuAtDA35cgtrz4EQ", + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Drive9" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:03.524Z", + "stoppedAt": "2025-05-15T21:20:10.415Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/45-snapshot.json b/test-workflows/snapshots/45-snapshot.json new file mode 100644 index 0000000000..ac593ed2b3 --- /dev/null +++ b/test-workflows/snapshots/45-snapshot.json @@ -0,0 +1,427 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858649, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Sheets": [ + { + "startTime": 1678116858650, + "executionTime": 2218, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "spreadsheetId": "13KroPsxIAWmV8Q73df1-5OhI0aAG64Ch74waTZqUYhU", + "properties": { + "object": true + }, + "sheets": [ + "json array" + ], + "spreadsheetUrl": "https://docs.google.com/spreadsheets/d/13KroPsxIAWmV8Q73df1-5OhI0aAG64Ch74waTZqUYhU/edit" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1678116860868, + "executionTime": 13, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 861, + "name": "test1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 61, + "name": "test2" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Sheets7": [ + { + "startTime": 1678116860881, + "executionTime": 1007, + "source": [ + { + "previousNode": "Google Sheets" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "spreadsheetId": "13KroPsxIAWmV8Q73df1-5OhI0aAG64Ch74waTZqUYhU", + "sheetId": 826802864, + "title": "Sheet2", + "index": 1, + "sheetType": "GRID", + "gridProperties": { + "object": true + }, + "tabColor": { + "object": true + }, + "tabColorStyle": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Sheets1": [ + { + "startTime": 1678116861889, + "executionTime": 1273, + "source": [ + { + "previousNode": "Function" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 861, + "name": "test1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 61, + "name": "test2" + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Sheets8": [ + { + "startTime": 1678116863162, + "executionTime": 577, + "source": [ + { + "previousNode": "Google Sheets7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "spreadsheetId": "13KroPsxIAWmV8Q73df1-5OhI0aAG64Ch74waTZqUYhU" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Sheets3": [ + { + "startTime": 1678116863740, + "executionTime": 336, + "source": [ + { + "previousNode": "Google Sheets1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 861, + "name": "test1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 61, + "name": "test2" + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Sheets4": [ + { + "startTime": 1678116864076, + "executionTime": 246, + "source": [ + { + "previousNode": "Google Sheets3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 861, + "name": "test1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 861, + "name": "test1" + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1678116864322, + "executionTime": 2, + "source": [ + { + "previousNode": "Google Sheets4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 861, + "name": "Updated test1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 61, + "name": "Updated test2" + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Sheets2": [ + { + "startTime": 1678116864325, + "executionTime": 1044, + "source": [ + { + "previousNode": "Set1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 861, + "name": "Updated test1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 61, + "name": "Updated test2" + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Sheets6": [ + { + "startTime": 1678116865369, + "executionTime": 510, + "source": [ + { + "previousNode": "Google Sheets2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 861, + "name": "Updated test1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 61, + "name": "Updated test2" + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Sheets5": [ + { + "startTime": 1678116865879, + "executionTime": 413, + "source": [ + { + "previousNode": "Google Sheets6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 861, + "name": "Updated test1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": 61, + "name": "Updated test2" + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Sheets5" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.647Z", + "stoppedAt": "2023-03-06T15:34:26.292Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/46-snapshot.json b/test-workflows/snapshots/46-snapshot.json new file mode 100644 index 0000000000..9655ccd0e9 --- /dev/null +++ b/test-workflows/snapshots/46-snapshot.json @@ -0,0 +1,731 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858527, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Books": [ + { + "startTime": 1678116858528, + "executionTime": 1159, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "books#volume", + "id": "tvfyz-4JILwC", + "etag": "o0PPfLNFxNc", + "selfLink": "https://www.googleapis.com/books/v1/volumes/tvfyz-4JILwC", + "volumeInfo": { + "object": true + }, + "saleInfo": { + "object": true + }, + "accessInfo": { + "object": true + }, + "searchInfo": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#volume", + "id": "_CAdswEACAAJ", + "etag": "Q7ewsaDZHyY", + "selfLink": "https://www.googleapis.com/books/v1/volumes/_CAdswEACAAJ", + "volumeInfo": { + "object": true + }, + "saleInfo": { + "object": true + }, + "accessInfo": { + "object": true + }, + "searchInfo": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Books2": [ + { + "startTime": 1678116859687, + "executionTime": 328, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "books#bookshelf", + "id": 7, + "title": "My Google eBooks", + "access": "PRIVATE", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1, + "title": "Purchased", + "access": "PRIVATE", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 5, + "title": "Reviewed", + "access": "PUBLIC", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 6, + "title": "Recently viewed", + "access": "PRIVATE", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 9, + "title": "Browsing history", + "access": "PRIVATE", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 0, + "title": "Favorites", + "access": "PUBLIC", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 3, + "title": "Reading now", + "access": "PUBLIC", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 2, + "title": "To read", + "access": "PUBLIC", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 4, + "title": "Have read", + "access": "PUBLIC", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 8, + "title": "Books for you", + "access": "PRIVATE", + "updated": "2023-03-06T15:34:19.000Z", + "created": "2023-03-06T15:34:19.000Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T15:34:19.000Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Google Books1": [ + { + "startTime": 1678116860015, + "executionTime": 818, + "source": [ + { + "previousNode": "Google Books" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "books#volume", + "id": "tvfyz-4JILwC", + "etag": "6O9J2CN53Ew", + "selfLink": "https://www.googleapis.com/books/v1/volumes/tvfyz-4JILwC", + "volumeInfo": { + "object": true + }, + "userInfo": { + "object": true + }, + "saleInfo": { + "object": true + }, + "accessInfo": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#volume", + "id": "_CAdswEACAAJ", + "etag": "jAT797c77bA", + "selfLink": "https://www.googleapis.com/books/v1/volumes/_CAdswEACAAJ", + "volumeInfo": { + "object": true + }, + "userInfo": { + "object": true + }, + "saleInfo": { + "object": true + }, + "accessInfo": { + "object": true + } + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Books3": [ + { + "startTime": 1678116860834, + "executionTime": 3343, + "source": [ + { + "previousNode": "Google Books2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 1 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 2 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 3 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 4 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 5 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 6 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 7 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 8 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 9 + } + }, + { + "json": { + "kind": "books#bookshelf", + "id": 1001, + "title": "FixedBookShelf", + "description": "This a bookshelf create for the test workflows", + "access": "PRIVATE", + "updated": "2023-03-06T11:56:15.625Z", + "created": "2023-03-06T11:56:15.625Z", + "volumeCount": 0, + "volumesLastUpdated": "2023-03-06T11:56:15.622Z" + }, + "pairedItem": { + "item": 10 + } + } + ] + ] + } + } + ], + "Google Books4": [ + { + "startTime": 1678116864177, + "executionTime": 615, + "source": [ + { + "previousNode": "Google Books1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + }, + { + "json": {}, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Books5": [ + { + "startTime": 1678116864792, + "executionTime": 565, + "source": [ + { + "previousNode": "Google Books4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + }, + { + "json": {}, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Books6": [ + { + "startTime": 1678116865358, + "executionTime": 602, + "source": [ + { + "previousNode": "Google Books5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "books#volume", + "id": "_CAdswEACAAJ", + "etag": "9WPBLHtCNPI", + "selfLink": "https://www.googleapis.com/books/v1/volumes/_CAdswEACAAJ", + "volumeInfo": { + "object": true + }, + "userInfo": { + "object": true + }, + "saleInfo": { + "object": true + }, + "accessInfo": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "kind": "books#volume", + "id": "_CAdswEACAAJ", + "etag": "QEA8HzqsC+4", + "selfLink": "https://www.googleapis.com/books/v1/volumes/_CAdswEACAAJ", + "volumeInfo": { + "object": true + }, + "userInfo": { + "object": true + }, + "saleInfo": { + "object": true + }, + "accessInfo": { + "object": true + } + }, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Books7": [ + { + "startTime": 1678116865961, + "executionTime": 668, + "source": [ + { + "previousNode": "Google Books6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + }, + { + "json": {}, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ], + "Google Books8": [ + { + "startTime": 1678116866629, + "executionTime": 562, + "source": [ + { + "previousNode": "Google Books7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + }, + { + "json": {}, + "pairedItem": { + "item": 1 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Google Books8" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.524Z", + "stoppedAt": "2023-03-06T15:34:27.191Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/48-snapshot.json b/test-workflows/snapshots/48-snapshot.json new file mode 100644 index 0000000000..c4f51c5ded --- /dev/null +++ b/test-workflows/snapshots/48-snapshot.json @@ -0,0 +1,1071 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344004021, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana2": [ + { + "startTime": 1747344004021, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 686, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1210267332379092", + "projects": [ + "json array" + ], + "memberships": [ + "json array" + ], + "resource_type": "task", + "created_at": "2025-05-15T21:20:04.296Z", + "modified_at": "2025-05-15T21:20:04.486Z", + "name": "TaskTest", + "notes": "", + "workspace": { + "object": true + }, + "start_at": { + "object": true + }, + "start_on": { + "object": true + }, + "resource_subtype": "default_task", + "due_at": { + "object": true + }, + "due_on": { + "object": true + }, + "completed_at": { + "object": true + }, + "assignee_status": "inbox", + "completed": false, + "actual_time_minutes": 0, + "num_hearts": 0, + "num_likes": 0, + "tags": [ + "json array" + ], + "assignee_section": { + "object": true + }, + "hearted": false, + "liked": false, + "hearts": [ + "json array" + ], + "likes": [ + "json array" + ], + "permalink_url": "https://app.asana.com/1/1177253494675264/project/1199961131280920/task/1210267332379092", + "assignee": { + "object": true + }, + "parent": { + "object": true + }, + "followers": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana14": [ + { + "startTime": 1747344004707, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 371, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1199961026001666", + "email": "nodeqa@n8n.io", + "name": "nodeqa", + "photo": { + "object": true + }, + "resource_type": "user", + "workspaces": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana": [ + { + "startTime": 1747344005078, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 193, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1199961131378839", + "name": "QAtest", + "resource_type": "project" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana3": [ + { + "startTime": 1747344005271, + "executionIndex": 4, + "source": [ + { + "previousNode": "Asana2" + } + ], + "hints": [], + "executionTime": 473, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1210267332379092", + "projects": [ + "json array" + ], + "memberships": [ + "json array" + ], + "resource_type": "task", + "created_at": "2025-05-15T21:20:04.296Z", + "modified_at": "2025-05-15T21:20:05.610Z", + "name": "UpdatedTestTask", + "notes": "", + "workspace": { + "object": true + }, + "start_at": { + "object": true + }, + "start_on": { + "object": true + }, + "resource_subtype": "default_task", + "due_at": { + "object": true + }, + "due_on": { + "object": true + }, + "completed_at": { + "object": true + }, + "assignee_status": "inbox", + "completed": false, + "actual_time_minutes": 0, + "num_hearts": 0, + "num_likes": 0, + "tags": [ + "json array" + ], + "hearted": false, + "liked": false, + "hearts": [ + "json array" + ], + "likes": [ + "json array" + ], + "assignee_section": { + "object": true + }, + "permalink_url": "https://app.asana.com/1/1177253494675264/project/1199961131280920/task/1210267332379092", + "assignee": { + "object": true + }, + "parent": { + "object": true + }, + "followers": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana15": [ + { + "startTime": 1747344005744, + "executionIndex": 5, + "source": [ + { + "previousNode": "Asana14" + } + ], + "hints": [], + "executionTime": 187, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1202187737680529", + "name": "Adriana Toader", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1202890883228546", + "name": "Ardit Fetahu", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1206933450858036", + "name": "Aya", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1209716676051853", + "name": "bart@n8n.io", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1201317194658352", + "name": "Dale Player", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1209089579490684", + "name": "David Arens", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1209358493509784", + "name": "Gera", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1183698132267547", + "name": "Inte Gration", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1202307247988024", + "name": "ivan", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1206344448463309", + "name": "ivan@n8n.io", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1198750619112603", + "name": "Jan Oberhauser", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1202718728322685", + "name": "John", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1207168924369543", + "name": "luis@n8n.io", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1202718619090236", + "name": "Mary", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1199961026001666", + "name": "nodeqa", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1177656661193880", + "name": "Ronalds Upenieks", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1177253503277681", + "name": "Tanay Pant", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1204568752114666", + "name": "Thomas Support", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1209729434313156", + "name": "tino.zwirs@n8n.io", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "gid": "1202404236960393", + "name": "Tom", + "resource_type": "user" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana1": [ + { + "startTime": 1747344005931, + "executionIndex": 6, + "source": [ + { + "previousNode": "Asana" + } + ], + "hints": [], + "executionTime": 217, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1199961131378839", + "archived": false, + "color": { + "object": true + }, + "completed": false, + "completed_at": { + "object": true + }, + "created_at": "2021-02-19T14:12:58.357Z", + "current_status": { + "object": true + }, + "current_status_update": { + "object": true + }, + "custom_fields": [ + "json array" + ], + "default_access_level": "editor", + "default_view": "list", + "due_on": { + "object": true + }, + "due_date": { + "object": true + }, + "followers": [ + "json array" + ], + "members": [ + "json array" + ], + "minimum_access_level_for_customization": "editor", + "minimum_access_level_for_sharing": "editor", + "modified_at": "2025-05-13T13:32:19.367Z", + "name": "QAtest", + "notes": "", + "owner": { + "object": true + }, + "permalink_url": "https://app.asana.com/1/1177253494675264/project/1199961131378839", + "privacy_setting": "private", + "public": false, + "resource_type": "project", + "start_on": { + "object": true + }, + "team": { + "object": true + }, + "workspace": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana4": [ + { + "startTime": 1747344006148, + "executionIndex": 7, + "source": [ + { + "previousNode": "Asana3" + } + ], + "hints": [], + "executionTime": 862, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana5": [ + { + "startTime": 1747344007010, + "executionIndex": 8, + "source": [ + { + "previousNode": "Asana4" + } + ], + "hints": [], + "executionTime": 365, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1199961131378855", + "name": "✏️ Finish setting up your first project", + "resource_type": "task", + "resource_subtype": "default_task" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana6": [ + { + "startTime": 1747344007375, + "executionIndex": 9, + "source": [ + { + "previousNode": "Asana5" + } + ], + "hints": [], + "executionTime": 209, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1210267332379092", + "actual_time_minutes": { + "object": true + }, + "assignee": { + "object": true + }, + "assignee_status": "inbox", + "assignee_section": { + "object": true + }, + "completed": false, + "completed_at": { + "object": true + }, + "created_at": "2025-05-15T21:20:04.296Z", + "due_at": { + "object": true + }, + "due_on": { + "object": true + }, + "followers": [ + "json array" + ], + "hearted": false, + "hearts": [ + "json array" + ], + "liked": false, + "likes": [ + "json array" + ], + "memberships": [ + "json array" + ], + "modified_at": "2025-05-15T21:20:06.736Z", + "name": "UpdatedTestTask", + "notes": "", + "num_hearts": 0, + "num_likes": 0, + "parent": { + "object": true + }, + "permalink_url": "https://app.asana.com/1/1177253494675264/project/1199961131378839/task/1210267332379092", + "projects": [ + "json array" + ], + "resource_type": "task", + "start_at": { + "object": true + }, + "start_on": { + "object": true + }, + "tags": [ + "json array" + ], + "resource_subtype": "default_task", + "workspace": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana8": [ + { + "startTime": 1747344007584, + "executionIndex": 10, + "source": [ + { + "previousNode": "Asana6" + } + ], + "hints": [], + "executionTime": 600, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1210267334811850", + "resource_type": "story", + "created_at": "2025-05-15T21:20:07.929Z", + "num_hearts": 0, + "resource_subtype": "comment_added", + "is_edited": false, + "text": "TestTaskComment", + "type": "comment", + "is_pinned": false, + "source": "api", + "num_likes": 0, + "liked": false, + "hearted": false, + "created_by": { + "object": true + }, + "hearts": [ + "json array" + ], + "likes": [ + "json array" + ], + "previews": [ + "json array" + ], + "is_editable": true, + "target": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana10": [ + { + "startTime": 1747344008184, + "executionIndex": 11, + "source": [ + { + "previousNode": "Asana6" + } + ], + "hints": [], + "executionTime": 709, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana12": [ + { + "startTime": 1747344008893, + "executionIndex": 12, + "source": [ + { + "previousNode": "Asana6" + } + ], + "hints": [], + "executionTime": 471, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana16": [ + { + "startTime": 1747344009364, + "executionIndex": 13, + "source": [ + { + "previousNode": "Asana6" + } + ], + "hints": [], + "executionTime": 1016, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1210267364252262", + "projects": [ + "json array" + ], + "memberships": [ + "json array" + ], + "resource_type": "task", + "created_at": "2025-05-15T21:20:09.876Z", + "modified_at": "2025-05-15T21:20:10.148Z", + "name": "SubTestTask", + "notes": "", + "assignee": { + "object": true + }, + "start_at": { + "object": true + }, + "start_on": { + "object": true + }, + "resource_subtype": "default_task", + "due_at": { + "object": true + }, + "due_on": { + "object": true + }, + "completed_at": { + "object": true + }, + "assignee_status": "upcoming", + "completed": false, + "actual_time_minutes": 0, + "workspace": { + "object": true + }, + "num_hearts": 0, + "num_likes": 0, + "hearted": false, + "liked": false, + "hearts": [ + "json array" + ], + "likes": [ + "json array" + ], + "parent": { + "object": true + }, + "tags": [ + "json array" + ], + "permalink_url": "https://app.asana.com/1/1177253494675264/project/1199961131378839/task/1210267364252262", + "followers": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana9": [ + { + "startTime": 1747344010380, + "executionIndex": 14, + "source": [ + { + "previousNode": "Asana8" + } + ], + "hints": [], + "executionTime": 742, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana11": [ + { + "startTime": 1747344011122, + "executionIndex": 15, + "source": [ + { + "previousNode": "Asana10" + } + ], + "hints": [], + "executionTime": 584, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana13": [ + { + "startTime": 1747344011706, + "executionIndex": 16, + "source": [ + { + "previousNode": "Asana12" + } + ], + "hints": [], + "executionTime": 598, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana17": [ + { + "startTime": 1747344012305, + "executionIndex": 17, + "source": [ + { + "previousNode": "Asana16" + } + ], + "hints": [], + "executionTime": 451, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "gid": "1210267364252262", + "name": "SubTestTask", + "resource_type": "task", + "resource_subtype": "default_task" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Asana7": [ + { + "startTime": 1747344012756, + "executionIndex": 18, + "source": [ + { + "previousNode": "Asana17" + } + ], + "hints": [], + "executionTime": 573, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Asana7" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:04.020Z", + "stoppedAt": "2025-05-15T21:20:13.329Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/49-snapshot.json b/test-workflows/snapshots/49-snapshot.json new file mode 100644 index 0000000000..2f8ee24512 --- /dev/null +++ b/test-workflows/snapshots/49-snapshot.json @@ -0,0 +1,173 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891392504, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Bitly": [ + { + "startTime": 1676891392506, + "executionTime": 211, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "2021-02-19T16:45:14+0000", + "id": "bit.ly/3qAXhOP", + "link": "https://bit.ly/3qAXhOP", + "custom_bitlinks": [ + "json array" + ], + "long_url": "https://n8n.io/", + "title": "n8n", + "archived": false, + "tags": [ + "json array" + ], + "deeplinks": [ + "json array" + ], + "references": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Bitly1": [ + { + "startTime": 1676891392718, + "executionTime": 238, + "source": [ + { + "previousNode": "Bitly" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "2021-02-19T16:45:14+0000", + "id": "bit.ly/3qAXhOP", + "link": "https://bit.ly/3qAXhOP", + "custom_bitlinks": [ + "json array" + ], + "long_url": "https://n8n.io/", + "title": "n8n", + "archived": false, + "created_by": "nodeqa", + "client_id": "a5e8cebb233c5d07e5c553e917dffb92fec5264d", + "tags": [ + "json array" + ], + "deeplinks": [ + "json array" + ], + "references": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Bitly2": [ + { + "startTime": 1676891392957, + "executionTime": 200, + "source": [ + { + "previousNode": "Bitly1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "2021-02-19T16:45:14+0000", + "id": "bit.ly/3qAXhOP", + "link": "http://bit.ly/3qAXhOP", + "custom_bitlinks": [ + "json array" + ], + "long_url": "https://n8n.io/", + "archived": false, + "created_by": "nodeqa", + "client_id": "a5e8cebb233c5d07e5c553e917dffb92fec5264d", + "tags": [ + "json array" + ], + "deeplinks": [ + "json array" + ], + "references": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Bitly2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:52.503Z", + "stoppedAt": "2023-02-20T11:09:53.157Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/5-snapshot.json b/test-workflows/snapshots/5-snapshot.json new file mode 100644 index 0000000000..f1cbd7039d --- /dev/null +++ b/test-workflows/snapshots/5-snapshot.json @@ -0,0 +1,184 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891385640, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hacker News": [ + { + "startTime": 1676891385642, + "executionTime": 700, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "created_at": "2018-03-14T03:50:30.000Z", + "title": "Stephen Hawking has died", + "url": "http://www.bbc.com/news/uk-43396008", + "author": "Cogito", + "points": 6015, + "story_text": { + "object": true + }, + "comment_text": { + "object": true + }, + "num_comments": 436, + "story_id": { + "object": true + }, + "story_title": { + "object": true + }, + "story_url": { + "object": true + }, + "parent_id": { + "object": true + }, + "created_at_i": 1520999430, + "relevancy_score": 8012, + "_tags": [ + "json array" + ], + "objectID": "16582136", + "_highlightResult": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hacker News1": [ + { + "startTime": 1676891386343, + "executionTime": 3784, + "source": [ + { + "previousNode": "Hacker News" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 16582136, + "created_at": "2018-03-14T03:50:30.000Z", + "created_at_i": 1520999430, + "type": "story", + "author": "Cogito", + "title": "Stephen Hawking has died", + "url": "http://www.bbc.com/news/uk-43396008", + "text": { + "object": true + }, + "points": 6015, + "parent_id": { + "object": true + }, + "story_id": { + "object": true + }, + "options": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hacker News2": [ + { + "startTime": 1676891390129, + "executionTime": 598, + "source": [ + { + "previousNode": "Hacker News1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 119207, + "username": "Cogito", + "about": "You can get me at andrew.ardill at gmail.", + "karma": 4263, + "created_at": "2012-04-24T06:32:57.000Z", + "avg": 3.52273, + "delay": { + "object": true + }, + "submitted": 745, + "updated_at": "2022-12-06T03:45:32.000Z", + "submission_count": 24, + "comment_count": 720, + "created_at_i": 1335249177, + "objectID": "Cogito" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Hacker News2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:45.637Z", + "stoppedAt": "2023-02-20T11:09:50.728Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/51-snapshot.json b/test-workflows/snapshots/51-snapshot.json new file mode 100644 index 0000000000..b3e3213fa8 --- /dev/null +++ b/test-workflows/snapshots/51-snapshot.json @@ -0,0 +1,644 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1710331931146, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify": [ + { + "startTime": 1710331931146, + "executionTime": 393, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981b8d52242d1a6a5092", + "name": "TestProject created Wed, 13 Mar 2024 12:12:11 GMT", + "hourlyRate": { + "object": true + }, + "clientId": "", + "workspaceId": "60335ad3f24e660123d7fdee", + "billable": true, + "memberships": [ + "json array" + ], + "color": "#8BC34A", + "estimate": { + "object": true + }, + "archived": false, + "duration": "PT0S", + "clientName": "", + "note": "", + "costRate": { + "object": true + }, + "timeEstimate": { + "object": true + }, + "budgetEstimate": { + "object": true + }, + "template": false, + "public": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify5": [ + { + "startTime": 1710331931540, + "executionTime": 190, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981be8273c7a4c5e6647", + "name": "TestTag0.9326327500236014", + "workspaceId": "60335ad3f24e660123d7fdee", + "archived": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify9": [ + { + "startTime": 1710331931730, + "executionTime": 157, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981ba75a0777c651975b", + "description": { + "object": true + }, + "tagIds": { + "object": true + }, + "userId": "60335ad2f24e660123d7fdeb", + "billable": false, + "taskId": { + "object": true + }, + "projectId": { + "object": true + }, + "timeInterval": { + "object": true + }, + "workspaceId": "60335ad3f24e660123d7fdee", + "isLocked": false, + "customFieldValues": [ + "json array" + ], + "type": "REGULAR", + "kioskId": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify1": [ + { + "startTime": 1710331931887, + "executionTime": 307, + "source": [ + { + "previousNode": "Clockify" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981b8d52242d1a6a5092", + "name": "Updated TestProject created Wed, 13 Mar 2024 12:12:11 GMT", + "hourlyRate": { + "object": true + }, + "clientId": "", + "workspaceId": "60335ad3f24e660123d7fdee", + "billable": false, + "memberships": [ + "json array" + ], + "color": "#8BC34A", + "estimate": { + "object": true + }, + "archived": false, + "duration": "PT0S", + "clientName": "", + "note": "", + "costRate": { + "object": true + }, + "timeEstimate": { + "object": true + }, + "budgetEstimate": { + "object": true + }, + "template": false, + "public": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second": [ + { + "startTime": 1710331932194, + "executionTime": 503, + "source": [ + { + "previousNode": "Clockify5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981be8273c7a4c5e6647", + "name": "TestTag0.9326327500236014", + "workspaceId": "60335ad3f24e660123d7fdee", + "archived": false + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Clockify10": [ + { + "startTime": 1710331932697, + "executionTime": 339, + "source": [ + { + "previousNode": "Clockify9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981ba75a0777c651975b", + "description": "Updated time entry", + "tagIds": { + "object": true + }, + "userId": "60335ad2f24e660123d7fdeb", + "billable": false, + "taskId": { + "object": true + }, + "projectId": { + "object": true + }, + "timeInterval": { + "object": true + }, + "workspaceId": "60335ad3f24e660123d7fdee", + "isLocked": false, + "customFieldValues": [ + "json array" + ], + "type": "REGULAR", + "kioskId": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify2": [ + { + "startTime": 1710331933037, + "executionTime": 227, + "source": [ + { + "previousNode": "Clockify1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981b8d52242d1a6a5092", + "name": "Updated TestProject created Wed, 13 Mar 2024 12:12:11 GMT", + "hourlyRate": { + "object": true + }, + "clientId": "", + "workspaceId": "60335ad3f24e660123d7fdee", + "billable": false, + "memberships": [ + "json array" + ], + "color": "#8BC34A", + "estimate": { + "object": true + }, + "archived": false, + "duration": "PT0S", + "clientName": "", + "note": "", + "costRate": { + "object": true + }, + "timeEstimate": { + "object": true + }, + "budgetEstimate": { + "object": true + }, + "template": false, + "public": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify6": [ + { + "startTime": 1710331933264, + "executionTime": 341, + "source": [ + { + "previousNode": "Sleep 0.5 second" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981be8273c7a4c5e6647", + "name": "UpdatedTag0.6688306691795847", + "workspaceId": "60335ad3f24e660123d7fdee", + "archived": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify11": [ + { + "startTime": 1710331933605, + "executionTime": 241, + "source": [ + { + "previousNode": "Clockify10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "65f1981ba75a0777c651975b", + "description": "Updated time entry", + "tagIds": { + "object": true + }, + "userId": "60335ad2f24e660123d7fdeb", + "billable": false, + "taskId": { + "object": true + }, + "projectId": { + "object": true + }, + "workspaceId": "60335ad3f24e660123d7fdee", + "timeInterval": { + "object": true + }, + "customFieldValues": [ + "json array" + ], + "type": "REGULAR", + "kioskId": { + "object": true + }, + "hourlyRate": { + "object": true + }, + "costRate": { + "object": true + }, + "isLocked": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify3": [ + { + "startTime": 1710331933846, + "executionTime": 308, + "source": [ + { + "previousNode": "Clockify2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "60bdd9a66c24294f3e5f77b3", + "name": "TestProject created Mon, 07 Jun 2021 08:32:37 GMT", + "hourlyRate": { + "object": true + }, + "clientId": "", + "workspaceId": "60335ad3f24e660123d7fdee", + "billable": true, + "memberships": [ + "json array" + ], + "color": "#00BCD4", + "estimate": { + "object": true + }, + "archived": false, + "duration": "PT0S", + "clientName": "", + "note": "", + "costRate": { + "object": true + }, + "timeEstimate": { + "object": true + }, + "budgetEstimate": { + "object": true + }, + "template": false, + "public": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify7": [ + { + "startTime": 1710331934154, + "executionTime": 170, + "source": [ + { + "previousNode": "Clockify6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "60bdd90f8b25e0206c07a554", + "name": "TestTag", + "workspaceId": "60335ad3f24e660123d7fdee", + "archived": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify12": [ + { + "startTime": 1710331934324, + "executionTime": 148, + "source": [ + { + "previousNode": "Clockify11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify4": [ + { + "startTime": 1710331934472, + "executionTime": 0, + "source": [ + { + "previousNode": "Clockify3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "60bdd9a66c24294f3e5f77b3", + "name": "TestProject created Mon, 07 Jun 2021 08:32:37 GMT", + "hourlyRate": { + "object": true + }, + "clientId": "", + "workspaceId": "60335ad3f24e660123d7fdee", + "billable": true, + "memberships": [ + "json array" + ], + "color": "#00BCD4", + "estimate": { + "object": true + }, + "archived": false, + "duration": "PT0S", + "clientName": "", + "note": "", + "costRate": { + "object": true + }, + "timeEstimate": { + "object": true + }, + "budgetEstimate": { + "object": true + }, + "template": false, + "public": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Clockify8": [ + { + "startTime": 1710331934472, + "executionTime": 157, + "source": [ + { + "previousNode": "Clockify7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Clockify8" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-03-13T12:12:11.145Z", + "stoppedAt": "2024-03-13T12:12:14.629Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/52-snapshot.json b/test-workflows/snapshots/52-snapshot.json new file mode 100644 index 0000000000..5f6630348d --- /dev/null +++ b/test-workflows/snapshots/52-snapshot.json @@ -0,0 +1,629 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344004590, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda11": [ + { + "startTime": 1747344004591, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 2921, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "table-K1_z3jl_HH", + "type": "table", + "tableType": "view", + "href": "https://coda.io/apis/v1/docs/2-5DWWeFZp/tables/table-K1_z3jl_HH", + "browserLink": "https://coda.io/d/_d2-5DWWeFZp#_tutable-K1_z3jl_HH", + "name": "Table View", + "parent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda4": [ + { + "startTime": 1747344007512, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1160, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "c-XvglOYNTU8", + "type": "column", + "name": "number", + "href": "https://coda.io/apis/v1/docs/2-5DWWeFZp/tables/grid-lDqTU2W4nP/columns/c-XvglOYNTU8", + "display": true, + "format": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda2": [ + { + "startTime": 1747344008672, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 207, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "f-nyztATalRJ", + "type": "formula", + "href": "https://coda.io/apis/v1/docs/2-5DWWeFZp/formulas/f-nyztATalRJ", + "name": "Test", + "parent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda": [ + { + "startTime": 1747344008879, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 996, + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ], + "Coda12": [ + { + "startTime": 1747344009875, + "executionIndex": 5, + "source": [ + { + "previousNode": "Coda11" + } + ], + "hints": [], + "executionTime": 462, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "table-FTj1L0rh08", + "type": "table", + "tableType": "view", + "href": "https://coda.io/apis/v1/docs/2-5DWWeFZp/tables/table-FTj1L0rh08", + "browserLink": "https://coda.io/d/_d2-5DWWeFZp#_tutable-FTj1L0rh08", + "parent": { + "object": true + }, + "parentTable": { + "object": true + }, + "name": "View of Table 1", + "displayColumn": { + "object": true + }, + "rowCount": 121, + "createdAt": "2021-02-22T08:40:15.720Z", + "updatedAt": "2021-02-22T08:40:15.720Z", + "viewId": "v-k0w5NxL7Wt", + "sorts": [ + "json array" + ], + "layout": "masterDetail" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda5": [ + { + "startTime": 1747344010337, + "executionIndex": 6, + "source": [ + { + "previousNode": "Coda4" + } + ], + "hints": [], + "executionTime": 235, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "c-XvglOYNTU8", + "type": "column", + "name": "number", + "href": "https://coda.io/apis/v1/docs/2-5DWWeFZp/tables/grid-lDqTU2W4nP/columns/c-XvglOYNTU8", + "display": true, + "format": { + "object": true + }, + "parent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda3": [ + { + "startTime": 1747344010572, + "executionIndex": 7, + "source": [ + { + "previousNode": "Coda2" + } + ], + "hints": [], + "executionTime": 2452, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "f-nyztATalRJ", + "type": "formula", + "href": "https://coda.io/apis/v1/docs/2-5DWWeFZp/formulas/f-nyztATalRJ", + "name": "Test", + "value": "", + "parent": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda13": [ + { + "startTime": 1747344013024, + "executionIndex": 8, + "source": [ + { + "previousNode": "Coda12" + } + ], + "hints": [], + "executionTime": 320, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "c-XvglOYNTU8", + "type": "column", + "name": "number", + "href": "https://coda.io/apis/v1/docs/2-5DWWeFZp/tables/grid-lDqTU2W4nP/columns/c-XvglOYNTU8", + "display": true, + "format": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda6": [ + { + "startTime": 1747344013344, + "executionIndex": 9, + "source": [ + { + "previousNode": "Coda5" + } + ], + "hints": [], + "executionTime": 316, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "i-62srMH_hOe", + "number": 101, + "sum": 0, + "Column 3": "" + }, + "pairedItem": [ + { + "item": 0 + } + ] + } + ] + ] + } + } + ], + "Coda14": [ + { + "startTime": 1747344013660, + "executionIndex": 10, + "source": [ + { + "previousNode": "Coda13" + } + ], + "hints": [], + "executionTime": 2614, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "i-62srMH_hOe", + "number": 101, + "sum": 0, + "Column 3": "" + }, + "pairedItem": [ + { + "item": 0 + } + ] + } + ] + ] + } + } + ], + "Coda7": [ + { + "startTime": 1747344016274, + "executionIndex": 11, + "source": [ + { + "previousNode": "Coda6" + } + ], + "hints": [], + "executionTime": 259, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "i-62srMH_hOe", + "number": 101, + "sum": 0, + "Column 3": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set1": [ + { + "startTime": 1747344016533, + "executionIndex": 12, + "source": [ + { + "previousNode": "Coda14" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "number": 102, + "sum": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1747344016533, + "executionIndex": 13, + "source": [ + { + "previousNode": "Coda7" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "number": 101, + "sum": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda15": [ + { + "startTime": 1747344016533, + "executionIndex": 14, + "source": [ + { + "previousNode": "Set1" + } + ], + "hints": [], + "executionTime": 643, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "number": 102, + "sum": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda8": [ + { + "startTime": 1747344017176, + "executionIndex": 15, + "source": [ + { + "previousNode": "Set" + } + ], + "hints": [], + "executionTime": 300, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "number": 101, + "sum": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda16": [ + { + "startTime": 1747344017476, + "executionIndex": 16, + "source": [ + { + "previousNode": "Coda15" + } + ], + "hints": [], + "executionTime": 1373, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "rowId": "i-62srMH_hOe", + "columnId": "c-hTB8QwFtUS", + "requestId": "mutate:df2e7520-d748-457f-ae97-81138ebc1f0c" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda10": [ + { + "startTime": 1747344018849, + "executionIndex": 17, + "source": [ + { + "previousNode": "Coda8" + } + ], + "hints": [], + "executionTime": 453, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "rowId": "i-62srMH_hOe", + "columnId": "c-hTB8QwFtUS", + "requestId": "mutate:49bd58a9-b483-4b84-8627-0fef4dfcdbf6" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Coda9": [ + { + "startTime": 1747344019302, + "executionIndex": 18, + "source": [ + { + "previousNode": "Coda10" + } + ], + "hints": [], + "executionTime": 4629, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "rowId": "i-62srMH_hOe", + "columnId": "c-hTB8QwFtUS", + "requestId": "mutate:49bd58a9-b483-4b84-8627-0fef4dfcdbf6" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Coda9" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:04.590Z", + "stoppedAt": "2025-05-15T21:20:23.931Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/53-snapshot.json b/test-workflows/snapshots/53-snapshot.json new file mode 100644 index 0000000000..01735600e2 --- /dev/null +++ b/test-workflows/snapshots/53-snapshot.json @@ -0,0 +1,411 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344006713, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit": [ + { + "startTime": 1747344006713, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 542, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 985256, + "name": "ck_field_985256_testfield05605810562389708", + "key": "testfield0_5605810562389708", + "label": "testField0.5605810562389708" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit4": [ + { + "startTime": 1747344007255, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 467, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 2059113, + "name": "TestForm", + "created_at": "2021-02-22T09:16:09.000Z", + "type": "embed", + "format": "inline", + "embed_js": "https://chipper-musician-5875.kit.com/bec913a630/index.js", + "embed_url": "https://chipper-musician-5875.kit.com/bec913a630", + "archived": false, + "uid": "bec913a630" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit1": [ + { + "startTime": 1747344007722, + "executionIndex": 3, + "source": [ + { + "previousNode": "ConvertKit" + } + ], + "hints": [], + "executionTime": 455, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 213135, + "name": "ck_field_213135_testfield", + "key": "testfield", + "label": "testField" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit5": [ + { + "startTime": 1747344008177, + "executionIndex": 4, + "source": [ + { + "previousNode": "ConvertKit4" + } + ], + "hints": [], + "executionTime": 586, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 10406664929, + "state": "inactive", + "created_at": "2025-05-15T21:20:08.000Z", + "source": "API::V3::SubscriptionsController (external)", + "referrer": { + "object": true + }, + "subscribable_id": 2059113, + "subscribable_type": "form", + "subscriber": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit2": [ + { + "startTime": 1747344008763, + "executionIndex": 5, + "source": [ + { + "previousNode": "ConvertKit1" + } + ], + "hints": [], + "executionTime": 490, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit7": [ + { + "startTime": 1747344009253, + "executionIndex": 6, + "source": [ + { + "previousNode": "ConvertKit5" + } + ], + "hints": [], + "executionTime": 507, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 7925787, + "name": "tag1747344009258", + "created_at": "2025-05-15T21:20:09.000Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit3": [ + { + "startTime": 1747344009760, + "executionIndex": 7, + "source": [ + { + "previousNode": "ConvertKit2" + } + ], + "hints": [], + "executionTime": 505, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit8": [ + { + "startTime": 1747344010265, + "executionIndex": 8, + "source": [ + { + "previousNode": "ConvertKit7" + } + ], + "hints": [], + "executionTime": 1218, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 2205755, + "name": "tag1613985759319", + "created_at": "2021-02-22T09:22:40.000Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit9": [ + { + "startTime": 1747344011483, + "executionIndex": 9, + "source": [ + { + "previousNode": "ConvertKit8" + } + ], + "hints": [], + "executionTime": 511, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 10406665311, + "state": "active", + "created_at": "2025-05-15T21:20:11.000Z", + "source": "API::V3::SubscriptionsController (external)", + "referrer": { + "object": true + }, + "subscribable_id": 7925787, + "subscribable_type": "tag", + "subscriber": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit10": [ + { + "startTime": 1747344011994, + "executionIndex": 10, + "source": [ + { + "previousNode": "ConvertKit9" + } + ], + "hints": [], + "executionTime": 450, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": [ + { + "item": 0, + "input": 0 + } + ] + } + ] + ] + } + } + ], + "ConvertKit11": [ + { + "startTime": 1747344012444, + "executionIndex": 11, + "source": [ + { + "previousNode": "ConvertKit10" + } + ], + "hints": [], + "executionTime": 464, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": 7925787, + "name": "tag1747344009258", + "created_at": "2025-05-15T21:20:09.000Z" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ConvertKit6": [ + { + "startTime": 1747344012908, + "executionIndex": 12, + "source": [ + { + "previousNode": "ConvertKit11" + } + ], + "hints": [], + "executionTime": 529, + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "ConvertKit6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:06.712Z", + "stoppedAt": "2025-05-15T21:20:13.437Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/55-snapshot.json b/test-workflows/snapshots/55-snapshot.json new file mode 100644 index 0000000000..72b0d1b5a7 --- /dev/null +++ b/test-workflows/snapshots/55-snapshot.json @@ -0,0 +1,201 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344007024, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hunter": [ + { + "startTime": 1747344007024, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 197, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "value": "ben@n8n.io", + "type": "personal", + "confidence": 99, + "sources": [ + "json array" + ], + "first_name": "Ben", + "last_name": "Kiziltug", + "position": "Vice President of Sales", + "position_raw": "VP Sales", + "seniority": "executive", + "department": "sales", + "linkedin": "https://www.linkedin.com/in/benkiziltug", + "twitter": { + "object": true + }, + "phone_number": { + "object": true + }, + "verification": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hunter1": [ + { + "startTime": 1747344007221, + "executionIndex": 2, + "source": [ + { + "previousNode": "Hunter" + } + ], + "hints": [], + "executionTime": 372, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "first_name": { + "object": true + }, + "last_name": { + "object": true + }, + "email": { + "object": true + }, + "score": { + "object": true + }, + "domain": "n8n.io", + "accept_all": { + "object": true + }, + "position": { + "object": true + }, + "twitter": { + "object": true + }, + "linkedin_url": { + "object": true + }, + "phone_number": { + "object": true + }, + "company": { + "object": true + }, + "sources": [ + "json array" + ], + "verification": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Hunter2": [ + { + "startTime": 1747344007593, + "executionIndex": 3, + "source": [ + { + "previousNode": "Hunter1" + } + ], + "hints": [], + "executionTime": 250, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "valid", + "result": "deliverable", + "_deprecation_notice": "Using result is deprecated, use status instead", + "score": 90, + "email": "nodeqa@n8n.io", + "regexp": true, + "gibberish": false, + "disposable": false, + "webmail": false, + "mx_records": true, + "smtp_server": true, + "smtp_check": true, + "accept_all": false, + "block": false, + "sources": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Hunter2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:07.024Z", + "stoppedAt": "2025-05-15T21:20:07.843Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/58-snapshot.json b/test-workflows/snapshots/58-snapshot.json new file mode 100644 index 0000000000..af784cea7f --- /dev/null +++ b/test-workflows/snapshots/58-snapshot.json @@ -0,0 +1,314 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344007863, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Todoist": [ + { + "startTime": 1747344007863, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 841, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9167050615", + "assigner_id": { + "object": true + }, + "assignee_id": { + "object": true + }, + "project_id": "2259097055", + "section_id": { + "object": true + }, + "parent_id": { + "object": true + }, + "order": 21, + "content": "Test Task", + "description": "", + "is_completed": false, + "labels": [ + "json array" + ], + "priority": 1, + "comment_count": 0, + "creator_id": "32694069", + "created_at": "2025-05-15T21:20:08.213266Z", + "due": { + "object": true + }, + "url": "https://app.todoist.com/app/task/9167050615", + "duration": { + "object": true + }, + "deadline": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Todoist1": [ + { + "startTime": 1747344008704, + "executionIndex": 2, + "source": [ + { + "previousNode": "Todoist" + } + ], + "hints": [], + "executionTime": 248, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "9167050615", + "assigner_id": { + "object": true + }, + "assignee_id": { + "object": true + }, + "project_id": "2259097055", + "section_id": { + "object": true + }, + "parent_id": { + "object": true + }, + "order": 21, + "content": "Test Task", + "description": "", + "is_completed": false, + "labels": [ + "json array" + ], + "priority": 1, + "comment_count": 0, + "creator_id": "32694069", + "created_at": "2025-05-15T21:20:08.213266Z", + "due": { + "object": true + }, + "url": "https://app.todoist.com/app/task/9167050615", + "duration": { + "object": true + }, + "deadline": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Todoist2": [ + { + "startTime": 1747344008952, + "executionIndex": 3, + "source": [ + { + "previousNode": "Todoist1" + } + ], + "hints": [], + "executionTime": 521, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Todoist3": [ + { + "startTime": 1747344009473, + "executionIndex": 4, + "source": [ + { + "previousNode": "Todoist2" + } + ], + "hints": [], + "executionTime": 654, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Todoist5": [ + { + "startTime": 1747344010127, + "executionIndex": 5, + "source": [ + { + "previousNode": "Todoist3" + } + ], + "hints": [], + "executionTime": 471, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "4610234385", + "assigner_id": { + "object": true + }, + "assignee_id": { + "object": true + }, + "project_id": "2259097055", + "section_id": { + "object": true + }, + "parent_id": { + "object": true + }, + "order": 1, + "content": "Test Task", + "description": "", + "is_completed": false, + "labels": [ + "json array" + ], + "priority": 1, + "comment_count": 0, + "creator_id": "32694069", + "created_at": "2021-02-25T12:23:24.274629Z", + "due": { + "object": true + }, + "url": "https://app.todoist.com/app/task/4610234385", + "duration": { + "object": true + }, + "deadline": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Todoist4": [ + { + "startTime": 1747344010598, + "executionIndex": 6, + "source": [ + { + "previousNode": "Todoist5" + } + ], + "hints": [], + "executionTime": 487, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Todoist4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:07.863Z", + "stoppedAt": "2025-05-15T21:20:11.085Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/6-snapshot.json b/test-workflows/snapshots/6-snapshot.json new file mode 100644 index 0000000000..350ae97687 --- /dev/null +++ b/test-workflows/snapshots/6-snapshot.json @@ -0,0 +1,177 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344008477, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set files": [ + { + "startTime": 1747344008477, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 9, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "filename": "n8n-logo.png" + }, + "binary": { + "binaryfile": { + "mimeType": "image/png", + "data": "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", + "fileName": "n8n-logo.png" + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "filename": "05-versions-space.pdf" + }, + "binary": { + "binaryfile": { + "mimeType": "application/pdf", + "data": "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3iVUEWUxQu8Tqou1xDr0TqGR2ExsJbYTO4rdxD7l0TMKxSJxojhNnCU+LtriAnGxuFRcIa4RN4hviJsv1nddIR/7zXgoAawCVgUTwSTwElAGLwWDYAiMgAqogTpogFHwcvAK8EqwOvgn8CqwJlgLvA5MAa8H64I3gDeC9cEG4E1gI7AJ2BRsBt4KtgHbgneC7cEOYCrYGUwDu4BdwW5gd7AH2BPsBfYG+4B9wX7g3WB/cAA4EL/QPwl+B34P/hs8Bf4A/sgYJaAAiqAHlEAv5R9On8tpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNr8w+lzOm3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW384fU6nHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGnnD6fP6bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047f7enb4Yo7jROmcQ9oQIowR6QR9YBawKJoJ+8BJQBgNgEAyDEVABVdAAo+BlYDXwcvBKsDpYA7wGTAavBeuA14HXg3XBG8AbwfrgTWAjsDHYBGwG3gq2AFuCt4OtwTvAduCdYHvwLrADmAp2BDuBncE0sAvYFewGdgd7gIgfHMW2jSaA2MJRbOEotnA0CcQWjmILRy8FsZ2j2M7REMi29h9On8tpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcPp335++SE7bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG03b59+GIwhFaHLHY6Ox6hr4CaTpNBZJDGpAFZDFZSlYg8uMbFX6peoKcEqTy54ZrCXWEWmSFUJ9so1ObCq0wnnMPemxkCDls9GP6V0TL2CZMpsfH44JL52K5p4Wlwiq69Dr239vQU6GFtBe9KLSSPWESmUci+A/E5fgPRAr+91AX/3u4Ef97qE9bXorvhUpZ1E/KPLAYHAnafL1ewrt80AULwPngPMyVx8ty+DIO3xazMfU5sAh8Bp+M4/On8/lMnr6ENJfFQkX6AOZaCY7DtAks3ibqmM1rno1RwtkcsdrGY3oR/3wmT0t4OpvFKkUL8D4W1RMp1i2q4l0smmcKiZBmpBWeEe5FBpIMko1IEUV4aiwW27NsH7PnJe4JDyMknB0ezQwJD2QRXikR+zfM+sDs3dDyNDY1GxwCTgRngRMos1BCFi8hC0tm8RKyeAlZKCELJWShhCyU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kYPrt5OXtxSXaxZf+jNV8/IY1Cx6nMM59q+xJrj4U28LwUPKkqiMLlSdsLBPG+x1W7usXXdCsD8qLLTNy2LdXqFSjuSk0+CydwCDYzt/8yB/3Sv+qBSlj27BEMh/ABW4qmINCmVuZHN0cmVhbQ0KZW5kb2JqDQoyMCAwIG9iag0KPDwvVHlwZS9YUmVmL1NpemUgMjAvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dIC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDgxPj4NCnN0cmVhbQ0KeJxjYACC//8ZgaQgAwOIqoVQW8EU42EwxcwPobaDKZZlEOo2mGIVYGBgAmoQYGCGUCwQihVCMUEoqBI2kIZfMB4jkMfeATaFI5eBAQACHwkSDQplbmRzdHJlYW0NCmVuZG9iag0KeHJlZg0KMCAyMQ0KMDAwMDAwMDAxMCA2NTUzNSBmDQowMDAwMDAwMDE3IDAwMDAwIG4NCjAwMDAwMDAxMjUgMDAwMDAgbg0KMDAwMDAwMDE4MSAwMDAwMCBuDQowMDAwMDAwNDUxIDAwMDAwIG4NCjAwMDAwMDA3ODMgMDAwMDAgbg0KMDAwMDAwMDk1MSAwMDAwMCBuDQowMDAwMDAxMTkwIDAwMDAwIG4NCjAwMDAwMDEyNDMgMDAwMDAgbg0KMDAwMDAwMTI5NiAwMDAwMCBuDQowMDAwMDAwMDExIDY1NTM1IGYNCjAwMDAwMDAwMTIgNjU1MzUgZg0KMDAwMDAwMDAxMyA2NTUzNSBmDQowMDAwMDAwMDE0IDY1NTM1IGYNCjAwMDAwMDAwMTUgNjU1MzUgZg0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMTkyOCAwMDAwMCBuDQowMDAwMDAyMTU3IDAwMDAwIG4NCjAwMDAxODU1MTkgMDAwMDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSAyMS9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dID4+DQpzdGFydHhyZWYNCjE4NTc5OQ0KJSVFT0YNCnhyZWYNCjAgMA0KdHJhaWxlcg0KPDwvU2l6ZSAyMS9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dIC9QcmV2IDE4NTc5OS9YUmVmU3RtIDE4NTUxOT4+DQpzdGFydHhyZWYNCjE4NjM3Ng0KJSVFT0Y=", + "fileName": "05-versions-space.pdf" + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "filename": "n8n-screenshot.png" + }, + "binary": { + "binaryfile": { + "mimeType": "image/png", + "data": "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", + "fileName": "n8n-screenshot.png" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Write Binary File": [ + { + "startTime": 1747344008486, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set files" + } + ], + "hints": [], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "filename": "n8n-logo.png", + "fileName": "/tmp/n8n-logo.png" + }, + "pairedItem": { + "item": 0 + }, + "binary": { + "binaryfile": { + "mimeType": "image/png", + "data": "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", + "fileName": "n8n-logo.png" + } + } + }, + { + "json": { + "filename": "05-versions-space.pdf", + "fileName": "/tmp/05-versions-space.pdf" + }, + "pairedItem": { + "item": 1 + }, + "binary": { + "binaryfile": { + "mimeType": "application/pdf", + "data": "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3iVUEWUxQu8Tqou1xDr0TqGR2ExsJbYTO4rdxD7l0TMKxSJxojhNnCU+LtriAnGxuFRcIa4RN4hviJsv1nddIR/7zXgoAawCVgUTwSTwElAGLwWDYAiMgAqogTpogFHwcvAK8EqwOvgn8CqwJlgLvA5MAa8H64I3gDeC9cEG4E1gI7AJ2BRsBt4KtgHbgneC7cEOYCrYGUwDu4BdwW5gd7AH2BPsBfYG+4B9wX7g3WB/cAA4EL/QPwl+B34P/hs8Bf4A/sgYJaAAiqAHlEAv5R9On8tpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNr8w+lzOm3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW384fU6nHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGnnD6fP6bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047f7enb4Yo7jROmcQ9oQIowR6QR9YBawKJoJ+8BJQBgNgEAyDEVABVdAAo+BlYDXwcvBKsDpYA7wGTAavBeuA14HXg3XBG8AbwfrgTWAjsDHYBGwG3gq2AFuCt4OtwTvAduCdYHvwLrADmAp2BDuBncE0sAvYFewGdgd7gIgfHMW2jSaA2MJRbOEotnA0CcQWjmILRy8FsZ2j2M7REMi29h9On8tpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcPp335++SE7bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG03b59+GIwhFaHLHY6Ox6hr4CaTpNBZJDGpAFZDFZSlYg8uMbFX6peoKcEqTy54ZrCXWEWmSFUJ9so1ObCq0wnnMPemxkCDls9GP6V0TL2CZMpsfH44JL52K5p4Wlwiq69Dr239vQU6GFtBe9KLSSPWESmUci+A/E5fgPRAr+91AX/3u4Ef97qE9bXorvhUpZ1E/KPLAYHAnafL1ewrt80AULwPngPMyVx8ty+DIO3xazMfU5sAh8Bp+M4/On8/lMnr6ENJfFQkX6AOZaCY7DtAks3ibqmM1rno1RwtkcsdrGY3oR/3wmT0t4OpvFKkUL8D4W1RMp1i2q4l0smmcKiZBmpBWeEe5FBpIMko1IEUV4aiwW27NsH7PnJe4JDyMknB0ezQwJD2QRXikR+zfM+sDs3dDyNDY1GxwCTgRngRMos1BCFi8hC0tm8RKyeAlZKCELJWShhCyU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kYPrt5OXtxSXaxZf+jNV8/IY1Cx6nMM59q+xJrj4U28LwUPKkqiMLlSdsLBPG+x1W7usXXdCsD8qLLTNy2LdXqFSjuSk0+CydwCDYzt/8yB/3Sv+qBSlj27BEMh/ABW4qmINCmVuZHN0cmVhbQ0KZW5kb2JqDQoyMCAwIG9iag0KPDwvVHlwZS9YUmVmL1NpemUgMjAvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dIC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDgxPj4NCnN0cmVhbQ0KeJxjYACC//8ZgaQgAwOIqoVQW8EU42EwxcwPobaDKZZlEOo2mGIVYGBgAmoQYGCGUCwQihVCMUEoqBI2kIZfMB4jkMfeATaFI5eBAQACHwkSDQplbmRzdHJlYW0NCmVuZG9iag0KeHJlZg0KMCAyMQ0KMDAwMDAwMDAxMCA2NTUzNSBmDQowMDAwMDAwMDE3IDAwMDAwIG4NCjAwMDAwMDAxMjUgMDAwMDAgbg0KMDAwMDAwMDE4MSAwMDAwMCBuDQowMDAwMDAwNDUxIDAwMDAwIG4NCjAwMDAwMDA3ODMgMDAwMDAgbg0KMDAwMDAwMDk1MSAwMDAwMCBuDQowMDAwMDAxMTkwIDAwMDAwIG4NCjAwMDAwMDEyNDMgMDAwMDAgbg0KMDAwMDAwMTI5NiAwMDAwMCBuDQowMDAwMDAwMDExIDY1NTM1IGYNCjAwMDAwMDAwMTIgNjU1MzUgZg0KMDAwMDAwMDAxMyA2NTUzNSBmDQowMDAwMDAwMDE0IDY1NTM1IGYNCjAwMDAwMDAwMTUgNjU1MzUgZg0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMTkyOCAwMDAwMCBuDQowMDAwMDAyMTU3IDAwMDAwIG4NCjAwMDAxODU1MTkgMDAwMDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSAyMS9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dID4+DQpzdGFydHhyZWYNCjE4NTc5OQ0KJSVFT0YNCnhyZWYNCjAgMA0KdHJhaWxlcg0KPDwvU2l6ZSAyMS9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dIC9QcmV2IDE4NTc5OS9YUmVmU3RtIDE4NTUxOT4+DQpzdGFydHhyZWYNCjE4NjM3Ng0KJSVFT0Y=", + "fileName": "05-versions-space.pdf" + } + } + }, + { + "json": { + "filename": "n8n-screenshot.png", + "fileName": "/tmp/n8n-screenshot.png" + }, + "pairedItem": { + "item": 2 + }, + "binary": { + "binaryfile": { + "mimeType": "image/png", + "data": "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", + "fileName": "n8n-screenshot.png" + } + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Write Binary File" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:08.477Z", + "stoppedAt": "2025-05-15T21:20:08.489Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/60-snapshot.json b/test-workflows/snapshots/60-snapshot.json new file mode 100644 index 0000000000..c5175a2306 --- /dev/null +++ b/test-workflows/snapshots/60-snapshot.json @@ -0,0 +1,426 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1734619806689, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Taiga": [ + { + "hints": [], + "startTime": 1734619806690, + "executionTime": 895, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tags": [ + "json array" + ], + "due_date": { + "object": true + }, + "due_date_reason": "", + "due_date_status": "not_set", + "attachments": [ + "json array" + ], + "project": 399742, + "project_extra_info": { + "object": true + }, + "status": 2801529, + "status_extra_info": { + "object": true + }, + "assigned_to": { + "object": true + }, + "assigned_to_extra_info": { + "object": true + }, + "owner": 470482, + "owner_extra_info": { + "object": true + }, + "is_watcher": false, + "total_watchers": 0, + "is_voter": false, + "total_voters": 0, + "id": 1880291, + "ref": 1927, + "severity": 1996617, + "priority": 1201587, + "type": 1206845, + "milestone": { + "object": true + }, + "created_date": "2024-12-19T14:50:07.433Z", + "modified_date": "2024-12-19T14:50:07.438Z", + "finished_date": { + "object": true + }, + "subject": "Test", + "external_reference": { + "object": true + }, + "version": 1, + "watchers": [ + "json array" + ], + "is_blocked": false, + "blocked_note": "", + "is_closed": false, + "comment": "", + "generated_user_stories": { + "object": true + }, + "blocked_note_html": "", + "description": "TestIssue", + "description_html": "

TestIssue

" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Taiga1": [ + { + "hints": [], + "startTime": 1734619807585, + "executionTime": 1712, + "source": [ + { + "previousNode": "Taiga" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tags": [ + "json array" + ], + "due_date": { + "object": true + }, + "due_date_reason": "", + "due_date_status": "not_set", + "attachments": [ + "json array" + ], + "project": 399742, + "project_extra_info": { + "object": true + }, + "status": 2801529, + "status_extra_info": { + "object": true + }, + "assigned_to": { + "object": true + }, + "assigned_to_extra_info": { + "object": true + }, + "owner": 470482, + "owner_extra_info": { + "object": true + }, + "is_watcher": false, + "total_watchers": 0, + "is_voter": false, + "total_voters": 0, + "id": 1880291, + "ref": 1927, + "severity": 1996617, + "priority": 1201587, + "type": 1206845, + "milestone": { + "object": true + }, + "created_date": "2024-12-19T14:50:07.433Z", + "modified_date": "2024-12-19T14:50:09.170Z", + "finished_date": { + "object": true + }, + "subject": "UpdatedTest", + "external_reference": { + "object": true + }, + "version": 2, + "watchers": [ + "json array" + ], + "is_blocked": false, + "blocked_note": "", + "is_closed": false, + "comment": "", + "generated_user_stories": { + "object": true + }, + "blocked_note_html": "", + "description": "TestIssue", + "description_html": "

TestIssue

" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Taiga2": [ + { + "hints": [], + "startTime": 1734619809297, + "executionTime": 847, + "source": [ + { + "previousNode": "Taiga1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tags": [ + "json array" + ], + "due_date": { + "object": true + }, + "due_date_reason": "", + "due_date_status": "not_set", + "attachments": [ + "json array" + ], + "project": 399742, + "project_extra_info": { + "object": true + }, + "status": 2801529, + "status_extra_info": { + "object": true + }, + "assigned_to": { + "object": true + }, + "assigned_to_extra_info": { + "object": true + }, + "owner": 470482, + "owner_extra_info": { + "object": true + }, + "is_watcher": false, + "total_watchers": 0, + "is_voter": false, + "total_voters": 0, + "id": 1880291, + "ref": 1927, + "severity": 1996617, + "priority": 1201587, + "type": 1206845, + "milestone": { + "object": true + }, + "created_date": "2024-12-19T14:50:07.433Z", + "modified_date": "2024-12-19T14:50:09.170Z", + "finished_date": { + "object": true + }, + "subject": "UpdatedTest", + "external_reference": { + "object": true + }, + "version": 2, + "watchers": [ + "json array" + ], + "is_blocked": false, + "blocked_note": "", + "is_closed": false, + "comment": "", + "generated_user_stories": { + "object": true + }, + "blocked_note_html": "", + "description": "TestIssue", + "description_html": "

TestIssue

", + "neighbors": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Taiga3": [ + { + "hints": [], + "startTime": 1734619810144, + "executionTime": 918, + "source": [ + { + "previousNode": "Taiga2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tags": [ + "json array" + ], + "due_date": { + "object": true + }, + "due_date_reason": "", + "due_date_status": "not_set", + "attachments": [ + "json array" + ], + "project": 399742, + "project_extra_info": { + "object": true + }, + "status": 2801529, + "status_extra_info": { + "object": true + }, + "assigned_to": { + "object": true + }, + "assigned_to_extra_info": { + "object": true + }, + "owner": 470482, + "owner_extra_info": { + "object": true + }, + "is_watcher": false, + "total_watchers": 0, + "is_voter": false, + "total_voters": 0, + "id": 1880291, + "ref": 1927, + "severity": 1996617, + "priority": 1201587, + "type": 1206845, + "milestone": { + "object": true + }, + "created_date": "2024-12-19T14:50:07.433Z", + "modified_date": "2024-12-19T14:50:09.170Z", + "finished_date": { + "object": true + }, + "subject": "UpdatedTest", + "external_reference": { + "object": true + }, + "version": 2, + "watchers": [ + "json array" + ], + "is_blocked": false, + "blocked_note": "", + "is_closed": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Taiga4": [ + { + "hints": [], + "startTime": 1734619811062, + "executionTime": 997, + "source": [ + { + "previousNode": "Taiga3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Taiga4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2024-12-19T14:50:06.689Z", + "stoppedAt": "2024-12-19T14:50:12.059Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/61-snapshot.json b/test-workflows/snapshots/61-snapshot.json new file mode 100644 index 0000000000..81ec5475cd --- /dev/null +++ b/test-workflows/snapshots/61-snapshot.json @@ -0,0 +1,800 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344008506, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify": [ + { + "startTime": 1747344008506, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 86, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "external_urls": { + "object": true + }, + "followers": { + "object": true + }, + "genres": [ + "json array" + ], + "href": "https://api.spotify.com/v1/artists/0dwFxqYkvZLSA6U6XfQcDV", + "id": "0dwFxqYkvZLSA6U6XfQcDV", + "images": [ + "json array" + ], + "name": "Fairuz", + "popularity": 65, + "type": "artist", + "uri": "spotify:artist:0dwFxqYkvZLSA6U6XfQcDV" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify8": [ + { + "startTime": 1747344008592, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 289, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "collaborative": false, + "description": "null", + "external_urls": { + "object": true + }, + "href": "https://api.spotify.com/v1/playlists/4bH0XDDKQCIuE0pOECEjqu", + "id": "4bH0XDDKQCIuE0pOECEjqu", + "images": { + "object": true + }, + "name": "Playlist1747343948797", + "owner": { + "object": true + }, + "primary_color": { + "object": true + }, + "public": true, + "snapshot_id": "AAAAAUa4yHYgRLtKdnQXKpsqfHKJ0N1N", + "tracks": { + "object": true + }, + "type": "playlist", + "uri": "spotify:playlist:4bH0XDDKQCIuE0pOECEjqu" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify14": [ + { + "startTime": 1747344008881, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 80, + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ], + "Spotify17": [ + { + "startTime": 1747344008961, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 110, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "added_at": "2021-03-09T20:01:56Z", + "track": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify1": [ + { + "startTime": 1747344009071, + "executionIndex": 5, + "source": [ + { + "previousNode": "Spotify" + } + ], + "hints": [], + "executionTime": 125, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "album_type": "album", + "total_tracks": 9, + "available_markets": [ + "json array" + ], + "external_urls": { + "object": true + }, + "href": "https://api.spotify.com/v1/albums/5ZJnifXQ8ovGURQY7XhgCG", + "id": "5ZJnifXQ8ovGURQY7XhgCG", + "images": [ + "json array" + ], + "name": "Fauroziat فيروزيات (Instrumental)", + "release_date": "2024-12-21", + "release_date_precision": "day", + "type": "album", + "uri": "spotify:album:5ZJnifXQ8ovGURQY7XhgCG", + "artists": [ + "json array" + ], + "album_group": "album" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify3": [ + { + "startTime": 1747344009196, + "executionIndex": 6, + "source": [ + { + "previousNode": "Spotify" + } + ], + "hints": [], + "executionTime": 181, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "album": { + "object": true + }, + "artists": [ + "json array" + ], + "available_markets": [ + "json array" + ], + "disc_number": 1, + "duration_ms": 202997, + "explicit": false, + "external_ids": { + "object": true + }, + "external_urls": { + "object": true + }, + "href": "https://api.spotify.com/v1/tracks/1Xf9s0vxxGyiMHQDtxK9Cu", + "id": "1Xf9s0vxxGyiMHQDtxK9Cu", + "is_local": false, + "is_playable": true, + "name": "Konna Netlaka", + "popularity": 62, + "preview_url": "https://p.scdn.co/mp3-preview/43c539282f10c04afca6c696af461ca23fac47c8?cid=d6fc82a01ffb43538b33c4003257c758", + "track_number": 1, + "type": "track", + "uri": "spotify:track:1Xf9s0vxxGyiMHQDtxK9Cu" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify2": [ + { + "startTime": 1747344009377, + "executionIndex": 7, + "source": [ + { + "previousNode": "Spotify" + } + ], + "hints": [], + "executionTime": 126, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "external_urls": { + "object": true + }, + "followers": { + "object": true + }, + "genres": [ + "json array" + ], + "href": "https://api.spotify.com/v1/artists/1FcYCSOydUCgoauspPwypS", + "id": "1FcYCSOydUCgoauspPwypS", + "images": [ + "json array" + ], + "name": "Majida El Roumi", + "popularity": 49, + "type": "artist", + "uri": "spotify:artist:1FcYCSOydUCgoauspPwypS" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify9": [ + { + "startTime": 1747344009503, + "executionIndex": 8, + "source": [ + { + "previousNode": "Spotify8" + } + ], + "hints": [], + "executionTime": 252, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "collaborative": false, + "description": "null", + "external_urls": { + "object": true + }, + "followers": { + "object": true + }, + "href": "https://api.spotify.com/v1/playlists/4bH0XDDKQCIuE0pOECEjqu", + "id": "4bH0XDDKQCIuE0pOECEjqu", + "images": { + "object": true + }, + "name": "Playlist1747343948797", + "owner": { + "object": true + }, + "primary_color": { + "object": true + }, + "public": true, + "snapshot_id": "AAAAAUa4yHYgRLtKdnQXKpsqfHKJ0N1N", + "tracks": { + "object": true + }, + "type": "playlist", + "uri": "spotify:playlist:4bH0XDDKQCIuE0pOECEjqu" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify4": [ + { + "startTime": 1747344009755, + "executionIndex": 9, + "source": [ + { + "previousNode": "Spotify1" + } + ], + "hints": [], + "executionTime": 123, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "album_type": "album", + "total_tracks": 9, + "available_markets": [ + "json array" + ], + "external_urls": { + "object": true + }, + "href": "https://api.spotify.com/v1/albums/5ZJnifXQ8ovGURQY7XhgCG", + "id": "5ZJnifXQ8ovGURQY7XhgCG", + "images": [ + "json array" + ], + "name": "Fauroziat فيروزيات (Instrumental)", + "release_date": "2024-12-21", + "release_date_precision": "day", + "type": "album", + "uri": "spotify:album:5ZJnifXQ8ovGURQY7XhgCG", + "artists": [ + "json array" + ], + "tracks": { + "object": true + }, + "copyrights": [ + "json array" + ], + "external_ids": { + "object": true + }, + "genres": [ + "json array" + ], + "label": "Atef Bahr", + "popularity": 32 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify10": [ + { + "startTime": 1747344009878, + "executionIndex": 10, + "source": [ + { + "previousNode": "Spotify9" + } + ], + "hints": [], + "executionTime": 283, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "snapshot_id": "AAAAAtWGmmpVobJ7hcaQCTx5KdKU+0hQ" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify13": [ + { + "startTime": 1747344010161, + "executionIndex": 11, + "source": [ + { + "previousNode": "Spotify4" + } + ], + "hints": [], + "executionTime": 334, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "album_type": "ep", + "artists": [ + "json array" + ], + "available_markets": [ + "json array" + ], + "external_urls": { + "object": true + }, + "href": "https://api.spotify.com/v1/albums/5UAGPzp0t0DIczTuIPLCak", + "id": "5UAGPzp0t0DIczTuIPLCak", + "images": [ + "json array" + ], + "name": "Cotinga", + "release_date": "2025-04-17", + "release_date_precision": "day", + "total_tracks": 6, + "type": "album", + "uri": "spotify:album:5UAGPzp0t0DIczTuIPLCak" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify11": [ + { + "startTime": 1747344010495, + "executionIndex": 12, + "source": [ + { + "previousNode": "Spotify10" + } + ], + "hints": [], + "executionTime": 108, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "added_at": "2025-05-15T21:20:10Z", + "added_by": { + "object": true + }, + "is_local": false, + "primary_color": { + "object": true + }, + "track": { + "object": true + }, + "video_thumbnail": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify5": [ + { + "startTime": 1747344010603, + "executionIndex": 13, + "source": [ + { + "previousNode": "Spotify13" + } + ], + "hints": [], + "executionTime": 95, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "artists": [ + "json array" + ], + "available_markets": [ + "json array" + ], + "disc_number": 1, + "duration_ms": 304266, + "explicit": false, + "external_urls": { + "object": true + }, + "href": "https://api.spotify.com/v1/tracks/3M84jLJbkduv2Zc3xIHPRl", + "id": "3M84jLJbkduv2Zc3xIHPRl", + "name": "Tayr Lwarwar طير الوروار", + "preview_url": "https://p.scdn.co/mp3-preview/eb6cfe4dab53c8c9e2689539539fd8e492212fcc?cid=d6fc82a01ffb43538b33c4003257c758", + "track_number": 1, + "type": "track", + "uri": "spotify:track:3M84jLJbkduv2Zc3xIHPRl", + "is_local": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify12": [ + { + "startTime": 1747344010698, + "executionIndex": 14, + "source": [ + { + "previousNode": "Spotify11" + } + ], + "hints": [], + "executionTime": 278, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify6": [ + { + "startTime": 1747344010976, + "executionIndex": 15, + "source": [ + { + "previousNode": "Spotify5" + } + ], + "hints": [], + "executionTime": 87, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "album": { + "object": true + }, + "artists": [ + "json array" + ], + "available_markets": [ + "json array" + ], + "disc_number": 1, + "duration_ms": 304266, + "explicit": false, + "external_ids": { + "object": true + }, + "external_urls": { + "object": true + }, + "href": "https://api.spotify.com/v1/tracks/3M84jLJbkduv2Zc3xIHPRl", + "id": "3M84jLJbkduv2Zc3xIHPRl", + "is_local": false, + "name": "Tayr Lwarwar طير الوروار", + "popularity": 31, + "preview_url": "https://p.scdn.co/mp3-preview/eb6cfe4dab53c8c9e2689539539fd8e492212fcc?cid=d6fc82a01ffb43538b33c4003257c758", + "track_number": 1, + "type": "track", + "uri": "spotify:track:3M84jLJbkduv2Zc3xIHPRl" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify16": [ + { + "startTime": 1747344011063, + "executionIndex": 16, + "source": [ + { + "previousNode": "Spotify12" + } + ], + "hints": [], + "executionTime": 235, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "collaborative": false, + "description": "null", + "external_urls": { + "object": true + }, + "followers": { + "object": true + }, + "href": "https://api.spotify.com/v1/playlists/0BQ1JO1OK3l9Vg7zeHnJ9v", + "id": "0BQ1JO1OK3l9Vg7zeHnJ9v", + "images": [ + "json array" + ], + "primary_color": { + "object": true + }, + "name": "Playlist1747344011065", + "type": "playlist", + "uri": "spotify:playlist:0BQ1JO1OK3l9Vg7zeHnJ9v", + "owner": { + "object": true + }, + "public": true, + "snapshot_id": "AAAI50lYiWenT2YxYHUn3ksjudGeNJEo", + "tracks": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Spotify7": [ + { + "startTime": 1747344011298, + "executionIndex": 17, + "source": [ + { + "previousNode": "Spotify6" + } + ], + "hints": [], + "executionTime": 70, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "danceability": 0.599, + "energy": 0.639, + "key": 0, + "loudness": -7.542, + "mode": 1, + "speechiness": 0.0448, + "acousticness": 0.307, + "instrumentalness": 0.363, + "liveness": 0.0685, + "valence": 0.78, + "tempo": 119.334, + "type": "audio_features", + "id": "3M84jLJbkduv2Zc3xIHPRl", + "uri": "spotify:track:3M84jLJbkduv2Zc3xIHPRl", + "track_href": "https://api.spotify.com/v1/tracks/3M84jLJbkduv2Zc3xIHPRl", + "analysis_url": "https://api.spotify.com/v1/audio-analysis/3M84jLJbkduv2Zc3xIHPRl", + "duration_ms": 304267, + "time_signature": 4 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Spotify7" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:08.505Z", + "stoppedAt": "2025-05-15T21:20:11.368Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/62-snapshot.json b/test-workflows/snapshots/62-snapshot.json new file mode 100644 index 0000000000..908ad1e8c0 --- /dev/null +++ b/test-workflows/snapshots/62-snapshot.json @@ -0,0 +1,243 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344008708, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ProfitWell": [ + { + "startTime": 1747344008708, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 457, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "fd47e958-b607-46be-b5b1-2e87c43dffbf", + "name": "n8nqa", + "currency": "eur", + "timezone": "Europe/Paris" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ProfitWell1": [ + { + "startTime": 1747344009165, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 898, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "recurring_revenue": 0, + "date": "2025-05", + "new_recurring_revenue": 0, + "existing_recurring_revenue": 0, + "churned_recurring_revenue": 0, + "churned_recurring_revenue_cancellations": 0, + "churned_recurring_revenue_delinquent": 0, + "upgraded_recurring_revenue": 0, + "downgraded_recurring_revenue": 0, + "reactivated_recurring_revenue": 0, + "active_customers": 0, + "new_customers": 0, + "existing_customers": 0, + "churned_customers": 0, + "churned_customers_cancellations": 0, + "churned_customers_delinquent": 0, + "upgraded_customers": 0, + "downgraded_customers": 0, + "reactivated_customers": 0, + "average_revenue_per_user": 0, + "lifetime_value": { + "object": true + }, + "customers_churn_rate": { + "object": true + }, + "customers_churn_cancellations_rate": { + "object": true + }, + "customers_churn_delinquent_rate": { + "object": true + }, + "revenue_churn_rate": { + "object": true + }, + "revenue_churn_cancellations_rate": { + "object": true + }, + "revenue_churn_delinquent_rate": { + "object": true + }, + "revenue_retention_rate": { + "object": true + }, + "customers_retention_rate": { + "object": true + }, + "downgrade_rate": { + "object": true + }, + "upgrade_rate": { + "object": true + }, + "growth_rate": { + "object": true + }, + "saas_quick_ratio": { + "object": true + }, + "converted_recurring_revenue": 0, + "new_trialing_customers": 0, + "existing_trialing_customers": 1, + "churned_trialing_customers": 0, + "converted_customers": 0, + "active_trialing_customers": 1, + "customer_conversion_rate": 0, + "trial_conversion_time": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ProfitWell2": [ + { + "startTime": 1747344010063, + "executionIndex": 3, + "source": [ + { + "previousNode": "ProfitWell1" + } + ], + "hints": [], + "executionTime": 880, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "new_recurring_revenue": [ + "json array" + ], + "upgraded_recurring_revenue": [ + "json array" + ], + "downgraded_recurring_revenue": [ + "json array" + ], + "churned_recurring_revenue": [ + "json array" + ], + "reactivated_recurring_revenue": [ + "json array" + ], + "new_customers": [ + "json array" + ], + "upgraded_customers": [ + "json array" + ], + "downgraded_customers": [ + "json array" + ], + "churned_customers": [ + "json array" + ], + "reactivated_customers": [ + "json array" + ], + "recurring_revenue": [ + "json array" + ], + "cumulative_net_new_mrr": [ + "json array" + ], + "future_churn_mrr": [ + "json array" + ], + "cumulative_new_trialing_customers": [ + "json array" + ], + "active_customers": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "ProfitWell2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:08.708Z", + "stoppedAt": "2025-05-15T21:20:10.943Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/63-snapshot.json b/test-workflows/snapshots/63-snapshot.json new file mode 100644 index 0000000000..9d7f828a2d --- /dev/null +++ b/test-workflows/snapshots/63-snapshot.json @@ -0,0 +1,156 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344009798, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Segment": [ + { + "startTime": 1747344009798, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 692, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Segment1": [ + { + "startTime": 1747344010490, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 683, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Segment3": [ + { + "startTime": 1747344011173, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 674, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Segment2": [ + { + "startTime": 1747344011847, + "executionIndex": 4, + "source": [ + { + "previousNode": "Segment1" + } + ], + "hints": [], + "executionTime": 669, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Segment2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:09.797Z", + "stoppedAt": "2025-05-15T21:20:12.516Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/66-snapshot.json b/test-workflows/snapshots/66-snapshot.json new file mode 100644 index 0000000000..75d207397c --- /dev/null +++ b/test-workflows/snapshots/66-snapshot.json @@ -0,0 +1,439 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891395112, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Storyblok": [ + { + "startTime": 1676891395113, + "executionTime": 311, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "TestEntry", + "parent_id": 0, + "created_at": "2021-02-25T10:06:43.421Z", + "deleted_at": { + "object": true + }, + "group_id": "569ce22f-d30b-4d92-a549-de49fdf4d1aa", + "sort_by_date": { + "object": true + }, + "updated_at": "2023-02-20T11:06:39.624Z", + "published_at": "2023-02-20T11:06:39.462Z", + "id": 39088436, + "uuid": "f52c4a20-cc6a-4994-bec1-9d3ea0e4fa9e", + "is_folder": false, + "published": false, + "slug": "testentry", + "path": { + "object": true + }, + "full_slug": "testentry", + "position": 20, + "unpublished_changes": false, + "is_startpage": false, + "pinned": false, + "publish_at": { + "object": true + }, + "expire_at": { + "object": true + }, + "first_published_at": "2021-02-25T10:07:50.000Z", + "release_ids": [ + "json array" + ], + "stage": { + "object": true + }, + "alternates": [ + "json array" + ], + "default_root": "", + "disble_fe_editor": true, + "last_author": { + "object": true + }, + "content_summary": { + "object": true + }, + "content_type": "Blank", + "tag_list": [ + "json array" + ], + "can_not_view": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Storyblok1": [ + { + "startTime": 1676891395424, + "executionTime": 112, + "source": [ + { + "previousNode": "Storyblok" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "TestEntry", + "parent_id": 0, + "group_id": "569ce22f-d30b-4d92-a549-de49fdf4d1aa", + "alternates": [ + "json array" + ], + "created_at": "2021-02-25T10:06:43.421Z", + "deleted_at": { + "object": true + }, + "sort_by_date": { + "object": true + }, + "tag_list": [ + "json array" + ], + "updated_at": "2023-02-20T11:06:39.624Z", + "published_at": "2023-02-20T11:06:39.462Z", + "id": 39088436, + "uuid": "f52c4a20-cc6a-4994-bec1-9d3ea0e4fa9e", + "is_folder": false, + "content": { + "object": true + }, + "published": false, + "slug": "testentry", + "path": { + "object": true + }, + "full_slug": "testentry", + "default_root": "", + "disble_fe_editor": true, + "parent": { + "object": true + }, + "is_startpage": false, + "unpublished_changes": false, + "meta_data": { + "object": true + }, + "imported_at": { + "object": true + }, + "preview_token": { + "object": true + }, + "pinned": false, + "breadcrumbs": [ + "json array" + ], + "publish_at": { + "object": true + }, + "expire_at": { + "object": true + }, + "first_published_at": "2021-02-25T10:07:50.000Z", + "last_author": { + "object": true + }, + "user_ids": [ + "json array" + ], + "space_role_ids": [ + "json array" + ], + "translated_slugs": [ + "json array" + ], + "localized_paths": [ + "json array" + ], + "position": 20, + "translated_stories": [ + "json array" + ], + "can_not_view": false, + "is_scheduled": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Storyblok2": [ + { + "startTime": 1676891395536, + "executionTime": 260, + "source": [ + { + "previousNode": "Storyblok1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "TestEntry", + "parent_id": 0, + "group_id": "569ce22f-d30b-4d92-a549-de49fdf4d1aa", + "alternates": [ + "json array" + ], + "created_at": "2021-02-25T10:06:43.421Z", + "deleted_at": { + "object": true + }, + "sort_by_date": { + "object": true + }, + "tag_list": [ + "json array" + ], + "updated_at": "2023-02-20T11:09:55.693Z", + "published_at": "2023-02-20T11:09:55.664Z", + "id": 39088436, + "uuid": "f52c4a20-cc6a-4994-bec1-9d3ea0e4fa9e", + "is_folder": false, + "content": { + "object": true + }, + "published": true, + "slug": "testentry", + "path": { + "object": true + }, + "full_slug": "testentry", + "default_root": "", + "disble_fe_editor": true, + "parent": { + "object": true + }, + "is_startpage": false, + "unpublished_changes": false, + "meta_data": { + "object": true + }, + "imported_at": { + "object": true + }, + "preview_token": { + "object": true + }, + "pinned": false, + "breadcrumbs": [ + "json array" + ], + "publish_at": { + "object": true + }, + "expire_at": { + "object": true + }, + "first_published_at": "2021-02-25T10:07:50.000Z", + "last_author": { + "object": true + }, + "user_ids": [ + "json array" + ], + "space_role_ids": [ + "json array" + ], + "translated_slugs": [ + "json array" + ], + "localized_paths": [ + "json array" + ], + "position": 20, + "translated_stories": [ + "json array" + ], + "can_not_view": { + "object": true + }, + "is_scheduled": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Storyblok3": [ + { + "startTime": 1676891395796, + "executionTime": 182, + "source": [ + { + "previousNode": "Storyblok2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "TestEntry", + "parent_id": 0, + "group_id": "569ce22f-d30b-4d92-a549-de49fdf4d1aa", + "alternates": [ + "json array" + ], + "created_at": "2021-02-25T10:06:43.421Z", + "deleted_at": { + "object": true + }, + "sort_by_date": { + "object": true + }, + "tag_list": [ + "json array" + ], + "updated_at": "2023-02-20T11:09:55.945Z", + "published_at": "2023-02-20T11:09:55.664Z", + "id": 39088436, + "uuid": "f52c4a20-cc6a-4994-bec1-9d3ea0e4fa9e", + "is_folder": false, + "content": { + "object": true + }, + "published": false, + "slug": "testentry", + "path": { + "object": true + }, + "full_slug": "testentry", + "default_root": "", + "disble_fe_editor": true, + "parent": { + "object": true + }, + "is_startpage": false, + "unpublished_changes": false, + "meta_data": { + "object": true + }, + "imported_at": { + "object": true + }, + "preview_token": { + "object": true + }, + "pinned": false, + "breadcrumbs": [ + "json array" + ], + "publish_at": { + "object": true + }, + "expire_at": { + "object": true + }, + "first_published_at": "2021-02-25T10:07:50.000Z", + "last_author": { + "object": true + }, + "user_ids": [ + "json array" + ], + "space_role_ids": [ + "json array" + ], + "translated_slugs": [ + "json array" + ], + "localized_paths": [ + "json array" + ], + "position": 20, + "translated_stories": [ + "json array" + ], + "can_not_view": { + "object": true + }, + "is_scheduled": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Storyblok3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:55.111Z", + "stoppedAt": "2023-02-20T11:09:55.978Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/67-snapshot.json b/test-workflows/snapshots/67-snapshot.json new file mode 100644 index 0000000000..e587aa3947 --- /dev/null +++ b/test-workflows/snapshots/67-snapshot.json @@ -0,0 +1,1348 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344010437, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist": [ + { + "startTime": 1747344010437, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 319, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "archived": false, + "color": 1, + "created_ts": 1747344011, + "creator": 511904, + "default_groups": [ + "json array" + ], + "default_recipients": [ + "json array" + ], + "description": "", + "filters": { + "object": true + }, + "icon": 0, + "id": 786209, + "is_favorited": false, + "name": "TestChannel1747344010441", + "public": false, + "use_default_recipients": false, + "user_ids": [ + "json array" + ], + "version": 0, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist4": [ + { + "startTime": 1747344010756, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 323, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "content": "Message 1747344010758", + "conversation_id": 1067233, + "creator": 511904, + "creator_name": "nodeqa", + "deleted": false, + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "id": 102322002, + "last_edited_ts": { + "object": true + }, + "obj_index": 2740, + "posted_ts": 1747344011, + "reactions": { + "object": true + }, + "system_message": { + "object": true + }, + "version": 0, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist13": [ + { + "startTime": 1747344011079, + "executionIndex": 3, + "source": [ + { + "previousNode": "Twist" + } + ], + "hints": [], + "executionTime": 333, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "channel_id": 786209, + "closed": false, + "comment_count": 0, + "content": "test", + "creator": 511904, + "creator_name": "nodeqa", + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "groups": [ + "json array" + ], + "id": 6968332, + "in_inbox": false, + "is_archived": true, + "is_saved": false, + "last_comment": { + "object": true + }, + "last_edited_ts": { + "object": true + }, + "last_obj_index": -1, + "last_updated_ts": 1747344011, + "muted_until_ts": { + "object": true + }, + "participants": [ + "json array" + ], + "pinned": false, + "pinned_ts": { + "object": true + }, + "posted_ts": 1747344011, + "reactions": { + "object": true + }, + "recipients": [ + "json array" + ], + "responders": [ + "json array" + ], + "snippet": "test", + "snippet_creator": 511904, + "snippet_mask_avatar_url": { + "object": true + }, + "snippet_mask_poster": { + "object": true + }, + "starred": false, + "system_message": { + "object": true + }, + "title": "Thread1747344011082", + "to_emails": [ + "json array" + ], + "version": 0, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist9": [ + { + "startTime": 1747344011412, + "executionIndex": 4, + "source": [ + { + "previousNode": "Twist4" + } + ], + "hints": [], + "executionTime": 295, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "content": "Message 1747344010758", + "conversation_id": 1067233, + "creator": 511904, + "creator_name": "nodeqa", + "deleted": false, + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "id": 102322002, + "last_edited_ts": { + "object": true + }, + "obj_index": 2740, + "posted_ts": 1747344011, + "reactions": { + "object": true + }, + "system_message": { + "object": true + }, + "version": 0, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist18": [ + { + "startTime": 1747344011707, + "executionIndex": 5, + "source": [ + { + "previousNode": "Twist13" + } + ], + "hints": [], + "executionTime": 365, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "channel_id": 786209, + "content": "Comment1747344011710", + "creator": 511904, + "creator_name": "nodeqa", + "deleted": false, + "deleted_by": { + "object": true + }, + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "groups": [ + "json array" + ], + "id": 95587076, + "last_edited_ts": { + "object": true + }, + "obj_index": 0, + "posted_ts": 1747344012, + "reactions": { + "object": true + }, + "recipients": [ + "json array" + ], + "system_message": { + "object": true + }, + "thread_id": 6968332, + "to_emails": [ + "json array" + ], + "version": 0, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist10": [ + { + "startTime": 1747344012072, + "executionIndex": 6, + "source": [ + { + "previousNode": "Twist9" + } + ], + "hints": [], + "executionTime": 143, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "content": "Message 1747344010758", + "conversation_id": 1067233, + "creator": 511904, + "creator_name": "nodeqa", + "deleted": false, + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "id": 102322002, + "last_edited_ts": { + "object": true + }, + "obj_index": 2740, + "posted_ts": 1747344011, + "reactions": { + "object": true + }, + "system_message": { + "object": true + }, + "version": 0, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist19": [ + { + "startTime": 1747344012215, + "executionIndex": 7, + "source": [ + { + "previousNode": "Twist18" + } + ], + "hints": [], + "executionTime": 156, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "channel_id": 786209, + "content": "Comment1747344011710", + "creator": 511904, + "creator_name": "nodeqa", + "deleted": false, + "deleted_by": { + "object": true + }, + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "groups": [ + "json array" + ], + "id": 95587076, + "last_edited_ts": { + "object": true + }, + "obj_index": 0, + "posted_ts": 1747344012, + "reactions": { + "object": true + }, + "recipients": [ + "json array" + ], + "system_message": { + "object": true + }, + "thread_id": 6968332, + "to_emails": [ + "json array" + ], + "version": 0, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist11": [ + { + "startTime": 1747344012371, + "executionIndex": 8, + "source": [ + { + "previousNode": "Twist10" + } + ], + "hints": [], + "executionTime": 158, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "content": "Message 1747344010758", + "conversation_id": 1067233, + "creator": 511904, + "creator_name": "nodeqa", + "deleted": false, + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "id": 102322002, + "last_edited_ts": { + "object": true + }, + "obj_index": 2740, + "posted_ts": 1747344011, + "reactions": { + "object": true + }, + "system_message": { + "object": true + }, + "version": 1, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist20": [ + { + "startTime": 1747344012529, + "executionIndex": 9, + "source": [ + { + "previousNode": "Twist19" + } + ], + "hints": [], + "executionTime": 174, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "channel_id": 786209, + "content": "Updated Content", + "creator": 511904, + "creator_name": "nodeqa", + "deleted": false, + "deleted_by": { + "object": true + }, + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "groups": [ + "json array" + ], + "id": 95587076, + "last_edited_ts": 1747344012, + "obj_index": 0, + "posted_ts": 1747344012, + "reactions": { + "object": true + }, + "recipients": [ + "json array" + ], + "system_message": { + "object": true + }, + "thread_id": 6968332, + "to_emails": [ + "json array" + ], + "version": 1, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist12": [ + { + "startTime": 1747344012703, + "executionIndex": 10, + "source": [ + { + "previousNode": "Twist11" + } + ], + "hints": [], + "executionTime": 148, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "ok" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist21": [ + { + "startTime": 1747344012851, + "executionIndex": 11, + "source": [ + { + "previousNode": "Twist20" + } + ], + "hints": [], + "executionTime": 168, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "channel_id": 786209, + "content": "Updated Content", + "creator": 511904, + "creator_name": "nodeqa", + "deleted": false, + "deleted_by": { + "object": true + }, + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "groups": [ + "json array" + ], + "id": 95587076, + "last_edited_ts": 1747344013, + "obj_index": 0, + "posted_ts": 1747344012, + "reactions": { + "object": true + }, + "recipients": [ + "json array" + ], + "system_message": { + "object": true + }, + "thread_id": 6968332, + "to_emails": [ + "json array" + ], + "version": 1, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist22": [ + { + "startTime": 1747344013019, + "executionIndex": 12, + "source": [ + { + "previousNode": "Twist21" + } + ], + "hints": [], + "executionTime": 171, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "ok" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist14": [ + { + "startTime": 1747344013190, + "executionIndex": 13, + "source": [ + { + "previousNode": "Twist22" + } + ], + "hints": [], + "executionTime": 143, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "channel_id": 786209, + "closed": false, + "comment_count": 1, + "content": "test", + "creator": 511904, + "creator_name": "nodeqa", + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "groups": [ + "json array" + ], + "id": 6968332, + "in_inbox": false, + "is_archived": true, + "is_saved": false, + "last_comment": { + "object": true + }, + "last_edited_ts": { + "object": true + }, + "last_obj_index": 0, + "last_updated_ts": 1747344012, + "muted_until_ts": { + "object": true + }, + "participants": [ + "json array" + ], + "pinned": false, + "pinned_ts": { + "object": true + }, + "posted_ts": 1747344011, + "reactions": { + "object": true + }, + "recipients": [ + "json array" + ], + "responders": [ + "json array" + ], + "snippet": "test", + "snippet_creator": 511904, + "snippet_mask_avatar_url": { + "object": true + }, + "snippet_mask_poster": { + "object": true + }, + "starred": false, + "system_message": { + "object": true + }, + "title": "Thread1747344011082", + "to_emails": [ + "json array" + ], + "version": 3, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist15": [ + { + "startTime": 1747344013333, + "executionIndex": 14, + "source": [ + { + "previousNode": "Twist14" + } + ], + "hints": [], + "executionTime": 172, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "channel_id": 786209, + "closed": false, + "comment_count": 1, + "content": "Updated Content", + "creator": 511904, + "creator_name": "nodeqa", + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "groups": [ + "json array" + ], + "id": 6968332, + "in_inbox": false, + "is_archived": true, + "is_saved": false, + "last_comment": { + "object": true + }, + "last_edited_ts": 1747344013, + "last_obj_index": 0, + "last_updated_ts": 1747344012, + "muted_until_ts": { + "object": true + }, + "participants": [ + "json array" + ], + "pinned": false, + "pinned_ts": { + "object": true + }, + "posted_ts": 1747344011, + "reactions": { + "object": true + }, + "recipients": [ + "json array" + ], + "responders": [ + "json array" + ], + "snippet": "test", + "snippet_creator": 511904, + "snippet_mask_avatar_url": { + "object": true + }, + "snippet_mask_poster": { + "object": true + }, + "starred": false, + "system_message": { + "object": true + }, + "title": "Thread1747344011082", + "to_emails": [ + "json array" + ], + "version": 4, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist17": [ + { + "startTime": 1747344013505, + "executionIndex": 15, + "source": [ + { + "previousNode": "Twist15" + } + ], + "hints": [], + "executionTime": 151, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "actions": [ + "json array" + ], + "attachments": [ + "json array" + ], + "channel_id": 786209, + "closed": false, + "comment_count": 1, + "content": "Updated Content", + "creator": 511904, + "creator_name": "nodeqa", + "direct_group_mentions": [ + "json array" + ], + "direct_mentions": [ + "json array" + ], + "groups": [ + "json array" + ], + "id": 6968332, + "in_inbox": false, + "is_archived": true, + "is_saved": false, + "last_comment": { + "object": true + }, + "last_edited_ts": 1747344013, + "last_obj_index": 0, + "last_updated_ts": 1747344012, + "muted_until_ts": { + "object": true + }, + "participants": [ + "json array" + ], + "pinned": false, + "pinned_ts": { + "object": true + }, + "posted_ts": 1747344011, + "reactions": { + "object": true + }, + "recipients": [ + "json array" + ], + "responders": [ + "json array" + ], + "snippet": "Updated Content", + "snippet_creator": 511904, + "snippet_mask_avatar_url": { + "object": true + }, + "snippet_mask_poster": { + "object": true + }, + "starred": false, + "system_message": { + "object": true + }, + "title": "Thread1747344011082", + "to_emails": [ + "json array" + ], + "version": 4, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist16": [ + { + "startTime": 1747344013656, + "executionIndex": 16, + "source": [ + { + "previousNode": "Twist17" + } + ], + "hints": [], + "executionTime": 156, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "ok" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist1": [ + { + "startTime": 1747344013812, + "executionIndex": 17, + "source": [ + { + "previousNode": "Twist16" + } + ], + "hints": [], + "executionTime": 298, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "archived": false, + "color": 1, + "created_ts": 1747344011, + "creator": 511904, + "default_groups": [ + "json array" + ], + "default_recipients": [ + "json array" + ], + "description": "", + "filters": { + "object": true + }, + "icon": 0, + "id": 786209, + "is_favorited": false, + "name": "UpdatedChannel1747344013817", + "public": false, + "use_default_recipients": false, + "user_ids": [ + "json array" + ], + "version": 1, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist2": [ + { + "startTime": 1747344014110, + "executionIndex": 18, + "source": [ + { + "previousNode": "Twist1" + } + ], + "hints": [], + "executionTime": 143, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "archived": false, + "color": 1, + "created_ts": 1747344011, + "creator": 511904, + "default_groups": [ + "json array" + ], + "default_recipients": [ + "json array" + ], + "description": "", + "filters": { + "object": true + }, + "icon": 0, + "id": 786209, + "is_favorited": false, + "name": "UpdatedChannel1747344013817", + "public": false, + "use_default_recipients": false, + "user_ids": [ + "json array" + ], + "version": 1, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist3": [ + { + "startTime": 1747344014253, + "executionIndex": 19, + "source": [ + { + "previousNode": "Twist2" + } + ], + "hints": [], + "executionTime": 206, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "archived": false, + "color": 1, + "created_ts": 1614250659, + "creator": 511904, + "default_groups": [ + "json array" + ], + "default_recipients": [ + "json array" + ], + "description": "", + "filters": { + "object": true + }, + "icon": 0, + "id": 437294, + "is_favorited": false, + "name": "General", + "public": true, + "use_default_recipients": false, + "user_ids": [ + "json array" + ], + "version": 0, + "workspace_id": 164330 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist5": [ + { + "startTime": 1747344014459, + "executionIndex": 20, + "source": [ + { + "previousNode": "Twist3" + } + ], + "hints": [], + "executionTime": 145, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "ok" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist6": [ + { + "startTime": 1747344014605, + "executionIndex": 21, + "source": [ + { + "previousNode": "Twist5" + } + ], + "hints": [], + "executionTime": 147, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "ok" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist7": [ + { + "startTime": 1747344014752, + "executionIndex": 22, + "source": [ + { + "previousNode": "Twist6" + } + ], + "hints": [], + "executionTime": 169, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "ok" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Twist8": [ + { + "startTime": 1747344014921, + "executionIndex": 23, + "source": [ + { + "previousNode": "Twist7" + } + ], + "hints": [], + "executionTime": 180, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "status": "ok" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Twist8" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:10.436Z", + "stoppedAt": "2025-05-15T21:20:15.101Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/70-snapshot.json b/test-workflows/snapshots/70-snapshot.json new file mode 100644 index 0000000000..cafc3d1b57 --- /dev/null +++ b/test-workflows/snapshots/70-snapshot.json @@ -0,0 +1,395 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344010966, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful5": [ + { + "startTime": 1747344010966, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 60, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "code": "en-US", + "name": "English (United States)", + "default": true, + "fallbackCode": { + "object": true + }, + "sys": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful": [ + { + "startTime": 1747344011026, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 61, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Static sites are great", + "slug": "static-sites-are-great", + "heroImage": { + "object": true + }, + "description": "Worry less about security, caching, and talking to the server. Static sites are the new thing.", + "body": "## The case for the static site generator\n\nMore and more developers are jumping on the \"go static train\", and rightfully so. Static pages are fast, lightweight, they scale well. They are more secure, and simple to maintain and they allow you to focus all your time and effort on the user interface. Often times, this dedication really shows.\n\nIt just so happens that static site generators are mostly loved by developers, but not by the average Joe. They do not offer WYSIWYG, previewing on demo sites may take an update cycle, they are often based on markdown text files, and they require some knowledge of modern day repositories.\n\nMoreover, when teams are collaborating, it can get complicated quickly. Has this article already been proof-read or reviewed? Is this input valid? Are user permissions available, e.g. for administering adding and removing team members? Can this article be published at a future date? How can a large repository of content be categorized, organized, and searched? All these requirements have previously been more or less solved within the admin area of your CMS. But of course with all the baggage that made you leave the appserver-app-database-in-one-big-blob stack in the first place.\n\n## Content APIs to the rescue\n\nAn alternative is decoupling the content management aspect from the system. And then replacing the maintenance prone server with a cloud based web service offering. Effectively, instead of your CMS of old, you move to a [Content Management as a Service (CMaaS)](https://www.contentful.com/r/knowledgebase/content-as-a-service/ \"Content Management as a Service (CMaaS)\") world, with a content API to deliver all your content. That way, you get the all the [benefits of content management features](http://www.digett.com/blog/01/16/2014/pairing-static-websites-cms \"benefits of content management features\") while still being able to embrace the static site generator mantra.\n\nIt so happens that Contentful is offering just that kind of content API. A service that\n\n* from the ground up has been designed to be fast, scalable, secure, and offer high uptime, so that you don’t have to worry about maintenance ever again.\n* offers a powerful editor and lots of flexibility in creating templates for your documents that your editors can reuse and combine, so that no developers resources are required in everyday writing and updating tasks.\n* separates content from presentation, so you can reuse your content repository for any device platform your heart desires. That way, you can COPE (\"create once, publish everywhere\").\n* offers webhooks that you can use to rebuild your static site in a fully automated fashion every time your content is modified.\n\nExtracted from the article [CMS-functionality for static site generators](https://www.contentful.com/r/knowledgebase/contentful-api-cms-static-site-generators/ \"CMS-functionality for static site generators\"). Read more about the [static site generators supported by Contentful](https://www.contentful.com/developers/docs/tools/staticsitegenerators/ \"static site generators supported by Contentful\").", + "author": { + "object": true + }, + "publishDate": "2017-05-16T00:00+02:00", + "tags": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful1": [ + { + "startTime": 1747344011087, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 54, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "title", + "name": "Title", + "type": "Symbol", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "slug", + "name": "Slug", + "type": "Symbol", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "heroImage", + "name": "Hero Image", + "type": "Link", + "localized": false, + "required": true, + "disabled": false, + "omitted": false, + "linkType": "Asset" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "description", + "name": "Description", + "type": "Text", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "body", + "name": "Body", + "type": "Text", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "author", + "name": "Author", + "type": "Link", + "localized": false, + "required": false, + "disabled": false, + "omitted": false, + "linkType": "Entry" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "publishDate", + "name": "Publish Date", + "type": "Date", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "tags", + "name": "Tags", + "type": "Array", + "localized": false, + "required": false, + "disabled": false, + "omitted": false, + "items": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful2": [ + { + "startTime": 1747344011141, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 51, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "TestAsset", + "file": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful6": [ + { + "startTime": 1747344011192, + "executionIndex": 5, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 51, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "sys": { + "object": true + }, + "name": "n8n", + "locales": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful4": [ + { + "startTime": 1747344011243, + "executionIndex": 6, + "source": [ + { + "previousNode": "Contentful" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Static sites are great", + "slug": "static-sites-are-great", + "heroImage": { + "object": true + }, + "description": "Worry less about security, caching, and talking to the server. Static sites are the new thing.", + "body": "## The case for the static site generator\n\nMore and more developers are jumping on the \"go static train\", and rightfully so. Static pages are fast, lightweight, they scale well. They are more secure, and simple to maintain and they allow you to focus all your time and effort on the user interface. Often times, this dedication really shows.\n\nIt just so happens that static site generators are mostly loved by developers, but not by the average Joe. They do not offer WYSIWYG, previewing on demo sites may take an update cycle, they are often based on markdown text files, and they require some knowledge of modern day repositories.\n\nMoreover, when teams are collaborating, it can get complicated quickly. Has this article already been proof-read or reviewed? Is this input valid? Are user permissions available, e.g. for administering adding and removing team members? Can this article be published at a future date? How can a large repository of content be categorized, organized, and searched? All these requirements have previously been more or less solved within the admin area of your CMS. But of course with all the baggage that made you leave the appserver-app-database-in-one-big-blob stack in the first place.\n\n## Content APIs to the rescue\n\nAn alternative is decoupling the content management aspect from the system. And then replacing the maintenance prone server with a cloud based web service offering. Effectively, instead of your CMS of old, you move to a [Content Management as a Service (CMaaS)](https://www.contentful.com/r/knowledgebase/content-as-a-service/ \"Content Management as a Service (CMaaS)\") world, with a content API to deliver all your content. That way, you get the all the [benefits of content management features](http://www.digett.com/blog/01/16/2014/pairing-static-websites-cms \"benefits of content management features\") while still being able to embrace the static site generator mantra.\n\nIt so happens that Contentful is offering just that kind of content API. A service that\n\n* from the ground up has been designed to be fast, scalable, secure, and offer high uptime, so that you don’t have to worry about maintenance ever again.\n* offers a powerful editor and lots of flexibility in creating templates for your documents that your editors can reuse and combine, so that no developers resources are required in everyday writing and updating tasks.\n* separates content from presentation, so you can reuse your content repository for any device platform your heart desires. That way, you can COPE (\"create once, publish everywhere\").\n* offers webhooks that you can use to rebuild your static site in a fully automated fashion every time your content is modified.\n\nExtracted from the article [CMS-functionality for static site generators](https://www.contentful.com/r/knowledgebase/contentful-api-cms-static-site-generators/ \"CMS-functionality for static site generators\"). Read more about the [static site generators supported by Contentful](https://www.contentful.com/developers/docs/tools/staticsitegenerators/ \"static site generators supported by Contentful\").", + "author": { + "object": true + }, + "publishDate": "2017-05-16T00:00+02:00", + "tags": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful3": [ + { + "startTime": 1747344011243, + "executionIndex": 7, + "source": [ + { + "previousNode": "Contentful2" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "TestAsset", + "file": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Contentful3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:10.966Z", + "stoppedAt": "2025-05-15T21:20:11.243Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/71-snapshot.json b/test-workflows/snapshots/71-snapshot.json new file mode 100644 index 0000000000..59b9eb1acc --- /dev/null +++ b/test-workflows/snapshots/71-snapshot.json @@ -0,0 +1,395 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011005, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful1": [ + { + "startTime": 1747344011005, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 200, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "title", + "name": "Title", + "type": "Symbol", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "slug", + "name": "Slug", + "type": "Symbol", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "heroImage", + "name": "Hero Image", + "type": "Link", + "localized": false, + "required": true, + "disabled": false, + "omitted": false, + "linkType": "Asset" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "description", + "name": "Description", + "type": "Text", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "body", + "name": "Body", + "type": "Text", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "author", + "name": "Author", + "type": "Link", + "localized": false, + "required": false, + "disabled": false, + "omitted": false, + "linkType": "Entry" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "publishDate", + "name": "Publish Date", + "type": "Date", + "localized": false, + "required": true, + "disabled": false, + "omitted": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "id": "tags", + "name": "Tags", + "type": "Array", + "localized": false, + "required": false, + "disabled": false, + "omitted": false, + "items": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful": [ + { + "startTime": 1747344011205, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 183, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Static sites are great", + "slug": "static-sites-are-great", + "heroImage": { + "object": true + }, + "description": "Worry less about security, caching, and talking to the server. Static sites are the new thing.", + "body": "## The case for the static site generator\n\nMore and more developers are jumping on the \"go static train\", and rightfully so. Static pages are fast, lightweight, they scale well. They are more secure, and simple to maintain and they allow you to focus all your time and effort on the user interface. Often times, this dedication really shows.\n\nIt just so happens that static site generators are mostly loved by developers, but not by the average Joe. They do not offer WYSIWYG, previewing on demo sites may take an update cycle, they are often based on markdown text files, and they require some knowledge of modern day repositories.\n\nMoreover, when teams are collaborating, it can get complicated quickly. Has this article already been proof-read or reviewed? Is this input valid? Are user permissions available, e.g. for administering adding and removing team members? Can this article be published at a future date? How can a large repository of content be categorized, organized, and searched? All these requirements have previously been more or less solved within the admin area of your CMS. But of course with all the baggage that made you leave the appserver-app-database-in-one-big-blob stack in the first place.\n\n## Content APIs to the rescue\n\nAn alternative is decoupling the content management aspect from the system. And then replacing the maintenance prone server with a cloud based web service offering. Effectively, instead of your CMS of old, you move to a [Content Management as a Service (CMaaS)](https://www.contentful.com/r/knowledgebase/content-as-a-service/ \"Content Management as a Service (CMaaS)\") world, with a content API to deliver all your content. That way, you get the all the [benefits of content management features](http://www.digett.com/blog/01/16/2014/pairing-static-websites-cms \"benefits of content management features\") while still being able to embrace the static site generator mantra.\n\nIt so happens that Contentful is offering just that kind of content API. A service that\n\n* from the ground up has been designed to be fast, scalable, secure, and offer high uptime, so that you don’t have to worry about maintenance ever again.\n* offers a powerful editor and lots of flexibility in creating templates for your documents that your editors can reuse and combine, so that no developers resources are required in everyday writing and updating tasks.\n* separates content from presentation, so you can reuse your content repository for any device platform your heart desires. That way, you can COPE (\"create once, publish everywhere\").\n* offers webhooks that you can use to rebuild your static site in a fully automated fashion every time your content is modified.\n\nExtracted from the article [CMS-functionality for static site generators](https://www.contentful.com/r/knowledgebase/contentful-api-cms-static-site-generators/ \"CMS-functionality for static site generators\"). Read more about the [static site generators supported by Contentful](https://www.contentful.com/developers/docs/tools/staticsitegenerators/ \"static site generators supported by Contentful\").", + "author": { + "object": true + }, + "publishDate": "2017-05-16T00:00+02:00", + "tags": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful5": [ + { + "startTime": 1747344011388, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 177, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "code": "en-US", + "name": "English (United States)", + "default": true, + "fallbackCode": { + "object": true + }, + "sys": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful2": [ + { + "startTime": 1747344011565, + "executionIndex": 4, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 210, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "TestAsset", + "file": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful6": [ + { + "startTime": 1747344011775, + "executionIndex": 5, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 187, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "sys": { + "object": true + }, + "name": "n8n", + "locales": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful4": [ + { + "startTime": 1747344011962, + "executionIndex": 6, + "source": [ + { + "previousNode": "Contentful" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Static sites are great", + "slug": "static-sites-are-great", + "heroImage": { + "object": true + }, + "description": "Worry less about security, caching, and talking to the server. Static sites are the new thing.", + "body": "## The case for the static site generator\n\nMore and more developers are jumping on the \"go static train\", and rightfully so. Static pages are fast, lightweight, they scale well. They are more secure, and simple to maintain and they allow you to focus all your time and effort on the user interface. Often times, this dedication really shows.\n\nIt just so happens that static site generators are mostly loved by developers, but not by the average Joe. They do not offer WYSIWYG, previewing on demo sites may take an update cycle, they are often based on markdown text files, and they require some knowledge of modern day repositories.\n\nMoreover, when teams are collaborating, it can get complicated quickly. Has this article already been proof-read or reviewed? Is this input valid? Are user permissions available, e.g. for administering adding and removing team members? Can this article be published at a future date? How can a large repository of content be categorized, organized, and searched? All these requirements have previously been more or less solved within the admin area of your CMS. But of course with all the baggage that made you leave the appserver-app-database-in-one-big-blob stack in the first place.\n\n## Content APIs to the rescue\n\nAn alternative is decoupling the content management aspect from the system. And then replacing the maintenance prone server with a cloud based web service offering. Effectively, instead of your CMS of old, you move to a [Content Management as a Service (CMaaS)](https://www.contentful.com/r/knowledgebase/content-as-a-service/ \"Content Management as a Service (CMaaS)\") world, with a content API to deliver all your content. That way, you get the all the [benefits of content management features](http://www.digett.com/blog/01/16/2014/pairing-static-websites-cms \"benefits of content management features\") while still being able to embrace the static site generator mantra.\n\nIt so happens that Contentful is offering just that kind of content API. A service that\n\n* from the ground up has been designed to be fast, scalable, secure, and offer high uptime, so that you don’t have to worry about maintenance ever again.\n* offers a powerful editor and lots of flexibility in creating templates for your documents that your editors can reuse and combine, so that no developers resources are required in everyday writing and updating tasks.\n* separates content from presentation, so you can reuse your content repository for any device platform your heart desires. That way, you can COPE (\"create once, publish everywhere\").\n* offers webhooks that you can use to rebuild your static site in a fully automated fashion every time your content is modified.\n\nExtracted from the article [CMS-functionality for static site generators](https://www.contentful.com/r/knowledgebase/contentful-api-cms-static-site-generators/ \"CMS-functionality for static site generators\"). Read more about the [static site generators supported by Contentful](https://www.contentful.com/developers/docs/tools/staticsitegenerators/ \"static site generators supported by Contentful\").", + "author": { + "object": true + }, + "publishDate": "2017-05-16T00:00+02:00", + "tags": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Contentful3": [ + { + "startTime": 1747344011962, + "executionIndex": 7, + "source": [ + { + "previousNode": "Contentful2" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "TestAsset", + "file": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Contentful3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.005Z", + "stoppedAt": "2025-05-15T21:20:11.962Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/72-snapshot.json b/test-workflows/snapshots/72-snapshot.json new file mode 100644 index 0000000000..c59ee837c7 --- /dev/null +++ b/test-workflows/snapshots/72-snapshot.json @@ -0,0 +1,852 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891396434, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Read Binary File": [ + { + "startTime": 1676891396435, + "executionTime": 24, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "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", + "directory": "/tmp", + "fileName": "n8n-logo.png", + "fileSize": "2.67 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip": [ + { + "startTime": 1676891396459, + "executionTime": 475, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "", + "id": 328952614 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip7": [ + { + "startTime": 1676891396934, + "executionTime": 376, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "", + "subscribed": { + "object": true + }, + "already_subscribed": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip12": [ + { + "startTime": 1676891397310, + "executionTime": 332, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "email": "nodeqa@n8n.io", + "user_id": 392595, + "avatar_version": 1, + "is_admin": true, + "is_owner": true, + "is_guest": false, + "is_billing_admin": false, + "role": 100, + "is_bot": false, + "full_name": "nodeqa", + "timezone": "Europe/Paris", + "is_active": true, + "date_joined": "2021-02-25T14:05:26.897277+00:00", + "avatar_url": { + "object": true + }, + "delivery_email": "nodeqa@n8n.io" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip6": [ + { + "startTime": 1676891397643, + "executionTime": 516, + "source": [ + { + "previousNode": "Read Binary File" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "", + "uri": "https://nodeqa.zulipchat.com//user_uploads/33385/j5pTnm6OfvyVgGiNXDVJ2Lkm/n8n-logo.png" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip1": [ + { + "startTime": 1676891398160, + "executionTime": 478, + "source": [ + { + "previousNode": "Zulip" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip8": [ + { + "startTime": 1676891398638, + "executionTime": 424, + "source": [ + { + "previousNode": "Zulip7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "can_remove_subscribers_group_id": 35057, + "date_created": 1676891397, + "description": "testing stream from n8n", + "first_message_id": 328952616, + "history_public_to_subscribers": true, + "invite_only": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "StreamTest", + "rendered_description": "

testing stream from n8n

", + "stream_id": 371131, + "stream_post_policy": 1, + "is_announcement_only": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "can_remove_subscribers_group_id": 35057, + "date_created": 1614934173, + "description": "testing stream from n8n", + "first_message_id": 228916381, + "history_public_to_subscribers": true, + "invite_only": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "UpdateStream1614934177572", + "rendered_description": "

testing stream from n8n

", + "stream_id": 279988, + "stream_post_policy": 1, + "is_announcement_only": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "can_remove_subscribers_group_id": 35057, + "date_created": 1614934197, + "description": "testing stream from n8n", + "first_message_id": 228916526, + "history_public_to_subscribers": true, + "invite_only": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "UpdateStream1614934202284", + "rendered_description": "

testing stream from n8n

", + "stream_id": 280046, + "stream_post_policy": 1, + "is_announcement_only": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "can_remove_subscribers_group_id": 35057, + "date_created": 1614261926, + "description": "Everyone is added to this stream by default. Welcome! :octopus:", + "first_message_id": 227771365, + "history_public_to_subscribers": true, + "invite_only": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "general", + "rendered_description": "

Everyone is added to this stream by default. Welcome! :octopus:

", + "stream_id": 278952, + "stream_post_policy": 1, + "is_announcement_only": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "can_remove_subscribers_group_id": 35057, + "date_created": 1614262281, + "description": "testing stream", + "first_message_id": 227772218, + "history_public_to_subscribers": true, + "invite_only": true, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "test", + "rendered_description": "

testing stream

", + "stream_id": 278954, + "stream_post_policy": 1, + "is_announcement_only": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip10": [ + { + "startTime": 1676891399062, + "executionTime": 434, + "source": [ + { + "previousNode": "Zulip7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "audible_notifications": { + "object": true + }, + "can_remove_subscribers_group_id": 35057, + "color": "#c2c2c2", + "date_created": 1676891397, + "description": "testing stream from n8n", + "desktop_notifications": { + "object": true + }, + "email_address": "streamtest.84bda58354e62c8acafb42fa7db1a3be.show-sender@streams.zulipchat.com", + "email_notifications": { + "object": true + }, + "first_message_id": 328952616, + "history_public_to_subscribers": true, + "in_home_view": true, + "invite_only": false, + "is_announcement_only": false, + "is_muted": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "StreamTest", + "pin_to_top": false, + "push_notifications": { + "object": true + }, + "rendered_description": "

testing stream from n8n

", + "stream_id": 371131, + "stream_post_policy": 1, + "stream_weekly_traffic": { + "object": true + }, + "wildcard_mentions_notify": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "audible_notifications": { + "object": true + }, + "can_remove_subscribers_group_id": 35057, + "color": "#b0a5fd", + "date_created": 1614934173, + "description": "testing stream from n8n", + "desktop_notifications": { + "object": true + }, + "email_address": "updatestream1614934177572.0a60ffc95fcff95cdd638cbdb200b767.show-sender@streams.zulipchat.com", + "email_notifications": { + "object": true + }, + "first_message_id": 228916381, + "history_public_to_subscribers": true, + "in_home_view": true, + "invite_only": false, + "is_announcement_only": false, + "is_muted": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "UpdateStream1614934177572", + "pin_to_top": false, + "push_notifications": { + "object": true + }, + "rendered_description": "

testing stream from n8n

", + "stream_id": 279988, + "stream_post_policy": 1, + "stream_weekly_traffic": 0, + "wildcard_mentions_notify": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "audible_notifications": { + "object": true + }, + "can_remove_subscribers_group_id": 35057, + "color": "#addfe5", + "date_created": 1614934197, + "description": "testing stream from n8n", + "desktop_notifications": { + "object": true + }, + "email_address": "updatestream1614934202284.62a670187b37f80ce229645999a1a786.show-sender@streams.zulipchat.com", + "email_notifications": { + "object": true + }, + "first_message_id": 228916526, + "history_public_to_subscribers": true, + "in_home_view": true, + "invite_only": false, + "is_announcement_only": false, + "is_muted": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "UpdateStream1614934202284", + "pin_to_top": false, + "push_notifications": { + "object": true + }, + "rendered_description": "

testing stream from n8n

", + "stream_id": 280046, + "stream_post_policy": 1, + "stream_weekly_traffic": 0, + "wildcard_mentions_notify": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "audible_notifications": { + "object": true + }, + "can_remove_subscribers_group_id": 35057, + "color": "#a6c7e5", + "date_created": 1614262281, + "description": "testing stream", + "desktop_notifications": { + "object": true + }, + "email_address": "test.fce82544c99d40f13a35dc8706e86faa.show-sender@streams.zulipchat.com", + "email_notifications": { + "object": true + }, + "first_message_id": 227772218, + "history_public_to_subscribers": true, + "in_home_view": true, + "invite_only": true, + "is_announcement_only": false, + "is_muted": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "test", + "pin_to_top": false, + "push_notifications": { + "object": true + }, + "rendered_description": "

testing stream

", + "stream_id": 278954, + "stream_post_policy": 1, + "stream_weekly_traffic": 0, + "wildcard_mentions_notify": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip13": [ + { + "startTime": 1676891399496, + "executionTime": 420, + "source": [ + { + "previousNode": "Zulip12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "", + "user": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip2": [ + { + "startTime": 1676891399916, + "executionTime": 447, + "source": [ + { + "previousNode": "Zulip1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "", + "id": 328952630 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1676891400363, + "executionTime": 9, + "source": [ + { + "previousNode": "Zulip8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "can_remove_subscribers_group_id": 35057, + "date_created": 1676891397, + "description": "testing stream from n8n", + "first_message_id": 328952616, + "history_public_to_subscribers": true, + "invite_only": false, + "is_web_public": false, + "message_retention_days": { + "object": true + }, + "name": "StreamTest", + "rendered_description": "

testing stream from n8n

", + "stream_id": 371131, + "stream_post_policy": 1, + "is_announcement_only": false + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Zulip14": [ + { + "startTime": 1676891400373, + "executionTime": 0, + "source": [ + { + "previousNode": "Zulip13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "", + "user": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip3": [ + { + "startTime": 1676891400373, + "executionTime": 435, + "source": [ + { + "previousNode": "Zulip2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "", + "message": { + "object": true + }, + "raw_content": "Update content 1676891398165" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip9": [ + { + "startTime": 1676891400808, + "executionTime": 375, + "source": [ + { + "previousNode": "Function" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip15": [ + { + "startTime": 1676891401184, + "executionTime": 0, + "source": [ + { + "previousNode": "Zulip14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "", + "user": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip4": [ + { + "startTime": 1676891401184, + "executionTime": 374, + "source": [ + { + "previousNode": "Zulip3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip11": [ + { + "startTime": 1676891401558, + "executionTime": 431, + "source": [ + { + "previousNode": "Zulip9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Zulip5": [ + { + "startTime": 1676891401989, + "executionTime": 483, + "source": [ + { + "previousNode": "Zulip4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "result": "success", + "msg": "" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Zulip5" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:56.431Z", + "stoppedAt": "2023-02-20T11:10:02.472Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/73-snapshot.json b/test-workflows/snapshots/73-snapshot.json new file mode 100644 index 0000000000..79b73c686e --- /dev/null +++ b/test-workflows/snapshots/73-snapshot.json @@ -0,0 +1,965 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1678116858529, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube13": [ + { + "startTime": 1678116858530, + "executionTime": 703, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube18": [ + { + "startTime": 1678116859234, + "executionTime": 131, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#videoCategory", + "etag": "grPOPYEUUZN3ltuDUGEWlrTR90U", + "id": "1", + "snippet": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube4": [ + { + "startTime": 1678116859365, + "executionTime": 729, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlist", + "etag": "cZxvObsnYlgTQ5KURoRfgGtFZpA", + "id": "PLSug7srxxXFf2x85_vM2dVCsrTnKaCbE0", + "snippet": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube1": [ + { + "startTime": 1678116860094, + "executionTime": 176, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#channel", + "etag": "w0TrUr6fWdqCBhWBjQVLPE3AAp0", + "id": "UCiHVTkJtWSdc9N3h0nUGWLg", + "snippet": { + "object": true + }, + "contentDetails": { + "object": true + }, + "statistics": { + "object": true + }, + "topicDetails": { + "object": true + }, + "status": { + "object": true + }, + "brandingSettings": { + "object": true + }, + "contentOwnerDetails": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second4": [ + { + "startTime": 1678116860270, + "executionTime": 513, + "source": [ + { + "previousNode": "YouTube13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.5 second1": [ + { + "startTime": 1678116860783, + "executionTime": 504, + "source": [ + { + "previousNode": "YouTube4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlist", + "etag": "cZxvObsnYlgTQ5KURoRfgGtFZpA", + "id": "PLSug7srxxXFf2x85_vM2dVCsrTnKaCbE0", + "snippet": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Sleep 0.5 second": [ + { + "startTime": 1678116861287, + "executionTime": 504, + "source": [ + { + "previousNode": "YouTube1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#channel", + "etag": "w0TrUr6fWdqCBhWBjQVLPE3AAp0", + "id": "UCiHVTkJtWSdc9N3h0nUGWLg", + "snippet": { + "object": true + }, + "contentDetails": { + "object": true + }, + "statistics": { + "object": true + }, + "topicDetails": { + "object": true + }, + "status": { + "object": true + }, + "brandingSettings": { + "object": true + }, + "contentOwnerDetails": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "YouTube14": [ + { + "startTime": 1678116861791, + "executionTime": 163, + "source": [ + { + "previousNode": "Sleep 0.5 second4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#video", + "etag": "CU762SGxLJSQ9Zoa5a5lMfVPIRY", + "id": "sJO3b0WXm8I", + "snippet": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube5": [ + { + "startTime": 1678116861954, + "executionTime": 534, + "source": [ + { + "previousNode": "Sleep 0.5 second1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlist", + "etag": "x1ifiVNV20WdssD7ZZvcIylYEI8", + "id": "PLSug7srxxXFf2x85_vM2dVCsrTnKaCbE0", + "snippet": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube": [ + { + "startTime": 1678116862488, + "executionTime": 263, + "source": [ + { + "previousNode": "Sleep 0.5 second" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#channel", + "etag": "fCuCBJVzK5ufWTV-IWDIgBqRptA", + "id": "UCkdph8FDLpq2UD2i_OlwErA", + "snippet": { + "object": true + }, + "contentDetails": { + "object": true + }, + "statistics": { + "object": true + }, + "status": { + "object": true + }, + "brandingSettings": { + "object": true + }, + "contentOwnerDetails": { + "object": true + }, + "localizations": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "HTTP Request": [ + { + "startTime": 1678116862752, + "executionTime": 0, + "source": [ + { + "previousNode": "YouTube14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#video", + "etag": "CU762SGxLJSQ9Zoa5a5lMfVPIRY", + "id": "sJO3b0WXm8I", + "snippet": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube9": [ + { + "startTime": 1678116862752, + "executionTime": 491, + "source": [ + { + "previousNode": "YouTube5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlistItem", + "etag": "51b2-FnJVTOoejrxHMjUub8dQmc", + "id": "UExTdWc3c3J4eFhGZjJ4ODVfdk0yZFZDc3JUbkthQ2JFMC41NkI0NEY2RDEwNTU3Q0M2", + "snippet": { + "object": true + }, + "contentDetails": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube2": [ + { + "startTime": 1678116863243, + "executionTime": 1225, + "source": [ + { + "previousNode": "YouTube" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#channel", + "etag": "FJbGUwCbpYOnGAel0jE_WyNVJqk", + "id": "UCkdph8FDLpq2UD2i_OlwErA", + "brandingSettings": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second5": [ + { + "startTime": 1678116864468, + "executionTime": 1, + "source": [ + { + "previousNode": "HTTP Request" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#video", + "etag": "CU762SGxLJSQ9Zoa5a5lMfVPIRY", + "id": "sJO3b0WXm8I", + "snippet": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second2": [ + { + "startTime": 1678116864469, + "executionTime": 504, + "source": [ + { + "previousNode": "YouTube9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlistItem", + "etag": "51b2-FnJVTOoejrxHMjUub8dQmc", + "id": "UExTdWc3c3J4eFhGZjJ4ODVfdk0yZFZDc3JUbkthQ2JFMC41NkI0NEY2RDEwNTU3Q0M2", + "snippet": { + "object": true + }, + "contentDetails": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Read Binary File": [ + { + "startTime": 1678116864974, + "executionTime": 0, + "source": [ + { + "previousNode": "YouTube2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#channel", + "etag": "FJbGUwCbpYOnGAel0jE_WyNVJqk", + "id": "UCkdph8FDLpq2UD2i_OlwErA", + "brandingSettings": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube15": [ + { + "startTime": 1678116864974, + "executionTime": 0, + "source": [ + { + "previousNode": "Sleep 0.5 second5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#video", + "etag": "CU762SGxLJSQ9Zoa5a5lMfVPIRY", + "id": "sJO3b0WXm8I", + "snippet": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube10": [ + { + "startTime": 1678116864974, + "executionTime": 247, + "source": [ + { + "previousNode": "Sleep 0.5 second2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlistItem", + "etag": "vfNj2T80rWmuEtn3bdR9w-gJxKM", + "id": "UExTdWc3c3J4eFhGZjJ4ODVfdk0yZFZDc3JUbkthQ2JFMC41NkI0NEY2RDEwNTU3Q0M2", + "contentDetails": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube3": [ + { + "startTime": 1678116865221, + "executionTime": 0, + "source": [ + { + "previousNode": "Read Binary File" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#channel", + "etag": "FJbGUwCbpYOnGAel0jE_WyNVJqk", + "id": "UCkdph8FDLpq2UD2i_OlwErA", + "brandingSettings": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube16": [ + { + "startTime": 1678116865221, + "executionTime": 0, + "source": [ + { + "previousNode": "YouTube15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#video", + "etag": "CU762SGxLJSQ9Zoa5a5lMfVPIRY", + "id": "sJO3b0WXm8I", + "snippet": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube11": [ + { + "startTime": 1678116865221, + "executionTime": 244, + "source": [ + { + "previousNode": "YouTube10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlistItem", + "etag": "vfNj2T80rWmuEtn3bdR9w-gJxKM", + "id": "UExTdWc3c3J4eFhGZjJ4ODVfdk0yZFZDc3JUbkthQ2JFMC41NkI0NEY2RDEwNTU3Q0M2", + "contentDetails": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second6": [ + { + "startTime": 1678116865465, + "executionTime": 0, + "source": [ + { + "previousNode": "YouTube16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#video", + "etag": "CU762SGxLJSQ9Zoa5a5lMfVPIRY", + "id": "sJO3b0WXm8I", + "snippet": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Sleep 0.5 second3": [ + { + "startTime": 1678116865465, + "executionTime": 503, + "source": [ + { + "previousNode": "YouTube11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlistItem", + "etag": "vfNj2T80rWmuEtn3bdR9w-gJxKM", + "id": "UExTdWc3c3J4eFhGZjJ4ODVfdk0yZFZDc3JUbkthQ2JFMC41NkI0NEY2RDEwNTU3Q0M2", + "contentDetails": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "YouTube17": [ + { + "startTime": 1678116865969, + "executionTime": 0, + "source": [ + { + "previousNode": "Sleep 0.5 second6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#video", + "etag": "CU762SGxLJSQ9Zoa5a5lMfVPIRY", + "id": "sJO3b0WXm8I", + "snippet": { + "object": true + }, + "status": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube12": [ + { + "startTime": 1678116865969, + "executionTime": 589, + "source": [ + { + "previousNode": "Sleep 0.5 second3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube6": [ + { + "startTime": 1678116866558, + "executionTime": 290, + "source": [ + { + "previousNode": "YouTube12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "kind": "youtube#playlist", + "etag": "PovpXjHyDmQRrWiHF2py5vCN0sE", + "id": "PLSug7srxxXFf2x85_vM2dVCsrTnKaCbE0", + "snippet": { + "object": true + }, + "status": { + "object": true + }, + "contentDetails": { + "object": true + }, + "player": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "YouTube7": [ + { + "startTime": 1678116866849, + "executionTime": 480, + "source": [ + { + "previousNode": "YouTube6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "YouTube7" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-03-06T15:34:18.525Z", + "stoppedAt": "2023-03-06T15:34:27.329Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/78-snapshot.json b/test-workflows/snapshots/78-snapshot.json new file mode 100644 index 0000000000..2a66e466b6 --- /dev/null +++ b/test-workflows/snapshots/78-snapshot.json @@ -0,0 +1,879 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1676891397882, + "executionTime": 1, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "date": "2019-05-05", + "explanation": "This is not a solar eclipse. Pictured here is a busy vista of moons and rings taken at Saturn. The large circular object in the center of the image is Titan, the largest moon of Saturn and one of the most intriguing objects in the entire Solar System. The dark spot in the center is the main solid part of the moon. The bright surrounding ring is atmospheric haze above Titan, gas that is scattering sunlight to a camera operating onboard the robotic Cassini spacecraft. Cutting horizontally across the image are the rings of Saturn, seen nearly edge on. At the lower right of Titan is Enceladus, a small moon of Saturn. Since the image was taken pointing nearly at the Sun, the surfaces of Titan and Enceladus appear in silhouette, and the rings of Saturn appear similar to a photographic negative. Now if you look really really closely at Enceladus, you can see a hint of icy jets shooting out toward the bottom of the image. It is these jets that inspired future proposals to land on Enceladus, burrow into the ice, and search for signs of extraterrestrial life.", + "hdurl": "https://apod.nasa.gov/apod/image/1905/TitanBusy_Cassini_1080.jpg", + "media_type": "image", + "service_version": "v1", + "title": "Saturn, Titan, Rings, and Haze", + "url": "https://apod.nasa.gov/apod/image/1905/TitanBusy_Cassini_1080.jpg" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA": [ + { + "startTime": 1676891397883, + "executionTime": 1202, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "links": { + "object": true + }, + "id": "2000433", + "neo_reference_id": "2000433", + "name": "433 Eros (A898 PA)", + "name_limited": "Eros", + "designation": "433", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=2000433", + "absolute_magnitude_h": 10.31, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "orbital_data": { + "object": true + }, + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA3": [ + { + "startTime": 1676891399087, + "executionTime": 4243, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "activityID": "2023-01-21T02:00:00-CME-001", + "catalog": "M2M_CATALOG", + "startTime": "2023-01-21T02:00Z", + "sourceLocation": "", + "activeRegionNum": { + "object": true + }, + "link": "https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/CME/23401/-1", + "note": "Faint CME SSW in SOHO LASCO C2/C3 and STEREO A COR2, another faint outflow following the 2023-01-20 mid-day filament eruptions/CMEs. No definitive source has been found.", + "instruments": [ + "json array" + ], + "cmeAnalyses": [ + "json array" + ], + "linkedEvents": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA7": [ + { + "startTime": 1676891403333, + "executionTime": 934, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA5": [ + { + "startTime": 1676891404267, + "executionTime": 1473, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "flrID": "2023-01-22T12:12:00-FLR-001", + "instruments": [ + "json array" + ], + "beginTime": "2023-01-22T12:12Z", + "peakTime": "2023-01-22T12:26Z", + "endTime": "2023-01-22T12:34Z", + "classType": "M1.1", + "sourceLocation": "S20W40", + "activeRegionNum": 13190, + "linkedEvents": { + "object": true + }, + "link": "https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/FLR/23406/-1" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA8": [ + { + "startTime": 1676891405743, + "executionTime": 999, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "rbeID": "2023-02-08T12:45:00-RBE-001", + "eventTime": "2023-02-08T12:45Z", + "instruments": [ + "json array" + ], + "linkedEvents": [ + "json array" + ], + "link": "https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/RBE/23643/-1" + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "rbeID": "2023-02-12T14:00:00-RBE-001", + "eventTime": "2023-02-12T14:00Z", + "instruments": [ + "json array" + ], + "linkedEvents": [ + "json array" + ], + "link": "https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/RBE/23729/-1" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA6": [ + { + "startTime": 1676891406742, + "executionTime": 1003, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA4": [ + { + "startTime": 1676891407745, + "executionTime": 1266, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "catalog": "M2M_CATALOG", + "activityID": "2023-01-25T08:30:00-IPS-001", + "location": "STEREO A", + "eventTime": "2023-01-25T08:30Z", + "link": "https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/IPS/23450/-1", + "instruments": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA9": [ + { + "startTime": 1676891409011, + "executionTime": 1063, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "hssID": "2023-01-30T19:45:00-HSS-001", + "eventTime": "2023-01-30T19:45Z", + "instruments": [ + "json array" + ], + "linkedEvents": { + "object": true + }, + "link": "https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/HSS/23526/-1" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA10": [ + { + "startTime": 1676891410074, + "executionTime": 1889, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "simulationID": "WSA-ENLIL/23411/1", + "modelCompletionTime": "2023-01-22T15:04Z", + "au": 2, + "cmeInputs": [ + "json array" + ], + "estimatedShockArrivalTime": { + "object": true + }, + "estimatedDuration": { + "object": true + }, + "rmin_re": { + "object": true + }, + "kp_18": { + "object": true + }, + "kp_90": { + "object": true + }, + "kp_135": { + "object": true + }, + "kp_180": { + "object": true + }, + "isEarthGB": false, + "impactList": { + "object": true + }, + "link": "https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/WSA-ENLIL/23411/-1" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA11": [ + { + "startTime": 1676891411965, + "executionTime": 2177, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "messageType": "CME", + "messageID": "20230219-AL-003", + "messageURL": "https://kauai.ccmc.gsfc.nasa.gov/DONKI/view/Alert/23823/1", + "messageIssueTime": "2023-02-19T19:34Z", + "messageBody": "## Community Coordinated Modeling Center Database Of Notifications, Knowledge, Information ( CCMC DONKI )\n## Message Type: Space Weather Notification - CME (Juno, Dawn, Parker Solar Probe)\n##\n## Message Issue Date: 2023-02-19T19:34:54Z\n## Message ID: 20230219-AL-003\n##\n## Disclaimer: NOAA's Space Weather Prediction Center is the United States Government official source for space weather forecasts. This \"Experimental Research Information\" consists of preliminary NASA research products and should be interpreted and used accordingly.\n\n\n## Summary:\n\nC-type CME detected by SOHO. \n\nStart time of the event: 2023-02-18T02:48Z.\n\nEstimated speed: ~992 km/s.\n\nEstimated opening half-angle: 45 deg.\n\nDirection (lon./lat.): -161/1 in Heliocentric Earth Equatorial coordinates.\n\nActivity ID: 2023-02-18T02:48:00-CME-001\n\nBased on preliminary analysis by the Moon to Mars Space Weather Analysis Office and heliospheric modeling carried out at NASA Community Coordinated Modeling Center, it is estimated that the CME may impact Juno (minor impact) and Parker Solar Probe. The leading edge of the CME will reach Juno at 2023-03-04T00:00Z, and Parker Solar Probe at 2023-02-19T06:34Z (plus minus 7 hours). \n\nLinks to the movies of the modeled event (includes CME: 2023-02-18T02:48:00-CME-001):\n\n(a) 2 AU outer boundary\nhttp://iswa.gsfc.nasa.gov/downloads/20230218_063200_2.0_anim.tim-den.gif\nhttp://iswa.gsfc.nasa.gov/downloads/20230218_063200_2.0_anim.tim-vel.gif\nhttp://iswa.gsfc.nasa.gov/downloads/20230218_063200_2.0_ENLIL_CONE_timeline.gif\nhttp://iswa.gsfc.nasa.gov/downloads/20230218_063200_2.0_ENLIL_CONE_PSP_timeline.gif\n\n(b) 5.5 AU outer boundary\nhttp://iswa.gsfc.nasa.gov/downloads/20230218_063200_5.5_anim.tim-den.gif\nhttp://iswa.gsfc.nasa.gov/downloads/20230218_063200_5.5_anim.tim-vel.gif\nhttp://iswa.gsfc.nasa.gov/downloads/20230218_063200_5.5_ENLIL_CONE_Juno_timeline.gif\n\n\n## Notes: \n\n\nSCORE CME typification system:\nS-type: CMEs with speeds less than 500 km/s\nC-type: Common 500-999 km/s\nO-type: Occasional 1000-1999 km/s\nR-type: Rare 2000-2999 km/s\nER-type: Extremely Rare >3000 km/s\n\n\n" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA12": [ + { + "startTime": 1676891414154, + "executionTime": 6091, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "date": "2019-05-05", + "explanation": "This is not a solar eclipse. Pictured here is a busy vista of moons and rings taken at Saturn. The large circular object in the center of the image is Titan, the largest moon of Saturn and one of the most intriguing objects in the entire Solar System. The dark spot in the center is the main solid part of the moon. The bright surrounding ring is atmospheric haze above Titan, gas that is scattering sunlight to a camera operating onboard the robotic Cassini spacecraft. Cutting horizontally across the image are the rings of Saturn, seen nearly edge on. At the lower right of Titan is Enceladus, a small moon of Saturn. Since the image was taken pointing nearly at the Sun, the surfaces of Titan and Enceladus appear in silhouette, and the rings of Saturn appear similar to a photographic negative. Now if you look really really closely at Enceladus, you can see a hint of icy jets shooting out toward the bottom of the image. It is these jets that inspired future proposals to land on Enceladus, burrow into the ice, and search for signs of extraterrestrial life.", + "hdurl": "https://apod.nasa.gov/apod/image/1905/TitanBusy_Cassini_1080.jpg", + "media_type": "image", + "service_version": "v1", + "title": "Saturn, Titan, Rings, and Haze", + "url": "https://apod.nasa.gov/apod/image/1905/TitanBusy_Cassini_1080.jpg" + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "iVBORw0KGgoAAAANSUhEUgAACAAAAAgACAIAAAA9xURnAACAAElEQVR4XuzdS3Nd14GeYf+CtkjcAd4AUryIN5EUxasoUXTbstvV7u7qqnRSGSeZZZTKMNP87KhDFUWu94gCATyr7NN71zPWwVl77xLwfir7N7fvf/dJbtx6Ns31zx9Pc3j4cJqjw3vTfP75/Zmu33g0zb3Hb6b58tk/TnPn4e9mOjh8PM+159Ncv/vNNF8+/WGmp6//Ms33P/ynae7dez3PnVcz3fj88TRHh0+mufr5y2n+/o//Ns39R29munrj5TQHBzen2dnaneb8ZxszbZzbnOf8PJsbW9Nsb+3OtLe7P83li5enuXBwaZrDw5vTXLv+cKY7919Nc/ved9P0zzTnwsHFvZ39aS7sH0yztbkzzebG9jR727tz7Uyzs7U9z+bWNPs7uzPt/HiSs+z9+K/pWTbPb0xz/tw8fcep7c2taY4uX5lmd3tnmr2dvZne/Ur8myb+j2umd5rpnWZ6p5me6m9pTjO900zvNNM7bfTU2OipZHqnmd5po6ea6Z1memds9FQaPdVM7zTTO830TjO900ZPNdM7zfROM73TRk+NjZ5Kpnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZHbn7x6vKlJ9NcunhrmjZ6qpneaaZ3WtmcBHptzPTO2OipZHqnjZ5qpnea6Z1meqeZ3uk7TjXTO830TjO900ZPvfuVeBkAftJM77TRU830TjO900zvNNM7bfTU2OipZHqnmd5po6ea6Z1memds9FQaPdVM7zTTO830TjM91UzvNNM7zfROM73TRk+NjZ5Kpnea6Z02eqqZ3mmmd5rpnTZ64e69r966fefLaW5+8e9pfo5meqeZ3mmjp5rpnWZ6p5XNSaDXxkzvjI2eSqZ32uipZnqnmd5ppnea6am+5k4zvdNM7zTTO2301LtfiZcB4CfN9E4bPdVM7zTTO830TjM91UzvjI2eSqZ3mumdNnqqmd5ppnfGRk+l0VPN9E4zvdNM77TRU830TjO900zvNNM7bfTU2OipZHqnmd5po6ea6Z1m+jN06cIHDg+PpnmX5udopnea6Z1meqeZnmqmd5rpnWZ6p5XNSaDXxkzvjI2eSqZ32uipZnqnmd5ppnfa6Km+5k4zvdNM7zTTO2301LtfiZcB4CfN9E4bPdVM7zTTO830Ths91UzvjI2eSqZ3mumdNnqqmd5ppnfGRk+l0VPN9E4zvdNM77TRU830TjO900zvNNNTzfTO2OipZHqnmd5poz8r+3sHtbuzN83Q6KlmeqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnlc1JoNfGTO+MjZ5Kpnfa6KlmeqeZ3mmmd9roqb7mTjO900zvNNNTzfTOu9+TlwHgJ830Ths91UzvNNM7zfROGz3VTO+MjZ5Kpnea6almeqeZ3mmmd8ZGT6XRU830TjO900zvtNFTzfROM73TTO+00VPN9M7Y6Klk+tPbPL+10tbmPG30VDO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO61sVBo9NWZ6Z2z0VDK900ZPNdM7zfROM73TRk/1HXea6Z1meqeNnmqmd5YBYNRM77TRU830TjO900zvtNFTzfTO2OipZHqnjZ5qpnea6Z1memds9FQaPdVM7zTTO830Ths91UzvNNM7zfROGz3VTH8an/32Y3a3t6dppnea6almeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1WNiqNnhozvTM2eiqZnmqmd5rpnWZ6p5neaaOn+o47zfROM73TRk810zvLADBqpnfa6KlmeqeZ3mmmd9roqWZ6Z2z0VDK900ZPNdM7zfROM70zNnotmd5ppnea6Z1meqeNnmqmd5rpnWb6E7t4+d7H9X+bhWqmd5rpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaWWj0uipMdM7Y6On0uipZnqnmd5ppnea6Z02eqrvuNNM7zTTO230VDO98+4vpmUA+EkzPdVM7zTTO830TjO900ZPNdM7Y6OnkumdNnqqmd5ppnea6Z0x0GvJ9E4zvdNM7zTTO230VDP9Cdy4+fw4Dq89nqaZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqWZ6p5neaaZ3WtmoNHpqzPTO2OipNHqqmd5ppnea6Z1meqqZ3uk77jTTO830Ths91UzvvPuLaRkAftJGTzXTO830TjO900zvtNFTzfTO2OipZHqnjZ5qpnea6Z1memcM9FoyvdNM7zTTO830n+rRozfH9/T5H6Zppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p5neaWWj0uipMdM7Y6On0uipZnqnmd5ppnfa6KlmeqfvuNNM7zTTO230VDO98+4vpmUA+EkbPdVM7zTTO830TjM91UzvNNM7Y6OnkumdNnqqmd5ppnea6Z0x0GvJ9E4z/fHdvvPsk9y79+00bfRUM73TTO800zvN9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjO908pGpdFTY6Z3xkZPpdFTzfROM73TTO+00VPN9E7fcaeZ3mmmp5rpnWZ6591fTMsA8JM2eqqZ3mmmd5rpnTZ6qpneaaZ3xkZPJdNTzfROM73TTO800ztjoD+2CxcfnMDNG0+maaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5meamhz0uipMdM7Y6On0uipZnqnmd5ppnfa6KlmeqfvuNNM77TRU830TjO98+4vpmUA+EkbPdVM7zTTO830Ths91UzvNNM7Y6On0uipZnqnmd5ppv9V9x5+ezJPXv5xmjZ6qpneaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p42eamhz0uipMdM7Y6On0uipZnqnmd5ppnfa6KlmeqfvuNNM77TRU830TjO98+4vpmUA+EkbPdVM7zTTO830Ths91UzvNNM7Y6On0uipZvqPuHr3zWl8/fKHaZrpnWZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnGtqcNHpqzPTO2Oi1ZHqnmd5ppnea6Z02eqqZ3uk77jTTO230VDO900zvvPuLaRkAftZM7zTTO830TjO900ZPNdM7zfTO2Oh/2dHd707pxqPfzdRM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvdNM77TRU830TjO900zvtNFTDW1OGj01ZnpnDPRaMr3TTO800zvN9E4bPdVM7/Qdd5rpnTZ6qpn+ZLY2to5he5rtrZ23lgHgZ830TjO900zvNNM7bfRUM309evr9mbh5//U0zfROGz3VTO800zvN9E4bPdVM7zTTO830TjM91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRUw1tTho9NWZ6Zwz0WjK900zvNNM7zfRUM73TTO/0HXea6U9gf2/3OA72DmZKo6fGTO8sA8AKzfROM73TTO800w8ePXl9hv7X//6/0zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNNTzfROM73TTO800ztt9FRDm5NGT42Z3hkDvZZM7zTTO830Ths91UzvNNMf3/bmzl+tZnqnjZ5Ko6fGTO8sA8AKzfROM/37bly/fYZuTtRGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNNTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9E4bPdVM76TRU2Omd8ZAryXTO830TjO900Z/HFsbmydz/rcb0zSdr4dmeqqZ3kmjp8ZM7/zNDwCPvv7+zH1+7c40zfROM73TRk810zvN9E4zvdNMTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO+k0VNjpnfGQK8l0zvN9B+38dnmibWbr41meqfpfD200VPN9E4aPTVmeufnAeDOo9ef5O6Xz6Zpo6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6almeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd9LoqTHTU2Oj/wWb5zdP79xvz0/TTO+0m6+NZnqn6Xw9tNFTzfROGj01ZnpnGQBWaKZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5meaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppqea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eqeZ3mmmd9roqWZ6p5neaaZ3mumpZnqnmd5ppnea6Z02eqqZ/jTu3n36EV89ejVNM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNNTzfROA6LTTO800ztt9FTT+Xpopnf6cK6NZnqnmd5JoNfGTO8sA8Comd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppj+xo+vPPu7gwp2ZmumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaanmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnAdFppnea6Z02eqrpfD000zt9ONdGM73TTO8k0GtjpneWAWDUTO+00VPN9E4zvdNM77TRU830TjO900zvtNFTzfROM/0J3P/qzXG8ePMv0zTTU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830Ths91UzvNCA6zfROMz3VTO80na+HZnqnD+faaKZ3mumdBHptzPTOMgCMmumpZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTb6T3X51vef4PqTaZrpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppqea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnAdFppnfa6KlmeqfpfD000zt9ONdGM73TTO8k0GtjpneWAWDURk810zvN9E4zvdNM77TRU830TjP98f3X//F/PsnLf/zv04yBXkumd5rpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnAdFppnfa6KlmeqfpfD0001N9PtdDM73TTO8k0FvnP9ucbBkAftZGTzXTO830TjO900xPNdMfx4s3/3wCf/kv/3OaZnqnmd4ZA72WTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvdNM77TRU830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Znqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6almeqeZ3mmmd5rpnTb647h27d7JXL50a5pmeqeZ3mmjp5rpnWZ6J42eGhs91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO90+ZLNdM7zfROM73TU6Wa6Z1memcZAEZt9FQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9B9x9ejmaVw5ujVNGz3VTO800zvN9E4bPdVM7zTTO2n01NjoqWZ6p5neaaZ3mumpZnqnmd5ppnea6Z02eqqZ3mmmd5rpnQZfqpneaaZ3mumdnirVTO800zvLADBqo6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ32uipZvqVbj94c3r3vvxmmmZ6p5meaqZ3mumdZnqnmd5po6ea6Z1meieNnhobPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdPgSzXTO830TjO901OlmumdZnpnGQBWaKZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaanmumdZnqnmd5ppnfa6KlmeqeZ3mmmr6Ob35yJB0//OFMzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800ztp9NTY6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumpZnqnmd5ppnea6Z0GX6qZ3mmmd5rpnZ4q1UzvNNM7ywCwQjO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk8107/vwuUHZ+ji0aNpmumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZ3mumdNHpqbPRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROgy/VTO800zvN9E5PlWqmd5rpnWUAWKGZ3mmmd5rpnWZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5n+nWu3Hp+56188naaZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnTR6amz0VDO900zvNNM7bfRUM73T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mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumd1kOqmd5ppnea6Z02eqqZ3mmWdZrpnb4IVDP94x0dHn7W5cX5akajp5rpqfb6xT1p0L+vZnqnmd5ppnfa6Klm+p1+fhof5s2bb1fTTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROMz3VgOg00zvN9E4zvdNGTzXTO830TjP9Y/324EsOnx6uqZneaaZ3mumdNnqqvX5xTxr076uZ3mmmd5rpd+qbcHcnx6eraaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5meaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ/mHOn5/t1JbtNNM7HZ1qcnSa6Z1meqeNnmqvX9yTBv37aqa/xatXbx9jHthJfaypZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmv6+zk5O7Ozk6Xk0zvdOW7TTTOx2danJ0mumdZnqnjZ5qr1/ck9c37x+pmd5ppnf6WFPN9E4zvdNM7zTTU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830d3f+/Pm9XK6ojZ5qpnea6Z22bKeZ3unoVJOj00zvNNM7bfRUe/3itgOAL+pjTTXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9FQzvdNM7zTTO830Thv9nZydP8zh06PVNNM7zfROGz3VTO800ztt2U4zPdUf4DQ5Os30TjO900ZPtdcvbjsA+KI+1lQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROMz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TRk810zvN9E4z/e3Ozi4e7PLyejVt9FQzvdNM7zTTO230VDO900zvtGU7bfRUf4DT5Og00zvN9E4bPdVev7jtAOCL+lhTzfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830Ths91Uz/Wd98+9PjXV29Xk0zvdNMTzXTO830TjO900zvtNFTzfROM73Tlu200VP9AU6To9NM7zTTU830Tnv94rYDgC/qY0010zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO8001PN9E4zvdNM7zTTO230VDO900zvNNPXx+/+bhEfvvnzmprpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mnLdtroqf4Ap8nRaaZ32uipZnqnvX5x2wHAbfpkO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTP9rb7/+cUHf/u7vV9NM77TRU830TjO900zvtNFTzfROM73TTO8001PN9E4zvdNM77RlO230VH+A0+ToNNM7bfRUM73TXr+47QDgNn2ynWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumpZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZvpffPzuH4SX13+zmmZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ32rKdNnqqP8BpcnSa6Z02eqqZ3mmvX9x2AHCbPtlOM73TTO8001PN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO8005+dniNv3n23mjZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnLZtqpnc6utPk6DTTO230VDO9016/uO0A4DZ9sp1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumpZnqnmd5ppnea6Z0R6N+8/YFqlHea6Z1meqeNnmqmd5rpnWZ6p5meaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neacummumdju40OTrN9E4bPdVM77TXL247ALhNn2ynmd5ppnfa6KlmeqeZ3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3PtX5b3/4J+3l9e9W00ZPNdM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM77RlU830Tkd3mhydZnqqmd5ppnfa6xe3HQDcpk+200zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4bPfXy9Y/f/e6ndfzhb//raprpnWZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5meaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mnLpprpnY7uNDk6bfRUM73TTO+01y/uL+wA4NW6ZwB9sp1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppqea6Z1meqeZ3mmmd9roqWZ6p5neefX629W8fPVhTc30TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9E4bPdVM7zTTO830Tls21UzvdHSnydFpo6ea6Z1meqe9fnHbAcBt+mQ7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00WPvV3N9vZ5meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppqea6Z1meqeZ3mmmd9qyqWZ6p6M7TY5OGz3VTO800zvt9YvbDgBu0yfbaaZ3mumpZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mukXd3Z6+ovzda80empmeqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6py2baqZ3OrrT5Oi00VPN9E4zvdNev7jtAOA2fbKdZnqnjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmukXdHp8+v85Wc+nOr+CWejxlUZPzUzvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROMz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE81ZzvN9E5Hd5ocnTZ6qpneaaZ32usXtx0A3KZPttNM77TRU830TjO900zvNNNTzfROM73TTO800y/l+PB4eraq2eipZHqnmd6ZhR5fafTUzPROM73TTE810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800ztt9FRzttNM73R0p8nRaaOnmumdZnqnvX5x2wHAbfpkO830Ths91UzvNNM7zfROGz3VTO800z/e1Yubzzo9fr6a2eipNHpqNnoqmd5ppndmocdXGj01M73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7zfROGz3VTO800zvN9E4bPdWc7TTTOx3daXKkmumdZnqnmd5pr1/cAgcAr9c9A2imd/pYO830Ths91UzvNNM7zfROG/0jPb/4cItXrz6uppneaaZ3ZqPXkumd2eipZHqnmd6ZhR5fafTUzPROM73TRk810zvN9E4zvdNMTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FRzttNM73R0p8mRaqZ3mumdk6OjFxcX67j8+fOCbQcAt+lj7TTTO230VDO900z/YCfHZ7c7e/56NW30VDO900zvNNM7M9BryfTObPRUMr3TTO/MQo+vNHpqZnqnmd5po6ea6Z1meqeZ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TO/MQK8l0zvN9M6nOv/znKW9//BxVcn0TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths9lUZPzVzmNNM77eZ7o5neaTrfD230VDO902S/rO0AYIdmemc2eiqZ3mmjp5rpnWZ6p5neaaanmumdZnpnNnoqmd6ZgV47OT05OlpHlxdQMr0zA72WTO800zvN9E4zPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VNp9NTMZU4zvdNuvjea6Z25/dwXbfRUM73TZL+s7QBgh2Z6ZzZ6KpneaaOnmumdZnqnmd5po6ea6Z1memc2eurZ0WoOvjpYUzO90+UFlEzvzECvJdM7zfROM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTU830TjO900zvNNM7bfRUGj01c5nTTO+0m++NZnpnbj/3SDO900zvNNkv6y/vAOBs3TOAZnpnNnoqmd5po6ea6Z1meqeZ3mmjp5rphcuLVz87OjxezdPfHqymmZ5qpnea6Z2uLaBkemcGei2Z3mmmd5rpnTZ6qpneaaZ3mumdZnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZ3mmjp9LoqdnKnGZ6p918bzTTO3P7uUea6Z1meqfJflnbAcAOzfTObPRUMr3TRk810zvN9E4z/eKOj1/+4tWrb9f0S5pfRzO900zvtNFTzfROM73TtQWUTO/MQK8l0zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO8001PN9E4aPTVbmdNM77Sb741memduP/dIM73TTP+zd2/fCS8urqjtAGCHZnpnNnoqmZ5qpnea6Rf07PDZrx0dn6/mU51fQRs91UzvNNM7zfROGz3VTO800ztdW0DJ9NRs9FQyvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4bPdVM76TRU7OVOc30Trv5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M73TTO+00VPN9E4zvdMBI805TjXTO830TjO900zvzECvJdM7zfROM73TRk810zvN9MfyFz/82fDS86+s5slAr7XRU830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9FQzvdNM7zTTO830Ths91ay/u20D4Aia6Z1meqeVzWmmp2ajp2YYhZrpnWZ6p42eaqZ3mumdDhhpznGqmd5ppnea6Z1memcGei2Z3mmmd5rpnTb6o3jvvXc/1N/84peraaZ3mumdZnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6Klm/d1tGwBH0EzvNNM7rWxOGz01Gz01wyjUTO800ztt9FQzvdNM73TASHOOU830TjO900zvNNNTs9FTyfROM/2Bumh87MUXnltNGz3VTO800zvN9E4bPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO90w8tp42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZnmqmd5r1d7dtABxBM73TTO+0sjlt9NRs9NQMo1AzvdNM77TRU830TjO90wEjzTlONdM7zfROM73TRk/NRn+A65dXT9ebCGWN5zTTO230VDO900zvNNM7bfRUM73TTO800zvN9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4/tJw2eqqZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5p1t/dtgFwBM30TjO908rmtNFTs9FTM4xCzfROMz3VTO800zvN9E4HjDTnODUjrNRM7zTTL3N1ef1j3bl9e03N9E5vIpQ1ntNMTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zv90KKa6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnWX93v5sbAA810zvN9E4zvdPK5rTRU7PRUzOMQs30Ths91UzvNNM7zfROB4w05zg1I+z+Tq+d7erkfDXN9E4bPdVM7/R2Q1ngOW30VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjM91UzvNNM7zfROM73TRk810zvN9E4zvdMPLaqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea9Xe3bQAcQTO900zvtLI5bfTUbPTUDKNQM73TRk810zvN9E4zvdMBs5fL88u9nD88ubXMRk8l0zvN9E4bPdVM78xGT2WB57TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zvN9E4/tKhmeqeZ3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5p1t/dtgFwBM30TjO900xPNdM7s9FTCalOM73TRk810zvN9Du6ef1qXzcuL1fTRk810zuz0VPJ9E4zvdNGTzXTO7PRU1ngOW30VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdMPLaqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqnjZ5qpnea9Xe3bQAcQTO900zvtNFTzfTObPRUMr3TTO+00e/iYrnz1TTTO830Ths91UzvzEZPJdM7zfRUM73TTO/MRk9lgee00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7zfROP7SoZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpn+KL741ufrrS/dW2zbADiCZnqnmd5po6ea6Z3Z6Klk+qc7Pz09wNlqEui1memdZnqnmd5po6ea6Z3Z6KlkeqeNnmqmd5rpndnoqSzwnDZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZ3umHFtVM7zTTO830Ths91UzvNNM7zfROM/2BXvnMq0/x3lfeW00zvdOsv7ttA+AImumdZnqnjZ5qpn+KhO99zZwt9ehOjw6l0VMz0zvN9E4zvdNGTzXTO7PRU8n0Ths91UzvNNM7s9FTWeA5bfRUM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjM91W8tp5neaaZ3mumdNnqqmd5ppl/m7qtvfazXXv3catroqWZ6p5neadbf3XobALfX3QNopnea6Z1m+o9y6/qNAzX4Ys3ZTo/u9OhOjw6l0VMz0zvN9E4zvdNGTzXTO7PRU8n0Ths91UzvNNM7s9FTWeBRzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830Ths91Q8tp5neaaZ3mumdNvoF/ugPv7mjb37wJ6tppnea6Z02eqqZ3mmmd5r1d/evewMg0XyZ87Pz1TTTOw2+WHO206M7PbrTo0Np9NTM9E4zvdNMTzXTO830zmz0VDK900ZPNdM7zfTObPRUFnhUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROMz3VTO800zvN9E4zvdNGTzXTO830TjO900ZP9UPLaaZ3mul398rLL+3lnXfur6aNnmqmd5rpnWZ6p42eaqZ3mumdZv3dfcwGwHPP3jmiq4uL1TTTO830TjO90+CLNWc7PbrTozs9OpRGT81M7zTTO230VDO900zvzEZPJdM7bfRUM73TTO/MRk9lgUc10zvN9E4zvdNMTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUP7Q+1tX55TI3b95YTTO900xPNdM7zfROM73TTO+00VPN9E4zvdOsv7tPNNM7zfROM73TTO8001NtvlJzttOjOz2606NDafTUzPROM73TRk810zvN9M5s9FQyvdNGTzXTO830zmz0VFaGVDO900zvNNM7bfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROMz3VTO800zvN9E4z/dP1w2x3VxfrSqZ3mumdZnqnjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p1l/d9sGwBE00ztt9FSbr9Sc7fToTo/u9OhQGj01M73TTO+00VPN9E4zvTMbPZVMTzXTO830Ttd4zmz0VBo91UzvNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TRk810zvN9B/qy29943C3rt9ZTT+0nBnotWR6p5neaaZ32uipZnqnmd5ppnea6almeqeZ3mmmd5r1d7dtABxBM73TRk+1+UrN2U6P7vToVP8AJY2empneaaZ32uipZnqnmd6ZjZ5Ko6ea6Z1meqdrPGc2eiqNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmZ5q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00ZPNdM7zfROM73TTO+00VPN9E4zvdOyv6F5AFhGM73TRk/t7oyZ3mmmd/omOu3LThs91Zzt9Jd1+tOdBHptzPROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO80059351d+1bJe89rXrqmZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppqea6Z1meqeZ3mnZ39A8ACyjmd5po6d2d8ZM7zTTO30TnfZlqpneac52+ps6/elOAr02Znqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmf6Dj3wL8pY3vm01zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO+07G/oimuvvqqZ3mmmd9phnWZ6p42e2t0ZM73TTO/0TXTal6lmeqc52+lv6vSnOwn02pjpnWZ6p5neaaOnmumdZnqnmd5ppqea6Z1meqeZ3hka/d1vuMe5//5719RM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvtOxvaB4AltFM77TRU7s7Y6Z3mumdvolO+zLVTO80Zzv9TZ3+dCqNnhozvdNM7zTTO230VDO900zvNNM7bfRUM71zvs6/9tVfqX3dPW9cTTO900ZPNdM7zfROM73TRk810zvN9E4zvdNMTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zst+xuaB4BlNNNTzfTO7s6Y6Z1meqdvotO+TDXTO23ZTn9Tpz+dSqOnxkzvNNM7zfROGz3VTO800zvN9M65Lv/aV92zjptefHY1zfROM73TTE810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Tsv+huYBYBlt9FQzvbO7M2Z6p5ne6ZvotC9TzfROW7bT39TpT6fS6Kkx0zvN9E4zPdVM7zTTOzunTq/mpTfetJo2eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5meaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnda9jc0DwDLaKOnmumd3Z0x0zvN9E7fRKd9mWqmd9qynf6mTn86lUZPjZneaaZ32uiRkydOPaPp3Llq97rVNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjM91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTU830TjO900zvNNM7LfsbmgeAZbTRU830zu7OmOmdZnqnbyLVxOw00ztt2U5/U6c/nUqjp8ZMv7hn3qu/kBfWOdflV9NM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Tsv+huYBYBlt9FQzvbO7M2Z6p5ne6ZtItVc6zfROW7bT39TpT1/aqf1OnTy5oi/U+RXkhXXa6KlmeqeZ3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd1r2NzQPAMtoo6ea6Z3dnTHTO830Tt9Eqr3SaaZ30rUXc3pvb5D/Jrs1NHoqjZ5Kpnfy4XTa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmp4ay/7ZvuHcT8wCwjDZ6qpneaaZ3mumdvolUe+UiWuSfcdXe3mqa6Z02eqqZ3kmjp5LpnXxinTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppqea6Z1meqeZ3mmmd9roqWZ6p5neOV/nP/ODn9be+bb3rKlxfxPzALCYZnqnmd5ppnea6Y+uH4znRTO900zvNNM7bfRUM72TRk8l0zvJ9E4bPdVM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9NRtt77uG7/+ret49AP3r6aZ3mmjpxr3NzEPAItppnea6Y/izLVXX8RVp0+vpm/i1mimd5rpnWZ6p42eaqZ30uipZHonmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumRO15/2ze85e41PXTfvatppnea6Z1meqeNnmrc38Q8AGzk5InjB9o5cXI1zfROM73TN3FrNNM7zfROM73TRk810ztp9FQyvZNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTL+sF9xw5ryzt758NXe8/rbVtNFTzfROM73TTO800ztt9FTj/iauWPAAsLe7c6CTx46tJ42eaqZ3mumdZnqn3XxrNNM7zfROM73TRk810ztp9FQyvZNGTzXTO830TjO900xPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7zfQLuu6aF+x3w/UvXNP+QK+dTaZ3mumdNnqqmd5ppnea6Z1meqeNnmrc38QVJ0+caKZ3xkZPpdFTzfROM73TTO+0m2+NZnqnmd5ppnfa6KlmeieNnkqmd9LoqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumP7rprrn5WV5++bjVDo6fa6KlmeudsMr3TTO+00VPN9E4zvdNM7zTTU830TuP+JuYBYDHN9E4zvdNM77Sbb41meqeZ3mmmp5rpnWZ6J42eSqZ30uipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjf6IdnZPXcTx4+tppnea6Z1meqqZ3mmmd84m0zvN9E4bPdVM7zTTO830Ths91UzvNO5vYqsPAMdWvQE00zvN9E4zvdNuvjWa6Z1meqeNnmqmd5rpnTR6KpneSaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaY/nJPH9w50eu+q1bTRU830TjO900zvtNFTzfROM71zNpneaaZ32uipZnqnmd5ppnfa6KlmeqdxfxPzALCYZnqnmd5ppnfazbdGM73TTO+00VPN9E4zvZNGTyXTU8n0TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4zPdVMf6nufdODG7rlpa9YTTO900zvtNFTzfROM73TTO+00VPN9E4zvXM2md5ppnfa6KlmeqeZ3mmmd9roqWZ6p3F/E/MAsJhmeqeZ3mmmp5rOt0MzvdNM77TRU830TjO9k0ZPpdFTyfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830l+Sd9717cw+89eE1NdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO9czaZ3mmmp5rpnWZ6p5neaaZ32uipZnqncX8T8wCwmGZ6p5neaaOnms63QzO900zvtNFTzfROM72TRk+l0VPJ9E4zvdNM7zTTU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91Uy/ibu+5vZDeOQ9D6+mmd5po6ea6Z1meqeZ3mmmp5rpnWZ6p5neaaZ32uipZnqnmd45m0zvtNFTzfROM73TTO800ztt9FQzvdO4v4l5AFhMM73TTO+00VNN59uhmd5ppnfa6KlmeqeZ3kmjp9LoqWR6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneuTOZ3mmmd5rpD/SyW15xaDfddPNqmumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd45m0zvtNFTzfROM73TTO8001PN9E4zvdO4v4l5AFhMM73TTO+00VNN59uhmd5ppqea6Z1meqeZ3kmjp9LoqWR6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneuTOZ/iIeuPf+o7j9NXetpo2eaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd45m0zvtNFTzfROM73TTO+00VPN9E4zvdO4v4m1DwB7K98AkumdZnqnmd5po6eazrdDM73TRk810zvN9E4zvZNGT6XRU8n0TjO900zvtNFTzfROM73TTO/ePwNzAACAAElEQVQ001PN9E4zvdNM7zTTO230z+Xpjz95dB985NHVNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvXM2md5po6ea6Z1meqeZ3mmjp5rpnWZ6p3F/E/MAsJhmeqeZ3mmjp5rOt0MzvdNGTzXTO830TjO9k0avJdM7yfROM73TTO+00VPN9E4zvdNM77TRU830TjO900w/uOO2O5fywP1vW00bPdVM7zTTO830Ths91UzvNNM7zfROMz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM71zNpneaaOnmumdZnqnmd5po6ea6Z1meqdxfxPzALCYZnqnmd5po6eazrdDM73TRk810zvN9E4zvZNAryXTO8n0TjO900zvtNFTzfROM73TTO+00VPN9Oc9/sGnlvXuBx9cTTO980AyPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO+cTaanmumdZnqnmd5ppnfa6KlmeqeZ3mnc38Q8ACymmd5ppqea6Z2m8+3QTO+00VPN9E4zvdNM7yTQa8n0TjK900zvNNM7bfRUM73TTO8005/z8EOPLO7xR59eVTK900zvNNM7D6TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7zfROGz3VTO800zvN9M7ZNHqqmd5ppnea6Z1meqeNnmqmd5rpncb9TcwDwGKa6Z02eqqZ3mk63w7N9E4bPdVM7zTTO830TgK9lkzvJNM7zfROMz3VTO80099y463IHbffsZpmemcM9FoyvdNM7zTTOw+k0VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfTO2TR6qpneaaZ3mumdZnqnjZ5qpnea6Z3G/U3MA8BimumdNnqqmd5pOt8OzfRUM73TTO800zvN9E4CvZZM7yTTO830zhDoX3TDLdRNL37ZaprpnWZ6p5neGQO9lkzvNNM7zfTOA2n0VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvXM2jZ5qpnea6Z1meqeZnmqmd5rpnWZ6p3F/E58/AKx8AxgbPZVM7zTTO230VDO903S+HdroqWZ6p5neaaZ3mumdBHotmd75Qp0/c+2LtRtfeOtq2uipZnqnmd5ppnea6amx0VPJ9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9M7ZNHqqmd5ppnea6Z02eqqZ3mmmd5rpncb9TcwDwGKa6Z02eqqZ3mk63w5t9FQzvdNM7zTTO830zrkun39YKn3SdZrpnWZ6p42eaqZ3mumdZnqnjZ4aGz2VTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROMz3VTO800zvN9E4zvdNGTzXTO830TjO900ZP9U8Mp5neaaZ3mumds2n0VDO900zvNNM7bfRUM73TTO800zuN+5uYB4DFNNM7bfRUM73TdL4d2uipZnqnmd7Z2z29mhNXnlhT/kkJ9UnXaaZ3mumdNnqqmd5ppnea6Z02emps9FQyvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VPzGcZnqnmd5ppqfOJtM7zfROM73TTO+00VPN9E4zvdNM7zTu11Mf+u7BPAAsppmeaqZ3mumdpvPt0EYvncoDobSzu5pmeqeNnso/KaE+6TrN9E4zvdNGTzXTO830TjO900ZPjY2eSqZ3mumdZnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z384QQ10ztt9FT/xHCa6Z1meqeNnhoaPdVM7zTTO830Ths91UzvNNPv9wPf9wML+ht/7e+spnF/E/MAsJg2eqqZ3mmmd5rOhRPHPi//YnRo5+SpNeWBUEqmd5rpnTZ6Kv+khPqk6zTTO830VDO900zvNNM7zfROGz01Nnoqmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd/KHE9RM77TRU/0Tw2mmd5rpnTZ6qpneaaZ3mumdZnqnjf6ch97+TcK3PfXkaprpnWZ6p3F/E/MAsJg2eqqZflnXXn36vPP/M54rOJfm19FMTzXTO3kglJLpnWZ6p42eyj8poT7pOs30Ths91UzvNNM7zfROM73TRk+NjZ5Kpnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnfzhBDXTO230VP/EcJrpnWZ6p42eaqZ3mumdodF/88NPOI+++0NraqZ3mumdZnqnmd5p3N/EPAAcwfET+121u7em/YFea6Z3mumdNnqqmd7JA6GUTO800ztt9FT+SQn1Sddppnfa6KlmeqeZ3mmmd5rpqWZ6Z2z0VDK900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO/kDyeomZ5qpnf6J4bTTO800ztt9NT5Ov/yl92s3XnHHatppnfa6KlmeqeZ3mmmd5rpncb9TfADwInjxwb997FIFzR6qo2eaqZ3mumdZnqnjZ5qpnfyQCgl0zvN9E4bPZV/dkJ90nWa6Z02eqqZ3mmmd5rpnTZ6qpneGRs9lUzvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zv5wwlqo6ea6Z3+ieE00zs3XP/Cm17y8nVcf911a2qmd5rpnWZ6p42eaqZ3mumdZnqnmZ5q3z/QFSc/X+THRk+l0VNjpnfa6KlmeqeZ3mmmd9roqWZ6Jw+EUjK900xPNdM7zfROn3SdZnqnjZ5qpnea6Z1meqeNnmqmd8ZGTyXTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4zPdVM7zTTO830TjO900ZPNdM7zfRO/nCC2uipZnrhBWde9Iw3vuGtq3nr19+/mmZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeNnmrfP9A8ACypmd5ppnea6Z1meqeNnmqmd/JAKCXTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM74yNnkqmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumd/OG0vJPHT56zc3JnTefS/Dqa6Z1meqeZnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6fa9w80DwBLaqZ3mumdZnqnmd5po6ea6Z08GUrJ9E4bPdVM7zTTO830TjM91UzvNNM7zfROM73TRk810ztjo6eS6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZnmqmd5rpl3LN6TODvZ291Zyv8ytoo6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6Kn2/QPNA8CSmumdZnqnmd5ppnfa6Klmemds9FQyvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00VPN9M7Y6KlkeqeNnmqmd5rpnWZ6p5meaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjX8Sjjzz6rF77qq9aTTO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7zfROGz3Vvn+geQBYUjO900zvNNM7zfRUM73TTO+MjZ5Kpnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumdNnqqmd4ZGz2VTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTH9EH/vIY8/l/e/7wGra6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eat8/0DwALKmZ3mmmd5rpnTZ6qpneaaZ3xkZPJdM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvjI2eSqZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTb6Q3v4/ncf6JFH3rmaZnqnmd5po6ea6Z1meqeZ3mmmp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qn3/QPMAsKRmeqeZ3mmmd9roqWZ6p5neGRs9lUxPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO9MzZ6KpneaaOnmumdZnqnmd5po6ea6Z1meqeZ/hA++v5PbuLRdz2xpmZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZnmqmd9r3D7T1B4DjzfROM73TTO800ztt9FQzvdNM74yNnkqjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3hkbPZVMTzXTO830TjO900zvtNFTzfSX5Hu/+4c2951PfXo1zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvdNM77TRU830TjO900zvtNFTzfRO+/6B5gFgSc30TjO900zvtNFTzfROM70zNnoqjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p5neaaOnmumdZnpnbPRUGj3VTO800zvN9E4z/ea+4xPfdkk+8cRTa2qmd5rpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p33/QPMAsKRmeqeZ3mmmd9roqWZ6p5neGRs9lUZPNdM7zfROM73TRk810zvN9E4zvdNM77TRU830TjO9MzZ6Ko2eaqZ3muk38fRHP3kI3/Odn1pNM73TRk810zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdO+f6B5AFhSM73TTO8001PN9E4zvdNM74yNnkqjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3hkbPZVGf3F/629+5iie/uinVjRmeqeZ3mmmp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnWZ6p42eaqZ32vcPNA8AS2qmd5rpnTZ6qpneaaZ3mumdsdFTafRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM/l7/96R85oh/4vh9eTRs9lUZPjZneaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z32/QPNA8CSmumdZnqnjZ5qpnea6Z1memds9FoyvdNM7zTTO830Ths91UzvNNM7zfROGz3VTF9ve/P9i3j0PR9aTTO900zvtNFTafTUmOmdZnqnjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6almeqeZ3mnfP9A8ACypmd5ppnfa6KlmeqeZ3mmmd8ZAryXTO830TjO900zvtNFTzfROM73TTD941wMfXMpDb//mNTXTO830TjO900xPNdM7afTUmOmdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mnfP9DzcAA4sfYNYMz0TjO900zvtNFTzfROM73TTO+MgV5Lpnea6Z1meqeZ3mmjp5rpz7vj9juXdfcb3rSaZnqnjZ5qpnea6Z1meqeNnmqmd9LoqTHTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73Tvn+geQBYUjO900zvtNFTzfROM73TTO+MgV5Lpnea6Z1meqeZ/pyXvOglwqtf9frVNNM7zfROM73TRk810zvN9E4zvdNGTzXTO2n01JjpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5p3z/QPAAsqZneaaanmumdZnqnmd5ppnfGQK8l0zvN9M/4si+9UtjdOb2aNnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ30uipMdM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900xPNdM7zfROM73TTO+00VPN9E4zvdO+f6B5AFhSM73TRk810zvN9E4zvdNM74yB/tTOsSuPO8evPLmaZnqnmd5po6ea6Z1meqeZ3mmmp5rpnWZ6p5neaaZ32uipZnonjZ4aM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO8001PN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9E4bPdVMf3H/5l/+p0P7g9/7X6v53d/63KWaB4AlNdM7bfRUM73TTO9cGOiPU8e/7Nhq2uipZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumdNnqqmd5Jo6fGTO+00VPN9E4zvdNM7zTTU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4z/XP5rie/9+h+/Ed/ZTXN9E4zvdO+f6B5AFhSM73TRk+dS/MnTxxfwc7nW/xqxkzvNNNTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO+k0VNjpnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Qe/+cu/vZQf+p5/uJo2eqqZ3mmmd5rpnfb9A/3FAWDlG0AaPTVmeudcmj91amcN+TfMUM30Tho9NWZ6p42eaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaanmumdZnonjZ4aM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTU830TjO900zvNNM7bfT73XzTjct68iMfWk0zvdNM77TRU830TjO900zvtO8f6Pk5AFx9+vRq+r3ojI2eSqOnmumdNHpqzPROGz3VTO800zvN9E4zPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4aPTVmeqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnUYDp5neaaOnmumdZnqnmf4ZN77opcIN112/mjZ6qpneaaZ3mumdNnqqmd5ppnea6Z32/QNdcb66nji+nmZ6p9+LztjotWR6p5neSaOnxkzvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO+k0VNjpqea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mk0cJrpnTZ6amj0Dz50j/Oeh9+5mmZ6p5meaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mnfP9A8ACxpDPRaMr3TTO+k0VNjpnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumpZnqnmd5ppnea6Z02eqqZ3mmmd9LoqbHRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNBo45+v8qZMntFtvvXFNzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM77fsHmgeAJY2BXkumd5rpnTR6asz0Ths91UzvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjO900ZPNdM7zfROGj01Nnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnf2dvZ2Tuys48ovO76aZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5p3z/QPAAsaQz0WjK900zvpNFTY6anmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumdNnqqmd5ppnfS6Kmx0VPN9E4zvdNM7zTTU830TjO900zvNNM7bfRUM73TTO800yMffuzxO173tWu6au+a1TTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNMTzXTO830TjO900zvtO8faB4AljQGei2Z3mmmd9LoqbHRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7afTU2OipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpl+cQ8+eN8573jg/tV8+LHHV9NGTzXTO830TjO900xPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM77fsHmgeAJY2BXkumd5rpnTR6amz0VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROGj01Nnqqmd5ppnea6Z02eqqZ3mmmd5rpnWb6ZT395Cf3e/CBd6znC3V+Bc30TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO8001NN/Bc3DwBLGgO9lkzvNNM7afTU2OipZnqnmd5ppnfa6KlmeqeZ3mmm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zECvJdM7zfROM73TRk810zvN9E4zvdNMTzXTO830TjO900zvNFZayfROM70zGz2VRk810zt9DnfmlSk10ztt9FQzvdNM7zTTO230VDO900zvNNM7zfTObrc7rc1GTzXTO830Trv/HgBc/wHA+ffjyCdrT3f6BE810zvN9E4zvdNGTzXTOzPSyzXTO8301Gz0VDK900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830TmOllUzvNNM7s9FTafRUM73T53BnXplSM73TRk810zvN9E4zvdNGTzXTO830TjO900xP7Xa709rM9E4zvdNM77T7//EcAJzdOHu+G2++eZhmeqeZnupDvNNM7zTTO830Ths91UzvzEgv10zvtNFTs9FTyfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7jZVWMr3TTO/MRk+l0VPN9E6fw515ZUrN9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz212+1OazPTO830TjO90+7/gwOAW2d3nq+Z3mmmd5rpnTZ6qg/xTjO900zvNNM7bfRUM70zI71cM73TRk/NRk8l0zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE+1V0LJ9E4zvTMbPZVGTzXTO30Od+aVKbXRU830TjO900zvNNM7bfRUM73TTO800ztt9Ndot9ud+mamd5rpnWZ6p91/DwD2AOB6NNM7zfROMz3VTO800zsz0ss10ztt9NRs9FQyvdNM7zTTU830TjO900zvNNM7bfRUM73TTO800ztt9FR7JZRM7zTTO7PRU2n0VDO90+dwZ16ZUhs91UzvNNM7zfROM73TRk810zvN9K/ugy+9/Yn+i//6bxxm1rzdbrd7gc1M7zTTO830Trv/HgDsAcD1aKZ3mumdNnqqmd5ppndmpJdrpnfa6KnZ6KlkeqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6Kn2SiiZ3mmmd2ajp9LoqWZ6p8/hzrwypTZ6qpneaaZ3mumdZnqqmf6V5O/lp733ztuHaaZ3mumdWfN2u93uBTYzvdNM7zTTO+3+ewCwBwDXo5neaaZ32uipZnqnmd6ZkV6umd5po6dmo6eS6Z1meqeNnmqmd5rpnWZ6p5meagJwmumdZnqnmd5po6faK6FkeqeZ3pmNXkumd5rpnT6H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p5neaaOnmumdZnqn3ztpNnqqmd5ppnea6Z38BKE2eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqqmf7h3bh+baebN24tMxo91UzvtNFTzfROM73TTO8001PN9E4zvdNM7zTTO230VDO900zvbAuAHZrpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p9XGaaOnmumdZnqnmd5ppqea6Z1meqeZ3un3TpqNnmqmd5rpnWZ6Jz9Bq5neaaZ3mumdZnqnjZ5qpnea6Z1m+of0zFN3XsvV4+srNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO9sC4AdmumdZnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnycZpo6ea6Z1meqeZ3mmjp5rpnWZ6p5ne6fdOmo2eaqZ3mumdZnonP0Grmd5ppnea6Z1meqeNnmqmP5s7d559XX/qjS8s00zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zvbAmCHZnqnjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5psnHa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3+r2TZqOnmumdZnqnmd7JT9Bqpnea6Z1meqeZ/gxu3bx1Ss88c2eZZnqnmd5ppnfa6KlmeqeZ3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnW0BsEMzvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTZUM30TjO900zvNNM7bfRUM73TTO800zv90mEz0zvN9E4zvdNM7+THZzXTO830D+TK0fHp9Txx2uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6Z1sA7NBM77TRU830TjO900zvNNNTzfROM73TTO800ztt9FQzvdNM7zTTO002VDO900zvNNM7zfROGz3V+OU00zvN9E6/dNjM9E4zvdNM7zTTO/nxndaFRy+cQX+ITjO90/PEaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ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2hYAOzTTO313Oc30TjO988kf+eHf+tXfXubn/uGvLtNM7zTTO230VDO900zvNNM7zfRUM73TTO/MRk8l0ztt9FQzvdNM7zTTO230VDO900zvzEZP5VLnzEKPp5neaaZ3mumdNnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rp73n8yWv79dhj6zTTO830Ths9tS0Admimd/ruQi6cv/jKdWKZT/7ID6/UTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfTObPRUMr3TRk810zvN9E4zvdNGTzXTO830zmz0VO51ziz0eJrpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumpZnqnmd5ppnea6V9x903vFG7ffnylZnqnmd5ppnea6almemdbAHzehT90caF7H7pAM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM70zGz2VTE810zvN9E4zvdNM77TRU830TjO9Mxs9lUxPzUgvp5neaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpndGo//YR37Q+bZv+vgyzfROGz3VTO800zvN9E4bPdVM7zzYAuDSxUv3XDh3YankbKeZ3umnO830Ths91UzvNNM7zfROMz3VTO800zvN9E4zvdNGTzXTO830zmz0VBo91UzvNNM7zfROM73TRk810zvN9M5s9FQaPTUjvZxmeqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnXtp/s1f9cICf+bd37hMM73TTO800ztt9FQzvdNM7zTTO230VDO98/kFwMm4fxoz0GvJ2U4zvdNPd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqeNnmqmd5rpndnoqTR6qpneaaZ3mumdZnqnjZ5qpnea6Z3Z6Kk0empGejnN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvfP7af7mGo89sU4bPdVM7zTTO830TjM91UzvNNM7zfROM73TRk810zvbAmCHZnqnn+400ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zuz0VNp9FQzvdNM7zTTO830VDO900zvNNM7s9FTafTUjPRymumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaZHHrv1xCtu3XhsoZvLNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjO900ZPNdM72wJgh2Z6p5/uNNNTzfROM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7s9FTafRUM73TTO800ztt9FQzvdNM7zTTO7PRU2n01Iz0cprpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z1m+r37wJ/98KueuHlnmVe7/DJp9NTM9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvbMtAHZopnf66U4bPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvTMbPZVGTzXTO830TjO900ZPNdM7zfROM70zGz2VRk/NSC+nmd5ppnfa6KlmeqeZ3mmmd5rpnTb6PXrsxovD2776fcvcq/MLNNM7bfRUGj01M73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfRUM73TTO9sC4AdmumdfrrTRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO/MRk+l0VPN9E4zvdNM77TRU830TjO900zvzEavJdM7M9LLaaZ3mumdNnqqmd5ppnea6ffixTtfXzeO37BSM73TTO800zvN9E4bPZVGT81M7zTTO830VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO2dfAFxavANIznaa6Z1+utNGTzXTO830TjO900xPNdM7zfROM73TTO+00VPN9E4zvdNM78xGryXTO830TjO900zvtNFTzfROM73TTO/MQK8l0zsz0stppnea6Z02eqqZ/iFdO3rqtVw9urVMM73TRk810zvN9E4zvdNM77TRU2n01Mz0TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO9sy0Admimd/rpThs91UzvNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO9MwO9lkzvNNM7zfROM73TRk810zvN9E4zvTMDvZZM78xIL6eZ3mmmP7Mnr7/t/u489bUrNdM7zfROM73TRk810zvN9E4zvdNM77TRU2n01Mz0TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO9sy0Admimd/rpThs91UzvNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO9MwO9lkzvNNM7zfROM73TRk810zvN9E4zvTMDvZZM78xIf6Y5Prp+Gk/cenaZZnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p5meaqZ30uipmemdZnqnjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p5neaaOnmumdZnpnWwDs0Ezv9NOpZnqnmd5ppnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZ3mumdZnpnBnotmd5ppnea6Z1meqqZ3mmmd5rpnWZ6Zwb6B3f5QRxdPlqmmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5Jo6dmpnea6Z02eqqZ3vn/7Nn706d3Xd9x/4DKIZuQMyHIYQ1IEhMgciaAgFRQRPDEQpDCQhQrGxFQvCMRoRFiJUmlw8mik0SoElBBpqaKcoiVVXRbhY6iQ7WeaaXW1q1TGmed7fbz/N6be+/7fny6+c71mscv5JddJt+5cl3PdzO900zvtNFTzfROM73TTO800ztt9FQzvdNM7ywHgBWa6Z3+6VQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4zvTMGei2Z3mmmd5rpnTZ6qpneaaZ3mum37gmPe+oJ+bIH7Z2mjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z00emrM9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvbMcAFZopnf6p1PN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9M4Y6LVkeqeZ3mmmd9roqWb6rXj79bduw7Wvu3GaZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaanmumdZnqnmd5ppnfa6KlmeieNnhozvdNMTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7ywHgBWa6Z3+6VQzvdNM7zTTO830VDO900zvNNM7zfROGz3VTO800zvN9E4zPTU2eiqZ3mmmd5rp79R37v/B7XnjNTfN1EzvNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4aPTVmeqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3lkOACs00zv906lmeqeZ3mmmd9roqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z02emps9FQy/XHc42733IlHP/zyaZrpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z00emrM9E4bPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvbMcAFZopnf6p1PN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9Js594wLdu6L/9Ep0zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNMTzXTO830TjO900zvtNFTzfROM73TTO8001PN9E4zvZNGT42Z3mmjp5rpnWZ6p5neaaanmumdZnqnmd5ppnfa6KlmeqeZ3mmmd5YDwArN9FT/Ak4zvdNM7zTTO230VDO900zvNNM7zfRUM73TTO8009cHfvbnd8U3f+23TdNGTzXTO830TjO900xPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM76TRU2Omd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpneUAsEIbPdW/gNNM7zTTO830Ths91UzvNNM7zfROGz3VTH+s3/7dj+2i3/vsb0/TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4aPTVmeqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z1meqeZ3lkOACu00VP9CzjN9E4zvdNM77TRU830TjO900x/1A3X3rq7fvT6m2dqpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumpZnqnmd5ppnea6Z02eqqZ3mmmd9LoqTHTU830TjO900zvNNM7bfRUM73TTO800zvN9FQzvdNM7zTTO830J2TvBV+ydRd/+QVHLAeA/6uNnupfwGmmd5rpnWZ6qpneaaa/wy/edrvwwZ/76DTN9E4b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0zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO8sBYIVmeqeZ3mmjp5rpnTHSyzXTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVMf0LOPOu0rTvw8v3TNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO8001PN9E4zvdNM7zTTO230VDO900zvLAeAFZrpnWZ6p42eaqZ3xkgv10zvtNFTzfROM73TTO8001PN9E4zvdNM7zTTb92jH/a4E3LqntNnaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaanmumdZnqnmd5ppnfa6KlmeqeZ3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumd5QCwQjO900xPNdM7zfTOGOnlmumdNnqqmd5ppnea6Z02eqqZ3mmm34rv+p4XbsOV+6+YppneaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnpnOQCs0EzvtNFTzfROM70zRnq5ZnqnjZ5qpnea6Z1meqeN/k69/k0Htu17f2D/NM30TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900xPNdM7zfROM72zHABWaKZ32uipZnqnmd4ZI71cM73TRk810zvN9MfxKx/7xZ14x4/dOE0bPdVM7zTTO830TjM91UzvNNM7zfROM73TRk810zvN9E4zvdNMTzXTO830TjO900zvtNFTzfROM73TTO8001PN9E4zvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfQ79NTHPXszj3roE+6wHAD+H830Ths91UzvNNM7Y6SXa6anmulXOvSb/2nnPnnwt6dppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpl+e8476+I7dco9zpmmmd5ZDgArNNM7bfRUM73TTO+MkV7ur/9qqmZ6p5neaaZ3mumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfa6KlmeqeZ3mmmd9roqWZ6p5neaaZ3mumdNnqqmd5ppnea6U/UNa945xY96ynfPlMzvdNM7zTTO8sBYIVmeqeNnmqmH1x14EW75U/+7NPTjJFero2eaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaanmumdZnqnmd5ppnfa6KlmeqeZ3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6bfuZ2697YS8+Q23TtNM77TRU830TjO900zvLAeAFZrpj3X/+z1gdz3iskdN00zvNNM7Y6SXa6OnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po9+KH/qRq7bn13/r16Zppnea6Z1meqeNnmqmd5rpnWZ6Rx0A7nmPe+6uu93tHtO00VPN9E4zvdNM74yRXq6Nnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqeNnmqmd5rpj+9xX/H4bbvokoumaaOnmumdZnqnmd5ppqea6Z1meqeZ3mmmd/7hAHDqnj3b0EzvNNM7bfRUM73TTO800ztjpJdro6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaan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3mmmd9roqWZ6p5neaaZ3mumpZnqnmd5ppnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6Z2z0VBs9lUzvNNM7zfROG/3WXbD3ohO1b99zp2mmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1memc5AKxYM73TRk810ztp9NTarpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnfGRk+10VPJ9E4z/Vbsvf8Dt+G+5z1gmjZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6ZzkArFgzvdNGTzXTO2n01Nqumd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6KlmeqeZ3mmmd8ZGrzXTb+6SSy7amQdP00zvNNM7bfRUM73TTO800zvN9FQzvdNM7zTTO830Ths91UzvNNM7zfTOcgBYsWZ6qpneaaZ30uiptV0zvdNM7zTTO830VDO900zvNNM7zfROGz3VTO800zvN9E4zPdVM7zTTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvdNM77TRU830TjO900y/mZdc8ZodOuecM2dKo6fGTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvbMcAFasjZ5qpnea6Z00empt10zvNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM32Nb+rb3Wf+4zzN9E4bPZVGT42Z3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6ZzkArFgbPdVM7zTTO2n01Nqumd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppj/W+CK7bJM10zvN9E4bPZVGT42Z3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnWZ6ZzkArFgbPdVM7zTTO2n01Nqumd5ppnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p5neaaOnmumdZvoj/uQPP7/rxtfHZSf9mumdZnqnjZ5Ko6fGTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9E4zvbMcAFasjZ5qpnea6Z00empt10zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNM77TR3+FHrvth5Nb3/utpmumd8fVx2Um/Znqnmd5po6fS6Kkx0zvN9E4bPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNM7ywHgBVro6ea6Z1meieNnlrbNdM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvTM0+quuvNb5iZ+4ZZo2eqqZ3mmmd8bXx2Un/ZrpnWZ6p42eSqOnxkzvNNM7bfRUM73TTO800zvN9FQzvdNM7zTTO830Ths91UzvNNM7zfROMz21HABWrJneaaZ3mumdNHpqbddM7zTTO830VDO900zvNNM7zfROGz3VTO800zvN9E4zPdVM7zTTO830TjO900ZPHUnz3/6tr5riu6dppnea6almeqeZ3mmmd8bXx2Un/ZrpnWZ6qpneSaOnxkzvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz21HABWrJneaaZ3mumdNHpqbddM7zTTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830zvVvvv5Vr37JHD/wmn8+Uxo9NWZ6p5neaaOnmumdZnqnmd4ZXx+XnfRrpnfa6KlmeieNnhozvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO2301HIAWLFmeqeZ3mmmd9LoqbVdM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfRUMz1yy823XPmCA9Nc9siHTNNM77TRU2n01JjpnWZ6p42eaqZ3mumdZnpnfH1cdtKvmd5po6ea6Z00emrM9E4zvdNGTzXTO830TjO900ZPNdM7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vdNM77TRUxuJ9cJyANhUM73TTO8001PN9M745SrXTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7zfTO+ORatq010zvN9FQzvdNM7zTTO+PPZY3WTO8002/b8557xfHdcMMbp2mmp5rpnWZ6p5neaaZ32uipZnqnmd5ppnea6almeqeZ3mmmd5rpnTZ6qpneaaZ3mumdZnqqmd5ppnea6Z1meqeNntpIrBeWA8CmmumdZnqnjZ5qpnfGL1e5Znqnmd5po6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ3xifXsm2tmd5po6ea6Z1meqeZ3hl/LneF/be/2ZJ3v/tnpmmmd5rpnTZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3mmmd9roqY3EemE5AGyqmd5ppnfa6Klmemf8wJVrpnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3mumdZnpnfHIt29aa6Z02eqqZ3mmmd5rpT9T4Izg51kZPNdM7zfROM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz21kVgv7PQAcOrcG0AzvdNM7zTTO230VDO9M34oyzXTO830VDO900zvNNM7zfROGz3VTO800zvN9E4zPTU+vJad+JrpnTZ6qpl+6/7gs589If/z8N9MM/4rXKM10zvN9E4zvdNM77TRU830TjO900zvNNNTzfROM73TTO800ztt9FQzvdNM7zTTO830VDO900zvNNM7zfROGz3VTO800zvN9E4zPdVM72wk1gvLAWBTzfROM73TRk810zvjV7JcM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFT48Nr2YmvmX6LPvTzP3eiPvjBD83UTO800zvjv8I1WjO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfTORmK9sBwANtVM7zTTO230VDO9M34lyzXTO230VDO900zvNNM7zfROGz3VTO800zvN9E4bPTU+vNZlv3bog9M00ztt9FQzvdNM74w/lzVaM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9M5GYr2wHAA21UzvNNNTzfROM70zfiXLNdM7bfRUM73TTO800zvN9FQzvdNM7zTTO830Thv98f3t3/7dTowPr3VZM73TTE810zvN9E4zvTP+XNZozfROM73TTO8001PN9E4zvdNM7zTTO230VDO900zvNNM7zfRUM73TTO800zvN9E4bPdVM7zTTO830TjM91UzvNNM7zfROM73TRk810zsbifXCcgDYVDO900ZPNdM7zfTO+JUs10zvtNFTzfROM73TTO+00VPN9E4zvdNMv5nP/dH/3qFPf/KPp2mjp8aH17qsmd5po6ea6Z1meqeZ3hl/Lmu0Znqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ6p42eaqZ3mumdZnqnmd5po6ea6Z2NxHphOQBsqpneaaOnmumdZnpn/EqWa6Z32uipZnqnmd5ppnfa6Klm+nrj1e/aFT99023TNNM7zfROGz01PrzWZc30Ths91UzvNNM7zfTO+HNZozXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvbCTWC8sBYFPN9E4bPdVM7zTTO+NXslwzPdVM7zTTO830TjP94B8/5Qm75YXf8uKZmumdZnqnmd5ppqea6Z3x4bUua6Z32uipZnqnmd5ppnfGn8sarZneaaZ3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaanmumdZnpnI7FeWA4Am2qmd9roqWZ6p5neGb+S5droqWZ6p5n+qIsuvmh3XfLw+03TTO+00VPN9E4zvdNM77TRU830zvjwWpc10ztt9FQzvdNM7zTTO+PPZY3WTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4z/da98fVvPCE3/fhPT7AcADbVTO+00VPN9E4zvTN+Jcu10R/x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eqeZ3mmmp85GTyXTO830TjO900ZPNdM7zfROM73TTE810zvN9E4zvXP+3bPdac30TjO900xPNdM7zfROM71zPpoPaM30TjO900zvNNnfr10APF4zvdNM7zTTO+fZINdGTzXTO830TjO900ZPNdPfi5/68V+u5//t85ezbVe5Znqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ66mz0VDK900zvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO+ffPdud1kzvNNM7bfRUM73TTO800zvno/mA1kzvNNM7zfROk/392gXA4zXTO830TjO9c54NeM30TjO900zvNNO/cJ/+ijf9un70+3/5kprpnbPRU9t2lWumd5rpnWZ6p5neaaOnmumdZnqnmd5po6fORk8l0zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM71z/t2z3WnN9E4zvdNGTzXTO830TjO9cz6aD2jN9E4zvdNM77xrrD///97HdgHweM30TjO900zvnM8dXjO900z/Aj377Be8O2/9ir9/Mc30Ths91UzvnI2e2rarXDO900zvNNM7zfRUM73TTO800zvN9E4bPXU2eiqZ3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6Z3z757tTmumd5rpnTZ6qpneaaZ3mumd89F8QGumd376R95+/uu3G2wXAI/XTO800zvN9M753L2wvfUbX/Non/wpL7uYZnqnmd5ppnfa6Klmeuds9NS2XeWa6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uips9FTyfROM73TRk810zvN9E4zvdNM77TRU830TjO900zvnH/3bHdaM73TTO+00VPN9E4zvdNM75yP5rZdcE/lBcB7XvYOoJneaaa/mw/8wPd7rG/89tdeTBs91UzvNNM7zfROM73TRk810ztno6e27SrXTO800zvN9E4bPdVM7zTTO830TjO900ZPnY2eSqZ3mumdNnqqmd5ppnea6Z1meqeNnmqmd5rpnWZ65/y7Z7vTmumdZnqnjZ5qpnea6e/dD/y9H3qHX/ypn76Y89Hctgvuei8Aftd/8t/d0Hv/7v/qYprpnWZ6p42eaqZ3mumdZnqnmZ5qpnea6Z2z0VPbdpVrpnea6Z1meqeNnmqmd5rpnWZ6p5meaqZ3zkZPJdM7zfROGz3VTO800zvN9E4zPdVM7zTT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c56SdG30VDK900zvpNFT27bh/eoF9Zyktm17aveSdvw7a6Z32uipZnqnmd5ppnea6almeqeZ3jnf4G3btqtfM73TTO800zvN9FQzvdNM7zTTO830Ths91UzvNNM7zfTOeUrSNQ9RyfROM72TRk9t24bXTO/0nKS2bXtqtwuAG2mmd5rpnWZ6p42eaqZ3mumd8w3etm27+jXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM75ynpF4LkZNM7zTTO2n01LZteM30Ts9Jatu2p3a7ALiRZnqnmd5ppnfa6KlmeqeZ3jnf4G3btqtfM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfTOeUrqtRA5yfROM72TRk9t24bXTO/0nKS2bXtq97ReALzysncAzfROM73TTO+00VPN9E4zvXO+wdu2bVe/Znqnmd5ppnfa6KlmeqeZ3mmmd5rpnTZ6qpneaaZ3mumd85TUayFykumdZnonjf6F27btxVszvdNzktq27andLgBupJneaaZ3mumdNnqqmd5ppnfON3jbtu3q10zvNNM7zfROGz3VTO800zvN9E4zPdVM7zTTO830TjO9c56Sei1ETjL93W3btqE101M9Kp1t257a7QLgRprpnWZ6p5neaaOnmumdZnrnfIO3bduufs30TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO+cpuW3btl1ybfRUM72zbdtTu10A3EgzvdNM7zTTU830TjO900zvnG/wtm3b1a+Z3mmmd5rpqWZ6p5neaaZ3mumdNnqqmd5ppnea6W/lT3zAn765N/3Nz76Y85Tctm3bLrk2eqqZ3tm27andLgBupJneaaZ32uipZnqnmd5ppnfON3jbtu3q10zvNNM7bfRUM73TTO800zvN9E4bPdVMf0M/8IP/4Lbe+tVfejHN9E4zPXUelNu2bdvF1kZPNdM727Y9tdsFwI000zvN9E4bPdVM7zTTO830zvkGb9u2Xf2a6Z1meqeNnmqmd5rpnWZ6p5n+Jr7g8z/tDr7u6//2JTXTO830TjO900ZPnQfltm3bdrG10VPN9M62bU/t7vMC4A9e9g6gmd5ppnea6Z02eqqZ3mmmd5rpnfMN3rZtu/o10zvN9E4bPdVM7zTTP8Jf+Jg/90J8yitfdjHN9E4bPdVM7zTTO830Ths9dR6U27Zt28XWRk810zvbtj212wXAjTTTO830Ths91UzvNNM7zfTO+QZv27Zd/ZrpnWZ6p43+3Xnb1/ytF+5TP+njLqaZ3mmmd5rpqWZ6p5neaaZ3mumdNnrqPCi3bdu2S66Z3mmmd7Zte2q3C4AbaaZ3mumdNnqqmd5ppnea6Z3zDd62bbv6NdPXn/6TH3IvPuKlH3YxbfRUM73TTO800ztt9FQzvdNM7zTTO830Ths9dR6U27Zt2yXXTO800zvbtj212wXAjTTTO830VDO900zvNNM7zfTO+QZv27Y9kftnP/5PLqaZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02euo8lLdt27ZLrpneaaZ3tm17arcLgBtppnfa6KlmeqeZ3mmmd5rpnfMN3rZteyLXTO800zvN9FQzvdNM7zTTO830Ths91UzvNNM7zfROMz3VTO+ch/K2bdt2yTXTO830zrZtT+12AXAjzfROGz3VTO800zvN9E4zvXO+wdu2bU/kmumdZnqnjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumd81Detm3bLrlmeqeZ3tm27andLgBupJneaaOnmumdZnqnmd5ppqfOl3jbtu3JWzO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO9cx7K27Zt2yXXTO800zvbtj212wXAjTTTO230VDO900zvNNM7bfTU+RJv27Y9eWumd5rpnTZ6qpneaaZ3mumdZnqqmd5ppnea6Z1meqeNnmqmd85Dedu2bbvkmumdZnpn27andrsAuJFmeqeNnmqmd5rpnWZ6p42eepf391e8bdu2u6yZ3mmmd9roqWZ6p5neaaZ32uipZnqnmd5ppnea6Z02eqqZ3jkP5W3btu2Sa6Z3mumdbdue2u0C4Eaa6almeqeZ3mmmd/7/NP8DF3C+VXzN9M62bdtd1kzvNNM7bfRUM73TTO800ztt9FQzvdNM7zTTO830Ths91UzvnIfytm3bdsk10zvN9M62bU/tdgFwI230VDO988c/4KUX85rPeMPFNNM751vF10zvbNu23WXN9E4zPdVM7zTTO830TjO900ZPNdM7zfROM73TTE810zvN9M55KG/btm2XXDO900zvbNv21G4XADfypW/8skv66Je94mKa6Z1meqeZ3jnfKr5memfbtu0ua6Z32uipZnqnmd5ppnea6Z02eqqZ3mmmd5rpnTZ6qpneaaZ3zkN527Ztu+Sa6Z1memfbtqd293YB8NI/+8G/5q++7rMv5nu/9x9fTBs91UzvNNM7zfROMz11vlh2zfTOtm3bXdZM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9FQzvdNM75yH8rZt23bJHY1+27btxd5L3hHu70szvdNM77TRU830TjO900zvtNFT54tl10zvbNu23WXN9E4bPdVM7zTTO830TjM91UzvNNM7zfROM73TRk810zvN9M55KG/btm3btm1XvF0A3EgbPdVM7zTTO830Ths9db5Yds30zrZt213WTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO+ch/K2bdu2bdt2xdsFwE010zvN9E4zvdNM77TRU+eLZddM72zbtt1lzfROGz3VTO800zvN9E4bPdVM7zTTO830TjO900ZPNdM7zfTOeShv27Zt27ZtV7xdANxUM73TTO800zvN9E4bPXW+WHbN9M62bdtd1kxPNdM7zfROM73TTO+00VPN9E4zvdNM7zTTU830TjO900zvnIfytm3btm3bdsXbBcBNNdM7zfROM73TTO+00VPni2XXTO9s27bdZW30VDO900zvNNM7zfROGz3VTO800zvN9E4bPdVM7zTTO830znkob9u2bdu2bVe8XQDcVDO900zvNNM7zfRUM71zvlh2zfTOtm3bXdZGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM75yH8rZt27Zt23bF2wXATTXTO830TjO900ZPNdM754tl10zvbNu23WVt9FQzvdNM7zTTO830VDO900zvNNM7zfROGz3VTO80079An/Lyj3533voVf+NizkN527Zt27Ztu+LtAuCmmumdZnqnmd5po6ea6Z3zxbJrpne2bdvusjZ6qpneaaZ3mumdNnqqmd5ppnea6Z1meqeN/oX4tm/+pkf7tE/82Itppnea6Z3zUN62bdu2bduueE/xBcBfvewdQDO900zvNNM7bfRUM71zvlh2zfTOtm3bXdZGTzXTO830TjO900ZPNdM7zfROM/3dfMkXfeFjff3XfNXFtNFTzfROM73TTO+ch/K2bdu2bdt2xdsFwE010zvN9E4zvdNGTzXTO+eLZddM72zbtt1xzfROM73TTO800ztt9FQz/W299IM/6IY+9RM/5mKa6Z1meqqZ3mmmd5rpnWZ65zyRt23btm3btiveLgBuqpneaaZ3mumdNnqqmd45Xyy7Znpn27btjmumd5rpnWZ6p5n+5t74RZ93Kx/1Zz/0kprpnWZ6p5neaaOnmumdZnqnmd5ppnfOE3nbtm3btm274u0C4Kaa6Z1meqeZnmqmd5rpnfPFsmumd7Zt2+64Znqnmf4mPuxP/6k7eNUnvuJimumdNnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ65zyRt23btm3btiveLgBuqpneaaZ32uipZnqnmd45Xyy7Znpn27ar3nNv/PQ7e9mHf9DFNNM7zfROMz3VTO800zvN9E4zvdNGTzXTO830TjO900xPnQf6tm3btm3bdq3bBcBNNdM7zfROGz3VTO800zvni2XXTO9s22b3xq/4vItpo6ea6Z1meqeZ3mmjp5rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6Knz92bbtm3btm271t3zBcBLL3sH0EzvNNM7zfROGz3VTO800zvni2XXTO9s22bXTO+00VPN9E4zvdNM77TRU830TjO900zvNNM7bfRUM73TTO800ztt9NT5e7Nt27Zt27Zd63YBcFPN9E4zvdNGTzXTO830zvli2TXTU9u2wTXTU830TjO900zvNNM7bfRUM73TTO800zvN9FQzvdNM7zTTO830Ths9df7ebNu2bdu2bde6XQDcVDO900zvtNFTzfROM71zvlh2bfTUtm1wbfRUM73TTO800zvN9E4bPdVM7zTTO830Ths91UzvNNM7zfROM73TRk+dvzfbtm3btm3btW4XADfVTO8001PN9E4zvdNM75wvll0b/b/z02//kft1/su3bbvXtdFTzfROM73TTO800ztt9FQzvdNM7zTTO230VDO900zvNNM7zfROGz11/t5s27Zt27Zt17pdANxUM73TRk810zvN9E4z/Tv87M++/d49//wvXkwbPXWeGdu23eva6KnnkumdZnqnmd5ppqea6Z1meqeZ3mmmd9roqWZ6p5neaaZ3mumdNnrq/L3Ztm3btm3brnW7ALipZnqnjZ5qpn/uDa9FfuanfuJimumdZnqnjZ46z4xt2+51bfTUc8n0TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM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qpneaaZ3mumdZnrnDPTatm3btm3b9qRuFwC30EzvNNM7bfRUM73TTP/u/PD3//0X6Md/+B9dTDO9c54Z23Yda6Z3mumdNnqqmd5ppnea6Z1meqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnmZ46Gz21bdu2bdu2PanbBcAtNNM7zfROG/2785c+42NfuL/3Pd94Mc30TjO900zvnGfGtl3HmumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6fORk9t27Zt27ZtT+ru/wLgQy57B9BM7zTT10d++J+9F3/kf3+fi2mjp5rpnWZ6p5neaaanzmNj265gzfROMz3VTO800zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VNno6e2bdu2bdu2J3UvwgXAy/7cR96jV37iKy6mmd5ppnfa6KlmeqeZ3mmmd9roqfPY2LYrWDO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM7zTTU830TjO900zvNNM7bfTU2eipbdu2bdu27UndS17xMZ9w75rpnWZ6p5neaaZ32uipZnqnmd5ppnfa6Knz2Ni2K1gzvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9E4zvdNM7zTTO2301NnoqW3btm3btu1J3S4AbqGZ3mmmp5rpnWZ6p5neaaZ32uip89jYtitYM73TRk810zvN9E4zvdNM77TRU830TjO900zvtNFTzfROM73TTO800ztt9NTZ6Klt27Zt27btSd0uAG6hmd5po6ea6Z1meqeZ3mmmd9roqfPY2LYrWDO900ZPNdM7zfROM73TTE810zvN9E4zvdNM77TRU830TjO900zvNNNTzfTO2eipbdu2bdu27UndLgBuoZneaaOnmumdZnqnmd5ppnfa6Knz2Ni2K1gzvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+00VPN9E4zvdNM77TRU830ztnoqW3btm3btu1J3S4AbqGZ3mmjp5rpnWZ6p5neaaanmumd89jYtitYM73TRk810zvN9E4zvdNGTzXTO830TjO900zvtNFTzfROM73TTO+00VPN9M7Z6Klt27Zt27btSd0uAG6hmd5po6ea6Z1meqeZ3mmjp5rpnfPY2LYrWDM91UzvNNM7zfROM73TRk810zvN9E4zvdNMTzXTO830TjO900zvtNFTzfTO2eipbdu2bdu27UndLgBuoZneaaOnmumdZnqnmd5po6ea6Z3z2Ni2K1gbPdVM7zTTO830TjO900ZPNdM7zfROM73TRk810zvN9E4zvdNM77TRU++s8z/zoz+knb9t27Zt27Zt21VuFwC30ExPNdM7zfROM73TTO+00VPN9M55bGzbFayNnmqmd5rpnWZ6p5neaaOnmumdZnqnmd5po6ea6Z1meqeZ3nlHmv/6N3/xBfyjv/stl9RM75y/bdu2bdu2bdtVbhcAt9BGTzXTO830TjO900zvtNFTzfTOeWxs2xWsjZ5qpnea6Z1meqeZnmqmd5rpnWZ6p5neaaOnmumdb3vbGy/mq9/4BRfTTE810zvN9M7527Zt27Zt27Zd5XYBcAtt9FQzvdNM7zTTO830Ths91UzvnMfGtl3B2uipZnqnmd5ppnfa6KlmeqeZ3mmmd5rpkde+6i+84bWfcklv+7LXXkwzvdNM77TRU830TjO9c/62bdu2bdu2bVe5XQDcQhs91UzvNNM7zfROMz3VTO800zvnsbFtV7A2eqqZ3mmmd5rpnTZ6qpneaaa/d6/7rFe9w1/+i6+8mNe+6i9cTBs91UzvNNM7zfROGz3VTO800zvnb9u2bdu2bdt2ldsFwC200VPN9E4zvdNM77TRU830TjO9cx4b23Yda6Z3mumdZnqnmd5po79fX/IFn/+u/ubr/vLFvLPOX0AzvdNMTzXTO830TjO900zvtNFTzfROM71z/rBt27Zt27ZtV7ldANxCGz3VTO800zvN9E4bPdVM7zTTO+exsW3XsWZ6p5neaaa/L9//3W8/vPn1b7yYI9BrzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvnD9s27Zt27Zt21VuFwC300zvNNM7zfROM73TRk810zvN9M55bGzbdayZ/oV7EtZM7zTTO230VDO900zvNNM7bfRUM73TTO800zvN9E4bPdVM7zTTO+cPwLZt27Zt23aV2wXA7TTTO830TjO900zvtNFTzfROM71zHhvbtj3Na6Z3mumpZnqnmd5ppnea6Z02eqqZ3mmmd5rpnWZ6qpneaaZ3mumd8wdg27Zt27Ztu8rtAuB2mumdZnqnmd5ppnfa6KlmeqeZ3jmPjW3bnuY10ztt9FQzvdNM7zTTO830Ths91UzvNNM7zfROGz3VTO800zvN9M75A7Bt27Zt27Zd5XYBcDvN9E4zvdNM7zTTU830TjO900zvnMfGtm1P85rpnTZ6qpneaaZ3mumdZnqnjZ5qpnea6Z1meqeNnmqmd5rpnWZ65/wB2LZt27Zt265yuwC4nWZ6p5neaaZ32uipZnqnmd5ppr+t8zDYtu061kzvtNFTzfROM73TTO8001PN9E4zvdNM7zTTO230VDO900zvNNM75w/Atm3btm3bdpXbBcDtNNM7zfROM73TRk8109/cv/7pX72V8/Xatm178tZM77TRU830TjO900zvtNFTzfROM73TTO800ztt9FQzvdNM7zTTO+cPwLZt27Zt23aVe+ovAF522TuAZnqnmd5ppr+517/2DbfyD77z2y+pmd45X69t27Ynb830Ths91UzvNNM7zfROGz3VTO800zvN9E4zvdNGTzXTO830TjO9c/4AbNu2bdu2bVe5XQDcTjP9TfyxP/pH7uAvvuKzLqaZ3mmjp5rpnfP12rZte/LWTE810zvN9E4zvdNM77TRU830TjO900zvNNNTzfROM73TTO800zvnD8C2bdu2bdt2lXtSLgA+5EM+8M7e//3/p4tppnea6Z1meqeNnmqmd87Xa9u27clbGz3VTO800zvN9E4zvdNGTzXTO830TjO900ZPNdM7zfROM73TTO+cPwDbtm3btm3bVe4lr3jFS+9dGz3VTO800zvN9E4zPdVM7zTTO+frtW3b9uStjZ5qpnea6Z1meqeZ3mmjp5rpnWZ6p5neaaOnmumdZnqnmd5ppnfOH4Bt27Zt27btKrcLgNtppnea6Z02eqqZ3mmmd87Xa9u27clbGz3VTO800zvN9E4zPdVM7zTTO830TjO900ZPNdM7zfROM73TTO+cPwDbtm3btm3bVW4XALfTTO800ztt9FQzvdNM75yv17Zt25O3Nnqqmd5ppnea6Z02eqqZ3mmmd5rpnWZ6p42eaqZ3mumdZnqnmZ46fwO2bdu2bdu26xu5AHjFZe8AmumdZnqnmd5po6ea6Z1meud8vbZt2568tdFTzfROM73TTO+00VPN9E4zvdNM7zTTO230VDO900zvNNM7bfTU+Ruwbdu2bdu2Xd92AXA7zfROM73TRk810zvN9M75em3btj2Ra6Z3mumdZnqnmd5po6ea6Z1meqeZ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v74nSbaEmV6NM70XZ3qvudGrzY1eLUmOAWd6r7nRq3Gm95obvRpnei/O9F6c6b240atxpvfiTO/Fmd6LM70XN3o1zvRe2OjV5kzvxZlejTO9F2d6L870XpzpvTDQ282Z3oszvRfX/AV1AFje/PqeJNkSNno1zvRenOm95kavNjd6tSQ5BpzpveZGr8aZ3mtu9Gqc6b0403txpvfiRq/Gmd6LM70XZ3ovzvRe3OjVONN7YaNXmzO9Fzd6Nc70XpzpvTjTe3Gm98JAbzdnei/O9FIvPfvUvWfv718HgL2a3+CTJJvBRq/Gmd6LM73X3OjV5kavliTHgDO919zo1TjTq82Z3oszvRdnei/O9F7c6NU403txpvfiTO/Fmd6LG70aZ3ovbPRqc6b34kavxpneizO9F2d6L870XhjolV598fNvdf/FJzbrpWef2iyu+QvqALBX8xt8kmQz2OjVONN7cab3mhu92tzo1ZLkGHCm95obvRo3erU503txpvfiTO/Fmd6LG70aZ3ovzvRenOm9ONOrcab34kzvhY1ebc70Xtzo1TjTe3Gm9+JMv2K3P/fJB7v75ce27O11foM403txpvfimr+gDgB7Nb/BJ0k2g41ejTO9F2d6r7nRq82N3i5JDh5neq+50atxo1ebM70XZ3ovzvRenOm9uNGrcab34kzvxZneixu9Gmd6L870Xtjo1eZM78WNXo0z/f4988SnLu3245/crndu9Grc6NU403txpvfiTO/FNX9BHQD+rG98/WJBSZIbg41ejTO9F2d6r7nRq82B3i5JDh5neq+50atxo1ebM70XZ3ovzvRenOnVONN7cab34kzvxZneixu9Gmd6L870Xtjo1eZMv2f37/zuu/XilzaNM73X3OjVMNN7caNX40zvxZneizO9F9f8BV3jAPB9/+z7l/WR//3QZnGjV0uS3CTM9F6c6b0403vNjV5tDvR2SXLwONN7zY1ejRu92pzpvTjTe3Gm9+JGr8aZ3oszvRdnei/O9F7c6NU403txpl/Wy08//J69cud3N4szvRpnei/O9F5zo1fDTO/FjV6NM70XZ3ovzvReXPMXdIt7/epxpvfiRq+WJLlJmOm9ONN7cab3mhu92hzo7ZLk4HGm95obvRo3erU503txpvfiTO/FjV6NM70XZ3ovzvRenOm9uNEv6KUvfmLH/uCphzaL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", + "fileSize": "234 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA14": [ + { + "startTime": 1676891420248, + "executionTime": 1533, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "date": "2019-05-05", + "explanation": "This is not a solar eclipse. Pictured here is a busy vista of moons and rings taken at Saturn. The large circular object in the center of the image is Titan, the largest moon of Saturn and one of the most intriguing objects in the entire Solar System. The dark spot in the center is the main solid part of the moon. The bright surrounding ring is atmospheric haze above Titan, gas that is scattering sunlight to a camera operating onboard the robotic Cassini spacecraft. Cutting horizontally across the image are the rings of Saturn, seen nearly edge on. At the lower right of Titan is Enceladus, a small moon of Saturn. Since the image was taken pointing nearly at the Sun, the surfaces of Titan and Enceladus appear in silhouette, and the rings of Saturn appear similar to a photographic negative. Now if you look really really closely at Enceladus, you can see a hint of icy jets shooting out toward the bottom of the image. It is these jets that inspired future proposals to land on Enceladus, burrow into the ice, and search for signs of extraterrestrial life.", + "hdurl": "https://apod.nasa.gov/apod/image/1905/TitanBusy_Cassini_1080.jpg", + "media_type": "image", + "service_version": "v1", + "title": "Saturn, Titan, Rings, and Haze", + "url": "https://apod.nasa.gov/apod/image/1905/TitanBusy_Cassini_1080.jpg" + }, + "binary": { + "data": { + "mimeType": "image/jpeg", + "fileType": "image", + "fileExtension": "jpg", + "data": "/9j/4AAQSkZJRgABAgAAZABkAAD//gASQWRvYmUgSW1hZ2VSZWFkef/sABFEdWNreQABAAQAAAA8AAD/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wAARCAJ8BDgDAREAAhEBAxEB/8QAkQABAQEAAgMBAAAAAAAAAAAAAAECAwUEBgcIAQEAAAAAAAAAAAAAAAAAAAAAEAEAAQMBBAYFBwgHBgMIAwEAARECAwQhEgUGMUFRExQHYXGR0RWBIjJSkhYXocHhQoJTg5OxI0NEVEVVYnLSM3MINDVG8aLiYyQ2VifwoyUYEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwD8qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsASCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCSCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEggAAKACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAQAAAAFAoCAAsAAUAoCAoFAAQAAAFoBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQQAFoCAAsASCAAAAAsASCAAsAoAICAoKCSACAAAsASCAAAAAAAAAoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwBIEAAgALAEggAAAALAEggALAKACAgKCgAkggAALAEggAAAAAAAALAEggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAKCAgAAALAAIACwCgAAyADQAJIIACwCgAgIACwCgAAyACwBIIAAAACwACAAsAoJIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgSBAEggAKCgAgIAAACwACAAsAoAAMgAsAoJIIACwCgAgICgoAAAMgAsAoJIIAACwCggIACwCgkggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBIEASCAsQCgAAgIAC0AoBQAEABYBQAAZBaAAoJIIACwCgAgICgoAAAMgAsAoJIIAACwCggIACwCgAlAQAAFgCgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0AoACAAAAAAAAAoEwBAEggLAKAACAgALAKACAgALAKAACUBQAASQQAFgFABAQFBQAAAZABYBQQCgIACwCggIACwCgAgIAACwBIIAAACgUBAAAAAAAAAAAAAAWgFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgASQQAAAFBAAAAUFABJBAWAUAAEBAAWAUAEBAAWAUAAAAAAEkEBaAAoAAJQFAAAABKAgLAKAADIALAKCAgALAKACAgAALAEggAAKBAAIAAAAAAAAAAAACgQBIIAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAkggAAALAEgQCAAoKACSCAsAoAAICAAsAoAICAAsAoAAEdAICgAkggNAAAAAAAAAAAAyCwCgAAyACwCggIACwCgAgIAACwBIIAACwCggIAAAAAAAAAAAACwCgkggAAALAKDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAKAAACSCAAAsAoJIIACgoAEAlwEAoAAICAAsAoAAAMgsAoAAAAAAAAGzsAAAAAAAAAAAAAAAAAAAABAQAFgFABAQAAFgCQQAAAFgAEAABYBQQEABYAkEAABYBQAQEAABYBQZAAAAAAAAAAAAAABQKAgAAAAAAAAKBQCgFAJBAWAUAAAAEoACAsAoJIIACgoAAAAAAAAJQCgKAAAACUBQAAWgFAKAUBnaBtBQUEkACAWgFAQAAAAACegEgFAAAAAABAQAFgFABAQAAFgCQQAAAFgAEAABYBQQEABYAABAAWAUAEBAAAAUEAAAAAAAAAAAAAABYBQZAAAAAAAABYBQAASgFAKAoAAAAAJIICwCggFAQFBQAAAAAAAAAAAAIAoBQCgFAKAtAAAAJBIgFBKAoFASgLQAACgJQCgFAAKASCAoAAAAAAAJQCgKAACAgAALAEggAAALAAIAACwCggIACwCgAlAQFgFAABAQAAFgEAAAAAAAAAAAAAABYBQSgIAAAAAAACwCgAAAAAAAAAAAkwCAsAoAICAoKAAAAAAAAA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AAAAAAAEkCAWQQAAAAAAAEkCAUEBAAWAUAEBAAAWAJBAAAAWAAQAAFgFBAQAAAAAAAFgFBAQAAAFgEAAAAAAAAAAAAAAAAAAAAAAAAABQKAgKBMgAQCgAAAAgIACwBIHSCAAoKAAAAAAAAABE7AKgVAqBUFAAAAAAAAAAAAA6wJAABKgVAAAqAAAAAAAACSBAKCAgALAKACAgAALAEggAAALAAIAACgVAqCAAAAAAAAsASBUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQKggLUCQQFgFAABKgVAqCAAsASBAIACgoAAAAAAAAAEdAAAAAFQKgVBaglQKgoAFQSoLUAACm0CoAJUAAAAAAAAAAAAEqABAKCAgALAKACAgAALAEggAAALAFQQAAAAAAAAAAAAAFgCQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFABJBAAAAWAJBAAAUFAAAAAAAABAAUAAAAAAAAAFqBUEkACAUACAASQAAAI6QJAABAAUAAEBAAWAUEBAAWAUAEBAAAWAJBAAAAAAAAAAAAapAICAAAAAAsASCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0ACSCAAAAAAAAAoKAACSCgAAAgIACwCgAAAAAAAAkAdYLIAAAAAAAAAAAAAAMgAsAoJIIAACwCggIACwCgAgIAACwBIIAAAAAAAAAAADQMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEgQBIICwCgAAgIACwCgAgIACwCgAAAAAAAAAAAAgICgoAAAMgAsAoJIIAACwCggIACwCgAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgSCAoICwCgAAgIACwCgAgIACwCgAAlQUAAEAqBUAFABAQFqACgAAyACwCgkggAAALUCoIACwCgAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1ABAAAWJoCgAAgIACwCgAgIACwCgAAyCgoAJIIACwCgAgIC0ABQAAZABYAAqCAAAAAAAAtQKgVAqCAAAAAAAAAAAAAAAAAtAQAAAAAAAAAAAAAA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", + "fileName": "TitanBusy_Cassini_1080.jpg", + "fileSize": "23.4 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA13": [ + { + "startTime": 1676891421782, + "executionTime": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "date": "2019-05-05", + "explanation": "This is not a solar eclipse. Pictured here is a busy vista of moons and rings taken at Saturn. The large circular object in the center of the image is Titan, the largest moon of Saturn and one of the most intriguing objects in the entire Solar System. The dark spot in the center is the main solid part of the moon. The bright surrounding ring is atmospheric haze above Titan, gas that is scattering sunlight to a camera operating onboard the robotic Cassini spacecraft. Cutting horizontally across the image are the rings of Saturn, seen nearly edge on. At the lower right of Titan is Enceladus, a small moon of Saturn. Since the image was taken pointing nearly at the Sun, the surfaces of Titan and Enceladus appear in silhouette, and the rings of Saturn appear similar to a photographic negative. Now if you look really really closely at Enceladus, you can see a hint of icy jets shooting out toward the bottom of the image. It is these jets that inspired future proposals to land on Enceladus, burrow into the ice, and search for signs of extraterrestrial life.", + "hdurl": "https://apod.nasa.gov/apod/image/1905/TitanBusy_Cassini_1080.jpg", + "media_type": "image", + "service_version": "v1", + "title": "Saturn, Titan, Rings, and Haze", + "url": "https://apod.nasa.gov/apod/image/1905/TitanBusy_Cassini_1080.jpg" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA1": [ + { + "startTime": 1676891421783, + "executionTime": 1052, + "source": [ + { + "previousNode": "NASA" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "links": { + "object": true + }, + "id": "2000433", + "neo_reference_id": "2000433", + "name": "433 Eros (A898 PA)", + "name_limited": "Eros", + "designation": "433", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=2000433", + "absolute_magnitude_h": 10.31, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "orbital_data": { + "object": true + }, + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "NASA2": [ + { + "startTime": 1676891422835, + "executionTime": 1487, + "source": [ + { + "previousNode": "NASA1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "links": { + "object": true + }, + "id": "3404768", + "neo_reference_id": "3404768", + "name": "(2008 EE5)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3404768", + "absolute_magnitude_h": 19.71, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": true, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "3775203", + "neo_reference_id": "3775203", + "name": "(2017 LW)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3775203", + "absolute_magnitude_h": 25.4, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "3776070", + "neo_reference_id": "3776070", + "name": "(2017 MB4)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3776070", + "absolute_magnitude_h": 22.5, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "3781896", + "neo_reference_id": "3781896", + "name": "(2017 SN16)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3781896", + "absolute_magnitude_h": 23.3, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "3827141", + "neo_reference_id": "3827141", + "name": "(2018 QS1)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3827141", + "absolute_magnitude_h": 27.6, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "3843318", + "neo_reference_id": "3843318", + "name": "(2019 NC7)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3843318", + "absolute_magnitude_h": 22.12, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "54049890", + "neo_reference_id": "54049890", + "name": "(2020 PC)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=54049890", + "absolute_magnitude_h": 28, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "54050981", + "neo_reference_id": "54050981", + "name": "(2020 PC1)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=54050981", + "absolute_magnitude_h": 25.3, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "54051038", + "neo_reference_id": "54051038", + "name": "(2020 PL2)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=54051038", + "absolute_magnitude_h": 23.06, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "54051142", + "neo_reference_id": "54051142", + "name": "(2020 PX5)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=54051142", + "absolute_magnitude_h": 29.56, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "54051158", + "neo_reference_id": "54051158", + "name": "(2020 PA6)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=54051158", + "absolute_magnitude_h": 22.75, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + }, + { + "json": { + "links": { + "object": true + }, + "id": "54192746", + "neo_reference_id": "54192746", + "name": "(2021 RQ2)", + "nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=54192746", + "absolute_magnitude_h": 29.54, + "estimated_diameter": { + "object": true + }, + "is_potentially_hazardous_asteroid": false, + "close_approach_data": [ + "json array" + ], + "is_sentry_object": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "NASA2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2023-02-20T11:09:57.881Z", + "stoppedAt": "2023-02-20T11:10:24.325Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/81-snapshot.json b/test-workflows/snapshots/81-snapshot.json new file mode 100644 index 0000000000..ce49774b8a --- /dev/null +++ b/test-workflows/snapshots/81-snapshot.json @@ -0,0 +1,197 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011096, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Phantombuster": [ + { + "startTime": 1747344011096, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 62, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "8756817235927468", + "name": "Email Extractor", + "createdAt": 1614591862755, + "scriptOrgName": "phantombuster", + "scriptId": "6774", + "script": "Email Extractor.js", + "branch": "master", + "environment": "release", + "manifest": { + "object": true + }, + "lastEndType": "finished", + "lastEndedAt": 1747343954267, + "lastExitCode": 0, + "nbContainersRunning": 0, + "runningTime": { + "object": true + }, + "launchType": "manually", + "s3Folder": "UKSkFmaigVohTti7pkwW0A" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Phantombuster1": [ + { + "startTime": 1747344011158, + "executionIndex": 2, + "source": [ + { + "previousNode": "Phantombuster" + } + ], + "hints": [], + "executionTime": 73, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "8756817235927468", + "scriptOrgName": "phantombuster", + "scriptId": "6774", + "script": "Email Extractor.js", + "branch": "master", + "environment": "release", + "argument": "{\n\t\"urls\": [\n\t\t\"https://n8n.io/\"\n\t],\n\t\"timeToWait\": 5000,\n\t\"pagesPerLaunch\": 1,\n\t\"onlyGetOneEmail\": false\n}", + "code": { + "object": true + }, + "launchType": "manually", + "nbLaunches": 2262, + "s3Folder": "UKSkFmaigVohTti7pkwW0A", + "orgS3Folder": "sTTpLenO2iY", + "updatedAt": 1614591972895, + "name": "Email Extractor", + "fileMgmt": "mix", + "lastEndType": "finished" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Phantombuster2": [ + { + "startTime": 1747344011231, + "executionIndex": 3, + "source": [ + { + "previousNode": "Phantombuster1" + } + ], + "hints": [], + "executionTime": 599, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "containerId": "670158012016736" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Phantombuster3": [ + { + "startTime": 1747344011830, + "executionIndex": 4, + "source": [ + { + "previousNode": "Phantombuster2" + } + ], + "hints": [], + "executionTime": 60, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "containerId": "670158012016736", + "status": "running", + "output": "", + "outputPos": 0, + "isAgentRunning": false, + "canSoftAbort": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Phantombuster3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.096Z", + "stoppedAt": "2025-05-15T21:20:11.890Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/83-snapshot.json b/test-workflows/snapshots/83-snapshot.json new file mode 100644 index 0000000000..de0fc02456 --- /dev/null +++ b/test-workflows/snapshots/83-snapshot.json @@ -0,0 +1,933 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011255, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "RSS Feed Read": [ + { + "startTime": 1747344011255, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 444, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "title": "Bolto", + "link": "https://www.producthunt.com/posts/bolto-3", + "pubDate": "2025-03-11T23:04:40.000Z", + "author": "Garry Tan", + "content": "

\n Find, interview, and hire engineers with AI\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/941021", + "isoDate": "2025-03-11T23:04:40.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Flowise", + "link": "https://www.producthunt.com/posts/flowise", + "pubDate": "2025-05-13T08:49:36.000Z", + "author": "Garry Tan", + "content": "

\n Build AI agents, visually\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964762", + "isoDate": "2025-05-13T08:49:36.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Tolt", + "link": "https://www.producthunt.com/posts/tolt", + "pubDate": "2024-09-19T10:10:07.000Z", + "author": "Daniel", + "content": "

\n All-in-one affiliate marketing software for SaaS startups\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/490699", + "isoDate": "2024-09-19T10:10:07.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "HubSpot Meeting Scheduler in Email", + "link": "https://www.producthunt.com/posts/hubspot-meeting-scheduler-in-email", + "pubDate": "2025-05-14T10:33:26.000Z", + "author": "Zeeshan Akhtar", + "content": "

\n More meetings. Less drop-offs.\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965345", + "isoDate": "2025-05-14T10:33:26.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "1Stroke", + "link": "https://www.producthunt.com/posts/1stroke", + "pubDate": "2025-05-12T17:02:24.000Z", + "author": "Mo-Acen", + "content": "

\n Right click and reply with AI\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964508", + "isoDate": "2025-05-12T17:02:24.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "OpenMemory MCP", + "link": "https://www.producthunt.com/posts/openmemory-mcp", + "pubDate": "2025-05-14T10:06:56.000Z", + "author": "Zac Zuo", + "content": "

\n Your private, local memory layer for all AI tools\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965334", + "isoDate": "2025-05-14T10:06:56.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "PhraseClip", + "link": "https://www.producthunt.com/posts/phraseclip", + "pubDate": "2025-05-14T18:48:55.000Z", + "author": "Maciej", + "content": "

\n Improve your vocabulary as you browse the web\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965516", + "isoDate": "2025-05-14T18:48:55.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Mukh.1", + "link": "https://www.producthunt.com/posts/mukh-1", + "pubDate": "2025-05-14T19:17:30.000Z", + "author": "Farrukh Anwaar", + "content": "

\n Automate work with AI agents\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965528", + "isoDate": "2025-05-14T19:17:30.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Friendzone", + "link": "https://www.producthunt.com/posts/friendzone-2", + "pubDate": "2025-05-14T15:01:49.000Z", + "author": "Jan Früchtl", + "content": "

\n Privacy-first second brain for relationships\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965471", + "isoDate": "2025-05-14T15:01:49.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Museboard", + "link": "https://www.producthunt.com/posts/museboard", + "pubDate": "2025-05-14T19:28:59.000Z", + "author": "Sage Causie", + "content": "

\n Moodboarding made simple—for creators, by a creator\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965531", + "isoDate": "2025-05-14T19:28:59.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Files Magic AI ", + "link": "https://www.producthunt.com/posts/files-magic-ai", + "pubDate": "2025-05-08T14:10:38.000Z", + "author": "Gowtham V", + "content": "

\n AI based Files organization for macOS\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/962798", + "isoDate": "2025-05-08T14:10:38.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Granola 2.0", + "link": "https://www.producthunt.com/posts/granola-2-0", + "pubDate": "2025-05-14T19:39:09.000Z", + "author": "Chris Messina", + "content": "

\n A second brain for your team\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965535", + "isoDate": "2025-05-14T19:39:09.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Plakar", + "link": "https://www.producthunt.com/posts/plakar", + "pubDate": "2025-05-08T04:28:26.000Z", + "author": "Victor Coisne", + "content": "

\n Effortless open source backup platform\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/962548", + "isoDate": "2025-05-08T04:28:26.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Material 3 Expressive", + "link": "https://www.producthunt.com/posts/material-3-expressive", + "pubDate": "2025-05-14T07:04:45.000Z", + "author": "Ankit Sharma", + "content": "

\n Build more engaging, easy-to-use products\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965231", + "isoDate": "2025-05-14T07:04:45.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Phala Cloud", + "link": "https://www.producthunt.com/posts/phala-cloud", + "pubDate": "2025-05-14T00:27:59.000Z", + "author": "Marvin Tong", + "content": "

\n Zero-trust cloud for safe AGI\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965089", + "isoDate": "2025-05-14T00:27:59.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "RustScan", + "link": "https://www.producthunt.com/posts/rustscan", + "pubDate": "2025-05-14T08:38:01.000Z", + "author": "Rishabh Kumar", + "content": "

\n Fast and developer-friendly Rust contract security scanner\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965281", + "isoDate": "2025-05-14T08:38:01.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Joyn", + "link": "https://www.producthunt.com/posts/joyn-4", + "pubDate": "2025-05-13T01:35:25.000Z", + "author": "Larissa Licha", + "content": "

\n Align product teams with the people closest to customers\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964623", + "isoDate": "2025-05-13T01:35:25.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "PixVerse V4.5", + "link": "https://www.producthunt.com/posts/pixverse-v4-5", + "pubDate": "2025-05-14T10:32:34.000Z", + "author": "Zac Zuo", + "content": "

\n Cinematic AI video with pro camera controls & fusion\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965344", + "isoDate": "2025-05-14T10:32:34.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Macrodata Refinement Application", + "link": "https://www.producthunt.com/posts/macrodata-refinement-application", + "pubDate": "2025-05-14T15:55:33.000Z", + "author": "Louie Garofalo", + "content": "

\n Uncover hidden emotions with Macrodata Refinement\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965484", + "isoDate": "2025-05-14T15:55:33.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Opusense", + "link": "https://www.producthunt.com/posts/opusense", + "pubDate": "2025-05-13T17:51:22.000Z", + "author": "Garry Tan", + "content": "

\n AI-generated reports for site inspections\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964981", + "isoDate": "2025-05-13T17:51:22.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Dolphin AI", + "link": "https://www.producthunt.com/posts/dolphin-ai", + "pubDate": "2025-05-11T18:56:18.000Z", + "author": "Ilai Szpiezak", + "content": "

\n Track customer requests from calls on autopilot\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964114", + "isoDate": "2025-05-11T18:56:18.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Sahha Insights API", + "link": "https://www.producthunt.com/posts/sahha-insights-api", + "pubDate": "2025-05-01T04:53:53.000Z", + "author": "Aleks Dahlberg", + "content": "

\n Reveal the patterns in your users' lives that matter most\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/959879", + "isoDate": "2025-05-01T04:53:53.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Ad Tracker for AdMob", + "link": "https://www.producthunt.com/posts/ad-tracker-for-admob", + "pubDate": "2025-05-13T14:21:40.000Z", + "author": "D:Zero", + "content": "

\n A clean, reliable AdMob analytics app\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964905", + "isoDate": "2025-05-13T14:21:40.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "NotionApps 2.0", + "link": "https://www.producthunt.com/posts/notionapps-2-0", + "pubDate": "2024-10-24T13:46:19.000Z", + "author": "Kevin William David", + "content": "

\n Build web apps & portals from Notion without coding\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/534081", + "isoDate": "2024-10-24T13:46:19.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Gadget", + "link": "https://www.producthunt.com/posts/gadget-3", + "pubDate": "2025-04-21T20:57:16.000Z", + "author": "Robleh Jama", + "content": "

\n The fastest way to build and scale apps with AI\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/956117", + "isoDate": "2025-04-21T20:57:16.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Tokenomy.ai", + "link": "https://www.producthunt.com/posts/tokenomy-ai", + "pubDate": "2025-05-09T21:46:09.000Z", + "author": "Mahesh Lambe", + "content": "

\n See your LLM token bill before you hit send.\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/963421", + "isoDate": "2025-05-09T21:46:09.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Better Off 2.0", + "link": "https://www.producthunt.com/posts/better-off-2-0", + "pubDate": "2025-05-13T18:05:26.000Z", + "author": "Danielle Juncal", + "content": "

\n Build your online will or trust for free\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964984", + "isoDate": "2025-05-13T18:05:26.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Airbnb Services and Experiences", + "link": "https://www.producthunt.com/posts/airbnb-services-and-experiences", + "pubDate": "2025-05-13T20:46:46.000Z", + "author": "Chris Messina", + "content": "

\n Now you can Airbnb more than an Airbnb\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965062", + "isoDate": "2025-05-13T20:46:46.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "One Click Deploy", + "link": "https://www.producthunt.com/posts/one-click-deploy", + "pubDate": "2025-05-13T20:40:49.000Z", + "author": "Ella", + "content": "

\n Deploy your LiveKit Voice AI agents instantly\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965061", + "isoDate": "2025-05-13T20:40:49.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "SafeTrigger", + "link": "https://www.producthunt.com/posts/safetrigger", + "pubDate": "2025-04-24T20:10:53.000Z", + "author": "Mateusz Piórowski", + "content": "

\n Zero-knowledge vault - secure files, share on your terms\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/957531", + "isoDate": "2025-04-24T20:10:53.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Life, The Human Network", + "link": "https://www.producthunt.com/posts/life-the-human-network", + "pubDate": "2025-05-13T11:49:40.000Z", + "author": "Julien Belmont", + "content": "

\n What social networks always should have been\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964847", + "isoDate": "2025-05-13T11:49:40.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Timesible", + "link": "https://www.producthunt.com/posts/timesible", + "pubDate": "2025-05-06T14:13:58.000Z", + "author": "Amine Barchid", + "content": "

\n From Task to Invoice, without switching tools\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/961881", + "isoDate": "2025-05-06T14:13:58.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Basin MCP", + "link": "https://www.producthunt.com/posts/basin-mcp", + "pubDate": "2025-05-13T13:36:38.000Z", + "author": "Henry Lee", + "content": "

\n Stop your Cursor / Windsurf from hallucinating w/ a MCP tool\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964885", + "isoDate": "2025-05-13T13:36:38.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Kazu Navi (かずナビ)", + "link": "https://www.producthunt.com/posts/kazu-navi", + "pubDate": "2025-05-02T09:14:00.000Z", + "author": "Daniel Ramón Robertson", + "content": "

\n Learn Japanese with clarity, context, and confidence\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/960308", + "isoDate": "2025-05-02T09:14:00.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Unitor", + "link": "https://www.producthunt.com/posts/unitor", + "pubDate": "2025-05-13T04:04:20.000Z", + "author": "Jiva", + "content": "

\n Quickly compare unit prices while shopping smarter.\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964654", + "isoDate": "2025-05-13T04:04:20.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Document Parser by Contextual AI", + "link": "https://www.producthunt.com/posts/document-parser-by-contextual-ai", + "pubDate": "2025-05-13T07:04:45.000Z", + "author": "Jay Chen", + "content": "

\n Multimodal document parser designed for RAG systems\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964719", + "isoDate": "2025-05-13T07:04:45.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Shadow", + "link": "https://www.producthunt.com/posts/shadow-269237dc-c19b-45da-baf7-13cec35e4430", + "pubDate": "2025-03-05T11:01:25.000Z", + "author": "Ben Lang", + "content": "

\n Meet once, stay ahead—Shadow helps you follow through\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/938521", + "isoDate": "2025-03-05T11:01:25.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Generated Assets", + "link": "https://www.producthunt.com/posts/generated-assets", + "pubDate": "2025-05-13T17:00:20.000Z", + "author": "Michael Thomas", + "content": "

\n Turn any idea into an investable index with AI\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964967", + "isoDate": "2025-05-13T17:00:20.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "TikTok AI Alive", + "link": "https://www.producthunt.com/posts/tiktok-ai-alive", + "pubDate": "2025-05-14T02:54:37.000Z", + "author": "Zac Zuo", + "content": "

\n Bringing your photos to life on TikTok Stories\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/965115", + "isoDate": "2025-05-14T02:54:37.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "GMSSH", + "link": "https://www.producthunt.com/posts/gmssh", + "pubDate": "2025-05-13T07:23:25.000Z", + "author": "JasperChen", + "content": "

\n Enable everyone to manage servers simply and efficiently\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964727", + "isoDate": "2025-05-13T07:23:25.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Webifier.io", + "link": "https://www.producthunt.com/posts/webifier-io-2", + "pubDate": "2025-05-05T06:58:35.000Z", + "author": "Ali Bockerwey", + "content": "

\n Generate beautiful React websites with AI\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/961225", + "isoDate": "2025-05-05T06:58:35.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Nayla", + "link": "https://www.producthunt.com/posts/nayla", + "pubDate": "2025-05-13T06:45:25.000Z", + "author": "Yannick", + "content": "

\n The all-in-one AI browser & workspace that works for you\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964704", + "isoDate": "2025-05-13T06:45:25.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Zoho Forms", + "link": "https://www.producthunt.com/posts/zoho-forms", + "pubDate": "2025-05-05T06:02:04.000Z", + "author": "Shobana Sruthi Mohan", + "content": "

\n One form builder. Endless possibilities for every business. \n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/961212", + "isoDate": "2025-05-05T06:02:04.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "AppearOnAI ", + "link": "https://www.producthunt.com/posts/appearonai", + "pubDate": "2025-05-10T18:17:12.000Z", + "author": "Chris Messina", + "content": "

\n Get recommended by ChatGPT, Gemini, and Claude\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/963753", + "isoDate": "2025-05-10T18:17:12.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Asendia AI", + "link": "https://www.producthunt.com/posts/asendia-ai-2", + "pubDate": "2025-05-08T02:48:51.000Z", + "author": "Rihab Lajmi", + "content": "

\n Land your dream job 10x faster with Sarah, your AI job agent\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/962527", + "isoDate": "2025-05-08T02:48:51.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "CoLaunchly", + "link": "https://www.producthunt.com/posts/colaunchly", + "pubDate": "2025-04-30T07:39:29.000Z", + "author": "Alex Cloudstar", + "content": "

\n Launch your app faster. With zero guesswork\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/959493", + "isoDate": "2025-04-30T07:39:29.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Probo", + "link": "https://www.producthunt.com/posts/probo", + "pubDate": "2025-04-14T16:19:02.000Z", + "author": "Garry Tan", + "content": "

\n Compliance for Startups to get SOC2/ISO27001/HIPAA in a week\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/953388", + "isoDate": "2025-04-14T16:19:02.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Zetta", + "link": "https://www.producthunt.com/posts/zetta-2", + "pubDate": "2025-05-10T19:22:28.000Z", + "author": "Tyler Hanson", + "content": "

\n Automated business intelligence platform\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/963766", + "isoDate": "2025-05-10T19:22:28.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "Xogot", + "link": "https://www.producthunt.com/posts/xogot", + "pubDate": "2025-05-12T14:11:10.000Z", + "author": "Joseph Hill", + "content": "

\n Godot-powered game dev for iPad\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964449", + "isoDate": "2025-05-12T14:11:10.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + }, + { + "json": { + "title": "RADiCAL", + "link": "https://www.producthunt.com/posts/radical-3", + "pubDate": "2025-05-12T16:22:25.000Z", + "author": "Alice Gardner", + "content": "

\n AI motion capture meets 3D storytelling\n

\n

\n Discussion\n |\n Link\n

\n", + "contentSnippet": "Discussion\n |\n Link", + "id": "tag:www.producthunt.com,2005:Post/964497", + "isoDate": "2025-05-12T16:22:25.000Z" + }, + "pairedItem": [ + { + "item": 0 + } + ] + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747344011699, + "executionIndex": 2, + "source": [ + { + "previousNode": "RSS Feed Read" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [] + ] + } + } + ] + }, + "lastNodeExecuted": "Function" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.255Z", + "stoppedAt": "2025-05-15T21:20:11.701Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/84-snapshot.json b/test-workflows/snapshots/84-snapshot.json new file mode 100644 index 0000000000..f5884c6efb --- /dev/null +++ b/test-workflows/snapshots/84-snapshot.json @@ -0,0 +1,425 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011379, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix1": [ + { + "startTime": 1747344011379, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 689, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "room_id": "!ypfCPlfKrBrGazVcnF:matrix.org" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix": [ + { + "startTime": 1747344012068, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 94, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "user_id": "@nodeqa:matrix.org", + "is_guest": false, + "device_id": "PLEEGTGUHF" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix6": [ + { + "startTime": 1747344012162, + "executionIndex": 3, + "source": [ + { + "previousNode": "Matrix1" + } + ], + "hints": [], + "executionTime": 212, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "event_id": "$kVxYRJWbL1iz3wDwRbwnLqRml0tzD1IlASrt_zIXCcg" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix5": [ + { + "startTime": 1747344012374, + "executionIndex": 4, + "source": [ + { + "previousNode": "Matrix1" + } + ], + "hints": [], + "executionTime": 89, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "content": { + "object": true + }, + "origin_server_ts": 1747344011660, + "room_id": "!ypfCPlfKrBrGazVcnF:matrix.org", + "sender": "@nodeqa:matrix.org", + "state_key": "@nodeqa:matrix.org", + "type": "m.room.member", + "unsigned": { + "object": true + }, + "event_id": "$Xd9yYLKJvQ2FjGwigm8WTvS-hKU9AJgGnzFxfCUmmf8", + "user_id": "@nodeqa:matrix.org", + "age": 836 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Read Binary File": [ + { + "startTime": 1747344012463, + "executionIndex": 5, + "source": [ + { + "previousNode": "Matrix1" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "room_id": "!ypfCPlfKrBrGazVcnF:matrix.org" + }, + "binary": { + "data": { + "mimeType": "image/png", + "fileType": "image", + "fileExtension": "png", + "data": "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", + "directory": "/tmp", + "fileName": "n8n-logo.png", + "fileSize": "2.67 kB" + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix7": [ + { + "startTime": 1747344012464, + "executionIndex": 6, + "source": [ + { + "previousNode": "Matrix6" + } + ], + "hints": [], + "executionTime": 175, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "content": { + "object": true + }, + "origin_server_ts": 1747344012300, + "room_id": "!ypfCPlfKrBrGazVcnF:matrix.org", + "sender": "@nodeqa:matrix.org", + "type": "m.room.message", + "unsigned": { + "object": true + }, + "event_id": "$kVxYRJWbL1iz3wDwRbwnLqRml0tzD1IlASrt_zIXCcg", + "user_id": "@nodeqa:matrix.org", + "age": 360 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix8": [ + { + "startTime": 1747344012639, + "executionIndex": 7, + "source": [ + { + "previousNode": "Read Binary File" + } + ], + "hints": [], + "executionTime": 642, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "event_id": "$oiL2HmdbP5xQNk-XvDlULVgqsI2dB4bY40qU0GFpFtY" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix2": [ + { + "startTime": 1747344013281, + "executionIndex": 8, + "source": [ + { + "previousNode": "Matrix7" + } + ], + "hints": [], + "executionTime": 427, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix9": [ + { + "startTime": 1747344013708, + "executionIndex": 9, + "source": [ + { + "previousNode": "Matrix8" + } + ], + "hints": [], + "executionTime": 335, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "content": { + "object": true + }, + "origin_server_ts": 1747344013157, + "room_id": "!ypfCPlfKrBrGazVcnF:matrix.org", + "sender": "@nodeqa:matrix.org", + "type": "m.room.message", + "unsigned": { + "object": true + }, + "event_id": "$oiL2HmdbP5xQNk-XvDlULVgqsI2dB4bY40qU0GFpFtY", + "user_id": "@nodeqa:matrix.org", + "age": 910 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix3": [ + { + "startTime": 1747344014043, + "executionIndex": 10, + "source": [ + { + "previousNode": "Matrix2" + } + ], + "hints": [], + "executionTime": 299, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge": [ + { + "startTime": 1747344014342, + "executionIndex": 11, + "source": [ + { + "previousNode": "Matrix3" + }, + { + "previousNode": "Matrix9" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Matrix4": [ + { + "startTime": 1747344014344, + "executionIndex": 12, + "source": [ + { + "previousNode": "Merge" + } + ], + "hints": [], + "executionTime": 279, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Matrix4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.378Z", + "stoppedAt": "2025-05-15T21:20:14.623Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/86-snapshot.json b/test-workflows/snapshots/86-snapshot.json new file mode 100644 index 0000000000..643cdfe69b --- /dev/null +++ b/test-workflows/snapshots/86-snapshot.json @@ -0,0 +1,875 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1738078278998, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign": [ + { + "hints": [], + "startTime": 1738078278998, + "executionTime": 4838, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "email": "fake1738078279000@gmail.com", + "cdate": "2025-01-28T09:31:23-06:00", + "udate": "2025-01-28T09:31:23-06:00", + "phone": "", + "orgid": "0", + "orgname": "", + "links": { + "object": true + }, + "id": "6713", + "organization": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign9": [ + { + "hints": [], + "startTime": 1738078283837, + "executionTime": 642, + "source": [ + { + "previousNode": "ActiveCampaign" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "Name1738078283838", + "createdTimestamp": "2025-01-28T09:31:24-06:00", + "updatedTimestamp": "2025-01-28T09:31:24-06:00", + "owner": "1", + "links": { + "object": true + }, + "fields": [ + "json array" + ], + "id": "2126" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign14": [ + { + "hints": [], + "startTime": 1738078284479, + "executionTime": 528, + "source": [ + { + "previousNode": "ActiveCampaign9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "contact": "6713", + "account": "2126", + "createdTimestamp": "2025-01-28T09:31:24-06:00", + "updatedTimestamp": "2025-01-28T09:31:24-06:00", + "links": { + "object": true + }, + "id": "1829" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign15": [ + { + "hints": [], + "startTime": 1738078285007, + "executionTime": 897, + "source": [ + { + "previousNode": "ActiveCampaign14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "account": "2126", + "contact": "6713", + "jobTitle": "TestJobTitle", + "createdTimestamp": "2025-01-28T09:31:24-06:00", + "updatedTimestamp": "2025-01-28T09:31:25-06:00", + "links": { + "object": true + }, + "id": "1829" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign16": [ + { + "hints": [], + "startTime": 1738078285905, + "executionTime": 786, + "source": [ + { + "previousNode": "ActiveCampaign15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign10": [ + { + "hints": [], + "startTime": 1738078286691, + "executionTime": 763, + "source": [ + { + "previousNode": "ActiveCampaign16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "updatedName1738078286699", + "accountUrl": "", + "createdTimestamp": "2025-01-28T09:31:24-06:00", + "updatedTimestamp": "2025-01-28T09:31:27-06:00", + "owner": "1", + "links": { + "object": true + }, + "fields": [ + "json array" + ], + "id": "2126" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign11": [ + { + "hints": [], + "startTime": 1738078287455, + "executionTime": 490, + "source": [ + { + "previousNode": "ActiveCampaign10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "account": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign12": [ + { + "hints": [], + "startTime": 1738078287945, + "executionTime": 563, + "source": [ + { + "previousNode": "ActiveCampaign11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "Name1621002658600", + "accountUrl": { + "object": true + }, + "createdTimestamp": "2021-05-14T09:32:11-05:00", + "updatedTimestamp": "2021-08-24T02:34:13-05:00", + "owner": "1", + "contactCount": "0", + "dealCount": "0", + "links": { + "object": true + }, + "id": "48" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign13": [ + { + "hints": [], + "startTime": 1738078288509, + "executionTime": 594, + "source": [ + { + "previousNode": "ActiveCampaign12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign5": [ + { + "hints": [], + "startTime": 1738078289104, + "executionTime": 719, + "source": [ + { + "previousNode": "ActiveCampaign13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "success": true + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign7": [ + { + "hints": [], + "startTime": 1738078289824, + "executionTime": 720, + "source": [ + { + "previousNode": "ActiveCampaign13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "contact": "6713", + "tag": "1", + "cdate": "2025-01-28T09:31:30-06:00", + "links": { + "object": true + }, + "id": "3852" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign6": [ + { + "hints": [], + "startTime": 1738078290545, + "executionTime": 700, + "source": [ + { + "previousNode": "ActiveCampaign5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "cdate": "2025-01-28T09:31:23-06:00", + "email": "fake1738078279000@gmail.com", + "phone": "", + "firstName": "", + "lastName": "", + "orgid": "0", + "orgname": "", + "segmentio_id": "", + "bounced_hard": "0", + "bounced_soft": "0", + "bounced_date": { + "object": true + }, + "ip": "0", + "ua": "", + "hash": "8b0ad1fff5a956cf672dbcccc12b71f1", + "socialdata_lastcheck": { + "object": true + }, + "email_local": "", + "email_domain": "gmail.com", + "sentcnt": "0", + "rating_tstamp": { + "object": true + }, + "gravatar": "0", + "deleted": "0", + "anonymized": "0", + "adate": { + "object": true + }, + "udate": "2025-01-28T09:31:31-06:00", + "edate": { + "object": true + }, + "deleted_at": { + "object": true + }, + "created_utc_timestamp": "2025-01-28 09:31:23", + "updated_utc_timestamp": "2025-01-28 09:31:31", + "created_timestamp": "2025-01-28 09:31:23", + "updated_timestamp": "2025-01-28 09:31:31", + "created_by": "0", + "updated_by": "0", + "mpp_tracking": "0", + "last_click_date": { + "object": true + }, + "last_open_date": { + "object": true + }, + "last_mpp_open_date": { + "object": true + }, + "best_send_hour": "0", + "links": { + "object": true + }, + "id": "6713", + "organization": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign8": [ + { + "hints": [], + "startTime": 1738078291245, + "executionTime": 732, + "source": [ + { + "previousNode": "ActiveCampaign7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign1": [ + { + "hints": [], + "startTime": 1738078291977, + "executionTime": 673, + "source": [ + { + "previousNode": "ActiveCampaign8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "cdate": "2025-01-28T09:31:23-06:00", + "email": "updatedFake1738078291981@gmail.com", + "phone": "", + "firstName": "", + "lastName": "", + "orgid": "0", + "orgname": "", + "segmentio_id": "", + "bounced_hard": "0", + "bounced_soft": "0", + "bounced_date": { + "object": true + }, + "ip": "0", + "ua": "", + "hash": "8b0ad1fff5a956cf672dbcccc12b71f1", + "socialdata_lastcheck": { + "object": true + }, + "email_local": "", + "email_domain": "gmail.com", + "sentcnt": "0", + "rating_tstamp": { + "object": true + }, + "gravatar": "0", + "deleted": "0", + "anonymized": "0", + "adate": { + "object": true + }, + "udate": "2025-01-28T09:31:32-06:00", + "edate": { + "object": true + }, + "deleted_at": { + "object": true + }, + "created_utc_timestamp": "2025-01-28 09:31:23", + "updated_utc_timestamp": "2025-01-28 09:31:32", + "created_timestamp": "2025-01-28 09:31:23", + "updated_timestamp": "2025-01-28 09:31:32", + "created_by": "0", + "updated_by": "0", + "mpp_tracking": "0", + "best_send_hour": "0", + "links": { + "object": true + }, + "id": "6713", + "organization": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign2": [ + { + "hints": [], + "startTime": 1738078292650, + "executionTime": 566, + "source": [ + { + "previousNode": "ActiveCampaign1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "contactAutomations": [ + "json array" + ], + "contactLists": [ + "json array" + ], + "deals": [ + "json array" + ], + "fieldValues": [ + "json array" + ], + "geoIps": [ + "json array" + ], + "accountContacts": [ + "json array" + ], + "contact": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign3": [ + { + "hints": [], + "startTime": 1738078293216, + "executionTime": 489, + "source": [ + { + "previousNode": "ActiveCampaign2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "cdate": "2021-04-14T05:59:52-05:00", + "email": "a@a.com", + "phone": "", + "firstName": "", + "lastName": "", + "orgid": "0", + "orgname": "", + "segmentio_id": "", + "bounced_hard": "0", + "bounced_soft": "0", + "bounced_date": { + "object": true + }, + "ip": "0", + "ua": { + "object": true + }, + "hash": "54a85e50b2a7bf141297a326bd157ca9", + "socialdata_lastcheck": { + "object": true + }, + "email_local": "", + "email_domain": "a.com", + "sentcnt": "0", + "rating_tstamp": { + "object": true + }, + "gravatar": "0", + "deleted": "0", + "anonymized": "0", + "adate": { + "object": true + }, + "udate": "2021-04-14T05:59:52-05:00", + "edate": { + "object": true + }, + "deleted_at": { + "object": true + }, + "created_utc_timestamp": "2021-04-14 05:59:52", + "updated_utc_timestamp": "2022-06-02 20:44:36", + "created_timestamp": "2021-04-14 05:59:52", + "updated_timestamp": "2022-06-02 20:44:36", + "created_by": { + "object": true + }, + "updated_by": { + "object": true + }, + "mpp_tracking": "0", + "last_click_date": { + "object": true + }, + "last_open_date": { + "object": true + }, + "last_mpp_open_date": { + "object": true + }, + "best_send_hour": { + "object": true + }, + "scoreValues": [ + "json array" + ], + "accountContacts": [ + "json array" + ], + "links": { + "object": true + }, + "id": "97", + "organization": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Merge": [ + { + "hints": [], + "startTime": 1738078293705, + "executionTime": 1, + "source": [ + { + "previousNode": "ActiveCampaign3" + }, + { + "previousNode": "ActiveCampaign6" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "cdate": "2021-04-14T05:59:52-05:00", + "email": "a@a.com", + "phone": "", + "firstName": "", + "lastName": "", + "orgid": "0", + "orgname": "", + "segmentio_id": "", + "bounced_hard": "0", + "bounced_soft": "0", + "bounced_date": { + "object": true + }, + "ip": "0", + "ua": { + "object": true + }, + "hash": "54a85e50b2a7bf141297a326bd157ca9", + "socialdata_lastcheck": { + "object": true + }, + "email_local": "", + "email_domain": "a.com", + "sentcnt": "0", + "rating_tstamp": { + "object": true + }, + "gravatar": "0", + "deleted": "0", + "anonymized": "0", + "adate": { + "object": true + }, + "udate": "2021-04-14T05:59:52-05:00", + "edate": { + "object": true + }, + "deleted_at": { + "object": true + }, + "created_utc_timestamp": "2021-04-14 05:59:52", + "updated_utc_timestamp": "2022-06-02 20:44:36", + "created_timestamp": "2021-04-14 05:59:52", + "updated_timestamp": "2022-06-02 20:44:36", + "created_by": { + "object": true + }, + "updated_by": { + "object": true + }, + "mpp_tracking": "0", + "last_click_date": { + "object": true + }, + "last_open_date": { + "object": true + }, + "last_mpp_open_date": { + "object": true + }, + "best_send_hour": { + "object": true + }, + "scoreValues": [ + "json array" + ], + "accountContacts": [ + "json array" + ], + "links": { + "object": true + }, + "id": "97", + "organization": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign4": [ + { + "hints": [], + "startTime": 1738078293706, + "executionTime": 796, + "source": [ + { + "previousNode": "Merge" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "ActiveCampaign4" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-01-28T15:31:18.996Z", + "stoppedAt": "2025-01-28T15:31:34.502Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/87-snapshot.json b/test-workflows/snapshots/87-snapshot.json new file mode 100644 index 0000000000..54a4046a1b --- /dev/null +++ b/test-workflows/snapshots/87-snapshot.json @@ -0,0 +1,829 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1738078283500, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign": [ + { + "hints": [], + "startTime": 1738078283500, + "executionTime": 1276, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "connection": { + "object": true + }, + "meta": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign5": [ + { + "hints": [], + "startTime": 1738078284777, + "executionTime": 947, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "email": "fake1738078284778@gmail.com", + "cdate": "2025-01-28T09:31:25-06:00", + "udate": "2025-01-28T09:31:25-06:00", + "phone": "", + "orgid": "0", + "orgname": "", + "links": { + "object": true + }, + "id": "6714", + "organization": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign8": [ + { + "hints": [], + "startTime": 1738078285724, + "executionTime": 657, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "stringid": "testlist", + "userid": "1", + "name": "TestList", + "cdate": "2021-03-02T10:30:17-06:00", + "p_use_tracking": "1", + "p_use_analytics_read": "0", + "p_use_analytics_link": "0", + "p_use_twitter": "0", + "p_use_facebook": "0", + "p_embed_image": "1", + "p_use_captcha": "1", + "send_last_broadcast": "0", + "private": "0", + "analytics_domains": { + "object": true + }, + "analytics_source": "", + "analytics_ua": "", + "twitter_token": "", + "twitter_token_secret": "", + "facebook_session": { + "object": true + }, + "carboncopy": { + "object": true + }, + "subscription_notify": { + "object": true + }, + "unsubscription_notify": { + "object": true + }, + "require_name": "0", + "get_unsubscribe_reason": "0", + "to_name": "Subscriber", + "optinoptout": "1", + "sender_name": "", + "sender_addr1": "", + "sender_addr2": "", + "sender_city": "", + "sender_state": "", + "sender_zip": "", + "sender_country": "", + "sender_phone": "", + "sender_url": "https://n8n1612344344.activehosted.com", + "sender_reminder": "You are receiving these emails because you are subscribed to our updates.", + "fulladdress": "", + "optinmessageid": "0", + "optoutconf": "0", + "deletestamp": { + "object": true + }, + "udate": { + "object": true + }, + "created_timestamp": "2021-03-02 10:30:17", + "updated_timestamp": "2021-03-02 10:30:17", + "created_by": { + "object": true + }, + "updated_by": { + "object": true + }, + "channel": "email", + "description": { + "object": true + }, + "non_deleted_subscribers": "4", + "active_subscribers": "2", + "links": { + "object": true + }, + "id": "1", + "user": "1" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign9": [ + { + "hints": [], + "startTime": 1738078286381, + "executionTime": 717, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tag": "Tag1738078286384", + "tagType": "contact", + "cdate": "2025-01-28T09:31:27-06:00", + "links": { + "object": true + }, + "id": "1991" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign1": [ + { + "hints": [], + "startTime": 1738078287099, + "executionTime": 930, + "source": [ + { + "previousNode": "ActiveCampaign" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "connection": { + "object": true + }, + "meta": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign7": [ + { + "hints": [], + "startTime": 1738078288029, + "executionTime": 777, + "source": [ + { + "previousNode": "ActiveCampaign5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "contacts": [ + "json array" + ], + "dealGroups": [ + "json array" + ], + "dealStages": [ + "json array" + ], + "deal": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign10": [ + { + "hints": [], + "startTime": 1738078288806, + "executionTime": 585, + "source": [ + { + "previousNode": "ActiveCampaign9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tagType": "contact", + "tag": "Tag1738078286384", + "description": "", + "subscriber_count": "0", + "cdate": "2025-01-28T09:31:27-06:00", + "created_timestamp": "2025-01-28 09:31:27", + "updated_timestamp": "2025-01-28 09:31:27", + "created_by": { + "object": true + }, + "updated_by": { + "object": true + }, + "deleted": "0", + "links": { + "object": true + }, + "id": "1991" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign2": [ + { + "hints": [], + "startTime": 1738078289392, + "executionTime": 529, + "source": [ + { + "previousNode": "ActiveCampaign1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "connection": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign14": [ + { + "hints": [], + "startTime": 1738078289922, + "executionTime": 686, + "source": [ + { + "previousNode": "ActiveCampaign7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "dealStages": [ + "json array" + ], + "deal": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign11": [ + { + "hints": [], + "startTime": 1738078290609, + "executionTime": 602, + "source": [ + { + "previousNode": "ActiveCampaign10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tag": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign3": [ + { + "hints": [], + "startTime": 1738078291212, + "executionTime": 476, + "source": [ + { + "previousNode": "ActiveCampaign2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "service": "n8n", + "externalid": "1621002648800", + "name": "Name1621002648800", + "isInternal": "0", + "connectionType": "ecommerce", + "status": "1", + "syncStatus": "0", + "sync_request_time": { + "object": true + }, + "sync_start_time": { + "object": true + }, + "lastSync": { + "object": true + }, + "logoUrl": "https://n8n.io/_nuxt/img/df5be1c.png", + "linkUrl": "https://n8n.io/", + "credentialExpiration": { + "object": true + }, + "cdate": "2021-05-14T09:31:09-05:00", + "udate": "2021-05-14T09:31:09-05:00", + "disconnectDate": { + "object": true + }, + "listId": { + "object": true + }, + "planTier": { + "object": true + }, + "links": { + "object": true + }, + "id": "92", + "serviceName": "n8n" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign15": [ + { + "hints": [], + "startTime": 1738078291689, + "executionTime": 704, + "source": [ + { + "previousNode": "ActiveCampaign14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "deal": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign12": [ + { + "hints": [], + "startTime": 1738078292393, + "executionTime": 464, + "source": [ + { + "previousNode": "ActiveCampaign11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "tagType": "contact", + "tag": "TestTag", + "description": "", + "subscriber_count": "2", + "cdate": "2021-03-02T10:29:14-06:00", + "created_timestamp": "2021-03-02 10:29:14", + "updated_timestamp": "2025-01-28 09:31:31", + "created_by": { + "object": true + }, + "updated_by": { + "object": true + }, + "deleted": "0", + "links": { + "object": true + }, + "id": "1" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign4": [ + { + "hints": [], + "startTime": 1738078292858, + "executionTime": 966, + "source": [ + { + "previousNode": "ActiveCampaign3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "meta": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign16": [ + { + "hints": [], + "startTime": 1738078293824, + "executionTime": 681, + "source": [ + { + "previousNode": "ActiveCampaign15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "deals": [ + "json array" + ], + "note": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign13": [ + { + "hints": [], + "startTime": 1738078294505, + "executionTime": 631, + "source": [ + { + "previousNode": "ActiveCampaign12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign17": [ + { + "hints": [], + "startTime": 1738078295137, + "executionTime": 616, + "source": [ + { + "previousNode": "ActiveCampaign16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "users": [ + "json array" + ], + "deals": [ + "json array" + ], + "note": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign18": [ + { + "hints": [], + "startTime": 1738078295754, + "executionTime": 613, + "source": [ + { + "previousNode": "ActiveCampaign17" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "hash": "069b44df", + "owner": "1", + "contact": "6714", + "organization": { + "object": true + }, + "group": "1", + "stage": "1", + "title": "Title1738078288034", + "description": "", + "percent": "0", + "cdate": "2025-01-28T09:31:28-06:00", + "mdate": "2025-01-28T09:31:34-06:00", + "nextdate": { + "object": true + }, + "nexttaskid": "0", + "value": "201", + "currency": "usd", + "winProbability": { + "object": true + }, + "winProbabilityMdate": { + "object": true + }, + "status": "0", + "activitycount": "4", + "nextdealid": "1780", + "edate": { + "object": true + }, + "links": { + "object": true + }, + "id": "1780", + "isDisabled": false, + "nextTask": { + "object": true + }, + "account": { + "object": true + }, + "customerAccount": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign19": [ + { + "hints": [], + "startTime": 1738078296367, + "executionTime": 732, + "source": [ + { + "previousNode": "ActiveCampaign18" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign6": [ + { + "hints": [], + "startTime": 1738078297099, + "executionTime": 713, + "source": [ + { + "previousNode": "ActiveCampaign19" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "ActiveCampaign6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-01-28T15:31:23.497Z", + "stoppedAt": "2025-01-28T15:31:37.813Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/88-snapshot.json b/test-workflows/snapshots/88-snapshot.json new file mode 100644 index 0000000000..5516ee3eb1 --- /dev/null +++ b/test-workflows/snapshots/88-snapshot.json @@ -0,0 +1,704 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "hints": [], + "startTime": 1738078289583, + "executionTime": 0, + "source": [], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign": [ + { + "hints": [], + "startTime": 1738078289583, + "executionTime": 1168, + "source": [ + { + "previousNode": "Start" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "connection": { + "object": true + }, + "meta": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign1": [ + { + "hints": [], + "startTime": 1738078290752, + "executionTime": 722, + "source": [ + { + "previousNode": "ActiveCampaign" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "connections": [ + "json array" + ], + "ecomCustomer": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign7": [ + { + "hints": [], + "startTime": 1738078291475, + "executionTime": 731, + "source": [ + { + "previousNode": "ActiveCampaign1" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "connections": [ + "json array" + ], + "ecomOrderProducts": [ + "json array" + ], + "ecomOrder": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign12": [ + { + "hints": [], + "startTime": 1738078292207, + "executionTime": 495, + "source": [ + { + "previousNode": "ActiveCampaign7" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ecomOrderProduct": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign13": [ + { + "hints": [], + "startTime": 1738078292703, + "executionTime": 514, + "source": [ + { + "previousNode": "ActiveCampaign12" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ecomOrderProducts": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign14": [ + { + "hints": [], + "startTime": 1738078293218, + "executionTime": 639, + "source": [ + { + "previousNode": "ActiveCampaign13" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "orderid": "112", + "connectionid": "636", + "externalid": "ProductId1644891804797", + "sku": "", + "name": "Product1644891804797", + "description": { + "object": true + }, + "price": "101", + "quantity": "1", + "category": "Test", + "imageUrl": "", + "productUrl": "", + "createdDate": "2022-02-14T20:23:25-06:00", + "updatedDate": "2022-02-14T20:23:25-06:00", + "tags": { + "object": true + }, + "isOnSale": { + "object": true + }, + "brand": { + "object": true + }, + "averageRating": { + "object": true + }, + "tstamp": "2022-02-14T20:23:25-06:00", + "links": { + "object": true + }, + "id": "110", + "ecomOrder": "112" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign8": [ + { + "hints": [], + "startTime": 1738078293858, + "executionTime": 529, + "source": [ + { + "previousNode": "ActiveCampaign14" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ecomOrderProducts": [ + "json array" + ], + "contactConversions": [ + "json array" + ], + "ecomOrder": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign9": [ + { + "hints": [], + "startTime": 1738078294387, + "executionTime": 824, + "source": [ + { + "previousNode": "ActiveCampaign8" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ecomOrder": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign10": [ + { + "hints": [], + "startTime": 1738078295211, + "executionTime": 481, + "source": [ + { + "previousNode": "ActiveCampaign9" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "customerid": "3", + "connectionid": "6", + "state": "1", + "source": "0", + "externalid": "externalOrderId1614707598654", + "externalcheckoutid": { + "object": true + }, + "orderNumber": "", + "email": "customerEmail1614707598651@gmail.com", + "totalPrice": "201", + "discountAmount": { + "object": true + }, + "shippingAmount": { + "object": true + }, + "taxAmount": { + "object": true + }, + "totalProducts": "0", + "currency": "EUR", + "shippingMethod": "", + "orderUrl": "", + "externalCreatedDate": "2021-03-02T11:48:16-06:00", + "externalUpdatedDate": { + "object": true + }, + "abandonedDate": { + "object": true + }, + "createdDate": "2021-03-02T11:53:19-06:00", + "updatedDate": "2021-03-02T11:54:15-06:00", + "orderDate": "2021-03-02T11:48:16-06:00", + "tstamp": "2021-03-02T11:54:15-06:00", + "links": { + "object": true + }, + "id": "2", + "connection": "6", + "customer": "3" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign11": [ + { + "hints": [], + "startTime": 1738078295693, + "executionTime": 565, + "source": [ + { + "previousNode": "ActiveCampaign10" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign2": [ + { + "hints": [], + "startTime": 1738078296259, + "executionTime": 588, + "source": [ + { + "previousNode": "ActiveCampaign11" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ecomCustomer": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign3": [ + { + "hints": [], + "startTime": 1738078296847, + "executionTime": 536, + "source": [ + { + "previousNode": "ActiveCampaign2" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "ecomCustomer": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign4": [ + { + "hints": [], + "startTime": 1738078297384, + "executionTime": 628, + "source": [ + { + "previousNode": "ActiveCampaign3" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "connectionid": "6", + "externalid": "", + "email": "deleted+10@example.com", + "totalRevenue": "201", + "totalOrders": "1", + "totalProducts": "0", + "avgRevenuePerOrder": "201", + "avgProductCategory": "", + "tstamp": "2021-05-14T20:06:40-05:00", + "acceptsMarketing": "0", + "sms_marketing_state": { + "object": true + }, + "sms_opt_in_level": { + "object": true + }, + "sms_consent_updated_at": { + "object": true + }, + "links": { + "object": true + }, + "id": "3", + "connection": "6" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign15": [ + { + "hints": [], + "startTime": 1738078298013, + "executionTime": 552, + "source": [ + { + "previousNode": "ActiveCampaign4" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "cdate": "2025-01-28T09:31:31-06:00", + "email": "fake1738078290762@gmail.com", + "phone": "", + "firstName": "", + "lastName": "", + "orgid": "0", + "orgname": "", + "segmentio_id": "", + "bounced_hard": "0", + "bounced_soft": "0", + "bounced_date": { + "object": true + }, + "ip": "0", + "ua": { + "object": true + }, + "hash": "3df37e90a2290eed6f0c840247d4d46a", + "socialdata_lastcheck": { + "object": true + }, + "email_local": "", + "email_domain": "gmail.com", + "sentcnt": "0", + "rating_tstamp": { + "object": true + }, + "gravatar": "0", + "deleted": "0", + "anonymized": "0", + "adate": { + "object": true + }, + "udate": "2025-01-28T09:31:31-06:00", + "edate": { + "object": true + }, + "deleted_at": { + "object": true + }, + "created_utc_timestamp": "2025-01-28 09:31:31", + "updated_utc_timestamp": "2025-01-28 09:31:31", + "created_timestamp": "2025-01-28 09:31:31", + "updated_timestamp": "2025-01-28 09:31:31", + "created_by": { + "object": true + }, + "updated_by": { + "object": true + }, + "mpp_tracking": "0", + "last_click_date": { + "object": true + }, + "last_open_date": { + "object": true + }, + "last_mpp_open_date": { + "object": true + }, + "best_send_hour": { + "object": true + }, + "scoreValues": [ + "json array" + ], + "accountContacts": [ + "json array" + ], + "links": { + "object": true + }, + "id": "6715", + "organization": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign16": [ + { + "hints": [], + "startTime": 1738078298566, + "executionTime": 663, + "source": [ + { + "previousNode": "ActiveCampaign15" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign5": [ + { + "hints": [], + "startTime": 1738078299229, + "executionTime": 564, + "source": [ + { + "previousNode": "ActiveCampaign16" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "ActiveCampaign6": [ + { + "hints": [], + "startTime": 1738078299794, + "executionTime": 1189, + "source": [ + { + "previousNode": "ActiveCampaign5" + } + ], + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "meta": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "ActiveCampaign6" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-01-28T15:31:29.580Z", + "stoppedAt": "2025-01-28T15:31:40.984Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/90-snapshot.json b/test-workflows/snapshots/90-snapshot.json new file mode 100644 index 0000000000..d3ecaa1b68 --- /dev/null +++ b/test-workflows/snapshots/90-snapshot.json @@ -0,0 +1,241 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011734, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Date & Time": [ + { + "startTime": 1747344011734, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "03/03/2021" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Date & Time1": [ + { + "startTime": 1747344011734, + "executionIndex": 2, + "source": [ + { + "previousNode": "Date & Time" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "2021/03/03" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Date & Time2": [ + { + "startTime": 1747344011735, + "executionIndex": 3, + "source": [ + { + "previousNode": "Date & Time1" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "March 03 2021" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Date & Time3": [ + { + "startTime": 1747344011735, + "executionIndex": 4, + "source": [ + { + "previousNode": "Date & Time2" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "03-03-2021" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Date & Time4": [ + { + "startTime": 1747344011735, + "executionIndex": 5, + "source": [ + { + "previousNode": "Date & Time3" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "2021-03-03" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Date & Time5": [ + { + "startTime": 1747344011735, + "executionIndex": 6, + "source": [ + { + "previousNode": "Date & Time4" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "1614764492" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747344011735, + "executionIndex": 7, + "source": [ + { + "previousNode": "Date & Time5" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "1614764492" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.734Z", + "stoppedAt": "2025-05-15T21:20:11.737Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/91-snapshot.json b/test-workflows/snapshots/91-snapshot.json new file mode 100644 index 0000000000..161a6af0da --- /dev/null +++ b/test-workflows/snapshots/91-snapshot.json @@ -0,0 +1,229 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011746, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "FunctionItem": [ + { + "startTime": 1747344011746, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 3, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "\n\n\n\n
\"background
\"background
\"background

\n\t\t\t\t\t\tExtendable workflow automation\n\t\t\t\t\t

\"n8n
\n\t\tGithub\n\t
\"Play

\n\t\t\t\t\t\tWatch how simple it is to design a\n\t\t\t\t\t\tTypeform +\n\t\t\t\t\t\tGoogle Sheets +\n\t\t\t\t\t\tSlack workflow\n\t\t\t\t\t

Open icon

Open

\n\t\t\t\t\t\tThanks to our fair-code license, run n8n locally, or the cloud.\n\t\t\t\t\t\tDecide who gets access and where your data is stored.\n\t\t\t\t\t

Extendable icon

Extendable

\n\t\t\t\t\t\tEasy to augment with custom functions logic, and apps with minimal\n\t\t\t\t\t\tengineering effort.\n\t\t\t\t\t

Powerful icon

Powerful

\n\t\t\t\t\t\tn8n's node based editor lets you map anything to everything and go\n\t\t\t\t\t\tbeyond basic ETL.\n\t\t\t\t\t

What can I do with n8n?

Sync data between 150+ apps

\n\t\t\t\t\t\t\tMove and transform data between different apps and databases without getting caught up in API docs and troubleshooting CORS errors.\n\t\t\t\t\t\t

Design powerful workflows

Create custom integrations

\n\t\t\t\t\t\t\tSee what else you can do with n8n! Visit our\n\t\t\t\t\t\t\tMedium publication

How to get started?

\n\t\t\t\t\t\tCLI\n\t\t\t\t\t

\n\t\tClick to copy\n\t
\n\t\tClick to copy\n\t

\n\t\t\t\t\t\tDocker\n\t\t\t\t\t

\n\t\tClick to copy\n\t
\n\t\t\t\t\t\t\t\tn8n.cloud - our hosted offering is now in early access\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\tGet updates from n8n\n\t\t\t\t\t

Subscribe to our newsletter

\n\t\tBy submitting your email address you agree to your personal data being\n\t\tstored and used to provide you with information and commercial offers\n\t\tabout n8n.\n\t

\n
\n\n" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "HTML Extract": [ + { + "startTime": 1747344011749, + "executionIndex": 2, + "source": [ + { + "previousNode": "FunctionItem" + } + ], + "hints": [], + "executionTime": 13, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "extracted": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Move Binary Data": [ + { + "startTime": 1747344011762, + "executionIndex": 3, + "source": [ + { + "previousNode": "FunctionItem" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + }, + "binary": { + "data": { + "mimeType": "application/json", + "fileType": "json", + "fileExtension": "json", + "data": "PCFkb2N0eXBlIGh0bWw+CjxodG1sIGRhdGEtbi1oZWFkLXNzcj4KCjxib2R5ID4KPGRpdiBkYXRhLXNlcnZlci1yZW5kZXJlZD0idHJ1ZSIgaWQ9Il9fbnV4dCI+PCEtLS0tPjxkaXYgaWQ9Il9fbGF5b3V0Ij48ZGl2IGNsYXNzPSJsYXlvdXQtZnVsbC1wYWdlIj48aGVhZGVyIGNsYXNzPSJlbC1oZWFkZXIgaGVhZGVyIiBzdHlsZT0iaGVpZ2h0OmF1dG87Ij48IS0tLS0+IDxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+PGRpdiBjbGFzcz0iZWwtcm93Ij48ZGl2IGNsYXNzPSJlbC1jb2wgZWwtY29sLTI0IGVsLWNvbC14cy0xNiBlbC1jb2wtc20tMTYgZWwtY29sLW1kLTUgZWwtY29sLWxnLTYiPjxhIGhyZWY9Ii8iIGFyaWEtY3VycmVudD0icGFnZSIgY2xhc3M9Im51eHQtbGluay1leGFjdC1hY3RpdmUgbnV4dC1saW5rLWFjdGl2ZSI+PHN2ZyB3aWR0aD0iMTI0cHgiIGhlaWdodD0iMjhweCIgdmlld0JveD0iMCAwIDEyNCAyOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48dGl0bGU+bjg8L3RpdGxlPiA8ZyBpZD0ibmF2LW1lbnUtKFYxKSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGcgaWQ9Im5hdi1tZW51LSh2MSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjAuMDAwMDAwLCAtMTE2LjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+PGcgaWQ9Im44IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAuMDAwMDAwLCAxMTYuMDAwMDAwKSI+PHBhdGggZD0iTTQ4LjczODQ5MDYsMC4xOTAxODg2NzkgQzQ2LjE1NzczNTgsMC4xOTAxODg2NzkgNDMuOTg2NDE1MSwxLjk2NzkyNDUzIDQzLjM3MzU4NDksNC4zNjExMzIwOCBMMzUuNjUyNDUyOCw0LjM2MTEzMjA4IEMzMi42MjI2NDE1LDQuMzYxMTMyMDggMzAuMTU4MTEzMiw2LjgyNTY2MDM4IDMwLjE1ODExMzIsOS44NTU0NzE3IEMzMC4xNTgxMTMyLDExLjM2OTA1NjYgMjguOTI3MTY5OCwxMi42MDI2NDE1IDI3LjQxMDk0MzQsMTIuNjAyNjQxNSBMMjYuMzA5NDM0LDEyLjYwMjY0MTUgQzI1LjY5NjYwMzgsMTAuMjA5NDM0IDIzLjUyNzkyNDUsOC40MzE2OTgxMSAyMC45NDQ1MjgzLDguNDMxNjk4MTEgQzE4LjM2Mzc3MzYsOC40MzE2OTgxMSAxNi4xOTI0NTI4LDEwLjIwOTQzNCAxNS41Nzk2MjI2LDEyLjYwMjY0MTUgTDExLjE2ODMwMTksMTIuNjAyNjQxNSBDMTAuNTU1NDcxNywxMC4yMDk0MzQgOC4zODY3OTI0NSw4LjQzMTY5ODExIDUuODAzMzk2MjMsOC40MzE2OTgxMSBDMi43NDcxNjk4MSw4LjQzMTY5ODExIDAuMjU4ODY3OTI1LDEwLjkxNzM1ODUgMC4yNTg4Njc5MjUsMTMuOTc2MjI2NCBDMC4yNTg4Njc5MjUsMTcuMDMyNDUyOCAyLjc0NDUyODMsMTkuNTIwNzU0NyA1LjgwMzM5NjIzLDE5LjUyMDc1NDcgQzguMzg0MTUwOTQsMTkuNTIwNzU0NyAxMC41NTU0NzE3LDE3Ljc0MzAxODkgMTEuMTY4MzAxOSwxNS4zNDk4MTEzIEwxNS41ODQ5MDU3LDE1LjM0OTgxMTMgQzE2LjE5NzczNTgsMTcuNzQzMDE4OSAxOC4zNjY0MTUxLDE5LjUyMDc1NDcgMjAuOTQ5ODExMywxOS41MjA3NTQ3IEMyMy41MTQ3MTcsMTkuNTIwNzU0NyAyNS42NzAxODg3LDE3Ljc2OTQzNCAyNi4zMDE1MDk0LDE1LjQgTDI3LjQxMzU4NDksMTUuNCBDMjguOTI3MTY5OCwxNS40IDMwLjE2MDc1NDcsMTYuNjMwOTQzNCAzMC4xNjA3NTQ3LDE4LjE0NzE2OTggQzMwLjE2MDc1NDcsMjEuMTc2OTgxMSAzMi42MjUyODMsMjMuNjQxNTA5NCAzNS42NTUwOTQzLDIzLjY0MTUwOTQgTDM3LjQ1Mzk2MjMsMjMuNjQxNTA5NCBDMzguMDY2NzkyNSwyNi4wMzQ3MTcgNDAuMjM1NDcxNywyNy44MTI0NTI4IDQyLjgxODg2NzksMjcuODEyNDUyOCBDNDUuODc1MDk0MywyNy44MTI0NTI4IDQ4LjM2MzM5NjIsMjUuMzI2NzkyNSA0OC4zNjMzOTYyLDIyLjI2NzkyNDUgQzQ4LjM2MzM5NjIsMTkuMjExNjk4MSA0NS44Nzc3MzU4LDE2LjcyMzM5NjIgNDIuODE4ODY3OSwxNi43MjMzOTYyIEM0MC4yMzgxMTMyLDE2LjcyMzM5NjIgMzguMDY2NzkyNSwxOC41MDExMzIxIDM3LjQ1Mzk2MjMsMjAuODk0MzM5NiBMMzUuNjU1MDk0MywyMC44OTQzMzk2IEMzNC4xNDE1MDk0LDIwLjg5NDMzOTYgMzIuOTA3OTI0NSwxOS42NjMzOTYyIDMyLjkwNzkyNDUsMTguMTQ3MTY5OCBDMzIuOTA3OTI0NSwxNi40OTM1ODQ5IDMyLjE2ODMwMTksMTUuMDA5MDU2NiAzMS4wMDg2NzkyLDE0LjAwMjY0MTUgQzMyLjE3MDk0MzQsMTIuOTkzNTg0OSAzMi45MDc5MjQ1LDExLjUxMTY5ODEgMzIuOTA3OTI0NSw5Ljg1ODExMzIxIEMzMi45MDc5MjQ1LDguMzQ0NTI4MyAzNC4xMzg4Njc5LDcuMTEwOTQzNCAzNS42NTUwOTQzLDcuMTEwOTQzNCBMNDMuMzc2MjI2NCw3LjExMDk0MzQgQzQzLjk4OTA1NjYsOS41MDQxNTA5NCA0Ni4xNTc3MzU4LDExLjI4MTg4NjggNDguNzQxMTMyMSwxMS4yODE4ODY4IEM1MS43OTczNTg1LDExLjI4MTg4NjggNTQuMjg1NjYwNCw4Ljc5NjIyNjQyIDU0LjI4NTY2MDQsNS43MzczNTg0OSBDNTQuMjgzMDE4OSwyLjY3ODQ5MDU3IDUxLjc5NDcxNywwLjE5MDE4ODY3OSA0OC43Mzg0OTA2LDAuMTkwMTg4Njc5IFogTTUuODA4Njc5MjUsMTYuNzcwOTQzNCBDNC4yNjYwMzc3NCwxNi43NzA5NDM0IDMuMDExMzIwNzUsMTUuNTE2MjI2NCAzLjAxMTMyMDc1LDEzLjk3MzU4NDkgQzMuMDExMzIwNzUsMTIuNDMwOTQzNCA0LjI2NjAzNzc0LDExLjE3NjIyNjQgNS44MDg2NzkyNSwxMS4xNzYyMjY0IEM3LjM1MTMyMDc1LDExLjE3NjIyNjQgOC42MDYwMzc3NCwxMi40MzA5NDM0IDguNjA2MDM3NzQsMTMuOTczNTg0OSBDOC42MDYwMzc3NCwxNS41MTYyMjY0IDcuMzUxMzIwNzUsMTYuNzcwOTQzNCA1LjgwODY3OTI1LDE2Ljc3MDk0MzQgWiBNMjAuOTQ5ODExMywxNi43NzA5NDM0IEMxOS40MDcxNjk4LDE2Ljc3MDk0MzQgMTguMTUyNDUyOCwxNS41MTYyMjY0IDE4LjE1MjQ1MjgsMTMuOTczNTg0OSBDMTguMTUyNDUyOCwxMi40MzA5NDM0IDE5LjQwNzE2OTgsMTEuMTc2MjI2NCAyMC45NDk4MTEzLDExLjE3NjIyNjQgQzIyLjQ5MjQ1MjgsMTEuMTc2MjI2NCAyMy43NDcxNjk4LDEyLjQzMDk0MzQgMjMuNzQ3MTY5OCwxMy45NzM1ODQ5IEMyMy43NDcxNjk4LDE1LjUxNjIyNjQgMjIuNDkyNDUyOCwxNi43NzA5NDM0IDIwLjk0OTgxMTMsMTYuNzcwOTQzNCBaIE00Mi44MTYyMjY0LDE5LjQ2NzkyNDUgQzQ0LjM1ODg2NzksMTkuNDY3OTI0NSA0NS42MTM1ODQ5LDIwLjcyMjY0MTUgNDUuNjEzNTg0OSwyMi4yNjUyODMgQzQ1LjYxMzU4NDksMjMuODA3OTI0NSA0NC4zNTg4Njc5LDI1LjA2MjY0MTUgNDIuODE2MjI2NCwyNS4wNjI2NDE1IEM0MS4yNzM1ODQ5LDI1LjA2MjY0MTUgNDAuMDE4ODY3OSwyMy44MDc5MjQ1IDQwLjAxODg2NzksMjIuMjY1MjgzIEM0MC4wMjE1MDk0LDIwLjcyMjY0MTUgNDEuMjc2MjI2NCwxOS40Njc5MjQ1IDQyLjgxNjIyNjQsMTkuNDY3OTI0NSBaIE00OC43Mzg0OTA2LDguNTMyMDc1NDcgQzQ3LjE5NTg0OTEsOC41MzIwNzU0NyA0NS45NDExMzIxLDcuMjc3MzU4NDkgNDUuOTQxMTMyMSw1LjczNDcxNjk4IEM0NS45NDExMzIxLDQuMTkyMDc1NDcgNDcuMTk1ODQ5MSwyLjkzNzM1ODQ5IDQ4LjczODQ5MDYsMi45MzczNTg0OSBDNTAuMjgxMTMyMSwyLjkzNzM1ODQ5IDUxLjUzNTg0OTEsNC4xOTIwNzU0NyA1MS41MzU4NDkxLDUuNzM0NzE2OTggQzUxLjUzNTg0OTEsNy4yNzczNTg0OSA1MC4yODExMzIxLDguNTMyMDc1NDcgNDguNzM4NDkwNiw4LjUzMjA3NTQ3IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGNkQ1QSI+PC9wYXRoPiA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU2LjUyODMwMiwgNS41NDcxNzApIiBmaWxsPSIjMzg0RDVCIj48cGF0aCBkPSJNMS41Nzk2MjI2NCw3LjA5NzczNTg1IEMxLjU3OTYyMjY0LDYuNzY0OTA1NjYgMS40MDI2NDE1MSw2LjYwOTA1NjYgMS4wOTA5NDM0LDYuNjA5MDU2NiBMMC4xNzk2MjI2NDIsNi42MDkwNTY2IEwwLjE3OTYyMjY0Miw0Ljc2NTI4MzAyIEwyLjI0NzkyNDUzLDQuNzY1MjgzMDIgQzMuMjA0MTUwOTQsNC43NjUyODMwMiAzLjY3MTY5ODExLDUuMTg3OTI0NTMgMy42NzE2OTgxMSw2LjAwOTQzMzk2IEwzLjY3MTY5ODExLDYuNDMyMDc1NDcgQzMuNjcxNjk4MTEsNi43ODg2NzkyNSAzLjYyNjc5MjQ1LDcuMDc2NjAzNzcgMy42MjY3OTI0NSw3LjA3NjYwMzc3IEwzLjY3MTY5ODExLDcuMDc2NjAzNzcgQzQuMTE1NDcxNyw2LjA5OTI0NTI4IDUuNDQ5NDMzOTYsNC40OTg0OTA1NyA3Ljg5NTQ3MTcsNC40OTg0OTA1NyBDMTAuNTYzMzk2Miw0LjQ5ODQ5MDU3IDExLjc2MjY0MTUsNS45NDMzOTYyMyAxMS43NjI2NDE1LDguODA5NDMzOTYgTDExLjc2MjY0MTUsMTMuNjc3NzM1OCBDMTEuNzYyNjQxNSwxNC4wMTA1NjYgMTEuOTM5NjIyNiwxNC4xNjY0MTUxIDEyLjI1MTMyMDgsMTQuMTY2NDE1MSBMMTMuMTYyNjQxNSwxNC4xNjY0MTUxIEwxMy4xNjI2NDE1LDE2LjAxMDE4ODcgTDExLjAyODMwMTksMTYuMDEwMTg4NyBDMTAuMDI3MTY5OCwxNi4wMTAxODg3IDkuNjA0NTI4MywxNS41ODc1NDcyIDkuNjA0NTI4MywxNC41ODY0MTUxIEw5LjYwNDUyODMsOS4yOTgxMTMyMSBDOS42MDQ1MjgzLDcuNzE4NDkwNTcgOS4yOTI4MzAxOSw2LjQ3NDMzOTYyIDcuNDkzOTYyMjYsNi40NzQzMzk2MiBDNS43NjExMzIwOCw2LjQ3NDMzOTYyIDQuMzgyMjY0MTUsNy42MDc1NDcxNyAzLjkzODQ5MDU3LDkuMjMyMDc1NDcgQzMuNzgyNjQxNTEsOS42NzU4NDkwNiAzLjczNzczNTg1LDEwLjE4ODMwMTkgMy43Mzc3MzU4NSwxMC43NDMwMTg5IEwzLjczNzczNTg1LDE2LjAxMDE4ODcgTDEuNTgyMjY0MTUsMTYuMDEwMTg4NyBMMS41ODIyNjQxNSw3LjA5NzczNTg1IEwxLjU3OTYyMjY0LDcuMDk3NzM1ODUgWiIgaWQ9IlBhdGgiPjwvcGF0aD4gPHBhdGggZD0iTTE3LjY2OTA1NjYsNy40OTY2MDM3NyBMMTcuNjY5MDU2Niw3LjQ1MTY5ODExIEMxNy42NjkwNTY2LDcuNDUxNjk4MTEgMTUuNzM1NDcxNyw2LjQyOTQzMzk2IDE1LjczNTQ3MTcsNC4yNTAxODg2OCBDMTUuNzM1NDcxNywyLjA3MDk0MzQgMTcuNDY4MzAxOSwwLjA1MDE4ODY3OTIgMjAuNjI0OTA1NywwLjA1MDE4ODY3OTIgQzIzLjYyNTY2MDQsMC4wNTAxODg2NzkyIDI1LjUzODExMzIsMS44NTE2OTgxMSAyNS41MzgxMTMyLDQuMjk1MDk0MzQgQzI1LjUzODExMzIsNi42MDY0MTUwOSAyMy42NDk0MzQsOC4wMzAxODg2OCAyMy42NDk0MzQsOC4wMzAxODg2OCBMMjMuNjQ5NDM0LDguMDc1MDk0MzQgQzI1LjA3MzIwNzUsOC44OTY2MDM3NyAyNS45ODQ1MjgzLDkuOTg3NTQ3MTcgMjUuOTg0NTI4MywxMS42NzU0NzE3IEMyNS45ODQ1MjgzLDE0LjEyMTUwOTQgMjMuNzYzMDE4OSwxNi4yNzY5ODExIDIwLjU2MTUwOTQsMTYuMjc2OTgxMSBDMTcuNjA1NjYwNCwxNi4yNzY5ODExIDE1LjA5MzU4MjksMTQuNDMzMjA3NSAxNS4wOTM1ODI5LDExLjUxOTYyMjYgQzE1LjA5MDk0MzQsOC45NDE1MDk0MyAxNy42NjkwNTY2LDcuNDk2NjAzNzcgMTcuNjY5MDU2Niw3LjQ5NjYwMzc3IFogTTIwLjU1ODg2NzksMTQuMjUzNTg0OSBDMjIuMjA0NTI4MywxNC4yNTM1ODQ5IDIzLjczNjYwMzgsMTMuMTY1MjgzIDIzLjczNjYwMzgsMTEuNjA5NDM0IEMyMy43MzY2MDM4LDEwLjIzMDU2NiAyMi41NTg0OTA2LDkuNjMwOTQzNCAyMS4wOTI0NTI4LDkuMDMxMzIwNzUgQzIwLjQ5MjgzMDIsOC43ODU2NjAzOCAxOS42NDc1NDcyLDguNDUyODMwMTkgMTkuNDcwNTY2LDguNDUyODMwMTkgQzE4LjkxNTg0OTEsOC40NTI4MzAxOSAxNy4zMzYyMjY0LDkuNzQxODg2NzkgMTcuMzM2MjI2NCwxMS40MDg2NzkyIEMxNy4zMzYyMjY0LDEzLjE2NTI4MyAxOC44NDcxNjk4LDE0LjI1MzU4NDkgMjAuNTU4ODY3OSwxNC4yNTM1ODQ5IFogTTIxLjcxNTg0OTEsNy4xNCBDMjIuMjQ5NDM0LDcuMTQgMjMuMzgyNjQxNSw1LjgyNzE2OTgxIDIzLjM4MjY0MTUsNC40MjcxNjk4MSBDMjMuMzgyNjQxNSwyLjk4MjI2NDE1IDIyLjIyNTY2MDQsMi4wNzA5NDM0IDIwLjYyNzU0NzIsMi4wNzA5NDM0IEMxOC45MTU4NDkxLDIuMDcwOTQzNCAxNy45MTQ3MTcsMy4wNDgzMDE4OSAxNy45MTQ3MTcsNC4yOTI0NTI4MyBDMTcuOTE0NzE3LDUuNjcxMzIwNzUgMTkuMDkyODMwMiw2LjIwNDkwNTY2IDIwLjQ5MjgzMDIsNi43NTk2MjI2NCBDMjAuODA0NTI4Myw2Ljg5Njk4MTEzIDIxLjQ0OTA1NjYsNy4xNCAyMS43MTU4NDkxLDcuMTQgWiIgaWQ9IlNoYXBlIj48L3BhdGg+IDxwYXRoIGQ9Ik0yOS40MDUyODMsNy4wOTc3MzU4NSBDMjkuNDA1MjgzLDYuNzY0OTA1NjYgMjkuMjI4MzAxOSw2LjYwOTA1NjYgMjguOTE2NjAzOCw2LjYwOTA1NjYgTDI4LjAwNTI4Myw2LjYwOTA1NjYgTDI4LjAwNTI4Myw0Ljc2NTI4MzAyIEwzMC4wNzM1ODQ5LDQuNzY1MjgzMDIgQzMxLjAyOTgxMTMsNC43NjUyODMwMiAzMS40OTczNTg1LDUuMTg3OTI0NTMgMzEuNDk3MzU4NSw2LjAwOTQzMzk2IEwzMS40OTczNTg1LDYuNDMyMDc1NDcgQzMxLjQ5NzM1ODUsNi43ODg2NzkyNSAzMS40NTI0NTI4LDcuMDc2NjAzNzcgMzEuNDUyNDUyOCw3LjA3NjYwMzc3IEwzMS40OTczNTg1LDcuMDc2NjAzNzcgQzMxLjk0MTEzMjEsNi4wOTkyNDUyOCAzMy4yNzUwOTQzLDQuNDk4NDkwNTcgMzUuNzIxMTMyMSw0LjQ5ODQ5MDU3IEMzOC4zODkwNTY2LDQuNDk4NDkwNTcgMzkuNTg4MzAxOSw1Ljk0MzM5NjIzIDM5LjU4ODMwMTksOC44MDk0MzM5NiBMMzkuNTg4MzAxOSwxMy42Nzc3MzU4IEMzOS41ODgzMDE5LDE0LjAxMDU2NiAzOS43NjUyODMsMTQuMTY2NDE1MSA0MC4wNzY5ODExLDE0LjE2NjQxNTEgTDQwLjk4ODMwMTksMTQuMTY2NDE1MSBMNDAuOTg4MzAxOSwxNi4wMTAxODg3IEwzOC44NTM5NjIzLDE2LjAxMDE4ODcgQzM3Ljg1MjgzMDIsMTYuMDEwMTg4NyAzNy40MzAxODg3LDE1LjU4NzU0NzIgMzcuNDMwMTg4NywxNC41ODY0MTUxIEwzNy40MzAxODg3LDkuMjk4MTEzMjEgQzM3LjQzMDE4ODcsNy43MTg0OTA1NyAzNy4xMTg0OTA2LDYuNDc0MzM5NjIgMzUuMzE5NjIyNiw2LjQ3NDMzOTYyIEMzMy41ODY3OTI1LDYuNDc0MzM5NjIgMzIuMjA3OTI0NSw3LjYwNzU0NzE3IDMxLjc2NDE1MDksOS4yMzIwNzU0NyBDMzEuNjA4MzAxOSw5LjY3NTg0OTA2IDMxLjU2MzM5NjIsMTAuMTg4MzAxOSAzMS41NjMzOTYyLDEwLjc0MzAxODkgTDMxLjU2MzM5NjIsMTYuMDEwMTg4NyBMMjkuNDA3OTI0NSwxNi4wMTAxODg3IEwyOS40MDc5MjQ1LDcuMDk3NzM1ODUgTDI5LjQwNTI4Myw3LjA5NzczNTg1IFoiIGlkPSJQYXRoIj48L3BhdGg+IDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjQzLjU0IDEzLjcyIDQ1Ljc0MDM3NzQgMTMuNzIgNDUuNzQwMzc3NCAxNi4wMTAxODg3IDQzLjU0IDE2LjAxMDE4ODciPjwvcG9seWdvbj4gPHBhdGggZD0iTTQ4LjcxNzM1ODUsNy4wOTc3MzU4NSBDNDguNzE3MzU4NSw2Ljc2NDkwNTY2IDQ4LjU0MDM3NzQsNi42MDkwNTY2IDQ4LjIyODY3OTIsNi42MDkwNTY2IEw0Ny4zMTczNTg1LDYuNjA5MDU2NiBMNDcuMzE3MzU4NSw0Ljc2NTI4MzAyIEw0OS40Mjc5MjQ1LDQuNzY1MjgzMDIgQzUwLjQyOTA1NjYsNC43NjUyODMwMiA1MC44NTE2OTgxLDUuMTg3OTI0NTMgNTAuODUxNjk4MSw2LjE4OTA1NjYgTDUwLjg1MTY5ODEsMTMuNjgwMzc3NCBDNTAuODUxNjk4MSwxNC4wMTMyMDc1IDUxLjAyODY3OTIsMTQuMTY5MDU2NiA1MS4zNDAzNzc0LDE0LjE2OTA1NjYgTDUyLjI1MTY5ODEsMTQuMTY5MDU2NiBMNTIuMjUxNjk4MSwxNi4wMTI4MzAyIEw1MC4xNDExMzIxLDE2LjAxMjgzMDIgQzQ5LjE0LDE2LjAxMjgzMDIgNDguNzE3MzU4NSwxNS41OTAxODg3IDQ4LjcxNzM1ODUsMTQuNTg5MDU2NiBMNDguNzE3MzU4NSw3LjA5NzczNTg1IFoiIGlkPSJQYXRoIj48L3BhdGg+IDxwYXRoIGQ9Ik02MC4yMzE2OTgxLDQuNDk1ODQ5MDYgQzYzLjU4OTA1NjYsNC40OTU4NDkwNiA2Ni4yOTkyNDUzLDYuOTYzMDE4ODcgNjYuMjk5MjQ1MywxMC4zNjUyODMgQzY2LjI5OTI0NTMsMTMuNzg4Njc5MiA2My41ODY0MTUxLDE2LjI3Njk4MTEgNjAuMjMxNjk4MSwxNi4yNzY5ODExIEM1Ni44NzQzMzk2LDE2LjI3Njk4MTEgNTQuMTg1MjgzLDEzLjc4NjAzNzcgNTQuMTg1MjgzLDEwLjM2NTI4MyBDNTQuMTg1MjgzLDYuOTYzMDE4ODcgNTYuODc0MzM5Niw0LjQ5NTg0OTA2IDYwLjIzMTY5ODEsNC40OTU4NDkwNiBaIE02MC4yMzE2OTgxLDE0LjQwOTQzNCBDNjIuMzY2MDM3NywxNC40MDk0MzQgNjQuMDk4ODY3OSwxMi43MTg4Njc5IDY0LjA5ODg2NzksMTAuMzYyNjQxNSBDNjQuMDk4ODY3OSw4LjAyNzU0NzE3IDYyLjM2NjAzNzcsNi4zNjA3NTQ3MiA2MC4yMzE2OTgxLDYuMzYwNzU0NzIgQzU4LjEyMTEzMjEsNi4zNjA3NTQ3MiA1Ni4zODU2NjA0LDguMDI3NTQ3MTcgNTYuMzg1NjYwNCwxMC4zNjI2NDE1IEM1Ni4zODU2NjA0LDEyLjcyMTUwOTQgNTguMTE4NDkwNiwxNC40MDk0MzQgNjAuMjMxNjk4MSwxNC40MDk0MzQgWiIgaWQ9IlNoYXBlIj48L3BhdGg+PC9nPiA8cGF0aCBkPSJNMTA2LjIzMDk0Myw5LjYzODg2NzkyIEMxMDUuMTI0MTUxLDkuNjM4ODY3OTIgMTA0LjIyMzM5Niw4LjczODExMzIxIDEwNC4yMjMzOTYsNy42MzEzMjA3NSBDMTA0LjIyMzM5Niw2LjUyNDUyODMgMTA1LjEyNDE1MSw1LjYyMzc3MzU4IDEwNi4yMzA5NDMsNS42MjM3NzM1OCBDMTA3LjMzNzczNiw1LjYyMzc3MzU4IDEwOC4yMzg0OTEsNi41MjQ1MjgzIDEwOC4yMzg0OTEsNy42MzEzMjA3NSBDMTA4LjIzODQ5MSw4LjczODExMzIxIDEwNy4zMzc3MzYsOS42Mzg4Njc5MiAxMDYuMjMwOTQzLDkuNjM4ODY3OTIgWiBNMTA2LjIzMDk0Myw2LjU4NzkyNDUzIEMxMDUuNjU3NzM2LDYuNTg3OTI0NTMgMTA1LjE5MDE4OSw3LjA1NTQ3MTcgMTA1LjE5MDE4OSw3LjYyODY3OTI1IEMxMDUuMTkwMTg5LDguMjAxODg2NzkgMTA1LjY1NzczNiw4LjY2OTQzMzk2IDEwNi4yMzA5NDMsOC42Njk0MzM5NiBDMTA2LjgwNDE1MSw4LjY2OTQzMzk2IDEwNy4yNzE2OTgsOC4yMDE4ODY3OSAxMDcuMjcxNjk4LDcuNjI4Njc5MjUgQzEwNy4yNzE2OTgsNy4wNTU0NzE3IDEwNi44MDQxNTEsNi41ODc5MjQ1MyAxMDYuMjMwOTQzLDYuNTg3OTI0NTMgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkY2RDVBIj48L3BhdGg+PC9nPjwvZz48L2c+PC9zdmc+PC9hPjwvZGl2PiA8ZGl2IGNsYXNzPSJoaWRkZW4tc20tYW5kLWRvd24gZWwtY29sIGVsLWNvbC0yNCBlbC1jb2wtbWQtMTkgZWwtY29sLWxnLTE4Ij48dWwgcm9sZT0ibWVudWJhciIgbW9kZT0iaG9yaXpvbnRhbCIgY2xhc3M9ImRlZmF1bHQtbWVudSBlbC1tZW51LS1ob3Jpem9udGFsIGVsLW1lbnUiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij48bGkgcm9sZT0ibWVudWl0ZW0iIGFyaWEtaGFzcG9wdXA9InRydWUiIGNsYXNzPSJuYXZpZ2F0aW9uLWl0ZW0gZWwtc3VibWVudSI+PGRpdiBjbGFzcz0iZWwtc3VibWVudV9fdGl0bGUiIHN0eWxlPSJib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+UHJvZHVjdDxpIGNsYXNzPSJlbC1zdWJtZW51X19pY29uLWFycm93IGVsLWljb24tYXJyb3ctZG93biI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9ImVsLW1lbnUtLWhvcml6b250YWwiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48dWwgcm9sZT0ibWVudSIgY2xhc3M9ImVsLW1lbnUgZWwtbWVudS0tcG9wdXAgZWwtbWVudS0tcG9wdXAtIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmOyI+IDxsaSByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0iZWwtbWVudS1pdGVtIiBzdHlsZT0iY29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij48YSBocmVmPSJodHRwczovL2RvY3MubjhuLmlvL2dldHRpbmctc3RhcnRlZC9xdWlja3N0YXJ0Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5RdWlja3N0YXJ0PC9hPjwvbGk+IDxsaSByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0iZWwtbWVudS1pdGVtIiBzdHlsZT0iY29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij48YSBocmVmPSIvaW50ZWdyYXRpb25zIj5BcHBzICZhbXA7IG5vZGVzPC9hPjwvbGk+IDxsaSByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0iZWwtbWVudS1pdGVtIiBzdHlsZT0iY29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij48YSBocmVmPSIvd29ya2Zsb3dzIj5Xb3JrZmxvd3M8L2E+PC9saT4gPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudS1kaXZpZGVyIj48L2Rpdj4gPGxpIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJlbC1tZW51LWl0ZW0iIHN0eWxlPSJjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZjsiPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5uOG4uaW8vIiB0YXJnZXQ9Il9ibGFuayI+RG9jczwvYT48L2xpPiA8bGkgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSIgY2xhc3M9ImVsLW1lbnUtaXRlbSIgc3R5bGU9ImNvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL244bi1pby9uOG4iIHRhcmdldD0iX2JsYW5rIj5HaXRodWI8L2E+PC9saT48L3VsPjwvZGl2PjwvbGk+IDxsaSByb2xlPSJtZW51aXRlbSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgY2xhc3M9Im5hdmlnYXRpb24taXRlbSBlbC1zdWJtZW51Ij48ZGl2IGNsYXNzPSJlbC1zdWJtZW51X190aXRsZSIgc3R5bGU9ImJvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij5Db21tdW5pdHk8aSBjbGFzcz0iZWwtc3VibWVudV9faWNvbi1hcnJvdyBlbC1pY29uLWFycm93LWRvd24iPjwvaT48L2Rpdj48ZGl2IGNsYXNzPSJlbC1tZW51LS1ob3Jpem9udGFsIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PHVsIHJvbGU9Im1lbnUiIGNsYXNzPSJlbC1tZW51IGVsLW1lbnUtLXBvcHVwIGVsLW1lbnUtLXBvcHVwLSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZjsiPiA8bGkgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSIgY2xhc3M9ImVsLW1lbnUtaXRlbSIgc3R5bGU9ImNvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGEgaHJlZj0iaHR0cHM6Ly9jb21tdW5pdHkubjhuLmlvIiB0YXJnZXQ9Il9ibGFuayI+Rm9ydW08L2E+PC9saT4gPGxpIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJlbC1tZW51LWl0ZW0iIHN0eWxlPSJjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZjsiPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9uOG4taW8vIiB0YXJnZXQ9Il9ibGFuayI+QmxvZzwvYT48L2xpPiA8bGkgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSIgY2xhc3M9ImVsLW1lbnUtaXRlbSIgc3R5bGU9ImNvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLm44bi5pby9yZWZlcmVuY2UvY29udHJpYnV0aW5nLmh0bWwiIHRhcmdldD0iX2JsYW5rIj4KCQkJCUNvbnRyaWJ1dGUKCQkJPC9hPjwvbGk+PC91bD48L2Rpdj48L2xpPiA8bGkgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSIgY2xhc3M9ImVsLW1lbnUtaXRlbSBuYXZpZ2F0aW9uLWl0ZW0iIHN0eWxlPSJjb2xvcjojMzMzO2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGEgaHJlZj0iaHR0cHM6Ly9uOG4uY2xvdWQiIHRhcmdldD0iX2JsYW5rIj5uOG4uY2xvdWQ8L2E+PC9saT4gPGxpIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJlbC1tZW51LWl0ZW0gdXNlci1tZW51IiBzdHlsZT0iY29sb3I6IzMzMztib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6I2ZmZjsiPjxhIGhyZWY9Ii9sb2dpbiIgdGl0bGU9IkxvZ2luIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImVsLWJ1dHRvbiBlbC1idXR0b24tLXNlY29uZGFyeSBlbC1idXR0b24tLXNtYWxsIGlzLXJvdW5kIj48IS0tLS0+PCEtLS0tPjxzcGFuPjxzcGFuPlNpZ24gaW48L3NwYW4+PC9zcGFuPjwvYnV0dG9uPjwvYT4gPGEgaHJlZj0iL3JlZ2lzdGVyIiB0aXRsZT0iUmVnaXN0ZXIiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZWwtYnV0dG9uIGVsLWJ1dHRvbi0tcHJpbWFyeSBlbC1idXR0b24tLXNtYWxsIGlzLXJvdW5kIj48IS0tLS0+PCEtLS0tPjxzcGFuPjxzcGFuPlJlZ2lzdGVyPC9zcGFuPjwvc3Bhbj48L2J1dHRvbj48L2E+PC9saT48L3VsPjwvZGl2PiA8ZGl2IGNsYXNzPSJtZW51LXRvZ2dsZSBoaWRkZW4tbWQtYW5kLXVwIGVsLWNvbCBlbC1jb2wtMjQgZWwtY29sLXhzLTggZWwtY29sLXNtLTgiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZWwtYnV0dG9uIGVsLWJ1dHRvbi0tZGVmYXVsdCBlbC1idXR0b24tLW1lZGl1bSI+PCEtLS0tPjwhLS0tLT48c3Bhbj48c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBkYXRhLXByZWZpeD0iZmFzIiBkYXRhLWljb249ImJhcnMiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDQ4IDUxMiIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLWJhcnMgZmEtdy0xNCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNMTYgMTMyaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZIMTZDNy4xNjMgNjAgMCA2Ny4xNjMgMCA3NnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2eiI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj4gPGRpdiBjbGFzcz0iaGlkZGVuLW1kLWFuZC11cCBlbC1jb2wgZWwtY29sLTI0IGVsLWNvbC1zbS0yNCI+PGRpdiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGRpdiBjbGFzcz0ibWVudS1jb250YWluZXIiPjx1bCByb2xlPSJtZW51YmFyIiBtb2RlPSJ2ZXJ0aWNhbCIgY2xhc3M9ImRlZmF1bHQtbWVudSBlbC1tZW51IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGxpIHJvbGU9Im1lbnVpdGVtIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBjbGFzcz0ibmF2aWdhdGlvbi1pdGVtIGVsLXN1Ym1lbnUiPjxkaXYgY2xhc3M9ImVsLXN1Ym1lbnVfX3RpdGxlIiBzdHlsZT0icGFkZGluZy1sZWZ0OjIwcHg7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij5Qcm9kdWN0PGkgY2xhc3M9ImVsLXN1Ym1lbnVfX2ljb24tYXJyb3cgZWwtaWNvbi1hcnJvdy1kb3duIj48L2k+PC9kaXY+PHVsIHJvbGU9Im1lbnUiIGNsYXNzPSJlbC1tZW51IGVsLW1lbnUtLWlubGluZSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5Om5vbmU7Ij4gPGxpIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJlbC1tZW51LWl0ZW0iIHN0eWxlPSJwYWRkaW5nLWxlZnQ6NDBweDtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZjsiPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5uOG4uaW8vZ2V0dGluZy1zdGFydGVkL3F1aWNrc3RhcnQuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPlF1aWNrc3RhcnQ8L2E+PC9saT4gPGxpIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJlbC1tZW51LWl0ZW0iIHN0eWxlPSJwYWRkaW5nLWxlZnQ6NDBweDtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZjsiPjxhIGhyZWY9Ii9pbnRlZ3JhdGlvbnMiPkFwcHMgJmFtcDsgbm9kZXM8L2E+PC9saT4gPGxpIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJlbC1tZW51LWl0ZW0iIHN0eWxlPSJwYWRkaW5nLWxlZnQ6NDBweDtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZjsiPjxhIGhyZWY9Ii93b3JrZmxvd3MiPldvcmtmbG93czwvYT48L2xpPiA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51LWRpdmlkZXIiPjwvZGl2PiA8bGkgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSIgY2xhc3M9ImVsLW1lbnUtaXRlbSIgc3R5bGU9InBhZGRpbmctbGVmdDo0MHB4O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLm44bi5pby8iIHRhcmdldD0iX2JsYW5rIj5Eb2NzPC9hPjwvbGk+IDxsaSByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0iZWwtbWVudS1pdGVtIiBzdHlsZT0icGFkZGluZy1sZWZ0OjQwcHg7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbjhuLWlvL244biIgdGFyZ2V0PSJfYmxhbmsiPkdpdGh1YjwvYT48L2xpPjwvdWw+PC9saT4gPGxpIHJvbGU9Im1lbnVpdGVtIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBjbGFzcz0ibmF2aWdhdGlvbi1pdGVtIGVsLXN1Ym1lbnUiPjxkaXYgY2xhc3M9ImVsLXN1Ym1lbnVfX3RpdGxlIiBzdHlsZT0icGFkZGluZy1sZWZ0OjIwcHg7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij5Db21tdW5pdHk8aSBjbGFzcz0iZWwtc3VibWVudV9faWNvbi1hcnJvdyBlbC1pY29uLWFycm93LWRvd24iPjwvaT48L2Rpdj48dWwgcm9sZT0ibWVudSIgY2xhc3M9ImVsLW1lbnUgZWwtbWVudS0taW5saW5lIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmO2Rpc3BsYXk6bm9uZTsiPiA8bGkgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSIgY2xhc3M9ImVsLW1lbnUtaXRlbSIgc3R5bGU9InBhZGRpbmctbGVmdDo0MHB4O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGEgaHJlZj0iaHR0cHM6Ly9jb21tdW5pdHkubjhuLmlvIiB0YXJnZXQ9Il9ibGFuayI+Rm9ydW08L2E+PC9saT4gPGxpIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJlbC1tZW51LWl0ZW0iIHN0eWxlPSJwYWRkaW5nLWxlZnQ6NDBweDtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZjsiPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9uOG4taW8vIiB0YXJnZXQ9Il9ibGFuayI+QmxvZzwvYT48L2xpPiA8bGkgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSIgY2xhc3M9ImVsLW1lbnUtaXRlbSIgc3R5bGU9InBhZGRpbmctbGVmdDo0MHB4O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLm44bi5pby9yZWZlcmVuY2UvY29udHJpYnV0aW5nLmh0bWwiIHRhcmdldD0iX2JsYW5rIj4KCQkJCUNvbnRyaWJ1dGUKCQkJPC9hPjwvbGk+PC91bD48L2xpPiA8bGkgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSIgY2xhc3M9ImVsLW1lbnUtaXRlbSBuYXZpZ2F0aW9uLWl0ZW0iIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MjBweDtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZjsiPjxhIGhyZWY9Imh0dHBzOi8vbjhuLmNsb3VkIiB0YXJnZXQ9Il9ibGFuayI+bjhuLmNsb3VkPC9hPjwvbGk+IDxsaSByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0iZWwtbWVudS1pdGVtIHVzZXItbWVudSIgc3R5bGU9InBhZGRpbmctbGVmdDoyMHB4O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmOyI+PGEgaHJlZj0iL2xvZ2luIiB0aXRsZT0iTG9naW4iPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZWwtYnV0dG9uIGVsLWJ1dHRvbi0tc2Vjb25kYXJ5IGVsLWJ1dHRvbi0tc21hbGwgaXMtcm91bmQiPjwhLS0tLT48IS0tLS0+PHNwYW4+PHNwYW4+U2lnbiBpbjwvc3Bhbj48L3NwYW4+PC9idXR0b24+PC9hPiA8YSBocmVmPSIvcmVnaXN0ZXIiIHRpdGxlPSJSZWdpc3RlciI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJlbC1idXR0b24gZWwtYnV0dG9uLS1wcmltYXJ5IGVsLWJ1dHRvbi0tc21hbGwgaXMtcm91bmQiPjwhLS0tLT48IS0tLS0+PHNwYW4+PHNwYW4+UmVnaXN0ZXI8L3NwYW4+PC9zcGFuPjwvYnV0dG9uPjwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9oZWFkZXI+IDxkaXYgY2xhc3M9ImNvbnRlbnQtbWFpbiI+PG1haW4gY2xhc3M9ImVsLW1haW4iPjxzZWN0aW9uIGNsYXNzPSJwYWdlLWhvbWUiPjxkaXYgY2xhc3M9ImJhY2tncm91bmQtaW1hZ2UgYm90dG9tLWJhY2tncm91bmQtaW1hZ2UiIGRhdGEtdi03YTM3MmFkYz48aW1nIGRhdGEtc3Jjc2V0PSIvX251eHQvaW1nLzZmNzU4NTAucG5nIDF4LCAvX251eHQvaW1nLzZmNzU4NTAucG5nIDF4LCAvX251eHQvaW1nLzFkNjhiMmYucG5nIDJ4IiBhbHQ9ImJhY2tncm91bmQgaW1hZ2UiIHdpZHRoPSIxMDAlIiBkYXRhLXYtN2EzNzJhZGM+PC9kaXY+IDxkaXYgY2xhc3M9InNlY3Rpb24gaW50cm8iPjxkaXYgY2xhc3M9ImJhY2tncm91bmQtaW1hZ2UgaXMtbWlycm9yZWQiIGRhdGEtdi03YTM3MmFkYz48aW1nIGRhdGEtc3Jjc2V0PSIvX251eHQvaW1nLzA3YjQwYzMucG5nIDF4LCAvX251eHQvaW1nLzJhMDY5OGIucG5nIDJ4IiBhbHQ9ImJhY2tncm91bmQgaW1hZ2UiIHdpZHRoPSIxMDAlIiBkYXRhLXYtN2EzNzJhZGM+PC9kaXY+IDxkaXYgY2xhc3M9ImJhY2tncm91bmQtaW1hZ2UiIGRhdGEtdi03YTM3MmFkYz48aW1nIGRhdGEtc3Jjc2V0PSIvX251eHQvaW1nL2Q4MTc3MjcucG5nIDF4LCAvX251eHQvaW1nL2NkZTQwN2YucG5nIDJ4IiBhbHQ9ImJhY2tncm91bmQgaW1hZ2UiIHdpZHRoPSIxMDAlIiBkYXRhLXYtN2EzNzJhZGM+PC9kaXY+IDxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+PGRpdiBjbGFzcz0ibWItMSBlbC1yb3ciPjxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMjIgZWwtY29sLW9mZnNldC0xIGVsLWNvbC1tZC1vZmZzZXQtMyBlbC1jb2wtbWQtMTgiPjxoMSBjbGFzcz0iaGVhZGluZyBjZW50ZXIiPgoJCQkJCQlFeHRlbmRhYmxlIHdvcmtmbG93IGF1dG9tYXRpb24KCQkJCQk8L2gxPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJtYi01IGVsLXJvdyI+PGRpdiBjbGFzcz0iZWwtY29sIGVsLWNvbC0yMCBlbC1jb2wtb2Zmc2V0LTIgZWwtY29sLW1kLW9mZnNldC01IGVsLWNvbC1tZC0xNCI+PGRpdiBjbGFzcz0ic3ViLWhlYWRpbmciPjxhIGhyZWY9Imh0dHBzOi8vZmFpcmNvZGUuaW8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0icHJpbWFyeSI+ZmFpci1jb2RlPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbjhuLWlvL244bi9ibG9iL21hc3Rlci9wYWNrYWdlcy9jbGkvTElDRU5TRS5tZCIgdGl0bGU9IkxpY2Vuc2UgaW5mb3JtYXRpb24iIHRhcmdldD0iX2JsYW5rIj4KCQkJCQkJCWxpY2Vuc2VkIC0gQXBhY2hlIDIuMCB3aXRoIENvbW1vbnMgQ2xhdXNlCgkJCQkJCTwvYT48L2Rpdj48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgbWItOCI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJlbC1idXR0b24gZ2V0LXN0YXJ0ZWQtYnV0dG9uIGVsLWJ1dHRvbi0tcHJpbWFyeSBlbC1idXR0b24tLWxhcmdlIGlzLXJvdW5kIj48IS0tLS0+PCEtLS0tPjxzcGFuPkdldCBTdGFydGVkCgkJCQk8L3NwYW4+PC9idXR0b24+PC9kaXY+IDxkaXYgY2xhc3M9ImJhZGdlLXJvdyBlbC1yb3ciIHN0eWxlPSJtYXJnaW4tbGVmdDotMTBweDttYXJnaW4tcmlnaHQ6LTEwcHg7Ij48ZGl2IGNsYXNzPSJlbC1jb2wgZWwtY29sLTIyIGVsLWNvbC1vZmZzZXQtMSBlbC1jb2wtbWQtb2Zmc2V0LTQgZWwtY29sLW1kLTggZWwtY29sLWxnLW9mZnNldC02IGVsLWNvbC1sZy02IiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDoxMHB4OyI+PGRpdiBjbGFzcz0icHJvZHVjdC1odW50LWJhZGdlIiBkYXRhLXYtZWEyNmQ1ZmE+PGEgaHJlZj0iaHR0cHM6Ly93d3cucHJvZHVjdGh1bnQuY29tL3Bvc3RzL244bj91dG1fc291cmNlPWJhZGdlLXRvcC1wb3N0LWJhZGdlJnV0bV9tZWRpdW09YmFkZ2UmdXRtX3NvdWNlPWJhZGdlLW44biIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtdi1lYTI2ZDVmYT48aW1nIHNyYz0iaHR0cHM6Ly9hcGkucHJvZHVjdGh1bnQuY29tL3dpZGdldHMvZW1iZWQtaW1hZ2UvdjEvdG9wLXBvc3QtYmFkZ2Uuc3ZnP3Bvc3RfaWQ9MTcwMzkxJnRoZW1lPWxpZ2h0JnBlcmlvZD13ZWVrbHkiIGFsdD0ibjhuIC0gRnJlZSB3b3JrZmxvdyBhdXRvbWF0aW9uIHRvb2wgfCBQcm9kdWN0IEh1bnQgRW1iZWQiIHdpZHRoPSIyNTBweCIgaGVpZ2h0PSI1NHB4IiBzdHlsZT0id2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDU0cHg7IiBkYXRhLXYtZWEyNmQ1ZmE+PC9hPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlbC1jb2wgZWwtY29sLTIyIGVsLWNvbC1vZmZzZXQtMSBlbC1jb2wtbWQtb2Zmc2V0LTAgZWwtY29sLW1kLTggZWwtY29sLWxnLW9mZnNldC0wIGVsLWNvbC1sZy02IiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDoxMHB4OyI+PGRpdiBjbGFzcz0iZ2l0aHViLWJhZGdlIj48ZGl2IGNsYXNzPSJnaXRodWItYmFkZ2VfX3RpdGxlIj4KCQlHaXRodWIKCTwvZGl2PiA8ZGl2IGNsYXNzPSJnaC1idXR0b24tY29udGFpbmVyIj48YSBjbGFzcz0iZ2gtYnV0dG9uIj48c3ZnIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN5bmMgc3BpbiI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuMjQgNy40YTQuMTUgNC4xNSAwIDAgMS0xLjIgMy42IDQuMzQ2IDQuMzQ2IDAgMCAxLTUuNDEuNTRMNC44IDEwLjQuNSA5LjhsLjYgNC4yIDEuMzEtMS4yNmMyLjM2IDEuNzQgNS43IDEuNTcgNy44NC0uNTRhNS44NzYgNS44NzYgMCAwIDAgMS43NC00LjQ2bC0xLjc1LS4zNHpNMi45NiA1YTQuMzQ2IDQuMzQ2IDAgMCAxIDUuNDEtLjU0TDcuMiA1LjZsNC4zLjYtLjYtNC4yLTEuMzEgMS4yNmMtMi4zNi0xLjc0LTUuNy0xLjU3LTcuODUuNTRDLjUgNS4wMy0uMDYgNi42NS4wMSA4LjI2bDEuNzUuMzVBNC4xNyA0LjE3IDAgMCAxIDIuOTYgNXoiPjwvcGF0aD48L3N2Zz48L2E+PC9kaXY+IDxkaXYgY2xhc3M9ImdoLWJ1dHRvbi1jb250YWluZXIiPjxhIGNsYXNzPSJnaC1idXR0b24iPjxzdmcgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc3luYyBzcGluIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4yNCA3LjRhNC4xNSA0LjE1IDAgMCAxLTEuMiAzLjYgNC4zNDYgNC4zNDYgMCAwIDEtNS40MS41NEw0LjggMTAuNC41IDkuOGwuNiA0LjIgMS4zMS0xLjI2YzIuMzYgMS43NCA1LjcgMS41NyA3Ljg0LS41NGE1Ljg3NiA1Ljg3NiAwIDAgMCAxLjc0LTQuNDZsLTEuNzUtLjM0ek0yLjk2IDVhNC4zNDYgNC4zNDYgMCAwIDEgNS40MS0uNTRMNy4yIDUuNmw0LjMuNi0uNi00LjItMS4zMSAxLjI2Yy0yLjM2LTEuNzQtNS43LTEuNTctNy44NS41NEMuNSA1LjAzLS4wNiA2LjY1LjAxIDguMjZsMS43NS4zNUE0LjE3IDQuMTcgMCAwIDEgMi45NiA1eiI+PC9wYXRoPjwvc3ZnPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0ic2VjdGlvbiBoZXJvIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD0iZ3JhZDEiIGN4PSI1MCUiIGN5PSI1MCUiIHI9Ijc1JSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3R5bGU9InN0b3AtY29sb3I6cmdiKDI1MywgMjUzLCAyNTUpO3N0b3Atb3BhY2l0eToxOyI+PC9zdG9wPiA8c3RvcCBvZmZzZXQ9IjQ0JSIgc3R5bGU9InN0b3AtY29sb3I6cmdiKDI1MywgMjUzLCAyNTUpO3N0b3Atb3BhY2l0eToxOyI+PC9zdG9wPiA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0eWxlPSJzdG9wLWNvbG9yOnJnYigyMzcsIDIzNiwgMjQ0KTtzdG9wLW9wYWNpdHk6MTsiPjwvc3RvcD48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz4gPHBvbHlnb24gZmlsbD0idXJsKCNncmFkMSkiIHBvaW50cz0iMCwwIDUwLDE1IDEwMCwwIDEwMCwxMDAgMCwxMDAiPjwvcG9seWdvbj48L3N2Zz4gPGRpdiBjbGFzcz0iY29udGVudC13cmFwcGVyIj48ZGl2IGNsYXNzPSJlbC1yb3ciPjxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMjIgZWwtY29sLW9mZnNldC0xIGVsLWNvbC1tZC1vZmZzZXQtNCBlbC1jb2wtbWQtMTYiPjxkaXYgY2xhc3M9Imhlcm8taW1hZ2UtY29udGFpbmVyIj48ZGl2IGNsYXNzPSJoZXJvLWltYWdlLWRlY29yYXRpb24gbGVmdCI+PGltZyB3aWR0aD0iMTAwJSI+PC9kaXY+IDxkaXYgY2xhc3M9Imhlcm8taW1hZ2UtZGVjb3JhdGlvbiByaWdodCI+PGltZyB3aWR0aD0iMTAwJSI+PC9kaXY+IDwhLS0tLT4gPGRpdiBjbGFzcz0iaGVyby1pbWFnZS1vdmVybGF5Ij48ZGl2IGNsYXNzPSJoZXJvLWltYWdlLXBsYXktY29udGFpbmVyIj48aW1nIHNyYz0iL19udXh0L2ltZy85MTlkZTQ2LnN2ZyIgYWx0PSJQbGF5IGljb24iPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PiA8ZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBlbC1jb2wgZWwtY29sLTIyIGVsLWNvbC1vZmZzZXQtMSBlbC1jb2wtbWQtb2Zmc2V0LTYgZWwtY29sLW1kLTEyIj48cCBjbGFzcz0idGV4dCBtdXRlZCBtdC0yIG1iLTMiPgoJCQkJCQlXYXRjaCBob3cgc2ltcGxlIGl0IGlzIHRvIGRlc2lnbiBhCgkJCQkJCTxzcGFuIGNsYXNzPSJ0ZXh0IHNlbWlib2xkIj5UeXBlZm9ybTwvc3Bhbj4gKwoJCQkJCQk8c3BhbiBjbGFzcz0idGV4dCBzZW1pYm9sZCI+R29vZ2xlIFNoZWV0czwvc3Bhbj4gKwoJCQkJCQk8c3BhbiBjbGFzcz0idGV4dCBzZW1pYm9sZCI+U2xhY2s8L3NwYW4+IHdvcmtmbG93CgkJCQkJPC9wPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJtdC04IHBiLTUgYmVuZWZpdHMtcm93IGVsLXJvdyI+PGRpdiBjbGFzcz0iZWwtY29sIGVsLWNvbC0yMiBlbC1jb2wtb2Zmc2V0LTEgZWwtY29sLW1kLW9mZnNldC0yIGVsLWNvbC1tZC02Ij48ZGl2IGNsYXNzPSJpY29uLXRleHQtZGVzY3JpcHRpb24tY2FyZCIgZGF0YS12LWE4NmYyNTJlPjxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIgbWItMyIgZGF0YS12LWE4NmYyNTJlPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBjbGFzcz0ibWF0ZXJpYWwtaWNvbiBtYXRlcmlhbC1pY29uX19wcmltYXJ5IiBzdHlsZT0id2lkdGg6NDhweDtoZWlnaHQ6NDhweDsiIGRhdGEtdi0xZGUzZGQ2OCBkYXRhLXYtYTg2ZjI1MmU+PHRpdGxlIGRhdGEtdi0xZGUzZGQ2OD5PcGVuIGljb248L3RpdGxlPiA8IS0tLS0+IDxwYXRoIGQ9Ik0xNy45LDE3LjM5QzE3LjY0LDE2LjU5IDE2Ljg5LDE2IDE2LDE2SDE1VjEzQTEsMSAwIDAsMCAxNCwxMkg4VjEwSDEwQTEsMSAwIDAsMCAxMSw5VjdIMTNBMiwyIDAgMCwwIDE1LDVWNC41OUMxNy45Myw1Ljc3IDIwLDguNjQgMjAsMTJDMjAsMTQuMDggMTkuMiwxNS45NyAxNy45LDE3LjM5TTExLDE5LjkzQzcuMDUsMTkuNDQgNCwxNi4wOCA0LDEyQzQsMTEuMzggNC4wOCwxMC43OCA0LjIxLDEwLjIxTDksMTVWMTZBMiwyIDAgMCwwIDExLDE4TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWiIgZmlsbD0iIiBkYXRhLXYtMWRlM2RkNjg+PC9wYXRoPjwvc3ZnPjwvZGl2PiA8aDMgY2xhc3M9ImhlYWRpbmciIGRhdGEtdi1hODZmMjUyZT5PcGVuPC9oMz4gPHAgY2xhc3M9InRleHQgbXV0ZWQiIGRhdGEtdi1hODZmMjUyZT4KCQkJCQkJVGhhbmtzIHRvIG91ciBmYWlyLWNvZGUgbGljZW5zZSwgcnVuIG44biBsb2NhbGx5LCBvciB0aGUgY2xvdWQuCgkJCQkJCURlY2lkZSB3aG8gZ2V0cyBhY2Nlc3MgYW5kIHdoZXJlIHlvdXIgZGF0YSBpcyBzdG9yZWQuCgkJCQkJPC9wPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlbC1jb2wgZWwtY29sLTIyIGVsLWNvbC1vZmZzZXQtMSBlbC1jb2wtbWQtNiI+PGRpdiBjbGFzcz0iaWNvbi10ZXh0LWRlc2NyaXB0aW9uLWNhcmQiIGRhdGEtdi1hODZmMjUyZT48ZGl2IGNsYXNzPSJpbWFnZS13cmFwcGVyIG1iLTMiIGRhdGEtdi1hODZmMjUyZT48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgY2xhc3M9Im1hdGVyaWFsLWljb24gbWF0ZXJpYWwtaWNvbl9fcHJpbWFyeSIgc3R5bGU9IndpZHRoOjQ4cHg7aGVpZ2h0OjQ4cHg7IiBkYXRhLXYtMWRlM2RkNjggZGF0YS12LWE4NmYyNTJlPjx0aXRsZSBkYXRhLXYtMWRlM2RkNjg+RXh0ZW5kYWJsZSBpY29uPC90aXRsZT4gPCEtLS0tPiA8cGF0aCBkPSJNOCwzQTIsMiAwIDAsMCA2LDVWOUEyLDIgMCAwLDEgNCwxMUgzVjEzSDRBMiwyIDAgMCwxIDYsMTVWMTlBMiwyIDAgMCwwIDgsMjFIMTBWMTlIOFYxNEEyLDIgMCAwLDAgNiwxMkEyLDIgMCAwLDAgOCwxMFY1SDEwVjNNMTYsM0EyLDIgMCAwLDEgMTgsNVY5QTIsMiAwIDAsMCAyMCwxMUgyMVYxM0gyMEEyLDIgMCAwLDAgMTgsMTVWMTlBMiwyIDAgMCwxIDE2LDIxSDE0VjE5SDE2VjE0QTIsMiAwIDAsMSAxOCwxMkEyLDIgMCAwLDEgMTYsMTBWNUgxNFYzSDE2WiIgZmlsbD0iIiBkYXRhLXYtMWRlM2RkNjg+PC9wYXRoPjwvc3ZnPjwvZGl2PiA8aDMgY2xhc3M9ImhlYWRpbmciIGRhdGEtdi1hODZmMjUyZT5FeHRlbmRhYmxlPC9oMz4gPHAgY2xhc3M9InRleHQgbXV0ZWQiIGRhdGEtdi1hODZmMjUyZT4KCQkJCQkJRWFzeSB0byBhdWdtZW50IHdpdGggY3VzdG9tIGZ1bmN0aW9ucyBsb2dpYywgYW5kIGFwcHMgd2l0aCBtaW5pbWFsCgkJCQkJCWVuZ2luZWVyaW5nIGVmZm9ydC4KCQkJCQk8L3A+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMjIgZWwtY29sLW9mZnNldC0xIGVsLWNvbC1tZC02Ij48ZGl2IGNsYXNzPSJpY29uLXRleHQtZGVzY3JpcHRpb24tY2FyZCIgZGF0YS12LWE4NmYyNTJlPjxkaXYgY2xhc3M9ImltYWdlLXdyYXBwZXIgbWItMyIgZGF0YS12LWE4NmYyNTJlPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBjbGFzcz0ibWF0ZXJpYWwtaWNvbiBtYXRlcmlhbC1pY29uX19wcmltYXJ5IiBzdHlsZT0id2lkdGg6NDhweDtoZWlnaHQ6NDhweDsiIGRhdGEtdi0xZGUzZGQ2OCBkYXRhLXYtYTg2ZjI1MmU+PHRpdGxlIGRhdGEtdi0xZGUzZGQ2OD5Qb3dlcmZ1bCBpY29uPC90aXRsZT4gPCEtLS0tPiA8cGF0aCBkPSJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsNEE4LDggMCAwLDEgMjAsMTJDMjAsMTQuNCAxOSwxNi41IDE3LjMsMThDMTUuOSwxNi43IDE0LDE2IDEyLDE2QzEwLDE2IDguMiwxNi43IDYuNywxOEM1LDE2LjUgNCwxNC40IDQsMTJBOCw4IDAgMCwxIDEyLDRNMTAsNkExLDEgMCAwLDAgOSw3QTEsMSAwIDAsMCAxMCw4QTEsMSAwIDAsMCAxMSw3QTEsMSAwIDAsMCAxMCw2TTE0LDZBMSwxIDAgMCwwIDEzLDdBMSwxIDAgMCwwIDE0LDhBMSwxIDAgMCwwIDE1LDdBMSwxIDAgMCwwIDE0LDZNMTcuMDksOC45NEMxNi45Niw4Ljk0IDE2Ljg0LDguOTcgMTYuNyw5TDEzLjUsMTAuMzJMMTMuMjMsMTAuNDNDMTIuNjcsMTAgMTEuOTEsOS44OCAxMS4yNSwxMC4xNUMxMC4yMywxMC41NiA5LjczLDExLjczIDEwLjE1LDEyLjc1QzEwLjU2LDEzLjc3IDExLjczLDE0LjI3IDEyLjc1LDEzLjg1QzEzLjQxLDEzLjU5IDEzLjg4LDEzIDE0LDEyLjI4TDE0LjIzLDEyLjE4TDE3LjQ1LDEwLjg4TDE3LjQ3LDEwLjg3QzE4LDEwLjY2IDE4LjIzLDEwLjA4IDE4LjAzLDkuNTZDMTcuODcsOS4xOCAxNy41LDguOTMgMTcuMDksOC45NE03LDlBMSwxIDAgMCwwIDYsMTBBMSwxIDAgMCwwIDcsMTFBMSwxIDAgMCwwIDgsMTBBMSwxIDAgMCwwIDcsOVoiIGZpbGw9IiIgZGF0YS12LTFkZTNkZDY4PjwvcGF0aD48L3N2Zz48L2Rpdj4gPGgzIGNsYXNzPSJoZWFkaW5nIiBkYXRhLXYtYTg2ZjI1MmU+UG93ZXJmdWw8L2gzPiA8cCBjbGFzcz0idGV4dCBtdXRlZCIgZGF0YS12LWE4NmYyNTJlPgoJCQkJCQluOG4ncyBub2RlIGJhc2VkIGVkaXRvciBsZXRzIHlvdSBtYXAgYW55dGhpbmcgdG8gZXZlcnl0aGluZyBhbmQgZ28KCQkJCQkJYmV5b25kIGJhc2ljIEVUTC4KCQkJCQk8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9InNlY3Rpb24gZmVhdHVyZXMiPjxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+PGRpdiBjbGFzcz0iZWwtcm93Ij48ZGl2IGNsYXNzPSJlbC1jb2wgZWwtY29sLTIyIGVsLWNvbC1vZmZzZXQtMSBlbC1jb2wtbWQtb2Zmc2V0LTggZWwtY29sLW1kLTgiPjxoMiBjbGFzcz0iaGVhZGluZyBjZW50ZXIiPldoYXQgY2FuIEkgZG8gd2l0aCBuOG4/PC9oMj48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZmVhdHVyZXMtcm93IGVsLXJvdyBlbC1yb3ctLWZsZXgiPjxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMjIgZWwtY29sLW9mZnNldC0xIGVsLWNvbC1tZC1vZmZzZXQtMCBlbC1jb2wtbWQtMTAiPjxkaXYgY2xhc3M9InB0LTIiPjxkaXYgZGVzY3JpcHRpb249Ik1vdmUgYW5kIHRyYW5zZm9ybSBkYXRhIGJldHdlZW4gZGlmZmVyZW50IGFwcHMgYW5kIGRhdGFiYXNlcyB3aXRob3V0IGdldHRpbmcgY2F1Z2h0IHVwIGluIEFQSSBkb2NzIGFuZCB0cm91Ymxlc2hvb3RpbmcgQ09SUyBlcnJvcnMuIiBzcmM9Ii9fbnV4dC9pbWcvMjg3MzE4Zi5wbmciIHRodW1ibmFpbFdpZHRoPSIxMDAlIiBjbGFzcz0iZWwtY2FyZCBmZWF0dXJlLWNhcmQgaXMtbmV2ZXItc2hhZG93IGlzLWFjdGl2ZSIgZGF0YS12LTkxMWQ1ODAyPjwhLS0tLT48ZGl2IGNsYXNzPSJlbC1jYXJkX19ib2R5Ij48aDMgY2xhc3M9ImhlYWRpbmciIGRhdGEtdi05MTFkNTgwMj5TeW5jIGRhdGEgYmV0d2VlbiAxNTArIGFwcHM8L2gzPiA8cCBjbGFzcz0idGV4dCBtdXRlZCBtdC0yIiBkYXRhLXYtOTExZDU4MDI+CgkJCQkJCQlNb3ZlIGFuZCB0cmFuc2Zvcm0gZGF0YSBiZXR3ZWVuIGRpZmZlcmVudCBhcHBzIGFuZCBkYXRhYmFzZXMgd2l0aG91dCBnZXR0aW5nIGNhdWdodCB1cCBpbiBBUEkgZG9jcyBhbmQgdHJvdWJsZXNob290aW5nIENPUlMgZXJyb3JzLgoJCQkJCQk8L3A+PC9kaXY+PC9kaXY+PGRpdiBkZXNjcmlwdGlvbj0iR28gYmV5b25kIEVUTDogc3RhcnQgd2l0aCBzaW1wbGUgbm8tY29kZSBmbG93cyBhbmQgYWRkIGphdmFzY3JpcHQgZnVuY3Rpb25zLCBjb25kaXRpb25hbCBsb2dpYywgb3IgY3VzdG9tIGh0dHAgcmVxdWVzdHMgaW4gYSBzbmFwLiIgc3JjPSIvX251eHQvaW1nLzJkYzNhZTAuZ2lmIiB0aHVtYm5haWxXaWR0aD0iMTAwJSIgY2xhc3M9ImVsLWNhcmQgZmVhdHVyZS1jYXJkIGlzLW5ldmVyLXNoYWRvdyIgZGF0YS12LTkxMWQ1ODAyPjwhLS0tLT48ZGl2IGNsYXNzPSJlbC1jYXJkX19ib2R5Ij48aDMgY2xhc3M9ImhlYWRpbmciIGRhdGEtdi05MTFkNTgwMj5EZXNpZ24gcG93ZXJmdWwgd29ya2Zsb3dzPC9oMz4gPCEtLS0tPjwvZGl2PjwvZGl2PjxkaXYgZGVzY3JpcHRpb249IkRlc2lnbiBiZXNwb2tlIG5vZGVzIGZvciBhIHByb3ByaWV0YXJ5IENSTSwgZW5kcG9pbnRzIGZvciB5b3VyIHByb2R1Y3QsIG9yIGFueSBvdGhlciBzb2Z0d2FyZSwgYW5kIGVtcG93ZXIgeW91ciBtYXJrZXRpbmcgYW5kIG9wcyB0ZWFtcyB0byBjcmVhdGUgdGhlaXIgb3duIHdvcmtmbG93cy4iIHNyYz0iL19udXh0L2ltZy80MjY0OWZmLmpwZyIgdGh1bWJuYWlsV2lkdGg9IjEwMCUiIGNsYXNzPSJlbC1jYXJkIGZlYXR1cmUtY2FyZCBpcy1uZXZlci1zaGFkb3ciIGRhdGEtdi05MTFkNTgwMj48IS0tLS0+PGRpdiBjbGFzcz0iZWwtY2FyZF9fYm9keSI+PGgzIGNsYXNzPSJoZWFkaW5nIiBkYXRhLXYtOTExZDU4MDI+Q3JlYXRlIGN1c3RvbSBpbnRlZ3JhdGlvbnM8L2gzPiA8IS0tLS0+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImltYWdlLWNvbCBlbC1jb2wgZWwtY29sLTIyIGVsLWNvbC1vZmZzZXQtMSBlbC1jb2wtbWQtb2Zmc2V0LTIgZWwtY29sLW1kLTEyIj48ZGl2IGNsYXNzPSJmZWF0dXJlLWltYWdlLWNvbnRhaW5lciI+PCEtLS0tPiA8cCBjbGFzcz0idGV4dCBtdXRlZCB0ZXh0LWNlbnRlciI+CgkJCQkJCQlTZWUgd2hhdCBlbHNlIHlvdSBjYW4gZG8gd2l0aCBuOG4hIFZpc2l0IG91cgoJCQkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL244bi1pbyIgdGFyZ2V0PSJfYmxhbmsiPk1lZGl1bSBwdWJsaWNhdGlvbjwvYT48L3A+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9InNlY3Rpb24gZ2V0LXN0YXJ0ZWQiPjxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+PGRpdiBjbGFzcz0iZWwtcm93Ij48ZGl2IGNsYXNzPSJlbC1jb2wgZWwtY29sLTIyIGVsLWNvbC1vZmZzZXQtMSBlbC1jb2wtbWQtb2Zmc2V0LTggZWwtY29sLW1kLTgiPjxoMiBjbGFzcz0iaGVhZGluZyBjZW50ZXIiPkhvdyB0byBnZXQgc3RhcnRlZD88L2gyPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJnZXQtc3RhcnRlZC1yb3cgZWwtcm93IiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTEwcHg7bWFyZ2luLXJpZ2h0Oi0xMHB4OyI+PGRpdiBjbGFzcz0iZWwtY29sIGVsLWNvbC0yNCBlbC1jb2wtbWQtMTIiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7Ij48aDMgY2xhc3M9ImhlYWRpbmcgY2VudGVyIG1iLTIiPgoJCQkJCQlDTEkKCQkJCQk8L2gzPiA8ZGl2IGNsYXNzPSJleGVjdXRpb24tY29kZSBjbGktbnB4Ij48ZGl2IGNsYXNzPSJjbGljay10by1jb3B5IGNsaWNrYWJsZSI+CgkJQ2xpY2sgdG8gY29weQoJPC9kaXY+IDwhLS0tLT48L2Rpdj4gPGRpdiBjbGFzcz0iZXhlY3V0aW9uLWNvZGUgY2xpLW5wbS1pbnN0YWxsIj48ZGl2IGNsYXNzPSJjbGljay10by1jb3B5IGNsaWNrYWJsZSI+CgkJQ2xpY2sgdG8gY29weQoJPC9kaXY+IDwhLS0tLT48L2Rpdj4gPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9uOG4taW8vbjhuL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2NsaS9SRUFETUUubWQiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ibGluay1wcmltYXJ5Ij4KCQkJCQkJCUFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgQ0xJCgkJCQkJCTwvYT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWwtY29sIGVsLWNvbC0yNCBlbC1jb2wtbWQtMTIiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7Ij48aDMgY2xhc3M9ImhlYWRpbmcgY2VudGVyIG1iLTIiPgoJCQkJCQlEb2NrZXIKCQkJCQk8L2gzPiA8ZGl2IGNsYXNzPSJleGVjdXRpb24tY29kZSBkb2NrZXIiPjxkaXYgY2xhc3M9ImNsaWNrLXRvLWNvcHkgY2xpY2thYmxlIj4KCQlDbGljayB0byBjb3B5Cgk8L2Rpdj4gPCEtLS0tPjwvZGl2PiA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL244bi1pby9uOG4vYmxvYi9tYXN0ZXIvZG9ja2VyL2ltYWdlcy9uOG4vUkVBRE1FLm1kIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImxpbmstcHJpbWFyeSI+CgkJCQkJCQlBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGRvY2tlciBkZXBsb3ltZW50CgkJCQkJCTwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0ic2VjdGlvbiBob3N0aW5nLWluZm8iPjxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+PGRpdiBjbGFzcz0iZWwtcm93Ij48ZGl2IGNsYXNzPSJlbC1jb2wgZWwtY29sLTIyIGVsLWNvbC1vZmZzZXQtMSBlbC1jb2wtbWQtb2Zmc2V0LTUgZWwtY29sLW1kLTE0Ij48ZGl2IGNsYXNzPSJlbC1jYXJkIGhvc3RpbmctaW5mby1jYXJkIGlzLW5ldmVyLXNoYWRvdyI+PCEtLS0tPjxkaXYgY2xhc3M9ImVsLWNhcmRfX2JvZHkiPjxkaXYgY2xhc3M9ImVsLXJvdyBpcy1qdXN0aWZ5LXNwYWNlLWJldHdlZW4gaXMtYWxpZ24tbWlkZGxlIGVsLXJvdy0tZmxleCI+PHNwYW4+CgkJCQkJCQkJbjhuLmNsb3VkIC0gb3VyIGhvc3RlZCBvZmZlcmluZyBpcyBub3cgaW4gZWFybHkgYWNjZXNzCgkJCQkJCQk8L3NwYW4+IDxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9uOG4uY2xvdWQ/dXRtX3NvdXJjZT1uOG4uaW8mYW1wO3V0bV9tZWRpdW09d2ViJmFtcDt1dG1fY2FtcGFpZ249aG9tZXBhZ2UtY2xvdWQtY3RhIiB0YXJnZXQ9Il9ibGFuayI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJlbC1idXR0b24gZWwtYnV0dG9uLS1kZWZhdWx0IGlzLXJvdW5kIj48IS0tLS0+PCEtLS0tPjxzcGFuPkxlYXJuIG1vcmU8L3NwYW4+PC9idXR0b24+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJzZWN0aW9uIGNvbnRhY3QtaW5mbyBkYXJrIHB0LTggcGItOCI+PGRpdiBjbGFzcz0iY29udGVudC13cmFwcGVyIj48ZGl2IGNsYXNzPSJlbC1yb3ciPjxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMjIgZWwtY29sLW9mZnNldC0xIGVsLWNvbC1tZC05Ij48aDIgY2xhc3M9ImhlYWRpbmcgbWItMiI+CgkJCQkJCUdldCB1cGRhdGVzIGZyb20gbjhuCgkJCQkJPC9oMj48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0ibWItNSBlbC1yb3ciPjxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMjIgZWwtY29sLW9mZnNldC0xIGVsLWNvbC1tZC0xMSI+PGRpdiBjbGFzcz0iYnJhbmRpbmctaXRlbXMiPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9uOG4taW8iIGNsYXNzPSJicmFuZGluZy1pdGVtIiBkYXRhLXYtYTNjMTUzNGE+PGRpdiBjbGFzcz0iYnJhbmRpbmctaXRlbV9fY29udGVudCIgZGF0YS12LWEzYzE1MzRhPjxzdmcgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGRhdGEtcHJlZml4PSJmYWIiIGRhdGEtaWNvbj0ibWVkaXVtIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ0OCA1MTIiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS1tZWRpdW0gZmEtdy0xNCIgZGF0YS12LWEzYzE1MzRhIGRhdGEtdi1hM2MxNTM0YT48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0wIDMydjQ0OGg0NDhWMzJIMHptMzcyLjIgMTA2LjFsLTI0IDIzYy0yLjEgMS42LTMuMSA0LjItMi43IDYuN3YxNjkuM2MtLjQgMi42LjYgNS4yIDIuNyA2LjdsMjMuNSAyM3Y1LjFoLTExOFYzNjdsMjQuMy0yMy42YzIuNC0yLjQgMi40LTMuMSAyLjQtNi43VjE5OS44bC02Ny42IDE3MS42aC05LjFMMTI1IDE5OS44djExNWMtLjcgNC44IDEgOS43IDQuNCAxMy4ybDMxLjYgMzguM3Y1LjFINzEuMnYtNS4xbDMxLjYtMzguM2MzLjQtMy41IDQuOS04LjQgNC4xLTEzLjJ2LTEzM2MuNC0zLjctMS03LjMtMy44LTkuOEw3NSAxMzguMVYxMzNoODcuM2w2Ny40IDE0OEwyODkgMTMzLjFoODMuMnY1eiIgZGF0YS12LWEzYzE1MzRhIGRhdGEtdi1hM2MxNTM0YT48L3BhdGg+PC9zdmc+IDxzcGFuIGRhdGEtdi1hM2MxNTM0YT5CbG9nPC9zcGFuPjwvZGl2PjwvYT48YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL244bl9pbyIgY2xhc3M9ImJyYW5kaW5nLWl0ZW0iIGRhdGEtdi1hM2MxNTM0YT48ZGl2IGNsYXNzPSJicmFuZGluZy1pdGVtX19jb250ZW50IiBkYXRhLXYtYTNjMTUzNGE+PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhYiIgZGF0YS1pY29uPSJ0d2l0dGVyIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS10d2l0dGVyIGZhLXctMTYiIGRhdGEtdi1hM2MxNTM0YSBkYXRhLXYtYTNjMTUzNGE+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNNDU5LjM3IDE1MS43MTZjLjMyNSA0LjU0OC4zMjUgOS4wOTcuMzI1IDEzLjY0NSAwIDEzOC43Mi0xMDUuNTgzIDI5OC41NTgtMjk4LjU1OCAyOTguNTU4LTU5LjQ1MiAwLTExNC42OC0xNy4yMTktMTYxLjEzNy00Ny4xMDYgOC40NDcuOTc0IDE2LjU2OCAxLjI5OSAyNS4zNCAxLjI5OSA0OS4wNTUgMCA5NC4yMTMtMTYuNTY4IDEzMC4yNzQtNDQuODMyLTQ2LjEzMi0uOTc1LTg0Ljc5Mi0zMS4xODgtOTguMTEyLTcyLjc3MiA2LjQ5OC45NzQgMTIuOTk1IDEuNjI0IDE5LjgxOCAxLjYyNCA5LjQyMSAwIDE4Ljg0My0xLjMgMjcuNjE0LTMuNTczLTQ4LjA4MS05Ljc0Ny04NC4xNDMtNTEuOTgtODQuMTQzLTEwMi45ODV2LTEuMjk5YzEzLjk2OSA3Ljc5NyAzMC4yMTQgMTIuNjcgNDcuNDMxIDEzLjMxOS0yOC4yNjQtMTguODQzLTQ2Ljc4MS01MS4wMDUtNDYuNzgxLTg3LjM5MSAwLTE5LjQ5MiA1LjE5Ny0zNy4zNiAxNC4yOTQtNTIuOTU0IDUxLjY1NSA2My42NzUgMTI5LjMgMTA1LjI1OCAyMTYuMzY1IDEwOS44MDctMS42MjQtNy43OTctMi41OTktMTUuOTE4LTIuNTk5LTI0LjA0IDAtNTcuODI4IDQ2Ljc4Mi0xMDQuOTM0IDEwNC45MzQtMTA0LjkzNCAzMC4yMTMgMCA1Ny41MDIgMTIuNjcgNzYuNjcgMzMuMTM3IDIzLjcxNS00LjU0OCA0Ni40NTYtMTMuMzIgNjYuNTk5LTI1LjM0LTcuNzk4IDI0LjM2Ni0yNC4zNjYgNDQuODMzLTQ2LjEzMiA1Ny44MjcgMjEuMTE3LTIuMjczIDQxLjU4NC04LjEyMiA2MC40MjYtMTYuMjQzLTE0LjI5MiAyMC43OTEtMzIuMTYxIDM5LjMwOC01Mi42MjggNTQuMjUzeiIgZGF0YS12LWEzYzE1MzRhIGRhdGEtdi1hM2MxNTM0YT48L3BhdGg+PC9zdmc+IDxzcGFuIGRhdGEtdi1hM2MxNTM0YT5Ud2l0dGVyPC9zcGFuPjwvZGl2PjwvYT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbjhuLWlvL244biIgY2xhc3M9ImJyYW5kaW5nLWl0ZW0iIGRhdGEtdi1hM2MxNTM0YT48ZGl2IGNsYXNzPSJicmFuZGluZy1pdGVtX19jb250ZW50IiBkYXRhLXYtYTNjMTUzNGE+PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhYiIgZGF0YS1pY29uPSJnaXRodWIiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDk2IDUxMiIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLWdpdGh1YiBmYS13LTE2IiBkYXRhLXYtYTNjMTUzNGEgZGF0YS12LWEzYzE1MzRhPjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTE2NS45IDM5Ny40YzAgMi0yLjMgMy42LTUuMiAzLjYtMy4zLjMtNS42LTEuMy01LjYtMy42IDAtMiAyLjMtMy42IDUuMi0zLjYgMy0uMyA1LjYgMS4zIDUuNiAzLjZ6bS0zMS4xLTQuNWMtLjcgMiAxLjMgNC4zIDQuMyA0LjkgMi42IDEgNS42IDAgNi4yLTJzLTEuMy00LjMtNC4zLTUuMmMtMi42LS43LTUuNS4zLTYuMiAyLjN6bTQ0LjItMS43Yy0yLjkuNy00LjkgMi42LTQuNiA0LjkuMyAyIDIuOSAzLjMgNS45IDIuNiAyLjktLjcgNC45LTIuNiA0LjYtNC42LS4zLTEuOS0zLTMuMi01LjktMi45ek0yNDQuOCA4QzEwNi4xIDggMCAxMTMuMyAwIDI1MmMwIDExMC45IDY5LjggMjA1LjggMTY5LjUgMjM5LjIgMTIuOCAyLjMgMTcuMy01LjYgMTcuMy0xMi4xIDAtNi4yLS4zLTQwLjQtLjMtNjEuNCAwIDAtNzAgMTUtODQuNy0yOS44IDAgMC0xMS40LTI5LjEtMjcuOC0zNi42IDAgMC0yMi45LTE1LjcgMS42LTE1LjQgMCAwIDI0LjkgMiAzOC42IDI1LjggMjEuOSAzOC42IDU4LjYgMjcuNSA3Mi45IDIwLjkgMi4zLTE2IDguOC0yNy4xIDE2LTMzLjctNTUuOS02LjItMTEyLjMtMTQuMy0xMTIuMy0xMTAuNSAwLTI3LjUgNy42LTQxLjMgMjMuNi01OC45LTIuNi02LjUtMTEuMS0zMy4zIDIuNi02Ny45IDIwLjktNi41IDY5IDI3IDY5IDI3IDIwLTUuNiA0MS41LTguNSA2Mi44LTguNXM0Mi44IDIuOSA2Mi44IDguNWMwIDAgNDguMS0zMy42IDY5LTI3IDEzLjcgMzQuNyA1LjIgNjEuNCAyLjYgNjcuOSAxNiAxNy43IDI1LjggMzEuNSAyNS44IDU4LjkgMCA5Ni41LTU4LjkgMTA0LjItMTE0LjggMTEwLjUgOS4yIDcuOSAxNyAyMi45IDE3IDQ2LjQgMCAzMy43LS4zIDc1LjQtLjMgODMuNiAwIDYuNSA0LjYgMTQuNCAxNy4zIDEyLjFDNDI4LjIgNDU3LjggNDk2IDM2Mi45IDQ5NiAyNTIgNDk2IDExMy4zIDM4My41IDggMjQ0LjggOHpNOTcuMiAzNTIuOWMtMS4zIDEtMSAzLjMuNyA1LjIgMS42IDEuNiAzLjkgMi4zIDUuMiAxIDEuMy0xIDEtMy4zLS43LTUuMi0xLjYtMS42LTMuOS0yLjMtNS4yLTF6bS0xMC44LTguMWMtLjcgMS4zLjMgMi45IDIuMyAzLjkgMS42IDEgMy42LjcgNC4zLS43LjctMS4zLS4zLTIuOS0yLjMtMy45LTItLjYtMy42LS4zLTQuMy43em0zMi40IDM1LjZjLTEuNiAxLjMtMSA0LjMgMS4zIDYuMiAyLjMgMi4zIDUuMiAyLjYgNi41IDEgMS4zLTEuMy43LTQuMy0xLjMtNi4yLTIuMi0yLjMtNS4yLTIuNi02LjUtMXptLTExLjQtMTQuN2MtMS42IDEtMS42IDMuNiAwIDUuOSAxLjYgMi4zIDQuMyAzLjMgNS42IDIuMyAxLjYtMS4zIDEuNi0zLjkgMC02LjItMS40LTIuMy00LTMuMy01LjYtMnoiIGRhdGEtdi1hM2MxNTM0YSBkYXRhLXYtYTNjMTUzNGE+PC9wYXRoPjwvc3ZnPiA8c3BhbiBkYXRhLXYtYTNjMTUzNGE+R2l0aHViPC9zcGFuPjwvZGl2PjwvYT48YSBocmVmPSJodHRwczovL2xpbmtlZGluLmNvbS9jb21wYW55L244biIgY2xhc3M9ImJyYW5kaW5nLWl0ZW0iIGRhdGEtdi1hM2MxNTM0YT48ZGl2IGNsYXNzPSJicmFuZGluZy1pdGVtX19jb250ZW50IiBkYXRhLXYtYTNjMTUzNGE+PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhYiIgZGF0YS1pY29uPSJsaW5rZWRpbiIgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtbGlua2VkaW4gZmEtdy0xNCIgZGF0YS12LWEzYzE1MzRhIGRhdGEtdi1hM2MxNTM0YT48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik00MTYgMzJIMzEuOUMxNC4zIDMyIDAgNDYuNSAwIDY0LjN2MzgzLjRDMCA0NjUuNSAxNC4zIDQ4MCAzMS45IDQ4MEg0MTZjMTcuNiAwIDMyLTE0LjUgMzItMzIuM1Y2NC4zYzAtMTcuOC0xNC40LTMyLjMtMzItMzIuM3pNMTM1LjQgNDE2SDY5VjIwMi4yaDY2LjVWNDE2em0tMzMuMi0yNDNjLTIxLjMgMC0zOC41LTE3LjMtMzguNS0zOC41UzgwLjkgOTYgMTAyLjIgOTZjMjEuMiAwIDM4LjUgMTcuMyAzOC41IDM4LjUgMCAyMS4zLTE3LjIgMzguNS0zOC41IDM4LjV6bTI4Mi4xIDI0M2gtNjYuNFYzMTJjMC0yNC44LS41LTU2LjctMzQuNS01Ni43LTM0LjYgMC0zOS45IDI3LTM5LjkgNTQuOVY0MTZoLTY2LjRWMjAyLjJoNjMuN3YyOS4yaC45YzguOS0xNi44IDMwLjYtMzQuNSA2Mi45LTM0LjUgNjcuMiAwIDc5LjcgNDQuMyA3OS43IDEwMS45VjQxNnoiIGRhdGEtdi1hM2MxNTM0YSBkYXRhLXYtYTNjMTUzNGE+PC9wYXRoPjwvc3ZnPiA8c3BhbiBkYXRhLXYtYTNjMTUzNGE+TGlua2VkSW48L3NwYW4+PC9kaXY+PC9hPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9uOG5pby8iIGNsYXNzPSJicmFuZGluZy1pdGVtIiBkYXRhLXYtYTNjMTUzNGE+PGRpdiBjbGFzcz0iYnJhbmRpbmctaXRlbV9fY29udGVudCIgZGF0YS12LWEzYzE1MzRhPjxzdmcgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGRhdGEtcHJlZml4PSJmYWIiIGRhdGEtaWNvbj0iZmFjZWJvb2siIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLWZhY2Vib29rIGZhLXctMTYiIGRhdGEtdi1hM2MxNTM0YSBkYXRhLXYtYTNjMTUzNGE+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNNTA0IDI1NkM1MDQgMTE5IDM5MyA4IDI1NiA4UzggMTE5IDggMjU2YzAgMTIzLjc4IDkwLjY5IDIyNi4zOCAyMDkuMjUgMjQ1VjMyNy42OWgtNjNWMjU2aDYzdi01NC42NGMwLTYyLjE1IDM3LTk2LjQ4IDkzLjY3LTk2LjQ4IDI3LjE0IDAgNTUuNTIgNC44NCA1NS41MiA0Ljg0djYxaC0zMS4yOGMtMzAuOCAwLTQwLjQxIDE5LjEyLTQwLjQxIDM4LjczVjI1Nmg2OC43OGwtMTEgNzEuNjloLTU3Ljc4VjUwMUM0MTMuMzEgNDgyLjM4IDUwNCAzNzkuNzggNTA0IDI1NnoiIGRhdGEtdi1hM2MxNTM0YSBkYXRhLXYtYTNjMTUzNGE+PC9wYXRoPjwvc3ZnPiA8c3BhbiBkYXRhLXYtYTNjMTUzNGE+RmFjZWJvb2s8L3NwYW4+PC9kaXY+PC9hPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2MvbjhuLWlvIiBjbGFzcz0iYnJhbmRpbmctaXRlbSIgZGF0YS12LWEzYzE1MzRhPjxkaXYgY2xhc3M9ImJyYW5kaW5nLWl0ZW1fX2NvbnRlbnQiIGRhdGEtdi1hM2MxNTM0YT48c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBkYXRhLXByZWZpeD0iZmFiIiBkYXRhLWljb249InlvdXR1YmUiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTc2IDUxMiIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLXlvdXR1YmUgZmEtdy0xOCIgZGF0YS12LWEzYzE1MzRhIGRhdGEtdi1hM2MxNTM0YT48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik01NDkuNjU1IDEyNC4wODNjLTYuMjgxLTIzLjY1LTI0Ljc4Ny00Mi4yNzYtNDguMjg0LTQ4LjU5N0M0NTguNzgxIDY0IDI4OCA2NCAyODggNjRTMTE3LjIyIDY0IDc0LjYyOSA3NS40ODZjLTIzLjQ5NyA2LjMyMi00Mi4wMDMgMjQuOTQ3LTQ4LjI4NCA0OC41OTctMTEuNDEyIDQyLjg2Ny0xMS40MTIgMTMyLjMwNS0xMS40MTIgMTMyLjMwNXMwIDg5LjQzOCAxMS40MTIgMTMyLjMwNWM2LjI4MSAyMy42NSAyNC43ODcgNDEuNSA0OC4yODQgNDcuODIxQzExNy4yMiA0NDggMjg4IDQ0OCAyODggNDQ4czE3MC43OCAwIDIxMy4zNzEtMTEuNDg2YzIzLjQ5Ny02LjMyMSA0Mi4wMDMtMjQuMTcxIDQ4LjI4NC00Ny44MjEgMTEuNDEyLTQyLjg2NyAxMS40MTItMTMyLjMwNSAxMS40MTItMTMyLjMwNXMwLTg5LjQzOC0xMS40MTItMTMyLjMwNXptLTMxNy41MSAyMTMuNTA4VjE3NS4xODVsMTQyLjczOSA4MS4yMDUtMTQyLjczOSA4MS4yMDF6IiBkYXRhLXYtYTNjMTUzNGEgZGF0YS12LWEzYzE1MzRhPjwvcGF0aD48L3N2Zz4gPHNwYW4gZGF0YS12LWEzYzE1MzRhPllvdVR1YmU8L3NwYW4+PC9kaXY+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlbC1yb3ciPjxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMjIgZWwtY29sLW9mZnNldC0xIGVsLWNvbC1tZC05Ij48ZGl2IGNsYXNzPSJtYWlsLWNoaW1wLXN1YnNjcmliZS1mb3JtIj48aDMgY2xhc3M9ImhlYWRpbmcgbWItMiI+U3Vic2NyaWJlIHRvIG91ciBuZXdzbGV0dGVyPC9oMz4gPGRpdiBpZD0ibWNfZW1iZWRfc2lnbnVwIj48Zm9ybSBhY3Rpb249Imh0dHBzOi8vbjhuLnVzMjAubGlzdC1tYW5hZ2UuY29tL3N1YnNjcmliZS9wb3N0P3U9MmM4ODQ1ODIwYjBkOTA1M2E3YmQwZmE1ZiZpZD03MmRhMjczNDNkIiBtZXRob2Q9InBvc3QiIGlkPSJtYy1lbWJlZGRlZC1zdWJzY3JpYmUtZm9ybSIgbmFtZT0ibWMtZW1iZWRkZWQtc3Vic2NyaWJlLWZvcm0iIHRhcmdldD0iX2JsYW5rIiBub3ZhbGlkYXRlPSJub3ZhbGlkYXRlIiBjbGFzcz0idmFsaWRhdGUiPjxkaXYgY2xhc3M9Im1iLTIgZWwtcm93IiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTVweDttYXJnaW4tcmlnaHQ6LTVweDsiPjxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMTQgZWwtY29sLXNtLTE2IiBzdHlsZT0icGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLXJpZ2h0OjVweDsiPjxkaXYgY2xhc3M9ImVsLWlucHV0Ij48IS0tLS0+PGlucHV0IHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBuYW1lPSJFTUFJTCIgcGxhY2Vob2xkZXI9IkVtYWlsIiBjbGFzcz0iZWwtaW5wdXRfX2lubmVyIj48IS0tLS0+PCEtLS0tPjwhLS0tLT48IS0tLS0+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImVsLWNvbCBlbC1jb2wtMTAgZWwtY29sLXNtLTgiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6NXB4O3BhZGRpbmctcmlnaHQ6NXB4OyI+PGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJlbC1idXR0b24gZWwtYnV0dG9uLS1wcmltYXJ5IGlzLXJvdW5kIj48IS0tLS0+PCEtLS0tPjxzcGFuPlN1YnNjcmliZQoJCQkJCTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj4gPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogLTUwMDBweDsiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJiXzJjODg0NTgyMGIwZDkwNTNhN2JkMGZhNWZfNzJkYTI3MzQzZCIgdGFiaW5kZXg9Ii0xIiB2YWx1ZT48L2Rpdj48L2Zvcm0+PC9kaXY+IDxwIGNsYXNzPSJ0ZXh0IG1pbmkgbXV0ZWQiPgoJCUJ5IHN1Ym1pdHRpbmcgeW91ciBlbWFpbCBhZGRyZXNzIHlvdSBhZ3JlZSB0byB5b3VyIHBlcnNvbmFsIGRhdGEgYmVpbmcKCQlzdG9yZWQgYW5kIHVzZWQgdG8gcHJvdmlkZSB5b3Ugd2l0aCBpbmZvcm1hdGlvbiBhbmQgY29tbWVyY2lhbCBvZmZlcnMKCQlhYm91dCBuOG4uCgk8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9zZWN0aW9uPjwvbWFpbj48L2Rpdj4gPGZvb3RlciBjbGFzcz0iZWwtZm9vdGVyIiBzdHlsZT0iaGVpZ2h0OjYwcHg7IiBkYXRhLXYtNjM2ZmNlNDY+PGRpdiBjbGFzcz0iY29udGVudC13cmFwcGVyIGVsLXJvdyIgZGF0YS12LTYzNmZjZTQ2PjxkaXYgY2xhc3M9ImxlZnQtc2lkZSBlbC1jb2wgZWwtY29sLTI0IGVsLWNvbC1zbS0yNCBlbC1jb2wtbWQtOCIgZGF0YS12LTYzNmZjZTQ2PgoJCQnDgsKpIDIwMTktMjAyMSBuOG4uaW8gQWxsIHJpZ2h0cyBSZXNlcnZlZAoJCTwvZGl2PiA8ZGl2IGNsYXNzPSJyaWdodC1zaWRlIGVsLWNvbCBlbC1jb2wtMjQgZWwtY29sLXNtLTI0IGVsLWNvbC1tZC0xNiIgZGF0YS12LTYzNmZjZTQ2PjxhIGhyZWY9Imh0dHBzOi8vbjhuLmpvaW4uY29tIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImxpbmstcHJpbWFyeSIgZGF0YS12LTYzNmZjZTQ2PgoJCQkJSm9icwoJCQk8L2E+IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9uOG4taW8vIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImxpbmstcHJpbWFyeSIgZGF0YS12LTYzNmZjZTQ2PgoJCQkJQmxvZwoJCQk8L2E+IDxhIGhyZWY9Ii9jb250YWN0IiBjbGFzcz0ibGluay1wcmltYXJ5IiBkYXRhLXYtNjM2ZmNlNDY+CgkJCQlDb250YWN0CgkJCTwvYT4gPGEgaHJlZj0iL3ByZXNzIiBjbGFzcz0ibGluay1wcmltYXJ5IiBkYXRhLXYtNjM2ZmNlNDY+CgkJCQlQcmVzcwoJCQk8L2E+IDxhIGhyZWY9Ii9pbXByZXNzdW0iIGNsYXNzPSJsaW5rLXByaW1hcnkiIGRhdGEtdi02MzZmY2U0Nj4KCQkJCUltcHJlc3N1bQoJCQk8L2E+IDxhIGhyZWY9Ii9wcml2YWN5IiBjbGFzcz0ibGluay1wcmltYXJ5IiBkYXRhLXYtNjM2ZmNlNDY+CgkJCQlQcml2YWN5CgkJCTwvYT4gPGEgaHJlZj0iL3Rlcm1zIiBjbGFzcz0ibGluay1wcmltYXJ5IiBkYXRhLXYtNjM2ZmNlNDY+CgkJCQlUZXJtcyBvZiBTZXJ2aWNlCgkJCTwvYT48L2Rpdj4gPGRpdiBjbGFzcz0ic29jaWFsLW1lZGlhIGVsLWNvbCBlbC1jb2wtMjQgZWwtY29sLXNtLTI0IGVsLWNvbC1tZC0yNCIgZGF0YS12LTYzNmZjZTQ2PgoJCQlGb2xsb3cgdXMgb24gOgoJCQk8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vbjhuLWlvIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS12LTYzNmZjZTQ2PjxzdmcgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGRhdGEtcHJlZml4PSJmYWIiIGRhdGEtaWNvbj0ibWVkaXVtIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ0OCA1MTIiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS1tZWRpdW0gZmEtdy0xNCIgZGF0YS12LTYzNmZjZTQ2PjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTAgMzJ2NDQ4aDQ0OFYzMkgwem0zNzIuMiAxMDYuMWwtMjQgMjNjLTIuMSAxLjYtMy4xIDQuMi0yLjcgNi43djE2OS4zYy0uNCAyLjYuNiA1LjIgMi43IDYuN2wyMy41IDIzdjUuMWgtMTE4VjM2N2wyNC4zLTIzLjZjMi40LTIuNCAyLjQtMy4xIDIuNC02LjdWMTk5LjhsLTY3LjYgMTcxLjZoLTkuMUwxMjUgMTk5Ljh2MTE1Yy0uNyA0LjggMSA5LjcgNC40IDEzLjJsMzEuNiAzOC4zdjUuMUg3MS4ydi01LjFsMzEuNi0zOC4zYzMuNC0zLjUgNC45LTguNCA0LjEtMTMuMnYtMTMzYy40LTMuNy0xLTcuMy0zLjgtOS44TDc1IDEzOC4xVjEzM2g4Ny4zbDY3LjQgMTQ4TDI4OSAxMzMuMWg4My4ydjV6IiBkYXRhLXYtNjM2ZmNlNDY+PC9wYXRoPjwvc3ZnPgoJCQkJbjhuLWlvCgkJCTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL244bi1pby9uOG4iIHRhcmdldD0iX2JsYW5rIiBkYXRhLXYtNjM2ZmNlNDY+PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhYiIgZGF0YS1pY29uPSJnaXRodWIiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDk2IDUxMiIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLWdpdGh1YiBmYS13LTE2IiBkYXRhLXYtNjM2ZmNlNDY+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNMTY1LjkgMzk3LjRjMCAyLTIuMyAzLjYtNS4yIDMuNi0zLjMuMy01LjYtMS4zLTUuNi0zLjYgMC0yIDIuMy0zLjYgNS4yLTMuNiAzLS4zIDUuNiAxLjMgNS42IDMuNnptLTMxLjEtNC41Yy0uNyAyIDEuMyA0LjMgNC4zIDQuOSAyLjYgMSA1LjYgMCA2LjItMnMtMS4zLTQuMy00LjMtNS4yYy0yLjYtLjctNS41LjMtNi4yIDIuM3ptNDQuMi0xLjdjLTIuOS43LTQuOSAyLjYtNC42IDQuOS4zIDIgMi45IDMuMyA1LjkgMi42IDIuOS0uNyA0LjktMi42IDQuNi00LjYtLjMtMS45LTMtMy4yLTUuOS0yLjl6TTI0NC44IDhDMTA2LjEgOCAwIDExMy4zIDAgMjUyYzAgMTEwLjkgNjkuOCAyMDUuOCAxNjkuNSAyMzkuMiAxMi44IDIuMyAxNy4zLTUuNiAxNy4zLTEyLjEgMC02LjItLjMtNDAuNC0uMy02MS40IDAgMC03MCAxNS04NC43LTI5LjggMCAwLTExLjQtMjkuMS0yNy44LTM2LjYgMCAwLTIyLjktMTUuNyAxLjYtMTUuNCAwIDAgMjQuOSAyIDM4LjYgMjUuOCAyMS45IDM4LjYgNTguNiAyNy41IDcyLjkgMjAuOSAyLjMtMTYgOC44LTI3LjEgMTYtMzMuNy01NS45LTYuMi0xMTIuMy0xNC4zLTExMi4zLTExMC41IDAtMjcuNSA3LjYtNDEuMyAyMy42LTU4LjktMi42LTYuNS0xMS4xLTMzLjMgMi42LTY3LjkgMjAuOS02LjUgNjkgMjcgNjkgMjcgMjAtNS42IDQxLjUtOC41IDYyLjgtOC41czQyLjggMi45IDYyLjggOC41YzAgMCA0OC4xLTMzLjYgNjktMjcgMTMuNyAzNC43IDUuMiA2MS40IDIuNiA2Ny45IDE2IDE3LjcgMjUuOCAzMS41IDI1LjggNTguOSAwIDk2LjUtNTguOSAxMDQuMi0xMTQuOCAxMTAuNSA5LjIgNy45IDE3IDIyLjkgMTcgNDYuNCAwIDMzLjctLjMgNzUuNC0uMyA4My42IDAgNi41IDQuNiAxNC40IDE3LjMgMTIuMUM0MjguMiA0NTcuOCA0OTYgMzYyLjkgNDk2IDI1MiA0OTYgMTEzLjMgMzgzLjUgOCAyNDQuOCA4ek05Ny4yIDM1Mi45Yy0xLjMgMS0xIDMuMy43IDUuMiAxLjYgMS42IDMuOSAyLjMgNS4yIDEgMS4zLTEgMS0zLjMtLjctNS4yLTEuNi0xLjYtMy45LTIuMy01LjItMXptLTEwLjgtOC4xYy0uNyAxLjMuMyAyLjkgMi4zIDMuOSAxLjYgMSAzLjYuNyA0LjMtLjcuNy0xLjMtLjMtMi45LTIuMy0zLjktMi0uNi0zLjYtLjMtNC4zLjd6bTMyLjQgMzUuNmMtMS42IDEuMy0xIDQuMyAxLjMgNi4yIDIuMyAyLjMgNS4yIDIuNiA2LjUgMSAxLjMtMS4zLjctNC4zLTEuMy02LjItMi4yLTIuMy01LjItMi42LTYuNS0xem0tMTEuNC0xNC43Yy0xLjYgMS0xLjYgMy42IDAgNS45IDEuNiAyLjMgNC4zIDMuMyA1LjYgMi4zIDEuNi0xLjMgMS42LTMuOSAwLTYuMi0xLjQtMi4zLTQtMy4zLTUuNi0yeiIgZGF0YS12LTYzNmZjZTQ2PjwvcGF0aD48L3N2Zz4KCQkJCW44bi1pbwoJCQk8L2E+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9uOG5pbyIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtdi02MzZmY2U0Nj48c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBkYXRhLXByZWZpeD0iZmFiIiBkYXRhLWljb249ImZhY2Vib29rIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS1mYWNlYm9vayBmYS13LTE2IiBkYXRhLXYtNjM2ZmNlNDY+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNNTA0IDI1NkM1MDQgMTE5IDM5MyA4IDI1NiA4UzggMTE5IDggMjU2YzAgMTIzLjc4IDkwLjY5IDIyNi4zOCAyMDkuMjUgMjQ1VjMyNy42OWgtNjNWMjU2aDYzdi01NC42NGMwLTYyLjE1IDM3LTk2LjQ4IDkzLjY3LTk2LjQ4IDI3LjE0IDAgNTUuNTIgNC44NCA1NS41MiA0Ljg0djYxaC0zMS4yOGMtMzAuOCAwLTQwLjQxIDE5LjEyLTQwLjQxIDM4LjczVjI1Nmg2OC43OGwtMTEgNzEuNjloLTU3Ljc4VjUwMUM0MTMuMzEgNDgyLjM4IDUwNCAzNzkuNzggNTA0IDI1NnoiIGRhdGEtdi02MzZmY2U0Nj48L3BhdGg+PC9zdmc+CgkJCQluOG5pbwoJCQk8L2E+IDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vbjhuX2lvIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS12LTYzNmZjZTQ2PjxzdmcgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGRhdGEtcHJlZml4PSJmYWIiIGRhdGEtaWNvbj0idHdpdHRlciIgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtdHdpdHRlciBmYS13LTE2IiBkYXRhLXYtNjM2ZmNlNDY+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNNDU5LjM3IDE1MS43MTZjLjMyNSA0LjU0OC4zMjUgOS4wOTcuMzI1IDEzLjY0NSAwIDEzOC43Mi0xMDUuNTgzIDI5OC41NTgtMjk4LjU1OCAyOTguNTU4LTU5LjQ1MiAwLTExNC42OC0xNy4yMTktMTYxLjEzNy00Ny4xMDYgOC40NDcuOTc0IDE2LjU2OCAxLjI5OSAyNS4zNCAxLjI5OSA0OS4wNTUgMCA5NC4yMTMtMTYuNTY4IDEzMC4yNzQtNDQuODMyLTQ2LjEzMi0uOTc1LTg0Ljc5Mi0zMS4xODgtOTguMTEyLTcyLjc3MiA2LjQ5OC45NzQgMTIuOTk1IDEuNjI0IDE5LjgxOCAxLjYyNCA5LjQyMSAwIDE4Ljg0My0xLjMgMjcuNjE0LTMuNTczLTQ4LjA4MS05Ljc0Ny04NC4xNDMtNTEuOTgtODQuMTQzLTEwMi45ODV2LTEuMjk5YzEzLjk2OSA3Ljc5NyAzMC4yMTQgMTIuNjcgNDcuNDMxIDEzLjMxOS0yOC4yNjQtMTguODQzLTQ2Ljc4MS01MS4wMDUtNDYuNzgxLTg3LjM5MSAwLTE5LjQ5MiA1LjE5Ny0zNy4zNiAxNC4yOTQtNTIuOTU0IDUxLjY1NSA2My42NzUgMTI5LjMgMTA1LjI1OCAyMTYuMzY1IDEwOS44MDctMS42MjQtNy43OTctMi41OTktMTUuOTE4LTIuNTk5LTI0LjA0IDAtNTcuODI4IDQ2Ljc4Mi0xMDQuOTM0IDEwNC45MzQtMTA0LjkzNCAzMC4yMTMgMCA1Ny41MDIgMTIuNjcgNzYuNjcgMzMuMTM3IDIzLjcxNS00LjU0OCA0Ni40NTYtMTMuMzIgNjYuNTk5LTI1LjM0LTcuNzk4IDI0LjM2Ni0yNC4zNjYgNDQuODMzLTQ2LjEzMiA1Ny44MjcgMjEuMTE3LTIuMjczIDQxLjU4NC04LjEyMiA2MC40MjYtMTYuMjQzLTE0LjI5MiAyMC43OTEtMzIuMTYxIDM5LjMwOC01Mi42MjggNTQuMjUzeiIgZGF0YS12LTYzNmZjZTQ2PjwvcGF0aD48L3N2Zz4KCQkJCW44bl9pbwoJCQk8L2E+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L244biIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtdi02MzZmY2U0Nj48c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBkYXRhLXByZWZpeD0iZmFiIiBkYXRhLWljb249ImxpbmtlZGluIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ0OCA1MTIiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS1saW5rZWRpbiBmYS13LTE0IiBkYXRhLXYtNjM2ZmNlNDY+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNNDE2IDMySDMxLjlDMTQuMyAzMiAwIDQ2LjUgMCA2NC4zdjM4My40QzAgNDY1LjUgMTQuMyA0ODAgMzEuOSA0ODBINDE2YzE3LjYgMCAzMi0xNC41IDMyLTMyLjNWNjQuM2MwLTE3LjgtMTQuNC0zMi4zLTMyLTMyLjN6TTEzNS40IDQxNkg2OVYyMDIuMmg2Ni41VjQxNnptLTMzLjItMjQzYy0yMS4zIDAtMzguNS0xNy4zLTM4LjUtMzguNVM4MC45IDk2IDEwMi4yIDk2YzIxLjIgMCAzOC41IDE3LjMgMzguNSAzOC41IDAgMjEuMy0xNy4yIDM4LjUtMzguNSAzOC41em0yODIuMSAyNDNoLTY2LjRWMzEyYzAtMjQuOC0uNS01Ni43LTM0LjUtNTYuNy0zNC42IDAtMzkuOSAyNy0zOS45IDU0LjlWNDE2aC02Ni40VjIwMi4yaDYzLjd2MjkuMmguOWM4LjktMTYuOCAzMC42LTM0LjUgNjIuOS0zNC41IDY3LjIgMCA3OS43IDQ0LjMgNzkuNyAxMDEuOVY0MTZ6IiBkYXRhLXYtNjM2ZmNlNDY+PC9wYXRoPjwvc3ZnPgoJCQkJbjhuCgkJCTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vYy9uOG4taW8iIHRhcmdldD0iX2JsYW5rIiBkYXRhLXYtNjM2ZmNlNDY+PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhYiIgZGF0YS1pY29uPSJ5b3V0dWJlIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU3NiA1MTIiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS15b3V0dWJlIGZhLXctMTgiIGRhdGEtdi02MzZmY2U0Nj48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik01NDkuNjU1IDEyNC4wODNjLTYuMjgxLTIzLjY1LTI0Ljc4Ny00Mi4yNzYtNDguMjg0LTQ4LjU5N0M0NTguNzgxIDY0IDI4OCA2NCAyODggNjRTMTE3LjIyIDY0IDc0LjYyOSA3NS40ODZjLTIzLjQ5NyA2LjMyMi00Mi4wMDMgMjQuOTQ3LTQ4LjI4NCA0OC41OTctMTEuNDEyIDQyLjg2Ny0xMS40MTIgMTMyLjMwNS0xMS40MTIgMTMyLjMwNXMwIDg5LjQzOCAxMS40MTIgMTMyLjMwNWM2LjI4MSAyMy42NSAyNC43ODcgNDEuNSA0OC4yODQgNDcuODIxQzExNy4yMiA0NDggMjg4IDQ0OCAyODggNDQ4czE3MC43OCAwIDIxMy4zNzEtMTEuNDg2YzIzLjQ5Ny02LjMyMSA0Mi4wMDMtMjQuMTcxIDQ4LjI4NC00Ny44MjEgMTEuNDEyLTQyLjg2NyAxMS40MTItMTMyLjMwNSAxMS40MTItMTMyLjMwNXMwLTg5LjQzOC0xMS40MTItMTMyLjMwNXptLTMxNy41MSAyMTMuNTA4VjE3NS4xODVsMTQyLjczOSA4MS4yMDUtMTQyLjczOSA4MS4yMDF6IiBkYXRhLXYtNjM2ZmNlNDY+PC9wYXRoPjwvc3ZnPgoJCQkJbjhuLWlvCgkJCTwvYT48L2Rpdj48L2Rpdj48L2Zvb3Rlcj4gPGlmcmFtZSBzcmM9Imh0dHBzOi8vYXBpLm44bi5pby9odWIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBkYXRhLXYtMThlZDRhODE+PC9pZnJhbWU+PC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdD53aW5kb3cuX19OVVhUX189KGZ1bmN0aW9uKGEsYil7cmV0dXJuIHtsYXlvdXQ6ImZ1bGwtcGFnZSIsZGF0YTpbe31dLGZldGNoOltdLGVycm9yOmIsc3RhdGU6e2F1dGg6e3VzZXI6YixzZXNzaW9uRXhwaXJlZDphLGlzU2V0dXA6YX0sbm9kZXM6e2xvYWRpbmc6YSxub2RlczpbXX0sd29ya2Zsb3dzOntsb2FkaW5nOmEsd29ya2Zsb3dzOltdfX0sc2VydmVyUmVuZGVyZWQ6dHJ1ZSxyb3V0ZVBhdGg6Ii8ifX0oZmFsc2UsbnVsbCkpOzwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvX251eHQvNjUyZGZkNmY1MmMzMjdkNGU0OTMuanMiIGRlZmVyPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvX251eHQvNjFiNzkyNjE1ZGMxYWE5MWYyZjUuanMiIGRlZmVyPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvX251eHQvZGQ5ZWFmM2YyZGUxNDI1NzMyNjMuanMiIGRlZmVyPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvX251eHQvYTBhM2YyYTliNjAxN2IwNmNlZWEuanMiIGRlZmVyPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvX251eHQvYzU5OGUzMmJiMDYxZWJmOGEyYTEuanMiIGRlZmVyPjwvc2NyaXB0Pgo8ZGl2IGlkPSJjb25zZW50LWNvbnRhaW5lciI+PC9kaXY+CjwvYm9keT4KPC9odG1sPg==", + "fileSize": "44.2 kB" + } + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747344011762, + "executionIndex": 4, + "source": [ + { + "previousNode": "HTML Extract" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "extracted": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "HTML Extract1": [ + { + "startTime": 1747344011764, + "executionIndex": 5, + "source": [ + { + "previousNode": "Move Binary Data" + } + ], + "hints": [], + "executionTime": 5, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "extracted": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function1": [ + { + "startTime": 1747344011769, + "executionIndex": 6, + "source": [ + { + "previousNode": "HTML Extract1" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "extracted": [ + "json array" + ] + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.746Z", + "stoppedAt": "2025-05-15T21:20:11.770Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/93-snapshot.json b/test-workflows/snapshots/93-snapshot.json new file mode 100644 index 0000000000..441e9de7ad --- /dev/null +++ b/test-workflows/snapshots/93-snapshot.json @@ -0,0 +1,184 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011783, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "FunctionItem": [ + { + "startTime": 1747344011783, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "test", + "indexes": [ + "json array" + ], + "subobj": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Move Binary Data": [ + { + "startTime": 1747344011784, + "executionIndex": 2, + "source": [ + { + "previousNode": "FunctionItem" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + }, + "binary": { + "data": { + "mimeType": "application/json", + "fileType": "json", + "fileExtension": "json", + "data": "eyJuYW1lIjoidGVzdCIsImluZGV4ZXMiOlsxLDIsM10sInN1Ym9iaiI6eyJuYW1lIjoic3VidGVzdCJ9fQ==", + "fileSize": "61 B" + } + } + } + ] + ] + } + } + ], + "Move Binary Data1": [ + { + "startTime": 1747344011784, + "executionIndex": 3, + "source": [ + { + "previousNode": "Move Binary Data" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "test", + "indexes": [ + "json array" + ], + "subobj": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "binary": {} + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747344011785, + "executionIndex": 4, + "source": [ + { + "previousNode": "Move Binary Data1" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "test", + "indexes": [ + "json array" + ], + "subobj": { + "object": true + } + }, + "pairedItem": { + "item": 0 + }, + "binary": {}, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.783Z", + "stoppedAt": "2025-05-15T21:20:11.786Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/95-snapshot.json b/test-workflows/snapshots/95-snapshot.json new file mode 100644 index 0000000000..f9c5b14c36 --- /dev/null +++ b/test-workflows/snapshots/95-snapshot.json @@ -0,0 +1,101 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011791, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Set": [ + { + "startTime": 1747344011791, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "test" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747344011791, + "executionIndex": 2, + "source": [ + { + "previousNode": "Set" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "name": "test" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.791Z", + "stoppedAt": "2025-05-15T21:20:11.792Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/96-snapshot.json b/test-workflows/snapshots/96-snapshot.json new file mode 100644 index 0000000000..8e153f7ebd --- /dev/null +++ b/test-workflows/snapshots/96-snapshot.json @@ -0,0 +1,126 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011798, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MessageBird": [ + { + "startTime": 1747344011798, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 145, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "payment": "prepaid", + "type": "dollars", + "amount": 0 + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "MessageBird1": [ + { + "startTime": 1747344011943, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 137, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "52553d3188e047aa843be860383dfe0d", + "href": "https://rest.messagebird.com/messages/52553d3188e047aa843be860383dfe0d", + "direction": "mt", + "type": "sms", + "originator": "4930270504079", + "body": "TestMessage", + "reference": { + "object": true + }, + "validity": { + "object": true + }, + "gateway": 10, + "typeDetails": { + "object": true + }, + "datacoding": "plain", + "mclass": 1, + "scheduledDatetime": { + "object": true + }, + "createdDatetime": "2025-05-15T21:20:12+00:00", + "recipients": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "MessageBird1" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.798Z", + "stoppedAt": "2025-05-15T21:20:12.080Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/97-snapshot.json b/test-workflows/snapshots/97-snapshot.json new file mode 100644 index 0000000000..987a335f77 --- /dev/null +++ b/test-workflows/snapshots/97-snapshot.json @@ -0,0 +1,551 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011899, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto0": [ + { + "startTime": 1747344011900, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "5877e26c078d6409fde54d508bf25721" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto4": [ + { + "startTime": 1747344011900, + "executionIndex": 2, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "3fb7c95bca84c0bf49045b4e6a279dc0" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto10": [ + { + "startTime": 1747344011900, + "executionIndex": 3, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "9d0bc120a967882743370f715dfa90789c4d9322a4faf691d1f80b306c6bd900bfcba5f62946ef88ba7e1fdd008ff3efe8545b979299b14e0e0eccd3e33b1afa11397494526e31968f13d2ac3e3deaa2bc4a27862b7025444c91ebed5f1b98d2c0390630d8eabc6a7662a9ab069cb3aab273ae1c09f20f51fa8e04af4bcccbc6" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto1": [ + { + "startTime": 1747344011900, + "executionIndex": 4, + "source": [ + { + "previousNode": "Crypto0" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "636396f02b6571e40d8fe91cba550515c0cdc0e7d314c210e00b02256375a796" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto5": [ + { + "startTime": 1747344011900, + "executionIndex": 5, + "source": [ + { + "previousNode": "Crypto4" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "a8066096944b87daa8d0459629d8f3958d35fa453c310e7370b619d0b81ce48e" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto11": [ + { + "startTime": 1747344011900, + "executionIndex": 6, + "source": [ + { + "previousNode": "Crypto10" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "0b494c8146f7efd7aa53b418a7057a3a57317a0380c06c7d18114077a03fc6441b57ca8c03edff4ca6fdc2394d026893258b97d34bf0c5c44bc20bd264899eb1316da1e624db1455c73c9054ff732464f775b473b3ba67250ffd74ee42b1acfdf5539bf793d7002327d8d156424444624a625f8dd3f013d40a7ba7b6726186a9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto2": [ + { + "startTime": 1747344011901, + "executionIndex": 7, + "source": [ + { + "previousNode": "Crypto1" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "c7049c8950ea211bec236edffb37cbecf2aa338443c5e048c1cbb4e2ee20eb60fa9a1d34699d7a86e7362b010bb4ffe7" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto6": [ + { + "startTime": 1747344011901, + "executionIndex": 8, + "source": [ + { + "previousNode": "Crypto5" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "08bec8212275cd79a1c6bf52cad5b31ccd46ec87c7a8a9d1c8589c816f8a7124313528040b138229e15c32c1b3c82b80" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto12": [ + { + "startTime": 1747344011901, + "executionIndex": 9, + "source": [ + { + "previousNode": "Crypto11" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "0b494c8146f7efd7aa53b418a7057a3a57317a0380c06c7d18114077a03fc6441b57ca8c03edff4ca6fdc2394d026893258b97d34bf0c5c44bc20bd264899eb1316da1e624db1455c73c9054ff732464f775b473b3ba67250ffd74ee42b1acfdf5539bf793d7002327d8d156424444624a625f8dd3f013d40a7ba7b6726186a9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto3": [ + { + "startTime": 1747344011901, + "executionIndex": 10, + "source": [ + { + "previousNode": "Crypto2" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "a8a7eec953f1f31484a479c84982d52847de602d7f220ac3903518369a7536693d60882e5eb782599e72024fb649cc03aa0a19ebce632e9039b4f604335834af" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto7": [ + { + "startTime": 1747344011901, + "executionIndex": 11, + "source": [ + { + "previousNode": "Crypto6" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "0f53f3a374314123991b32e47159ad44e1c61d1c0e96809c1f19d54a5e955c06d5b633f376f2a8419e36ea4b63346fcb39d389714c344771140fd512ac55723a" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto13": [ + { + "startTime": 1747344011901, + "executionIndex": 12, + "source": [ + { + "previousNode": "Crypto12" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "0b494c8146f7efd7aa53b418a7057a3a57317a0380c06c7d18114077a03fc6441b57ca8c03edff4ca6fdc2394d026893258b97d34bf0c5c44bc20bd264899eb1316da1e624db1455c73c9054ff732464f775b473b3ba67250ffd74ee42b1acfdf5539bf793d7002327d8d156424444624a625f8dd3f013d40a7ba7b6726186a9" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function": [ + { + "startTime": 1747344011902, + "executionIndex": 13, + "source": [ + { + "previousNode": "Crypto3" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "a8a7eec953f1f31484a479c84982d52847de602d7f220ac3903518369a7536693d60882e5eb782599e72024fb649cc03aa0a19ebce632e9039b4f604335834af" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Function1": [ + { + "startTime": 1747344011904, + "executionIndex": 14, + "source": [ + { + "previousNode": "Crypto7" + } + ], + "hints": [], + "executionTime": 2, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "0f53f3a374314123991b32e47159ad44e1c61d1c0e96809c1f19d54a5e955c06d5b633f376f2a8419e36ea4b63346fcb39d389714c344771140fd512ac55723a" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ], + "Crypto14": [ + { + "startTime": 1747344011906, + "executionIndex": 15, + "source": [ + { + "previousNode": "Crypto13" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "b9d0c7c4acb8ef55b5c323f82755fb420e5145bafe4de34925e86c53c9f652eb08ec0d87a9be95ca0c0d90b16dd1b55f1200d87c13e4cdb1ae902f41998314f7b85ffc82f0f1d5296119bd92e23ae685b8b59a3a4ba4b8d54db2314c077b1b238c4ac582e36b51c18c0b5474f0d68c1f42e01c08985111ded4cfd3463068d89a" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto15": [ + { + "startTime": 1747344011906, + "executionIndex": 16, + "source": [ + { + "previousNode": "Crypto14" + } + ], + "hints": [], + "executionTime": 0, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "1387958052cf887bd50925a8d44bbf8f138cdd23f51a3422028edf39ad413a1591f5ebd653c4f225298cd6857044648bcfb768113674e7bd11c632fb0fc40cfa646301934b8fcf4da9799272a737155a239e1f8db5e92a23bfa2aeabc6732f5be14078a5815fff542842efed681ac3b919f9d42bfc822b0fd611c0b22286f241" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Crypto16": [ + { + "startTime": 1747344011906, + "executionIndex": 17, + "source": [ + { + "previousNode": "Crypto15" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "922659a8d40b12f81080425a8676830be06f26dd8cd18cad25d02055332c94b8b9634598ef5b172ee53e53788d33c183bf0984ae3b48d792f426a601dbf2eb4771bc844bc2464de8ca5b6746bbdc2f1713a1e1d57a6970568f033e588c759e4b179b791b7fcb75d323c98cc5c6f33c3659410b159c94bc13834e81ce297ce98d" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Function2": [ + { + "startTime": 1747344011907, + "executionIndex": 18, + "source": [ + { + "previousNode": "Crypto16" + } + ], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "data": "922659a8d40b12f81080425a8676830be06f26dd8cd18cad25d02055332c94b8b9634598ef5b172ee53e53788d33c183bf0984ae3b48d792f426a601dbf2eb4771bc844bc2464de8ca5b6746bbdc2f1713a1e1d57a6970568f033e588c759e4b179b791b7fcb75d323c98cc5c6f33c3659410b159c94bc13834e81ce297ce98d" + }, + "pairedItem": { + "item": 0 + }, + "index": 0 + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Function2" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.899Z", + "stoppedAt": "2025-05-15T21:20:11.908Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/snapshots/98-snapshot.json b/test-workflows/snapshots/98-snapshot.json new file mode 100644 index 0000000000..6f3a7c7d81 --- /dev/null +++ b/test-workflows/snapshots/98-snapshot.json @@ -0,0 +1,322 @@ +{ + "data": { + "startData": {}, + "resultData": { + "runData": { + "Start": [ + { + "startTime": 1747344011917, + "executionIndex": 0, + "source": [], + "hints": [], + "executionTime": 1, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": {}, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Disqus": [ + { + "startTime": 1747344011918, + "executionIndex": 1, + "source": [ + { + "previousNode": "Start" + } + ], + "hints": [], + "executionTime": 38, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "aetBannerConfirmation": { + "object": true + }, + "founder": "252695960", + "twitterName": { + "object": true + }, + "commentsLinkOne": "1 Comment", + "guidelines": { + "object": true + }, + "disableDisqusBrandingOnPolls": false, + "commentsLinkZero": "0 Comments", + "disableDisqusBranding": false, + "id": "disqus-demo-page", + "createdAt": "2017-05-22T19:17:36.057166", + "category": "Business", + "aetBannerEnabled": false, + "aetBannerTitle": { + "object": true + }, + "raw_guidelines": { + "object": true + }, + "initialCommentCount": { + "object": true + }, + "votingType": { + "object": true + }, + "daysUnapproveNewUsers": { + "object": true + }, + "installCompleted": true, + "moderatorBadgeText": "", + "commentPolicyText": { + "object": true + }, + "aetEnabled": false, + "channel": { + "object": true + }, + "sort": 4, + "description": { + "object": true + }, + "organizationHasBadges": true, + "newPolicy": true, + "raw_description": { + "object": true + }, + "customFont": { + "object": true + }, + "language": "en", + "adsReviewStatus": 0, + "commentsPlaceholderTextEmpty": { + "object": true + }, + "daysAlive": 0, + "forumCategory": { + "object": true + }, + "linkColor": { + "object": true + }, + "colorScheme": "auto", + "pk": "5140050", + "commentsPlaceholderTextPopulated": { + "object": true + }, + "permissions": { + "object": true + }, + "commentPolicyLink": { + "object": true + }, + "aetBannerDescription": { + "object": true + }, + "favicon": { + "object": true + }, + "name": "Disqus Demo Page", + "commentsLinkMultiple": "{num} Comments", + "settings": { + "object": true + }, + "organizationId": 3883635, + "typeface": "auto", + "url": { + "object": true + }, + "daysThreadAlive": 0, + "avatar": { + "object": true + }, + "signedUrl": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Disqus1": [ + { + "startTime": 1747344011956, + "executionIndex": 2, + "source": [ + { + "previousNode": "Disqus" + } + ], + "hints": [], + "executionTime": 37, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "id": "6858940", + "forum": "disqus-demo-page", + "order": 0, + "isDefault": true, + "title": "General" + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Disqus2": [ + { + "startTime": 1747344011993, + "executionIndex": 3, + "source": [ + { + "previousNode": "Disqus1" + } + ], + "hints": [], + "executionTime": 37, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "feed": "https://disqus-demo-page.disqus.com/httpssharadrajinjekyll_theme_miloc20181009jekyll_posthtml/latest.rss", + "clean_title": "Jekyll post", + "dislikes": 0, + "likes": 0, + "message": "", + "ratingsEnabled": false, + "isSpam": false, + "isDeleted": false, + "category": "6858940", + "adsDisabled": false, + "author": "252695960", + "userScore": 0, + "id": "10287492051", + "signedLink": "https://disq.us/?url=https%3A%2F%2Fsharadraj.in%2Fjekyll-theme-milo%2Fc%2F2018%2F10%2F09%2FJekyll-post.html&key=CSxj3qucEGNA77KOdrXIIQ", + "createdAt": "2024-08-11T01:54:42", + "hasStreaming": false, + "raw_message": "", + "isClosed": false, + "link": "https://sharadraj.in/jekyll-theme-milo/c/2018/10/09/Jekyll-post.html", + "slug": "httpssharadrajinjekyll_theme_miloc20181009jekyll_posthtml", + "forum": "disqus-demo-page", + "identifiers": [ + "json array" + ], + "posts": 0, + "userSubscription": false, + "validateAllPosts": false, + "title": "Jekyll post", + "highlightedPost": { + "object": true + } + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ], + "Disqus3": [ + { + "startTime": 1747344012030, + "executionIndex": 4, + "source": [ + { + "previousNode": "Disqus2" + } + ], + "hints": [], + "executionTime": 37, + "executionStatus": "success", + "data": { + "main": [ + [ + { + "json": { + "editableUntil": "2021-02-20T11:14:59", + "dislikes": 0, + "thread": "8396245103", + "numReports": 0, + "likes": 0, + "message": "

You have done a good job with your knowledge that makes our work easy because you are providing such good information. Keep sharing this kind of knowledge with us.
buy spanish saffron online

", + "id": "5266881862", + "createdAt": "2021-02-13T11:14:59", + "author": { + "object": true + }, + "media": [ + "json array" + ], + "isSpam": false, + "isDeletedByAuthor": false, + "isHighlighted": false, + "parent": { + "object": true + }, + "isApproved": true, + "isNewUserNeedsApproval": false, + "isDeleted": false, + "isFlagged": false, + "raw_message": "You have done a good job with your knowledge that makes our work easy because you are providing such good information. Keep sharing this kind of knowledge with us.\nbuy spanish saffron online", + "isAtFlagLimit": false, + "canVote": false, + "forum": "disqus-demo-page", + "points": 0, + "moderationLabels": [ + "json array" + ], + "isEdited": false, + "sb": false + }, + "pairedItem": { + "item": 0 + } + } + ] + ] + } + } + ] + }, + "lastNodeExecuted": "Disqus3" + }, + "executionData": { + "contextData": {}, + "nodeExecutionStack": [], + "metadata": {}, + "waitingExecution": {}, + "waitingExecutionSource": {} + } + }, + "mode": "cli", + "startedAt": "2025-05-15T21:20:11.917Z", + "stoppedAt": "2025-05-15T21:20:12.067Z", + "status": "running", + "finished": true +} \ No newline at end of file diff --git a/test-workflows/testData/pdfs/04-valid.pdf b/test-workflows/testData/pdfs/04-valid.pdf new file mode 100644 index 0000000000000000000000000000000000000000..20917899d0ffc006418c426a6d30776a46d353d7 GIT binary patch literal 80953 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 literal 0 HcmV?d00001 diff --git a/test-workflows/testData/pdfs/05-versions-space.pdf b/test-workflows/testData/pdfs/05-versions-space.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fac41a7b08f913221fe9510d5cd958fe17b26c97 GIT binary patch literal 186557 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�A8IzmA=mf4?+B0b&&E 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 Pv%k>h0&;WxH|_rdl=sUA literal 0 HcmV?d00001 diff --git a/test-workflows/workflows/1.json b/test-workflows/workflows/1.json new file mode 100644 index 0000000000..b9efe4e918 --- /dev/null +++ b/test-workflows/workflows/1.json @@ -0,0 +1,183 @@ +{ + "createdAt": "2021-01-21T10:32:07.628Z", + "updatedAt": "2021-06-04T10:25:41.024Z", + "id": "1", + "name": "Twitter:tweet:create:create like retweet delete search", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "0d0e09b1-87e5-4c64-acf5-9a7da0718775" + }, + { + "parameters": { + "text": "=Hello from n8n testing framework {{$evaluateExpression(Math.random())}}", + "additionalFields": {} + }, + "name": "Twitter", + "type": "n8n-nodes-base.twitter", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "twitterOAuth1Api": { + "id": "161", + "name": "Twitter API" + } + }, + "id": "e3e833e8-c567-492d-b5e9-6233e0a3890d" + }, + { + "parameters": { + "operation": "like", + "tweetId": "={{$node[\"Twitter\"].json[\"id_str\"]}}", + "additionalFields": {} + }, + "name": "Twitter1", + "type": "n8n-nodes-base.twitter", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "twitterOAuth1Api": { + "id": "161", + "name": "Twitter API" + } + }, + "id": "904c5a06-bd36-4edc-abbc-d3cfd946a9f2" + }, + { + "parameters": { + "operation": "retweet", + "tweetId": "={{$node[\"Twitter\"].json[\"id_str\"]}}", + "additionalFields": {} + }, + "name": "Twitter2", + "type": "n8n-nodes-base.twitter", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "twitterOAuth1Api": { + "id": "161", + "name": "Twitter API" + } + }, + "id": "fdd7b0de-c279-452e-b6be-acebea480071" + }, + { + "parameters": { + "operation": "delete", + "tweetId": "={{$node[\"Twitter\"].json[\"id_str\"]}}" + }, + "name": "Twitter3", + "type": "n8n-nodes-base.twitter", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "twitterOAuth1Api": { + "id": "161", + "name": "Twitter API" + } + }, + "id": "6dff7ba3-ba03-4cdb-9305-d80eb02d4b83" + }, + { + "parameters": { + "operation": "search", + "searchText": "@n8n_io", + "limit": 1, + "additionalFields": {} + }, + "name": "Twitter4", + "type": "n8n-nodes-base.twitter", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "twitterOAuth1Api": { + "id": "161", + "name": "Twitter API" + } + }, + "notes": "IGNORED_PROPERTIES=extended_entities,retweeted_status,quoted_status_id,quoted_status_id_str,quoted_status,possibly_sensitive", + "id": "205bf8c9-afed-4a6a-b538-bb572ef14287" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Twitter", + "type": "main", + "index": 0 + }, + { + "node": "Twitter4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twitter": { + "main": [ + [ + { + "node": "Twitter1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twitter1": { + "main": [ + [ + { + "node": "Twitter2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twitter2": { + "main": [ + [ + { + "node": "Twitter3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/10.json b/test-workflows/workflows/10.json new file mode 100644 index 0000000000..f2f1baf4a0 --- /dev/null +++ b/test-workflows/workflows/10.json @@ -0,0 +1,325 @@ +{ + "createdAt": "2021-02-15T13:56:59.611Z", + "updatedAt": "2021-06-04T14:37:01.395Z", + "id": "10", + "name": "PagerDuty:incident:create get update getAll:incidentNote:create getAll:User:get:LogEntry:getAll get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 240, + 260 + ], + "id": "91f3c321-72a4-4c04-8e51-ec3a7c775462" + }, + { + "parameters": { + "authentication": "oAuth2", + "title": "Test", + "serviceId": "PO5XHDI", + "email": "nodeqa@n8n.io", + "additionalFields": {} + }, + "name": "PagerDuty", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 400, + 260 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "id": "92f2a4d8-4860-4edf-92e4-ea14671bad92" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "get", + "incidentId": "={{$json[\"id\"]}}" + }, + "name": "PagerDuty1", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 550, + 260 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "id": "0af4d8fa-8392-46ce-8d04-cfcb0fcff52b" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "update", + "incidentId": "={{$json[\"id\"]}}", + "email": "nodeqa@n8n.io", + "updateFields": { + "status": "acknowledged" + } + }, + "name": "PagerDuty2", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 870, + 260 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "id": "843cc5d1-4302-4d75-b78e-14479b2a5dc7" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "PagerDuty3", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 1030, + 260 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "id": "903bd6db-f3ab-45d8-bd05-0f387a5e08bd" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "incidentNote", + "incidentId": "={{$json[\"id\"]}}", + "content": "Simple note for an incident", + "email": "nodeqa@n8n.io" + }, + "name": "PagerDuty4", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 720, + 350 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "id": "37deab31-9ff9-4dd4-9f21-edcdaa13532c" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "incidentNote", + "operation": "getAll", + "incidentId": "={{$json[\"id\"]}}", + "limit": 1 + }, + "name": "PagerDuty5", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 720, + 160 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "id": "e3df7b5a-1abc-4af9-b5a8-725d1339b127" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "userId": "PT0VVWO" + }, + "name": "PagerDuty6", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 400, + 110 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "id": "25539887-c45a-4859-bc73-6173ef47e07e" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "logEntry", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "PagerDuty7", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 400, + 540 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "notes": "IGNORED_PROPERTIES=event_details,assignees", + "id": "7f565cd4-e409-4d23-8914-6f887457d14a" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "logEntry", + "logEntryId": "={{$node[\"PagerDuty\"].json[\"first_trigger_log_entry\"][\"id\"]}}" + }, + "name": "PagerDuty8", + "type": "n8n-nodes-base.pagerDuty", + "typeVersion": 1, + "position": [ + 730, + 540 + ], + "credentials": { + "pagerDutyOAuth2Api": { + "id": "123", + "name": "PagerDuty OAuth2 API creds" + } + }, + "id": "9bfda961-967d-43dd-8089-a3af7d26084a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second1", + "type": "n8n-nodes-base.function", + "position": [ + 560, + 540 + ], + "typeVersion": 1, + "id": "f3501dee-890b-46c6-9306-6ebb1cc7d21f" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "PagerDuty", + "type": "main", + "index": 0 + }, + { + "node": "PagerDuty7", + "type": "main", + "index": 0 + }, + { + "node": "PagerDuty6", + "type": "main", + "index": 0 + } + ] + ] + }, + "PagerDuty": { + "main": [ + [ + { + "node": "PagerDuty1", + "type": "main", + "index": 0 + }, + { + "node": "Sleep 0.5 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "PagerDuty1": { + "main": [ + [ + { + "node": "PagerDuty4", + "type": "main", + "index": 0 + }, + { + "node": "PagerDuty5", + "type": "main", + "index": 0 + }, + { + "node": "PagerDuty2", + "type": "main", + "index": 0 + } + ] + ] + }, + "PagerDuty2": { + "main": [ + [ + { + "node": "PagerDuty3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second1": { + "main": [ + [ + { + "node": "PagerDuty8", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/101.json b/test-workflows/workflows/101.json new file mode 100644 index 0000000000..3a645c2fe8 --- /dev/null +++ b/test-workflows/workflows/101.json @@ -0,0 +1,120 @@ +{ + "createdAt": "2021-03-04T09:49:58.859Z", + "updatedAt": "2021-03-04T09:49:58.859Z", + "id": "101", + "name": "RenameKeys", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "38b2e8c3-ddfe-4ef3-85d0-ddab8e8732db" + }, + { + "parameters": { + "keys": { + "key": [ + { + "currentKey": "toBeRenamed", + "newKey": "Renamed" + } + ] + } + }, + "name": "Rename Keys", + "type": "n8n-nodes-base.renameKeys", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "d4b5cdcd-3bd7-46aa-ab34-f986411cfc43" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "test" + }, + { + "name": "toBeRenamed", + "value": "name" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "0c816bc3-19b1-41f2-ac7a-ea5f2448bac2" + }, + { + "parameters": { + "functionCode": "testData = JSON.stringify(\n{\nname: \"test\",\nRenamed: \"name\"\n}\n)\nif(JSON.stringify($node['Rename Keys'].json) !== testData){\n throw new Error('Error in rename keys node');\n}\n\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "95ab4a10-c3f3-4bad-8792-4a8dab012672" + } + ], + "connections": { + "Rename Keys": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Rename Keys", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/102.json b/test-workflows/workflows/102.json new file mode 100644 index 0000000000..9fe39c9a66 --- /dev/null +++ b/test-workflows/workflows/102.json @@ -0,0 +1,81 @@ +{ + "createdAt": "2021-03-04T10:41:43.011Z", + "updatedAt": "2021-03-04T10:41:43.011Z", + "id": "102", + "name": "ReadBinaryFile", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "516a8267-1d35-4ec7-977b-87d0f961fe53" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "notesInFlow": true, + "notes": "Read the assets/n8n-logo.png", + "id": "839c17af-2415-41c4-bf13-8815df27ca4e" + }, + { + "parameters": { + "functionCode": "testData='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';\nif(items[0].binary.data.data !== testData){\n throw new Error('Error in Read Binary File node');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "notesInFlow": true, + "notes": "assert the base64 value", + "id": "409eca37-f7a2-4ddc-9ae9-c4a9daeef481" + } + ], + "connections": { + "Read Binary File": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/103.json b/test-workflows/workflows/103.json new file mode 100644 index 0000000000..77bda9f9a8 --- /dev/null +++ b/test-workflows/workflows/103.json @@ -0,0 +1,167 @@ +{ + "createdAt": "2021-03-04T11:22:05.930Z", + "updatedAt": "2021-03-04T11:24:54.336Z", + "id": "103", + "name": "ExecuteCommand", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "596a5418-e61d-41ab-84eb-64e07630b23e" + }, + { + "parameters": { + "command": "=echo 'test' > /tmp/{{$node[\"Set\"].json[\"filename\"]}}" + }, + "name": "Execute Command", + "type": "n8n-nodes-base.executeCommand", + "typeVersion": 1, + "position": [ + 660, + 300 + ], + "notesInFlow": true, + "notes": "write file to /tmp", + "id": "9c118fb2-edad-441a-b8a8-f1c843a37bd5" + }, + { + "parameters": { + "filePath": "=/tmp/{{$node[\"Set\"].json[\"filename\"]}}" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 860, + 300 + ], + "notesInFlow": true, + "notes": "read file", + "id": "af6e6941-e34e-4b5d-a236-3bccd5bd4cfd" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "filename", + "value": "=filename{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "notesInFlow": true, + "notes": "generate filename", + "id": "8864d17b-8310-4460-810c-d43da4e967ff" + }, + { + "parameters": { + "functionCode": "testData= 'dGVzdAo='\nif($node['Execute Command'].json['exitCode']!==0 || items[0].binary.data.data !== testData){\n throw new Error('Error Execute Command in node');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "notesInFlow": true, + "notes": "verify file content", + "id": "0a60312c-4030-496b-ad24-3acebff5eca1" + }, + { + "parameters": { + "command": "=rm /tmp/{{$node[\"Set\"].json[\"filename\"]}}" + }, + "name": "Execute Command1", + "type": "n8n-nodes-base.executeCommand", + "typeVersion": 1, + "position": [ + 1250, + 300 + ], + "notesInFlow": true, + "notes": "remove file from /tmp", + "id": "ede3e595-c571-4155-85bd-14e39fe78049" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Execute Command": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Execute Command", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "Execute Command1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/104.json b/test-workflows/workflows/104.json new file mode 100644 index 0000000000..ab361797f5 --- /dev/null +++ b/test-workflows/workflows/104.json @@ -0,0 +1,80 @@ +{ + "createdAt": "2021-03-04T13:14:37.236Z", + "updatedAt": "2021-06-15T14:39:01.449Z", + "id": "104", + "name": "ReadPDF", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "084e6fae-bd3c-4887-98a4-5ef671a9202c" + }, + { + "parameters": {}, + "name": "Read PDF", + "type": "n8n-nodes-base.readPDF", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "notesInFlow": true, + "notes": "Parse PDF", + "id": "c9c1692b-3979-4334-94f3-a6ba1aeb1705" + }, + { + "parameters": { + "filePath": "/tmp/04-valid.pdf" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "alwaysOutputData": false, + "notesInFlow": true, + "notes": "Read static pdf file from node_modules", + "id": "f725a50d-5941-4370-9925-474306645ed5" + } + ], + "connections": { + "Read Binary File": { + "main": [ + [ + { + "node": "Read PDF", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/105.json b/test-workflows/workflows/105.json new file mode 100644 index 0000000000..a388218880 --- /dev/null +++ b/test-workflows/workflows/105.json @@ -0,0 +1,133 @@ +{ + "createdAt": "2021-03-04T13:31:56.288Z", + "updatedAt": "2021-03-04T13:31:56.288Z", + "id": "105", + "name": "WriteBinaryFile", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "6ad9a76c-8bd9-4a23-98ad-12e9f913fb9d" + }, + { + "parameters": { + "fileName": "/tmp/test_write_binary_file.txt" + }, + "name": "Write Binary File", + "type": "n8n-nodes-base.writeBinaryFile", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "notesInFlow": true, + "notes": "Write binary file in /tmp directory", + "id": "c323f3c4-c1ca-4c7c-acbd-0387e14966ca" + }, + { + "parameters": { + "filePath": "/tmp/test_write_binary_file.txt" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "notesInFlow": true, + "notes": "Read file data", + "id": "19df8a14-6a25-4c6d-a891-095562ce311a" + }, + { + "parameters": { + "functionCode": "items = [\n{\njson:{},\nbinary: {\n\tdata: {\n\t\tdata: 'VGVzdCBXcml0ZSBCaW5hcnkgRmlsZSBub2Rl',\n\t\tfileExtension: 'txt', \n\t\tfileName: 'file.txt', \n\t}\n}\n}\n\n];\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 460, + 300 + ], + "notesInFlow": true, + "notes": "Prepare file data", + "id": "0a14fc91-53a3-4c8a-b1cb-eef0734f016a" + }, + { + "parameters": { + "functionCode": "testData ='VGVzdCBXcml0ZSBCaW5hcnkgRmlsZSBub2Rl';\n\nif(items[0].binary.data.data !== testData){\n throw new Error('Error in Write Binary File node');\n}\nreturn items;" + }, + "name": "Function1", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 1020, + 300 + ], + "notesInFlow": true, + "notes": "Verify file data", + "id": "fe251599-60cf-45df-a1fc-4c0f5b019b50" + } + ], + "connections": { + "Write Binary File": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "Write Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Function1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/106.json b/test-workflows/workflows/106.json new file mode 100644 index 0000000000..3ee3647bae --- /dev/null +++ b/test-workflows/workflows/106.json @@ -0,0 +1,412 @@ +{ + "createdAt": "2021-03-04T14:19:59.064Z", + "updatedAt": "2021-03-09T08:07:08.936Z", + "id": "106", + "name": "Box:Folder:create search get delete:File:upload get download copy search delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "3379cd25-f1fb-4810-84eb-1fe522062d5e" + }, + { + "parameters": { + "resource": "folder", + "name": "=Folder{{Date.now()}}", + "options": {} + }, + "name": "Box", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "61a2d115-f5ad-4d90-b2c4-98b637c72a05" + }, + { + "parameters": { + "resource": "folder", + "operation": "search", + "query": "folder", + "limit": 1, + "additionalFields": {} + }, + "name": "Box1", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 1850, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "38f2209f-5ba9-47c1-9e37-47561b96a816" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "folderId": "={{$node[\"Box\"].json[\"id\"]}}" + }, + "name": "Box2", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 2140, + 300 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "59b546b6-5bca-4154-b635-1416f756d75b" + }, + { + "parameters": { + "fileName": "=logo{{Date.now()}}.png", + "binaryData": true, + "parentId": "={{$node[\"Box\"].json[\"id\"]}}" + }, + "name": "Box3", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 800, + 400 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "1b9d07ed-78e2-4436-9034-a3c4930d182f" + }, + { + "parameters": { + "filePath": "/tmp/n8n-screenshot.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 650, + 400 + ], + "id": "a2ddf065-8352-4de3-826b-1577e54a6166" + }, + { + "parameters": { + "operation": "get", + "fileId": "={{$node[\"Box3\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Box4", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 950, + 400 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "aabe943e-f257-4db2-896f-1bc5ddf9f0cd" + }, + { + "parameters": { + "operation": "download", + "fileId": "={{$node[\"Box3\"].json[\"id\"]}}" + }, + "name": "Box5", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 1100, + 400 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "fb9625be-a0c9-421e-acfb-fa4451e6c0c4" + }, + { + "parameters": { + "operation": "copy", + "fileId": "={{$node[\"Box3\"].json[\"id\"]}}", + "parentId": "={{$node[\"Box\"].json[\"id\"]}}", + "additionalFields": { + "name": "=Copied-logo{{Date.now()}}.png" + } + }, + "name": "Box6", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 1250, + 400 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "e9e7997b-1eab-4244-9e52-9ea6f00dac63" + }, + { + "parameters": { + "operation": "search", + "query": "logo", + "limit": 1, + "additionalFields": { + "file_extensions": "png" + } + }, + "name": "Box7", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 1400, + 400 + ], + "alwaysOutputData": true, + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "6ed0e975-cc74-4c57-813a-39e0c954097d" + }, + { + "parameters": { + "operation": "delete", + "fileId": "={{$node[\"Box3\"].json[\"id\"]}}" + }, + "name": "Box8", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 1550, + 400 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "2cf28778-50dc-46ae-8347-6d74cca97d6e" + }, + { + "parameters": { + "operation": "delete", + "fileId": "={{$node[\"Box6\"].json[\"id\"]}}" + }, + "name": "Box10", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 1700, + 400 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "2f0e8ab1-2ad9-4613-b813-7f8d1fcbd7a0" + }, + { + "parameters": { + "resource": "folder", + "operation": "get", + "folderId": "={{$node[\"Box\"].json[\"id\"]}}" + }, + "name": "Box9", + "type": "n8n-nodes-base.box", + "typeVersion": 1, + "position": [ + 2000, + 300 + ], + "credentials": { + "boxOAuth2Api": { + "id": "77", + "name": "Box OAuth2 creds" + } + }, + "id": "fbba5280-62da-4344-a8b3-faec86d38a3a" + } + ], + "connections": { + "Box": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box1": { + "main": [ + [ + { + "node": "Box9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box3": { + "main": [ + [ + { + "node": "Box4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Box3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box4": { + "main": [ + [ + { + "node": "Box5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box5": { + "main": [ + [ + { + "node": "Box6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box6": { + "main": [ + [ + { + "node": "Box7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box7": { + "main": [ + [ + { + "node": "Box8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box8": { + "main": [ + [ + { + "node": "Box10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box10": { + "main": [ + [ + { + "node": "Box1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Box", + "type": "main", + "index": 0 + } + ] + ] + }, + "Box9": { + "main": [ + [ + { + "node": "Box2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/107.json b/test-workflows/workflows/107.json new file mode 100644 index 0000000000..2536dba28e --- /dev/null +++ b/test-workflows/workflows/107.json @@ -0,0 +1,81 @@ +{ + "createdAt": "2021-03-04T15:21:38.969Z", + "updatedAt": "2021-03-04T15:27:37.666Z", + "id": "107", + "name": "ReadBinaryFiles", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 300, + 300 + ], + "id": "3da902a3-83e2-4bc5-9961-6ad791e512ef" + }, + { + "parameters": { + "functionCode": "item1TestData='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';\nitem2TestData='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';\nif(items[0].binary.data.data !== item1TestData ||\n items[1].binary.data.data !== item2TestData){\n throw new Error('Error in Read Binary File node');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "notesInFlow": true, + "notes": "assert the files base64 values", + "id": "96e3be5b-7b04-4ffd-97fd-169a58b7dff0" + }, + { + "parameters": { + "fileSelector": "../../../assets/*.png" + }, + "name": "Read Binary Files", + "type": "n8n-nodes-base.readBinaryFiles", + "typeVersion": 1, + "position": [ + 510, + 300 + ], + "notesInFlow": true, + "notes": "Read png files under assets directory ", + "id": "a64eb0b3-7bef-4d62-8a26-c5f2030efe63" + } + ], + "connections": { + "Read Binary Files": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Read Binary Files", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/108.json b/test-workflows/workflows/108.json new file mode 100644 index 0000000000..b62130af62 --- /dev/null +++ b/test-workflows/workflows/108.json @@ -0,0 +1,1080 @@ +{ + "createdAt": "2021-03-04T16:23:06.210Z", + "updatedAt": "2021-03-04T17:33:16.605Z", + "id": "108", + "name": "Merge:append keepKeyMatches mergeByIndex(leftjoin,innerjoin,outerjoin) mergeByKey(ifBlank,always,ifMissing) Multiplex passThrough removeKeyMatches", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 120, + 1510 + ], + "id": "05049327-2f4e-4009-94d1-13c946fdf5ba" + }, + { + "parameters": {}, + "name": "Merge", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 580, + 300 + ], + "id": "21ee0629-efde-4030-9a2e-6ffe5d135aab" + }, + { + "parameters": { + "values": { + "boolean": [ + { + "name": "value1", + "value": true + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 430, + 220 + ], + "id": "76be9855-6e08-4898-a92f-a715ccd2d9f6" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "value2", + "value": 5 + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 430, + 370 + ], + "id": "49c669ce-c9d0-44ff-aabe-fc8c43b6fa5b" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify([{value1:true},{value2:5}]);\n\nif(JSON.stringify(items.map(item => item.json)) !== testData){\n throw new Error('Error in Merge node : append');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 780, + 300 + ], + "notesInFlow": true, + "notes": "Verify merge operation", + "id": "ee84e437-1a43-46e2-8d28-49af7bd7050b" + }, + { + "parameters": { + "mode": "keepKeyMatches", + "propertyName1": "prop3", + "propertyName2": "prop4" + }, + "name": "Merge1", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 580, + 580 + ], + "id": "76c2f8bd-920e-46d5-8ccd-c1abb9f9b107" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop1", + "value": 1 + }, + { + "name": "prop3", + "value": -1 + } + ] + }, + "options": {} + }, + "name": "Set2", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 430, + 500 + ], + "id": "80630a5a-6b50-4a96-8860-4ee0a44eb6d7" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop2", + "value": 2 + }, + { + "name": "prop4", + "value": -1 + } + ] + }, + "options": {} + }, + "name": "Set3", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 430, + 650 + ], + "id": "c711f26f-fa32-4d45-96df-64a94bda847f" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify({prop1:1,prop3:-1});\n\nif(JSON.stringify(items[0].json) !== testData){\n throw new Error('Error in Merge node : keepKeyMatches');\n}\nreturn items;" + }, + "name": "Function1", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 780, + 580 + ], + "notesInFlow": true, + "notes": "Verify merge operation", + "id": "f14b2693-ef6c-452e-8e9a-bbb0a9854108" + }, + { + "parameters": { + "mode": "mergeByIndex", + "join": "inner" + }, + "name": "Merge2", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 600, + 900 + ], + "id": "fabcb606-0623-4637-aea2-02348c9f8395" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify([{title:'Input2item1'},{title:'Input2item2'},{title:'Input2item3'}]);\n\nif(JSON.stringify(items.map(item => item.json)) !== testData){\n throw new Error('Error in Merge node : mergeByIndex: innerjoin');\n}\nreturn items;" + }, + "name": "Function2", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 750, + 900 + ], + "notesInFlow": true, + "notes": "Verify mergeByIndex operation", + "id": "52c35538-f039-4a65-9ee0-0f8b19783e39" + }, + { + "parameters": { + "mode": "mergeByIndex" + }, + "name": "Merge3", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 600, + 750 + ], + "id": "a027b711-4a82-4d5c-b181-ef9c9a8f4c96" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify([{title:'Input2item1'},{title:'Input2item2'},{title:'Input2item3'}]);\n\nif(JSON.stringify(items.map(item => item.json)) !== testData){\n throw new Error('Error in Merge node : mergeByIndex: leftjoin');\n}\nreturn items;" + }, + "name": "Function3", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 750, + 750 + ], + "notesInFlow": true, + "notes": "Verify mergeByIndex operation", + "id": "637ec6e5-0166-4a3a-8590-3ba8c2772e43" + }, + { + "parameters": { + "mode": "mergeByIndex", + "join": "outer" + }, + "name": "Merge4", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 600, + 1050 + ], + "notesInFlow": false, + "notes": "outerjoin", + "id": "efc5cc37-9d27-4271-b767-fd9351aadaf4" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify([{title:'Input2item1'},{title:'Input2item2'},{title:'Input2item3'},{title:'Input2item4'}]);\n\nif(JSON.stringify(items.map(item => item.json)) !== testData){\n throw new Error('Error in Merge node : mergeByIndex: outerjoin');\n}\nreturn items;" + }, + "name": "Function4", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 750, + 1050 + ], + "notesInFlow": true, + "notes": "Verify mergeByIndex operation", + "id": "00e11687-bdb1-4569-95ed-f90b199b0337" + }, + { + "parameters": { + "mode": "mergeByKey", + "propertyName1": "prop3", + "propertyName2": "prop4" + }, + "name": "Merge5", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 580, + 1380 + ], + "id": "87c14aaa-fd17-4d7b-8c05-337033d054b0" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop2", + "value": 2 + }, + { + "name": "prop3", + "value": -2 + }, + { + "name": "prop4", + "value": -3 + } + ] + }, + "options": {} + }, + "name": "Set6", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 1440 + ], + "id": "06f1417b-2461-4aa6-92fb-46749dbf07be" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify({prop1:1,prop3:-1});\n\nif(JSON.stringify(items[0].json) !== testData){\n throw new Error('Error in Merge node : keepKeyMatches');\n}\nreturn items;" + }, + "name": "Function5", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 750, + 1380 + ], + "notesInFlow": true, + "notes": "Verify mergeByKey operation", + "id": "440e0084-64d7-48cd-8418-5ea1b0f2c4d8" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop1", + "value": 1 + }, + { + "name": "prop3", + "value": -1 + } + ], + "string": [] + }, + "options": {} + }, + "name": "Set7", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 1290 + ], + "id": "d44ca83d-c757-49c1-b35a-1f95306c796e" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify({prop1:1,prop3:-1});\n\nif(JSON.stringify(items[0].json) !== testData){\n throw new Error('Error in Merge node : keepKeyMatches');\n}\nreturn items;" + }, + "name": "Function6", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 750, + 1230 + ], + "notesInFlow": true, + "notes": "Verify mergeByKey operation", + "id": "4f20aaa3-7f0d-4dd4-a863-6c0bb2209b36" + }, + { + "parameters": { + "mode": "mergeByKey", + "propertyName1": "prop3", + "propertyName2": "prop4", + "overwrite": "blank" + }, + "name": "Merge6", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 580, + 1230 + ], + "id": "ebf52dbc-51cb-4abf-a4ee-480e2c0f546c" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify({prop1:1,prop3:-1});\n\nif(JSON.stringify(items[0].json) !== testData){\n throw new Error('Error in Merge node : keepKeyMatches');\n}\nreturn items;" + }, + "name": "Function7", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 750, + 1530 + ], + "notesInFlow": true, + "notes": "Verify mergeByKey operation", + "id": "02adb59e-bbfe-442b-a185-2addbe1d1464" + }, + { + "parameters": { + "mode": "mergeByKey", + "propertyName1": "prop3", + "propertyName2": "prop4", + "overwrite": "undefined" + }, + "name": "Merge7", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 580, + 1530 + ], + "id": "75a59075-beab-4a75-98b5-b6b267d3a096" + }, + { + "parameters": { + "mode": "multiplex" + }, + "name": "Merge8", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 580, + 1780 + ], + "id": "690e5bee-e4cc-4179-bdf6-f38ffbcd271d" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop3", + "value": 2 + }, + { + "name": "prop4", + "value": -4 + } + ] + }, + "options": {} + }, + "name": "Set8", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 430, + 1850 + ], + "id": "65fb39a2-10c6-4ad1-866a-a7771ac9c1af" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify({prop1: 1,prop2: -1,prop3: 2,prop4: -4});\n\nif(JSON.stringify(items[0].json) !== testData){\n throw new Error('Error in Merge node : multiplex');\n}\nreturn items;" + }, + "name": "Function8", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 780, + 1780 + ], + "notesInFlow": true, + "notes": "Verify multiplex operation", + "id": "fa2cc83d-1223-47cf-a7f8-a272a95014ab" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop1", + "value": 1 + }, + { + "name": "prop2", + "value": -1 + } + ] + }, + "options": {} + }, + "name": "Set9", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 430, + 1700 + ], + "id": "66c41d0d-cfb4-4422-94d6-3f2cf87eb5ae" + }, + { + "parameters": { + "mode": "passThrough" + }, + "name": "Merge9", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 590, + 2080 + ], + "id": "449087b4-8aac-4294-a01a-af6475eb48c1" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop3", + "value": 2 + }, + { + "name": "prop4", + "value": -4 + } + ] + }, + "options": {} + }, + "name": "Set10", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 440, + 2150 + ], + "id": "fe7a92b3-8f2a-408b-90df-e1b5fe647027" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify({prop1: 1,prop2: -1});\n\nif(JSON.stringify(items[0].json) !== testData){\n throw new Error('Error in Merge node : passThrough');\n}\nreturn items;" + }, + "name": "Function9", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 790, + 2080 + ], + "notesInFlow": true, + "notes": "Verify passThrough operation", + "id": "c3faf934-98ee-4bad-9326-567ad3aca34b" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop1", + "value": 1 + }, + { + "name": "prop2", + "value": -1 + } + ] + }, + "options": {} + }, + "name": "Set11", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 440, + 2000 + ], + "id": "48d50540-eb21-470a-9a32-5a57093ebf54" + }, + { + "parameters": { + "mode": "removeKeyMatches", + "propertyName1": "prop1", + "propertyName2": "prop3" + }, + "name": "Merge10", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 600, + 2380 + ], + "id": "8fa6f5b0-9f8f-4ff4-b15e-feaef0f92c61" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop3", + "value": 2 + }, + { + "name": "prop4", + "value": -4 + } + ] + }, + "options": {} + }, + "name": "Set12", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 2450 + ], + "id": "acf521b5-df53-43ff-a046-80f656dbe90b" + }, + { + "parameters": { + "values": { + "boolean": [], + "number": [ + { + "name": "prop1", + "value": 1 + }, + { + "name": "prop2", + "value": -1 + } + ] + }, + "options": {} + }, + "name": "Set13", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 2300 + ], + "id": "0310f05a-f0e6-4383-aa2a-1602dc8979e2" + }, + { + "parameters": { + "functionCode": "testData= JSON.stringify({prop1: 1,prop2: -1});\n\nif(JSON.stringify(items[0].json) !== testData){\n throw new Error('Error in Merge node : removeKeyMatches');\n}\nreturn items;" + }, + "name": "Function10", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 800, + 2380 + ], + "notesInFlow": true, + "notes": "Verify removeKeyMatches operation", + "id": "e56612ad-6b5a-4f1e-9d5c-feacc7960269" + }, + { + "parameters": { + "functionCode": "items = [{\n json:{\n title:'Input1item1'\n }\n},{\n json:{\n title:'Input1item2'\n }\n},{\n json:{\n title:'Input1item3'\n }\n}]\nreturn items;" + }, + "name": "Function11", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 430, + 810 + ], + "notesInFlow": true, + "notes": "Input 1", + "id": "96b68b9c-10fd-4d22-8836-0babe8295c53" + }, + { + "parameters": { + "functionCode": "items = [{\n json:{\n title:'Input2item1'\n }\n},{\n json:{\n title:'Input2item2'\n }\n},{\n json:{\n title:'Input2item3'\n }\n},{\n json:{\n title:'Input2item4'\n }\n}]\nreturn items;" + }, + "name": "Function12", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 430, + 960 + ], + "notesInFlow": true, + "notes": "Input 2", + "id": "b1382fe4-f188-44da-aeec-cfebab259efe" + } + ], + "connections": { + "Merge": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge1": { + "main": [ + [ + { + "node": "Function1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set2": { + "main": [ + [ + { + "node": "Merge1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set3": { + "main": [ + [ + { + "node": "Merge1", + "type": "main", + "index": 1 + } + ] + ] + }, + "Merge2": { + "main": [ + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge3": { + "main": [ + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge4": { + "main": [ + [ + { + "node": "Function4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge5": { + "main": [ + [ + { + "node": "Function5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set6": { + "main": [ + [ + { + "node": "Merge5", + "type": "main", + "index": 1 + }, + { + "node": "Merge6", + "type": "main", + "index": 1 + }, + { + "node": "Merge7", + "type": "main", + "index": 1 + } + ] + ] + }, + "Set7": { + "main": [ + [ + { + "node": "Merge5", + "type": "main", + "index": 0 + }, + { + "node": "Merge6", + "type": "main", + "index": 0 + }, + { + "node": "Merge7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge6": { + "main": [ + [ + { + "node": "Function6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge7": { + "main": [ + [ + { + "node": "Function7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge8": { + "main": [ + [ + { + "node": "Function8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set8": { + "main": [ + [ + { + "node": "Merge8", + "type": "main", + "index": 1 + } + ] + ] + }, + "Set9": { + "main": [ + [ + { + "node": "Merge8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge9": { + "main": [ + [ + { + "node": "Function9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set10": { + "main": [ + [ + { + "node": "Merge9", + "type": "main", + "index": 1 + } + ] + ] + }, + "Set11": { + "main": [ + [ + { + "node": "Merge9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge10": { + "main": [ + [ + { + "node": "Function10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set12": { + "main": [ + [ + { + "node": "Merge10", + "type": "main", + "index": 1 + } + ] + ] + }, + "Set13": { + "main": [ + [ + { + "node": "Merge10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + }, + { + "node": "Set1", + "type": "main", + "index": 0 + }, + { + "node": "Set2", + "type": "main", + "index": 0 + }, + { + "node": "Set3", + "type": "main", + "index": 0 + }, + { + "node": "Set7", + "type": "main", + "index": 0 + }, + { + "node": "Set6", + "type": "main", + "index": 0 + }, + { + "node": "Set9", + "type": "main", + "index": 0 + }, + { + "node": "Set8", + "type": "main", + "index": 0 + }, + { + "node": "Set11", + "type": "main", + "index": 0 + }, + { + "node": "Set10", + "type": "main", + "index": 0 + }, + { + "node": "Set13", + "type": "main", + "index": 0 + }, + { + "node": "Set12", + "type": "main", + "index": 0 + }, + { + "node": "Function11", + "type": "main", + "index": 0 + }, + { + "node": "Function12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function11": { + "main": [ + [ + { + "node": "Merge3", + "type": "main", + "index": 0 + }, + { + "node": "Merge2", + "type": "main", + "index": 0 + }, + { + "node": "Merge4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function12": { + "main": [ + [ + { + "node": "Merge3", + "type": "main", + "index": 1 + }, + { + "node": "Merge2", + "type": "main", + "index": 1 + }, + { + "node": "Merge4", + "type": "main", + "index": 1 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/109.json b/test-workflows/workflows/109.json new file mode 100644 index 0000000000..2703443d21 --- /dev/null +++ b/test-workflows/workflows/109.json @@ -0,0 +1,310 @@ +{ + "createdAt": "2021-03-09T08:21:50.403Z", + "updatedAt": "2021-07-14T13:48:45.782Z", + "id": "109", + "name": "Customerio:Campaign:get getMettrics geAll:Customer:upsert delete:Event:track trackAnonymous:Segment:add remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "61b889fc-0c5f-4bfc-b477-a22d4f8ad97e" + }, + { + "parameters": { + "resource": "campaign", + "campaignId": 1 + }, + "name": "CustomerIo", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 450, + 200 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "notes": "IGNORED_PROPERTIES=trigger_segment_ids", + "id": "2a946a7a-e22f-4ec4-af11-ff6213d5244a" + }, + { + "parameters": { + "resource": "campaign", + "operation": "getMetrics", + "campaignId": 1, + "period": "months", + "additionalFields": {} + }, + "name": "CustomerIo1", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 600, + 200 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "id": "0c8e6559-217d-4e55-a13f-2cf3ecf9559c" + }, + { + "parameters": { + "resource": "campaign", + "operation": "getAll" + }, + "name": "CustomerIo2", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 750, + 200 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "notes": "IGNORED_PROPERTIES=trigger_segment_ids", + "id": "b704d6b5-e1ac-4cee-ba74-cab476884a9b" + }, + { + "parameters": { + "id": "=customer{{Date.now()}}", + "additionalFields": { + "email": "=fakeemail{{Date.now()}}@gmail.com" + } + }, + "name": "CustomerIo3", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "id": "2be9fc9b-a1c2-4ddb-ac93-a8cfd3a9d80c" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"CustomerIo3\"].json[\"id\"]}}" + }, + "name": "CustomerIo4", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 950, + 450 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "id": "d285c006-5edc-40c7-a932-3e648bd899ba" + }, + { + "parameters": { + "resource": "event", + "customerId": "={{$node[\"CustomerIo3\"].json[\"id\"]}}", + "eventName": "Click", + "additionalFields": {} + }, + "name": "CustomerIo5", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 600, + 550 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "id": "05605b9b-d0a9-48df-bab5-a6b2794333e1" + }, + { + "parameters": { + "resource": "event", + "operation": "trackAnonymous", + "eventName": "Click", + "additionalFields": {} + }, + "name": "CustomerIo6", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 750, + 550 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "id": "505b79eb-bd8c-4951-b0fd-72b9d2a02449" + }, + { + "parameters": { + "resource": "segment", + "segmentId": 10, + "customerIds": "={{$node[\"CustomerIo3\"].json[\"id\"]}}" + }, + "name": "CustomerIo7", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 600, + 400 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "id": "81151093-ae55-43fe-88da-db9ac4655406" + }, + { + "parameters": { + "resource": "segment", + "operation": "remove", + "segmentId": 10, + "customerIds": "={{$node[\"CustomerIo3\"].json[\"id\"]}}" + }, + "name": "CustomerIo8", + "type": "n8n-nodes-base.customerIo", + "typeVersion": 1, + "position": [ + 750, + 400 + ], + "credentials": { + "customerIoApi": { + "id": "78", + "name": "Customer.io creds" + } + }, + "id": "13d89387-b408-41f3-b22c-8dccb11134ea" + } + ], + "connections": { + "CustomerIo": { + "main": [ + [ + { + "node": "CustomerIo1", + "type": "main", + "index": 0 + } + ] + ] + }, + "CustomerIo1": { + "main": [ + [ + { + "node": "CustomerIo2", + "type": "main", + "index": 0 + } + ] + ] + }, + "CustomerIo3": { + "main": [ + [ + { + "node": "CustomerIo5", + "type": "main", + "index": 0 + }, + { + "node": "CustomerIo7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "CustomerIo", + "type": "main", + "index": 0 + }, + { + "node": "CustomerIo3", + "type": "main", + "index": 0 + } + ] + ] + }, + "CustomerIo5": { + "main": [ + [ + { + "node": "CustomerIo6", + "type": "main", + "index": 0 + } + ] + ] + }, + "CustomerIo7": { + "main": [ + [ + { + "node": "CustomerIo8", + "type": "main", + "index": 0 + } + ] + ] + }, + "CustomerIo8": { + "main": [ + [ + { + "node": "CustomerIo4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/11.json b/test-workflows/workflows/11.json new file mode 100644 index 0000000000..e1bc4ebc34 --- /dev/null +++ b/test-workflows/workflows/11.json @@ -0,0 +1,433 @@ +{ + "createdAt": "2021-02-15T16:15:47.074Z", + "updatedAt": "2021-06-04T14:24:35.242Z", + "id": "11", + "name": "Mailchimp:Member:getall get create update delete:Member Tag:create delete:ListGroup:getAll:Campaign:getAll get replicate delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 160, + 300 + ], + "id": "d8d987a3-cc5c-4ec0-b011-7bc16e31ca08" + }, + { + "parameters": { + "operation": "getAll", + "list": "eb9ad4be19", + "limit": 1, + "options": {} + }, + "name": "Mailchimp1", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 430, + 300 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "320b1a49-4754-426d-92ea-e01b24a9f4c6" + }, + { + "parameters": { + "operation": "get", + "list": "eb9ad4be19", + "email": "nodeqa@n8n.io", + "options": {} + }, + "name": "Mailchimp", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 590, + 300 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "1abaa505-82e8-47c0-89f1-b66c9f9f3d22" + }, + { + "parameters": { + "operation": "update", + "list": "eb9ad4be19", + "email": "={{$json[\"email_address\"]}}", + "updateFields": { + "emailType": "html" + } + }, + "name": "Mailchimp2", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 780, + 300 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "54452790-7916-4f94-9e9a-91e0e87a5267" + }, + { + "parameters": { + "resource": "memberTag", + "list": "eb9ad4be19", + "email": "nodeqa@n8n.io", + "tags": [ + "n8n" + ], + "options": {} + }, + "name": "Mailchimp4", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 790, + 140 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "f6b3215e-4628-4118-b994-e3f568f0dd61" + }, + { + "parameters": { + "resource": "memberTag", + "operation": "delete", + "list": "eb9ad4be19", + "email": "nodeqa@n8n.io", + "tags": [ + "n8n" + ], + "options": {} + }, + "name": "Mailchimp5", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 970, + 140 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "9e1dafb8-8afd-4b0d-9623-65b5fb6c1322" + }, + { + "parameters": { + "list": "eb9ad4be19", + "email": "={{$json[\"email\"]}}", + "status": "subscribed", + "options": {} + }, + "name": "Mailchimp3", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 570, + 450 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "197d2f33-acf1-433f-bf88-c44e076539c5" + }, + { + "parameters": { + "functionCode": "items = [{\n json:{\n email: `test${Date.now().toString().substr(5)}@gmail.com`\n }\n}\n]\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 430, + 450 + ], + "notesInFlow": true, + "notes": "Generate fake email", + "id": "9173b153-2d71-41c5-88d3-34a73d187e1b" + }, + { + "parameters": { + "operation": "delete", + "list": "eb9ad4be19", + "email": "={{$json[\"email_address\"]}}" + }, + "name": "Mailchimp6", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 730, + 450 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "60e1eb5b-1725-4b11-a22f-27317dcbee60" + }, + { + "parameters": { + "resource": "listGroup", + "list": "eb9ad4be19", + "groupCategory": "2adbc0d543", + "limit": 1 + }, + "name": "Mailchimp7", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 430, + 140 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "57698c39-732e-43ab-b29b-abc24eeab04b" + }, + { + "parameters": { + "resource": "campaign", + "limit": 1, + "options": {} + }, + "name": "Mailchimp8", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 430, + 610 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "b24cf3d7-b5bf-4386-af74-f1b20fec54f0" + }, + { + "parameters": { + "resource": "campaign", + "operation": "get", + "campaignId": "={{$node[\"Mailchimp8\"].json[\"id\"]}}" + }, + "name": "Mailchimp9", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 580, + 610 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "3a7e9e1a-f070-4c89-9f27-77e9338afca5" + }, + { + "parameters": { + "resource": "campaign", + "operation": "replicate", + "campaignId": "={{$node[\"Mailchimp8\"].json[\"id\"]}}" + }, + "name": "Mailchimp10", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 720, + 610 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "3c7ab34b-7762-4c36-aeb1-2c51e9a27c88" + }, + { + "parameters": { + "resource": "campaign", + "operation": "delete", + "campaignId": "={{$node[\"Mailchimp10\"].json[\"id\"]}}" + }, + "name": "Mailchimp11", + "type": "n8n-nodes-base.mailchimp", + "typeVersion": 1, + "position": [ + 870, + 610 + ], + "credentials": { + "mailchimpApi": { + "id": "29", + "name": "Mailchimp creds" + } + }, + "id": "34e5824a-841b-4890-b5d9-7d72faa17bfc" + } + ], + "connections": { + "Mailchimp1": { + "main": [ + [ + { + "node": "Mailchimp", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mailchimp": { + "main": [ + [ + { + "node": "Mailchimp2", + "type": "main", + "index": 0 + }, + { + "node": "Mailchimp4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Mailchimp1", + "type": "main", + "index": 0 + }, + { + "node": "Function", + "type": "main", + "index": 0 + }, + { + "node": "Mailchimp7", + "type": "main", + "index": 0 + }, + { + "node": "Mailchimp8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mailchimp4": { + "main": [ + [ + { + "node": "Mailchimp5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "Mailchimp3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mailchimp3": { + "main": [ + [ + { + "node": "Mailchimp6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mailchimp8": { + "main": [ + [ + { + "node": "Mailchimp9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mailchimp9": { + "main": [ + [ + { + "node": "Mailchimp10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mailchimp10": { + "main": [ + [ + { + "node": "Mailchimp11", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/110.json b/test-workflows/workflows/110.json new file mode 100644 index 0000000000..bc4a44daf6 --- /dev/null +++ b/test-workflows/workflows/110.json @@ -0,0 +1,79 @@ +{ + "createdAt": "2021-03-09T09:32:25.259Z", + "updatedAt": "2021-03-09T09:32:25.259Z", + "id": "110", + "name": "GraphQL", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "9d428026-3835-4357-a2a2-07ec644a11fa" + }, + { + "parameters": { + "requestMethod": "GET", + "endpoint": "https://countries.trevorblades.com/", + "query": "query{\n country(code:\"DE\"){\n name,code,capital,currency\n }\n}" + }, + "name": "GraphQL", + "type": "n8n-nodes-base.graphql", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "f74bf4cd-1dcf-4103-bd16-ac5e8c9eaa4a" + }, + { + "parameters": { + "functionCode": "testData = JSON.stringify({ country: { name: \"Germany\", code: \"DE\", capital: \"Berlin\", currency: \"EUR\" } })\n\nif(JSON.stringify($node['GraphQL'].json.data) !== testData){\n throw new Error('Error in GraphQL node');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "238509ad-714e-420a-a521-5b2e9d973c38" + } + ], + "connections": { + "GraphQL": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "GraphQL", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/111.json b/test-workflows/workflows/111.json new file mode 100644 index 0000000000..0d337801a4 --- /dev/null +++ b/test-workflows/workflows/111.json @@ -0,0 +1,148 @@ +{ + "createdAt": "2021-03-09T10:08:44.018Z", + "updatedAt": "2021-10-27T11:17:13.078Z", + "id": "111", + "name": "Spreadsheet File", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "cbe7cbcd-cf83-498b-8f42-0ebff7d279ed" + }, + { + "parameters": { + "operation": "toFile", + "fileFormat": "html", + "options": {} + }, + "name": "Spreadsheet File", + "type": "n8n-nodes-base.spreadsheetFile", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "d591ad7b-d116-405a-8866-a4d5c6a4624b" + }, + { + "parameters": { + "options": {} + }, + "name": "Spreadsheet File1", + "type": "n8n-nodes-base.spreadsheetFile", + "typeVersion": 1, + "position": [ + 800, + 450 + ], + "id": "88b9ed84-42da-4a23-a7df-c5b83487dab1" + }, + { + "parameters": { + "functionCode": "items=[\n {\n json:{\n names:['test1','test12','test13','test14']\n }\n },\n {\n json:{\n names:['test2','test22','test23','test24']\n }\n },\n {\n json:{\n names:['test3','test32','test33','test34']\n }\n },\n {\n json:{\n names:['test4','test42','test43','test44']\n }\n },\n]\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "id": "1df49508-7816-408e-8aed-7ba7452d3a1f" + }, + { + "parameters": { + "functionCode": "testData='PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiLz48dGl0bGU+U2hlZXRKUyBUYWJsZSBFeHBvcnQ8L3RpdGxlPjwvaGVhZD48Ym9keT48dGFibGU+PHRyPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0ibmFtZXMuMCIgaWQ9InNqcy1BMSI+bmFtZXMuMDwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJuYW1lcy4xIiBpZD0ic2pzLUIxIj5uYW1lcy4xPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9Im5hbWVzLjIiIGlkPSJzanMtQzEiPm5hbWVzLjI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0ibmFtZXMuMyIgaWQ9InNqcy1EMSI+bmFtZXMuMzwvdGQ+PC90cj48dHI+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MSIgaWQ9InNqcy1BMiI+dGVzdDE8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDEyIiBpZD0ic2pzLUIyIj50ZXN0MTI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDEzIiBpZD0ic2pzLUMyIj50ZXN0MTM8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDE0IiBpZD0ic2pzLUQyIj50ZXN0MTQ8L3RkPjwvdHI+PHRyPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDIiIGlkPSJzanMtQTMiPnRlc3QyPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyMiIgaWQ9InNqcy1CMyI+dGVzdDIyPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyMyIgaWQ9InNqcy1DMyI+dGVzdDIzPC90ZD48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QyNCIgaWQ9InNqcy1EMyI+dGVzdDI0PC90ZD48L3RyPjx0cj48dGQgZGF0YS10PSJzIiBkYXRhLXY9InRlc3QzIiBpZD0ic2pzLUE0Ij50ZXN0MzwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzIiIGlkPSJzanMtQjQiPnRlc3QzMjwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzMiIGlkPSJzanMtQzQiPnRlc3QzMzwvdGQ+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0MzQiIGlkPSJzanMtRDQiPnRlc3QzNDwvdGQ+PC90cj48dHI+PHRkIGRhdGEtdD0icyIgZGF0YS12PSJ0ZXN0NCIgaWQ9InNqcy1BNSI+dGVzdDQ8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQyIiBpZD0ic2pzLUI1Ij50ZXN0NDI8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQzIiBpZD0ic2pzLUM1Ij50ZXN0NDM8L3RkPjx0ZCBkYXRhLXQ9InMiIGRhdGEtdj0idGVzdDQ0IiBpZD0ic2pzLUQ1Ij50ZXN0NDQ8L3RkPjwvdHI+PC90YWJsZT48L2JvZHk+PC9odG1sPg==';\nif(testData !== items[0].binary.data.data){\n throw new Error('Error in Spreadsheet File node (write to file)');\n}\nreturn items;" + }, + "name": "Function1", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "notesInFlow": true, + "notes": "Verify write to file", + "id": "64f7019d-5fa8-456e-a640-084cd57f3ec0" + }, + { + "parameters": { + "functionCode": "testData = JSON.stringify(\n[\n{\n\"names.0\": \"test1\",\n\"names.1\": \"test12\",\n\"names.2\": \"test13\",\n\"names.3\": \"test14\"\n},\n{\n\"names.0\": \"test2\",\n\"names.1\": \"test22\",\n\"names.2\": \"test23\",\n\"names.3\": \"test24\"\n},\n{\n\"names.0\": \"test3\",\n\"names.1\": \"test32\",\n\"names.2\": \"test33\",\n\"names.3\": \"test34\"\n},\n{\n\"names.0\": \"test4\",\n\"names.1\": \"test42\",\n\"names.2\": \"test43\",\n\"names.3\": \"test44\"\n}\n]);\n\nif(testData !== JSON.stringify(items.map(item => item.json))){\n throw new Error('Error in Spreadsheet File node (read file)');\n}\nreturn items;" + }, + "name": "Function2", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 950, + 450 + ], + "notes": "verify read file", + "id": "a5eb9e0e-922f-4156-b586-90c42bcde889" + } + ], + "connections": { + "Spreadsheet File": { + "main": [ + [ + { + "node": "Function1", + "type": "main", + "index": 0 + }, + { + "node": "Spreadsheet File1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "Spreadsheet File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spreadsheet File1": { + "main": [ + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/112.json b/test-workflows/workflows/112.json new file mode 100644 index 0000000000..8bda7f7835 --- /dev/null +++ b/test-workflows/workflows/112.json @@ -0,0 +1,210 @@ +{ + "createdAt": "2021-03-09T14:05:33.799Z", + "updatedAt": "2021-03-09T14:15:46.076Z", + "id": "112", + "name": "Rabbitmq:queue:exchange", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "ee0f6961-37a7-486d-9d75-f73aa8708750" + }, + { + "parameters": { + "queue": "=SimpleQueue", + "sendInputData": false, + "message": "=Message{{Date.now()}}", + "options": { + "autoDelete": true, + "durable": false + } + }, + "name": "RabbitMQ", + "type": "n8n-nodes-base.rabbitmq", + "typeVersion": 1, + "position": [ + 500, + 200 + ], + "credentials": { + "rabbitmq": { + "id": "79", + "name": "RabbitMQ creds" + } + }, + "id": "3b3b66f0-91ab-4a41-a2ab-fec7ce0e36e4" + }, + { + "parameters": { + "mode": "exchange", + "exchange": "FanoutExchange", + "routingKey": "test", + "sendInputData": false, + "message": "=FanoutMessage{{Date.now()}}", + "options": { + "durable": false + } + }, + "name": "RabbitMQ1", + "type": "n8n-nodes-base.rabbitmq", + "typeVersion": 1, + "position": [ + 500, + 350 + ], + "credentials": { + "rabbitmq": { + "id": "79", + "name": "RabbitMQ creds" + } + }, + "id": "f4bb81a0-f6c2-4194-b8ec-0fe6f2350384" + }, + { + "parameters": { + "mode": "exchange", + "exchange": "DirectExchange", + "exchangeType": "direct", + "routingKey": "test", + "sendInputData": false, + "message": "=DirectMessage{{Date.now()}}", + "options": { + "durable": false + } + }, + "name": "RabbitMQ2", + "type": "n8n-nodes-base.rabbitmq", + "typeVersion": 1, + "position": [ + 650, + 350 + ], + "credentials": { + "rabbitmq": { + "id": "79", + "name": "RabbitMQ creds" + } + }, + "id": "ecd77a9f-6523-445d-a7b1-e1585c652c55" + }, + { + "parameters": { + "mode": "exchange", + "exchange": "TopicExchange", + "exchangeType": "topic", + "routingKey": "test", + "sendInputData": false, + "message": "=TopicMessage{{Date.now()}}", + "options": { + "durable": false + } + }, + "name": "RabbitMQ3", + "type": "n8n-nodes-base.rabbitmq", + "typeVersion": 1, + "position": [ + 800, + 350 + ], + "credentials": { + "rabbitmq": { + "id": "79", + "name": "RabbitMQ creds" + } + }, + "id": "bd8becb0-8c2b-4516-b375-ac005bfe9a18" + }, + { + "parameters": { + "mode": "exchange", + "exchange": "HeadersExchange", + "exchangeType": "headers", + "routingKey": "test", + "sendInputData": false, + "message": "=HeadersMessage{{Date.now()}}", + "options": { + "durable": false + } + }, + "name": "RabbitMQ4", + "type": "n8n-nodes-base.rabbitmq", + "typeVersion": 1, + "position": [ + 950, + 350 + ], + "credentials": { + "rabbitmq": { + "id": "79", + "name": "RabbitMQ creds" + } + }, + "id": "abdcf5b6-21ef-40da-b58d-3a2f9ad3b676" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "RabbitMQ", + "type": "main", + "index": 0 + }, + { + "node": "RabbitMQ1", + "type": "main", + "index": 0 + } + ] + ] + }, + "RabbitMQ1": { + "main": [ + [ + { + "node": "RabbitMQ2", + "type": "main", + "index": 0 + } + ] + ] + }, + "RabbitMQ2": { + "main": [ + [ + { + "node": "RabbitMQ3", + "type": "main", + "index": 0 + } + ] + ] + }, + "RabbitMQ3": { + "main": [ + [ + { + "node": "RabbitMQ4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/113.json b/test-workflows/workflows/113.json new file mode 100644 index 0000000000..93f56a7f9c --- /dev/null +++ b/test-workflows/workflows/113.json @@ -0,0 +1,102 @@ +{ + "createdAt": "2021-03-09T14:26:06.900Z", + "updatedAt": "2021-03-09T17:25:17.607Z", + "id": "113", + "name": "AMQP", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "cb0c801c-e74c-43a6-9b4d-6e3c2b265f22" + }, + { + "parameters": { + "sink": "AMQPQueue", + "headerParametersJson": "{}", + "options": { + "reconnect": true, + "reconnectLimit": 5 + } + }, + "name": "AMQP Sender", + "type": "n8n-nodes-base.amqp", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "amqp": { + "id": "80", + "name": "AMQP creds" + } + }, + "id": "7d7a98e3-27b0-49bf-8c68-a525895d0b8c" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "string": [ + { + "name": "message", + "value": "=AMQPMessage{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "951c5927-93e8-4efb-924a-e6516679017c" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "AMQP Sender": { + "main": [ + [] + ] + }, + "Set": { + "main": [ + [ + { + "node": "AMQP Sender", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/114.json b/test-workflows/workflows/114.json new file mode 100644 index 0000000000..4178382142 --- /dev/null +++ b/test-workflows/workflows/114.json @@ -0,0 +1,618 @@ +{ + "createdAt": "2021-03-09T20:05:11.480Z", + "updatedAt": "2021-03-22T10:44:13.980Z", + "id": "114", + "name": "Monday:Board:create get getAll archive:BoardColumn:create getAll:BoardGroup:create delete getAll:BoardItem:create addUpdate changeColumnValue get getAll getByColumnValue move delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 200, + 300 + ], + "id": "f7c60ae7-b68c-4251-9778-4d7a1f033285" + }, + { + "parameters": { + "name": "=Board{{Date.now()}}", + "kind": "private", + "additionalFields": {} + }, + "name": "Monday.com", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 440, + 280 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "839f14d0-14de-40e9-81c8-08810b6edf70" + }, + { + "parameters": { + "operation": "get", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}" + }, + "name": "Monday.com1", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 600, + 280 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "bbf1c663-e121-4d6c-9afc-a6185d15d45a" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Monday.com2", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 750, + 280 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "19e62461-a13a-4ed5-984d-48c932f3c673" + }, + { + "parameters": { + "operation": "archive", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}" + }, + "name": "Monday.com3", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 3110, + 270 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "1f5c07fc-54f7-47fd-9c32-5c5d58013755" + }, + { + "parameters": { + "resource": "boardColumn", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}", + "title": "=Column{{Date.now()}}", + "columnType": "checkbox", + "additionalFields": {} + }, + "name": "Monday.com4", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 900, + 0 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "e96e4955-0dd8-45a9-90ae-b8f0b2cf4cb2" + }, + { + "parameters": { + "resource": "boardColumn", + "operation": "getAll", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}" + }, + "name": "Monday.com5", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 2850, + -50 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "b009f62b-41a1-46f1-8796-30fa18e74c5c" + }, + { + "parameters": { + "resource": "boardGroup", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}", + "name": "=Group{{Date.now()}}" + }, + "name": "Monday.com6", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 1200, + 50 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "530e0e10-cba4-41c8-8e8c-203f451501b2" + }, + { + "parameters": { + "resource": "boardGroup", + "operation": "delete", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}", + "groupId": "={{$node[\"Monday.com6\"].json[\"id\"]}}" + }, + "name": "Monday.com7", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 2540, + 50 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "27c609e7-c3e6-4e4a-af47-08a9a34ce21c" + }, + { + "parameters": { + "resource": "boardGroup", + "operation": "getAll", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}" + }, + "name": "Monday.com8", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 2690, + 50 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "405a5103-b9ce-4297-90d8-d5fa8fd5852f" + }, + { + "parameters": { + "resource": "boardItem", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}", + "groupId": "={{$node[\"Monday.com6\"].json[\"id\"]}}", + "name": "=Item{{Date.now()}}", + "additionalFields": {} + }, + "name": "Monday.com9", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 1350, + 150 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "dc5e88cf-04a4-4858-927a-2e08c4b9ceb8" + }, + { + "parameters": { + "resource": "boardItem", + "operation": "addUpdate", + "itemId": "={{$node[\"Monday.com9\"].json[\"id\"]}}", + "value": "=Update{{Date.now()}}" + }, + "name": "Monday.com10", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 1500, + 150 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "1d508527-3c1c-4c7c-a6f6-19ed2e674eb8" + }, + { + "parameters": { + "resource": "boardItem", + "operation": "changeColumnValue", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}", + "itemId": "={{$node[\"Monday.com9\"].json[\"id\"]}}", + "columnId": "={{$node[\"Monday.com4\"].json[\"id\"]}}", + "value": "={{JSON.stringify({\"checked\": \"true\"});}}" + }, + "name": "Monday.com11", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 1650, + 150 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "f03bca62-ee0f-4598-8833-26d9ba2f83fb" + }, + { + "parameters": { + "resource": "boardItem", + "operation": "get", + "itemId": "={{$node[\"Monday.com9\"].json[\"id\"]}}" + }, + "name": "Monday.com12", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 1800, + 150 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "b4a2cfef-83ea-430f-8b0c-3a7b3dafc5ed" + }, + { + "parameters": { + "resource": "boardItem", + "operation": "getAll", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}", + "groupId": "={{$node[\"Monday.com6\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Monday.com13", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 1950, + 150 + ], + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "549dc7a6-e611-4c75-9c37-40673a79bf39" + }, + { + "parameters": { + "resource": "boardItem", + "operation": "getByColumnValue", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}", + "columnId": "={{$node[\"Monday.com4\"].json[\"id\"]}}", + "columnValue": "\"{\"checked\":\"true\"}\"", + "limit": 1 + }, + "name": "Monday.com14", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 2100, + 150 + ], + "alwaysOutputData": true, + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "7026f1b0-8014-43ae-930d-a1c7db989163" + }, + { + "parameters": { + "resource": "boardItem", + "operation": "move", + "boardId": "={{$node[\"Monday.com\"].json[\"id\"]}}", + "itemId": "={{$node[\"Monday.com9\"].json[\"id\"]}}", + "groupId": "={{$node[\"Monday.com6\"].json[\"id\"]}}" + }, + "name": "Monday.com15", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 2250, + 150 + ], + "alwaysOutputData": true, + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "596fc3f9-0d39-4f7f-864b-32a6640e7ff0" + }, + { + "parameters": { + "resource": "boardItem", + "operation": "delete", + "itemId": "={{$node[\"Monday.com9\"].json[\"id\"]}}" + }, + "name": "Monday.com16", + "type": "n8n-nodes-base.mondayCom", + "typeVersion": 1, + "position": [ + 2400, + 150 + ], + "alwaysOutputData": true, + "credentials": { + "mondayComApi": { + "id": "113", + "name": "Monday.com API creds" + } + }, + "id": "6080f346-15d2-484f-8cfa-44b93dc93213" + }, + { + "parameters": { + "mode": "wait" + }, + "name": "Merge", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 2960, + 120 + ], + "id": "7ca43678-0fea-4fc4-85c5-af1dc02be4d2" + } + ], + "connections": { + "Monday.com": { + "main": [ + [ + { + "node": "Monday.com1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com1": { + "main": [ + [ + { + "node": "Monday.com2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com2": { + "main": [ + [ + { + "node": "Monday.com4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com4": { + "main": [ + [ + { + "node": "Monday.com6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com6": { + "main": [ + [ + { + "node": "Monday.com9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com7": { + "main": [ + [ + { + "node": "Monday.com8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com9": { + "main": [ + [ + { + "node": "Monday.com10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com10": { + "main": [ + [ + { + "node": "Monday.com11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com11": { + "main": [ + [ + { + "node": "Monday.com12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com12": { + "main": [ + [ + { + "node": "Monday.com13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com13": { + "main": [ + [ + { + "node": "Monday.com14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com14": { + "main": [ + [ + { + "node": "Monday.com15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com15": { + "main": [ + [ + { + "node": "Monday.com16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com16": { + "main": [ + [ + { + "node": "Monday.com7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com8": { + "main": [ + [ + { + "node": "Monday.com5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Monday.com5": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + }, + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Merge": { + "main": [ + [ + { + "node": "Monday.com3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Monday.com", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/115.json b/test-workflows/workflows/115.json new file mode 100644 index 0000000000..b3275ffb02 --- /dev/null +++ b/test-workflows/workflows/115.json @@ -0,0 +1,202 @@ +{ + "createdAt": "2021-03-10T09:08:07.793Z", + "updatedAt": "2021-03-10T09:08:07.793Z", + "id": "115", + "name": "Cockpit:Collection:createEntry updateEntry getAllEntries:Singleton:get:Form:submit", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "768b2ddf-9888-4361-8f1e-3a4dff195e6b" + }, + { + "parameters": { + "operation": "create", + "collection": "FixedCollection", + "dataFieldsUi": { + "field": [ + { + "name": "Name", + "value": "=entry{{Date.now()}}" + } + ] + } + }, + "name": "Cockpit", + "type": "n8n-nodes-base.cockpit", + "typeVersion": 1, + "position": [ + 550, + 180 + ], + "credentials": { + "cockpitApi": { + "id": "81", + "name": "Cockpit API creds" + } + }, + "id": "a731c3d7-ffb7-493e-a3ac-9fdef8776801" + }, + { + "parameters": { + "operation": "update", + "collection": "FixedCollection", + "id": "={{$node[\"Cockpit\"].json[\"_id\"]}}", + "dataFieldsUi": { + "field": [ + { + "name": "Name", + "value": "=UpdatedEntry{{Date.now()}}" + } + ] + } + }, + "name": "Cockpit1", + "type": "n8n-nodes-base.cockpit", + "typeVersion": 1, + "position": [ + 700, + 180 + ], + "credentials": { + "cockpitApi": { + "id": "81", + "name": "Cockpit API creds" + } + }, + "id": "be0de116-a348-436c-8903-a78f2d9978f3" + }, + { + "parameters": { + "collection": "FixedCollection", + "limit": 1, + "options": {} + }, + "name": "Cockpit2", + "type": "n8n-nodes-base.cockpit", + "typeVersion": 1, + "position": [ + 850, + 180 + ], + "credentials": { + "cockpitApi": { + "id": "81", + "name": "Cockpit API creds" + } + }, + "id": "e151e242-d0a9-43d9-8003-632b4f8569ad" + }, + { + "parameters": { + "resource": "singleton", + "singleton": "FixedSingleton" + }, + "name": "Cockpit3", + "type": "n8n-nodes-base.cockpit", + "typeVersion": 1, + "position": [ + 550, + 350 + ], + "credentials": { + "cockpitApi": { + "id": "81", + "name": "Cockpit API creds" + } + }, + "id": "b1f38f40-c544-496f-bcb9-3957a755a497" + }, + { + "parameters": { + "resource": "form", + "form": "FixedForm", + "dataFieldsUi": { + "field": [ + { + "name": "name", + "value": "=name{{Date.now()}}" + }, + { + "name": "tag", + "value": "=tag{{Date.now()}}" + } + ] + } + }, + "name": "Cockpit4", + "type": "n8n-nodes-base.cockpit", + "typeVersion": 1, + "position": [ + 550, + 500 + ], + "credentials": { + "cockpitApi": { + "id": "81", + "name": "Cockpit API creds" + } + }, + "id": "9567077a-58f2-453e-8d36-35d4c68e9510" + } + ], + "connections": { + "Cockpit": { + "main": [ + [ + { + "node": "Cockpit1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Cockpit1": { + "main": [ + [ + { + "node": "Cockpit2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Cockpit", + "type": "main", + "index": 0 + }, + { + "node": "Cockpit3", + "type": "main", + "index": 0 + }, + { + "node": "Cockpit4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/116.json b/test-workflows/workflows/116.json new file mode 100644 index 0000000000..aa2175771a --- /dev/null +++ b/test-workflows/workflows/116.json @@ -0,0 +1,260 @@ +{ + "createdAt": "2021-03-10T10:32:50.903Z", + "updatedAt": "2021-03-10T10:32:50.903Z", + "id": "116", + "name": "Ghost:Post(Admin API):create update get getAll delete:Post(Content API):getAll get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "96a1cf58-f3dc-46ea-a07a-5202bffee113" + }, + { + "parameters": { + "source": "adminApi", + "operation": "create", + "title": "=PostTitle{{Date.now()}}", + "content": "=Post Content written at {{Date.now()}}", + "additionalFields": {} + }, + "name": "Ghost", + "type": "n8n-nodes-base.ghost", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "ghostAdminApi": { + "id": "83", + "name": "Ghost Admin api creds" + } + }, + "id": "6c09ea13-41e8-4704-b357-4390b14e7255" + }, + { + "parameters": { + "source": "adminApi", + "operation": "update", + "postId": "={{$node[\"Ghost\"].json[\"id\"]}}", + "updateFields": { + "title": "=UpdateTitle{{Date.now()}}" + } + }, + "name": "Ghost1", + "type": "n8n-nodes-base.ghost", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "ghostAdminApi": { + "id": "83", + "name": "Ghost Admin api creds" + } + }, + "id": "57fab43f-0013-4250-bcd4-1318f9371097" + }, + { + "parameters": { + "source": "adminApi", + "by": "id", + "identifier": "={{$node[\"Ghost\"].json[\"id\"]}}", + "options": {} + }, + "name": "Ghost2", + "type": "n8n-nodes-base.ghost", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "ghostAdminApi": { + "id": "83", + "name": "Ghost Admin api creds" + } + }, + "id": "e032227a-b97e-4b60-8b9e-9061c2d7e279" + }, + { + "parameters": { + "source": "adminApi", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Ghost3", + "type": "n8n-nodes-base.ghost", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "credentials": { + "ghostAdminApi": { + "id": "83", + "name": "Ghost Admin api creds" + } + }, + "id": "6150282c-3d31-4387-8dbb-74730ada47aa" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Ghost4", + "type": "n8n-nodes-base.ghost", + "typeVersion": 1, + "position": [ + 1150, + 450 + ], + "credentials": { + "ghostContentApi": { + "id": "82", + "name": "Ghost Content creds" + } + }, + "id": "488558ee-8ef5-460b-ae0e-31e74ce25d9c" + }, + { + "parameters": { + "by": "id", + "identifier": "={{$node[\"Ghost4\"].json[\"id\"]}}", + "options": {} + }, + "name": "Ghost5", + "type": "n8n-nodes-base.ghost", + "typeVersion": 1, + "position": [ + 1300, + 450 + ], + "credentials": { + "ghostContentApi": { + "id": "82", + "name": "Ghost Content creds" + } + }, + "id": "f0f53fe7-b17f-45fc-bfa5-b7db642a22a9" + }, + { + "parameters": { + "source": "adminApi", + "operation": "delete", + "postId": "={{$node[\"Ghost\"].json[\"id\"]}}" + }, + "name": "Ghost6", + "type": "n8n-nodes-base.ghost", + "typeVersion": 1, + "position": [ + 1450, + 300 + ], + "credentials": { + "ghostAdminApi": { + "id": "83", + "name": "Ghost Admin api creds" + } + }, + "id": "83c79ebf-21b0-4d8b-be7e-9e7002015990" + } + ], + "connections": { + "Ghost": { + "main": [ + [ + { + "node": "Ghost1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Ghost1": { + "main": [ + [ + { + "node": "Ghost2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Ghost2": { + "main": [ + [ + { + "node": "Ghost3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Ghost3": { + "main": [ + [ + { + "node": "Ghost4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Ghost4": { + "main": [ + [ + { + "node": "Ghost5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Ghost5": { + "main": [ + [ + { + "node": "Ghost6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Ghost", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/117.json b/test-workflows/workflows/117.json new file mode 100644 index 0000000000..e0995ce71d --- /dev/null +++ b/test-workflows/workflows/117.json @@ -0,0 +1,124 @@ +{ + "createdAt": "2021-03-10T11:09:19.174Z", + "updatedAt": "2021-03-10T11:09:40.674Z", + "id": "117", + "name": "Gotify:Message:create getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "1d2659eb-da2b-4d7c-94f6-09d7dc99ef0d" + }, + { + "parameters": { + "message": "=Message content {{Date.now()}}", + "additionalFields": { + "title": "=Title{{Date.now()}}" + } + }, + "name": "Gotify", + "type": "n8n-nodes-base.gotify", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "gotifyApi": { + "id": "84", + "name": "Gotify API creds" + } + }, + "id": "c8ae4d15-a793-4c51-a13a-5e9541079ed2" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Gotify1", + "type": "n8n-nodes-base.gotify", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "gotifyApi": { + "id": "84", + "name": "Gotify API creds" + } + }, + "id": "9c136007-0f4a-4e13-ba09-03cd4dccbdab" + }, + { + "parameters": { + "operation": "delete", + "messageId": "={{$node[\"Gotify\"].json[\"id\"]}}" + }, + "name": "Gotify2", + "type": "n8n-nodes-base.gotify", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "gotifyApi": { + "id": "84", + "name": "Gotify API creds" + } + }, + "id": "fb795089-773b-47a5-b8f5-86c52a1863d6" + } + ], + "connections": { + "Gotify": { + "main": [ + [ + { + "node": "Gotify1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gotify1": { + "main": [ + [ + { + "node": "Gotify2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Gotify", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/118.json b/test-workflows/workflows/118.json new file mode 100644 index 0000000000..a7dbd8e88e --- /dev/null +++ b/test-workflows/workflows/118.json @@ -0,0 +1,240 @@ +{ + "createdAt": "2021-03-10T13:48:09.104Z", + "updatedAt": "2021-06-02T10:31:06.860Z", + "id": "118", + "name": "Redis:info set keys get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "bfe11af4-fb50-452c-b976-4d03d10829d2" + }, + { + "parameters": {}, + "name": "Redis", + "type": "n8n-nodes-base.redis", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "redis": { + "id": "85", + "name": "Redis creds" + } + }, + "id": "d63e6bed-6d35-4f90-8a9f-11869262fd3c" + }, + { + "parameters": { + "operation": "set", + "key": "={{$node[\"Set\"].json[\"key\"]}}", + "value": "={{$node[\"Set\"].json[\"value\"]}}" + }, + "name": "Redis1", + "type": "n8n-nodes-base.redis", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "redis": { + "id": "85", + "name": "Redis creds" + } + }, + "id": "de5c3f28-1d4e-4c43-92c1-d9987e472c69" + }, + { + "parameters": { + "operation": "keys", + "keyPattern": "={{$node[\"Set\"].json[\"key\"]}}" + }, + "name": "Redis2", + "type": "n8n-nodes-base.redis", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "redis": { + "id": "85", + "name": "Redis creds" + } + }, + "id": "00d6c08e-263e-43db-a93f-a0bf28d0d0bd" + }, + { + "parameters": { + "operation": "get", + "propertyName": "value", + "key": "={{$node[\"Set\"].json[\"key\"]}}", + "options": {} + }, + "name": "Redis3", + "type": "n8n-nodes-base.redis", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "redis": { + "id": "85", + "name": "Redis creds" + } + }, + "id": "1ee59e47-956c-4c04-b460-0409d488ae1f" + }, + { + "parameters": { + "operation": "delete", + "key": "={{$node[\"Set\"].json[\"key\"]}}" + }, + "name": "Redis4", + "type": "n8n-nodes-base.redis", + "typeVersion": 1, + "position": [ + 1300, + 300 + ], + "credentials": { + "redis": { + "id": "85", + "name": "Redis creds" + } + }, + "id": "08580c27-446e-4b5c-a8a2-956208327019" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "key", + "value": "TestKey" + }, + { + "name": "value", + "value": "=Value{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "779cc18d-7a1a-454d-b70a-b54ae590c896" + }, + { + "parameters": { + "functionCode": "if($node['Set'].json['value'] !== $node['Redis3'].json['value'] ){\n throw new Error('Error in redis node');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 1300, + 450 + ], + "notesInFlow": true, + "notes": "validate the saved value", + "id": "72efc2c0-6bb3-4560-b935-9231558081a8" + } + ], + "connections": { + "Redis": { + "main": [ + [ + { + "node": "Redis1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Redis1": { + "main": [ + [ + { + "node": "Redis2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Redis2": { + "main": [ + [ + { + "node": "Redis3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Redis3": { + "main": [ + [ + { + "node": "Redis4", + "type": "main", + "index": 0 + }, + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Redis", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/119.json b/test-workflows/workflows/119.json new file mode 100644 index 0000000000..8230fe8ec0 --- /dev/null +++ b/test-workflows/workflows/119.json @@ -0,0 +1,199 @@ +{ + "createdAt": "2021-03-10T15:10:43.540Z", + "updatedAt": "2021-03-10T15:13:14.859Z", + "id": "119", + "name": "CrateDB:insert update executeQuery", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e0aab098-04f4-42ce-b128-c1707e6ab085" + }, + { + "parameters": { + "table": "testtable", + "columns": "id,name" + }, + "name": "CrateDB", + "type": "n8n-nodes-base.crateDb", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "crateDb": { + "id": "86", + "name": "CrateDB creds" + } + }, + "id": "51925b66-eddd-4a2c-bd53-3c93d8c4d3d9" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=Name{{Date.now()}}" + } + ], + "number": [ + { + "name": "id", + "value": "={{Math.round(Math.random()*100000)}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "ca7b9956-a037-4efa-9bfa-769067d489b8" + }, + { + "parameters": { + "operation": "update", + "table": "testtable", + "columns": "id,name" + }, + "name": "CrateDB1", + "type": "n8n-nodes-base.crateDb", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "crateDb": { + "id": "86", + "name": "CrateDB creds" + } + }, + "id": "7f727eb3-00c1-464d-aa3b-503138386420" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=UpdatedName{{Date.now()}}" + } + ], + "number": [ + { + "name": "id", + "value": "={{$node[\"Set\"].json[\"id\"]}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "d8d1fb13-1756-4cff-b6f6-adbe388851f6" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "=DELETE FROM \"doc\".\"testtable\" WHERE id={{$node[\"Set1\"].json[\"id\"]}};" + }, + "name": "CrateDB2", + "type": "n8n-nodes-base.crateDb", + "typeVersion": 1, + "position": [ + 1250, + 300 + ], + "credentials": { + "crateDb": { + "id": "86", + "name": "CrateDB creds" + } + }, + "id": "41bbb36e-d1b4-419a-a587-4fb9a0a4d349" + } + ], + "connections": { + "CrateDB": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "CrateDB", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "CrateDB1", + "type": "main", + "index": 0 + } + ] + ] + }, + "CrateDB1": { + "main": [ + [ + { + "node": "CrateDB2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/120.json b/test-workflows/workflows/120.json new file mode 100644 index 0000000000..a43e5a7d23 --- /dev/null +++ b/test-workflows/workflows/120.json @@ -0,0 +1,230 @@ +{ + "createdAt": "2021-03-10T15:35:11.016Z", + "updatedAt": "2021-03-10T15:36:00.949Z", + "id": "120", + "name": "MySQL:insert update executeQuery", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "5b615e13-07d6-4c71-af21-318ec21ec4a0" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=Name{{Date.now()}}" + } + ], + "number": [ + { + "name": "id", + "value": "={{Math.round(Math.random()*100000)}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "7fb26b4f-a2aa-4cb9-aa75-8514d7095189" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=UpdatedName{{Date.now()}}" + } + ], + "number": [ + { + "name": "id", + "value": "={{$node[\"Set\"].json[\"id\"]}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "2494e933-9a78-418a-afe2-ada2340d2f56" + }, + { + "parameters": { + "table": "TestTable", + "columns": "id,name" + }, + "name": "MySQL", + "type": "n8n-nodes-base.mySql", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "mySql": { + "id": "87", + "name": "MySQL creds" + } + }, + "id": "3a942f01-b88b-4b01-bfe6-355be41e0ce9" + }, + { + "parameters": { + "operation": "update", + "table": "TestTable", + "columns": "id,name" + }, + "name": "MySQL1", + "type": "n8n-nodes-base.mySql", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "mySql": { + "id": "87", + "name": "MySQL creds" + } + }, + "id": "6bf22c0c-7a5a-47d6-98e7-129eb92b2825" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "=SELECT * FROM TestTable LIMIT 1;" + }, + "name": "MySQL2", + "type": "n8n-nodes-base.mySql", + "typeVersion": 1, + "position": [ + 1250, + 300 + ], + "credentials": { + "mySql": { + "id": "87", + "name": "MySQL creds" + } + }, + "id": "d984d201-7a77-423b-85a3-fc6a59417488" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "=DELETE FROM TestTable WHERE id={{$node[\"Set1\"].json[\"id\"]}};" + }, + "name": "MySQL3", + "type": "n8n-nodes-base.mySql", + "typeVersion": 1, + "position": [ + 1450, + 300 + ], + "credentials": { + "mySql": { + "id": "87", + "name": "MySQL creds" + } + }, + "id": "c19d0fc0-2e2d-4bbf-a7dd-a2e625dc7984" + } + ], + "connections": { + "Set": { + "main": [ + [ + { + "node": "MySQL", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "MySQL1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "MySQL": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "MySQL1": { + "main": [ + [ + { + "node": "MySQL2", + "type": "main", + "index": 0 + } + ] + ] + }, + "MySQL2": { + "main": [ + [ + { + "node": "MySQL3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/121.json b/test-workflows/workflows/121.json new file mode 100644 index 0000000000..e6dffeffee --- /dev/null +++ b/test-workflows/workflows/121.json @@ -0,0 +1,463 @@ +{ + "createdAt": "2021-03-10T16:41:57.544Z", + "updatedAt": "2021-07-14T14:15:34.356Z", + "id": "121", + "name": "Mautic:Company:create update get getAll delete:Contact:create update get getAll delete:ContactCompany:add remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "32f14cad-d9c6-4b95-ab68-d4826d48fabf" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "company", + "name": "=Company{{Date.now()}}", + "additionalFields": {} + }, + "name": "Mautic", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 550, + 250 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "d51c36e4-8d14-4d6b-9d98-a54dba80d8d9" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "company", + "operation": "update", + "companyId": "={{$node[\"Mautic\"].json[\"id\"]}}", + "updateFields": { + "name": "=UpdatedCompany{{Date.now()}}" + } + }, + "name": "Mautic1", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 700, + 250 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "9d20aa4c-55c2-43f1-9eb8-61aa035fa095" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "company", + "operation": "get", + "companyId": "={{$node[\"Mautic\"].json[\"id\"]}}" + }, + "name": "Mautic2", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 1300, + 250 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "2c32e4c1-c0f0-4119-935a-a41944fcc1f6" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "company", + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Mautic3", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 1450, + 250 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "e8aaee34-faed-4540-a153-e007360950e6" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "company", + "operation": "delete", + "companyId": "={{$node[\"Mautic\"].json[\"id\"]}}" + }, + "name": "Mautic4", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 1600, + 250 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "51e9562a-6ed2-474f-a166-79aadba161ce" + }, + { + "parameters": { + "authentication": "oAuth2", + "email": "=fakeemail{{Date.now()}}@gmail.com", + "firstName": "=Name{{Date.now()}}", + "lastName": "=LasName{{Date.now()}}", + "position": "=Position{{Date.now()}}", + "title": "=Title{{Date.now()}}", + "additionalFields": {}, + "options": {} + }, + "name": "Mautic5", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 550, + 400 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "b1254079-c7e5-4bbd-b82d-949659011b06" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "update", + "contactId": "={{$node[\"Mautic5\"].json[\"id\"]}}", + "updateFields": { + "title": "=UpdatedTitle{{Date.now()}}" + }, + "options": {} + }, + "name": "Mautic6", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 700, + 400 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "a52da7e6-2d92-4e0f-a216-8ea0a40eb335" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "get", + "contactId": "={{$node[\"Mautic5\"].json[\"id\"]}}", + "options": {} + }, + "name": "Mautic7", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 1300, + 400 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "f6defb20-2e74-4a39-9232-b5da5c865f0c" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Mautic8", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 1450, + 400 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "e58f2f81-3e0c-45e4-818b-5f665ea7c539" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "delete", + "contactId": "={{$node[\"Mautic5\"].json[\"id\"]}}", + "options": {} + }, + "name": "Mautic9", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 1600, + 400 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "f06c2ab6-32ee-4c50-a122-f3bad0523587" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "companyContact", + "operation": "add", + "contactId": "={{$node[\"Mautic5\"].json[\"id\"]}}", + "companyId": "={{$node[\"Mautic\"].json[\"id\"]}}" + }, + "name": "Mautic10", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 1000, + 340 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "fb483ebe-6c2c-4003-9808-c669f4a91274" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "companyContact", + "operation": "remove", + "contactId": "={{$node[\"Mautic5\"].json[\"id\"]}}", + "companyId": "={{$node[\"Mautic\"].json[\"id\"]}}" + }, + "name": "Mautic11", + "type": "n8n-nodes-base.mautic", + "typeVersion": 1, + "position": [ + 1150, + 340 + ], + "credentials": { + "mauticOAuth2Api": { + "id": "89", + "name": "Mautic OAuth2 API creds" + } + }, + "id": "98d7a2b6-1cc9-4887-88ca-ce5866116d63" + }, + { + "parameters": { + "mode": "wait" + }, + "name": "Merge", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 850, + 340 + ], + "notesInFlow": true, + "notes": "Keep single execution", + "id": "be2a68cb-4317-4f90-8c79-fb0b30014081" + } + ], + "connections": { + "Mautic": { + "main": [ + [ + { + "node": "Mautic1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Mautic", + "type": "main", + "index": 0 + }, + { + "node": "Mautic5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mautic1": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mautic2": { + "main": [ + [ + { + "node": "Mautic3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mautic3": { + "main": [ + [ + { + "node": "Mautic4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mautic5": { + "main": [ + [ + { + "node": "Mautic6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mautic6": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Mautic7": { + "main": [ + [ + { + "node": "Mautic8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mautic8": { + "main": [ + [ + { + "node": "Mautic9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mautic10": { + "main": [ + [ + { + "node": "Mautic11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mautic11": { + "main": [ + [ + { + "node": "Mautic2", + "type": "main", + "index": 0 + }, + { + "node": "Mautic7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge": { + "main": [ + [ + { + "node": "Mautic10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/122.json b/test-workflows/workflows/122.json new file mode 100644 index 0000000000..1aec4d0096 --- /dev/null +++ b/test-workflows/workflows/122.json @@ -0,0 +1,514 @@ +{ + "createdAt": "2021-03-11T08:54:28.548Z", + "updatedAt": "2021-05-25T12:50:39.981Z", + "id": "122", + "name": "Orbit:Member:upsert get update delete getAll lookup:Note:create update getAll:Activity:create getAll:Post:create getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 410, + 200 + ], + "id": "39ef826b-4c37-4617-aacb-e2d276721e1f" + }, + { + "parameters": { + "operation": "upsert", + "workspaceId": "543", + "identityUi": { + "identityValue": { + "source": "email", + "email": "={{$node[\"Set\"].json[\"email\"]}}" + } + }, + "additionalFields": { + "name": "=Name{{Date.now()}}" + } + }, + "name": "Orbit", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 750, + 200 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "b36edb18-df88-418c-8a9d-22d43bb6aa89" + }, + { + "parameters": { + "workspaceId": "543", + "memberId": "={{$node[\"Orbit\"].json[\"id\"]}}" + }, + "name": "Orbit1", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 900, + 200 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "c48b87cd-09dd-414e-ae47-668b6379685e" + }, + { + "parameters": { + "operation": "getAll", + "workspaceId": "543", + "limit": 1, + "options": {} + }, + "name": "Orbit2", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 600, + 500 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "0de00f28-5062-4deb-98e4-f4adf9ca657e" + }, + { + "parameters": { + "operation": "update", + "workspaceId": "543", + "memberId": "={{$node[\"Orbit\"].json[\"id\"]}}", + "updateFields": { + "name": "=Updated{{$node[\"Orbit\"].json[\"attributes\"][\"name\"]}}" + } + }, + "name": "Orbit3", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 1050, + 200 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "83cbc054-9ce4-43db-9b43-6f610596069b" + }, + { + "parameters": { + "operation": "lookup", + "workspaceId": "543", + "source": "github", + "searchBy": "username", + "username": "={{$node[\"Orbit2\"].json[\"attributes\"][\"github\"]}}" + }, + "name": "Orbit4", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 750, + 500 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "599f8644-eed0-414a-82cb-cccc327a2e13" + }, + { + "parameters": { + "operation": "delete", + "workspaceId": "543", + "memberId": "={{$node[\"Orbit\"].json[\"id\"]}}" + }, + "name": "Orbit5", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 1200, + 200 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "03d30c2f-044c-4cf6-9d9c-f1cf39027dab" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "email", + "value": "=fake{{Date.now()}}@gmail.com" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 600, + 200 + ], + "id": "9131159f-68a7-4379-945e-2743187ae993" + }, + { + "parameters": { + "resource": "activity", + "workspaceId": "543", + "memberId": "={{$node[\"Orbit\"].json[\"id\"]}}", + "title": "=Title{{Date.now()}}", + "additionalFields": {} + }, + "name": "Orbit6", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 900, + 350 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "27ac35b2-64d0-4422-a5a1-dc453af2f01d" + }, + { + "parameters": { + "resource": "activity", + "operation": "getAll", + "workspaceId": "543", + "limit": 1, + "filters": {} + }, + "name": "Orbit7", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 1050, + 350 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "8f50074d-e558-4150-bc0c-c0721e071aa0" + }, + { + "parameters": { + "resource": "note", + "workspaceId": "543", + "memberId": "={{$node[\"Orbit\"].json[\"id\"]}}", + "note": "=Note{{Date.now()}}" + }, + "name": "Orbit8", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 900, + 50 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "bba7efcf-70e2-48c3-940f-2233b3ab0f05" + }, + { + "parameters": { + "resource": "note", + "operation": "update", + "workspaceId": "543", + "memberId": "={{$node[\"Orbit\"].json[\"id\"]}}", + "noteId": "={{$node[\"Orbit8\"].json[\"id\"]}}", + "note": "=Updated{{$node[\"Orbit8\"].json[\"attributes\"][\"body\"]}}" + }, + "name": "Orbit9", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 1050, + 50 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "a5ea5c0a-c939-4017-b355-86be07da2fcf" + }, + { + "parameters": { + "resource": "note", + "operation": "getAll", + "workspaceId": "543", + "memberId": "={{$node[\"Orbit\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Orbit10", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 1200, + 50 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "e070222a-741f-4f31-a2cb-47731f3b7f75" + }, + { + "parameters": { + "resource": "post", + "workspaceId": "543", + "memberId": "={{$node[\"Orbit4\"].json[\"id\"]}}", + "url": "=https://n8n.io/blog/why-i-chose-n8n-over-zapier-in-2020?test_timestamp={{Date.now()}}", + "additionalFields": {} + }, + "name": "Orbit11", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 900, + 500 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "34567405-fff1-4d1a-b652-0dcd61dedb9a" + }, + { + "parameters": { + "resource": "post", + "operation": "getAll", + "workspaceId": "543", + "limit": 1, + "filters": {} + }, + "name": "Orbit12", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 1050, + 500 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "f155c381-f37e-4ec2-876c-8123213fd4ef" + }, + { + "parameters": { + "resource": "post", + "operation": "delete", + "workspaceId": "543", + "memberId": "={{$node[\"Orbit4\"].json[\"id\"]}}", + "postId": "={{$node[\"Orbit11\"].json[\"id\"]}}" + }, + "name": "Orbit13", + "type": "n8n-nodes-base.orbit", + "typeVersion": 1, + "position": [ + 1050, + 650 + ], + "credentials": { + "orbitApi": { + "id": "112", + "name": "Orbit API creds" + } + }, + "id": "f5a44540-6958-4cf0-919d-a4c9b07df59f" + } + ], + "connections": { + "Orbit": { + "main": [ + [ + { + "node": "Orbit6", + "type": "main", + "index": 0 + }, + { + "node": "Orbit8", + "type": "main", + "index": 0 + }, + { + "node": "Orbit1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Orbit1": { + "main": [ + [ + { + "node": "Orbit3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Orbit2": { + "main": [ + [ + { + "node": "Orbit4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Orbit3": { + "main": [ + [ + { + "node": "Orbit5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + }, + { + "node": "Orbit2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Orbit", + "type": "main", + "index": 0 + } + ] + ] + }, + "Orbit6": { + "main": [ + [ + { + "node": "Orbit7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Orbit8": { + "main": [ + [ + { + "node": "Orbit9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Orbit9": { + "main": [ + [ + { + "node": "Orbit10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Orbit11": { + "main": [ + [ + { + "node": "Orbit12", + "type": "main", + "index": 0 + }, + { + "node": "Orbit13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Orbit4": { + "main": [ + [ + { + "node": "Orbit11", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/123.json b/test-workflows/workflows/123.json new file mode 100644 index 0000000000..e102621cce --- /dev/null +++ b/test-workflows/workflows/123.json @@ -0,0 +1,234 @@ +{ + "createdAt": "2021-03-11T09:31:40.228Z", + "updatedAt": "2021-03-11T09:32:06.868Z", + "id": "123", + "name": "MongoDB:insert find update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "a355b2f8-5354-4e3f-9409-c29de450e49c" + }, + { + "parameters": { + "operation": "insert", + "collection": "TestCollection", + "fields": "id,name,valid" + }, + "name": "MongoDB", + "type": "n8n-nodes-base.mongoDb", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "mongoDb": { + "id": "90", + "name": "MongoDB creds" + } + }, + "id": "2b30fbfb-08dd-48ac-bec7-722457fec924" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=Test{{Date.now()}}" + } + ], + "number": [ + { + "name": "id", + "value": "={{Math.round(Math.random()*10000)}}" + } + ], + "boolean": [ + { + "name": "valid", + "value": "={{(Math.random()*100) > 50}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "notesInFlow": true, + "notes": "set document", + "id": "3a57b5c9-3f2e-43ef-a0ae-3598e1eb54b7" + }, + { + "parameters": { + "collection": "TestCollection" + }, + "name": "MongoDB1", + "type": "n8n-nodes-base.mongoDb", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "mongoDb": { + "id": "90", + "name": "MongoDB creds" + } + }, + "id": "6ede4036-3685-402e-abc3-3f2a95b23cfc" + }, + { + "parameters": { + "operation": "update", + "collection": "TestCollection", + "fields": "name" + }, + "name": "MongoDB2", + "type": "n8n-nodes-base.mongoDb", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "mongoDb": { + "id": "90", + "name": "MongoDB creds" + } + }, + "id": "8299beed-7163-4a92-9f41-b8c970bc320b" + }, + { + "parameters": { + "operation": "delete", + "collection": "TestCollection" + }, + "name": "MongoDB3", + "type": "n8n-nodes-base.mongoDb", + "typeVersion": 1, + "position": [ + 1200, + 300 + ], + "credentials": { + "mongoDb": { + "id": "90", + "name": "MongoDB creds" + } + }, + "id": "f77603b7-8d36-46bc-bcc5-604b63294778" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=UpdatedName{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "notesInFlow": true, + "notes": "update name attribut", + "id": "d32afa6f-35a1-492f-8185-21bef87b18f0" + } + ], + "connections": { + "MongoDB": { + "main": [ + [ + { + "node": "MongoDB1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "MongoDB", + "type": "main", + "index": 0 + } + ] + ] + }, + "MongoDB1": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "MongoDB2": { + "main": [ + [ + { + "node": "MongoDB3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "MongoDB2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/124.json b/test-workflows/workflows/124.json new file mode 100644 index 0000000000..e03dfb348b --- /dev/null +++ b/test-workflows/workflows/124.json @@ -0,0 +1,166 @@ +{ + "createdAt": "2021-03-11T12:18:29.698Z", + "updatedAt": "2021-03-11T12:18:29.698Z", + "id": "124", + "name": "QuestDB: insert executeQuery", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "97bc2a65-cef4-47d4-b986-8bbf54f8698d" + }, + { + "parameters": { + "table": "TestTable", + "columns": "id,name" + }, + "name": "QuestDB", + "type": "n8n-nodes-base.questDb", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "questDb": { + "id": "91", + "name": "QuestDB creds" + } + }, + "id": "da306e33-0ed0-4c94-b37e-2769511e28d1" + }, + { + "parameters": { + "values": { + "number": [ + { + "name": "id", + "value": "={{Math.round(Math.random()*1000)}}" + } + ], + "string": [ + { + "name": "name", + "value": "=Name{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "notesInFlow": true, + "notes": "prepare data", + "id": "53f41164-da16-4eae-a333-09166cfffeea" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "=SELECT * FROM TestTable WHERE id={{$node[\"QuestDB\"].json[\"id\"]}} LIMIT 1;" + }, + "name": "QuestDB1", + "type": "n8n-nodes-base.questDb", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "notesInFlow": true, + "credentials": { + "questDb": { + "id": "91", + "name": "QuestDB creds" + } + }, + "notes": "get data", + "id": "d40ddbdd-c531-469b-8470-06d93e4a72e2" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "=TRUNCATE TABLE TestTable;" + }, + "name": "QuestDB2", + "type": "n8n-nodes-base.questDb", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "notesInFlow": true, + "credentials": { + "questDb": { + "id": "91", + "name": "QuestDB creds" + } + }, + "notes": "delete data", + "id": "7cd8a74b-0305-4700-b9db-ddcb844aa40b" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "QuestDB", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuestDB": { + "main": [ + [ + { + "node": "QuestDB1", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuestDB1": { + "main": [ + [ + { + "node": "QuestDB2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/125.json b/test-workflows/workflows/125.json new file mode 100644 index 0000000000..2ae57db3a3 --- /dev/null +++ b/test-workflows/workflows/125.json @@ -0,0 +1,231 @@ +{ + "createdAt": "2021-03-11T13:25:33.615Z", + "updatedAt": "2021-11-12T13:06:28.032Z", + "id": "125", + "name": "Postgres: insert update executeQuery", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "17ac71e5-e7ee-46e2-bc71-65bcfb5d4a52" + }, + { + "parameters": { + "table": "testtable", + "columns": "id,name", + "additionalFields": {} + }, + "name": "Postgres", + "type": "n8n-nodes-base.postgres", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "postgres": { + "id": "92", + "name": "Postgres creds" + } + }, + "id": "7cab0391-d473-4d74-a771-6aad35b3240f" + }, + { + "parameters": { + "values": { + "number": [ + { + "name": "id", + "value": "={{Math.round(Math.random()*1000)}}" + } + ], + "string": [ + { + "name": "name", + "value": "=Name{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "b64bd579-b602-4ec5-8fcb-3e49514517a7" + }, + { + "parameters": { + "operation": "update", + "table": "testtable", + "columns": "id,name", + "additionalFields": {} + }, + "name": "Postgres1", + "type": "n8n-nodes-base.postgres", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "postgres": { + "id": "92", + "name": "Postgres creds" + } + }, + "id": "9013d993-4f74-42ca-bab2-7c1536205836" + }, + { + "parameters": { + "values": { + "number": [], + "string": [ + { + "name": "name", + "value": "=UpdatedName{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "id": "a6b9b7f5-453f-494d-b1db-7f4745f81233" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "SELECT * FROM public.testtable;", + "additionalFields": {} + }, + "name": "Postgres2", + "type": "n8n-nodes-base.postgres", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "credentials": { + "postgres": { + "id": "92", + "name": "Postgres creds" + } + }, + "id": "63302a61-6401-43fd-a4c5-f20b9feb68b8" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "=DELETE FROM public.testtable where id = $1;", + "additionalFields": { + "queryParams": "id" + } + }, + "name": "Postgres3", + "type": "n8n-nodes-base.postgres", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "credentials": { + "postgres": { + "id": "92", + "name": "Postgres creds" + } + }, + "id": "c31b730f-f21b-4eb3-88e0-cc649984a327" + } + ], + "connections": { + "Postgres": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Postgres", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Postgres1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Postgres1": { + "main": [ + [ + { + "node": "Postgres2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Postgres2": { + "main": [ + [ + { + "node": "Postgres3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/126.json b/test-workflows/workflows/126.json new file mode 100644 index 0000000000..bbd2557766 --- /dev/null +++ b/test-workflows/workflows/126.json @@ -0,0 +1,97 @@ +{ + "createdAt": "2021-03-11T14:51:32.026Z", + "updatedAt": "2021-03-18T10:28:03.209Z", + "id": "126", + "name": "Kafka", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "76f28c5d-1894-4d95-ab23-4e6e39bf69e9" + }, + { + "parameters": { + "topic": "=TopicTest{{Date.now()}}", + "headersUi": { + "headerValues": [] + }, + "options": { + "compression": true + } + }, + "name": "Kafka", + "type": "n8n-nodes-base.kafka", + "typeVersion": 1, + "position": [ + 710, + 300 + ], + "credentials": { + "kafka": { + "id": "93", + "name": "Kafka creds" + } + }, + "id": "9d37ab21-f676-4e88-8d71-3033d301ed62" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "input", + "value": "={{(new Date()).toISOString()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "id": "2d1bf06b-6d8e-4f82-b56f-7fde44b74007" + } + ], + "connections": { + "Set": { + "main": [ + [ + { + "node": "Kafka", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/127.json b/test-workflows/workflows/127.json new file mode 100644 index 0000000000..9c684250a1 --- /dev/null +++ b/test-workflows/workflows/127.json @@ -0,0 +1,95 @@ +{ + "createdAt": "2021-03-11T15:40:59.286Z", + "updatedAt": "2021-05-20T09:47:21.924Z", + "id": "127", + "name": "Rundeck:Job:execute getMetadata", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "f6b07b0d-8721-49de-8c02-39987174e2c4" + }, + { + "parameters": { + "jobid": "4dc20913-c26f-4060-afe9-6bb26dfd1a10", + "arguments": { + "arguments": [ + {} + ] + } + }, + "name": "Rundeck", + "type": "n8n-nodes-base.rundeck", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "rundeckApi": { + "id": "94", + "name": "Rundeck API creds" + } + }, + "id": "c1504f84-7203-426f-9eab-10ccde6bcd76" + }, + { + "parameters": { + "operation": "getMetadata", + "jobid": "4dc20913-c26f-4060-afe9-6bb26dfd1a10" + }, + "name": "Rundeck1", + "type": "n8n-nodes-base.rundeck", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "rundeckApi": { + "id": "94", + "name": "Rundeck API creds" + } + }, + "id": "425b0f49-4d3b-4b5e-a4b8-0dadda512663" + } + ], + "connections": { + "Rundeck": { + "main": [ + [ + { + "node": "Rundeck1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Rundeck", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/128.json b/test-workflows/workflows/128.json new file mode 100644 index 0000000000..20c96b06cd --- /dev/null +++ b/test-workflows/workflows/128.json @@ -0,0 +1,124 @@ +{ + "createdAt": "2021-03-11T17:20:04.889Z", + "updatedAt": "2021-03-11T17:22:00.219Z", + "id": "128", + "name": "Yourls:Url:shorten stats expand", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "04b33b0d-9424-4705-955d-c4a8087c055c" + }, + { + "parameters": { + "url": "=https://n8n.io/{{Date.now()}}", + "additionalFields": { + "title": "n8n-ulr with random suffix" + } + }, + "name": "Yourls", + "type": "n8n-nodes-base.yourls", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "yourlsApi": { + "id": "95", + "name": "Yourls API creds" + } + }, + "id": "d5e11a39-5fc4-4e33-b83e-9706e46c8aba" + }, + { + "parameters": { + "operation": "stats", + "shortUrl": "={{$node[\"Yourls\"].json[\"shorturl\"]}}" + }, + "name": "Yourls1", + "type": "n8n-nodes-base.yourls", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "yourlsApi": { + "id": "95", + "name": "Yourls API creds" + } + }, + "id": "c3e4bb2a-977c-4f7d-88ce-4954ece456c5" + }, + { + "parameters": { + "operation": "expand", + "shortUrl": "={{$node[\"Yourls\"].json[\"shorturl\"]}}" + }, + "name": "Yourls2", + "type": "n8n-nodes-base.yourls", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "yourlsApi": { + "id": "95", + "name": "Yourls API creds" + } + }, + "id": "a1126d46-f429-47e8-9a52-08549a8ed2da" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Yourls", + "type": "main", + "index": 0 + } + ] + ] + }, + "Yourls": { + "main": [ + [ + { + "node": "Yourls1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Yourls1": { + "main": [ + [ + { + "node": "Yourls2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/129.json b/test-workflows/workflows/129.json new file mode 100644 index 0000000000..0e5b693406 --- /dev/null +++ b/test-workflows/workflows/129.json @@ -0,0 +1,835 @@ +{ + "createdAt": "2021-03-12T09:33:57.650Z", + "updatedAt": "2021-05-25T14:06:03.846Z", + "id": "129", + "name": "NextCloud:NextCloud:Folder:create move copy delete list:File:upload move copy download delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 1120, + 250 + ], + "id": "4cbe8941-9b8e-4432-8592-24de1753c8aa" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "folder", + "path": "={{$node[\"Set\"].json[\"name\"]}}" + }, + "name": "Nextcloud", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 1470, + 250 + ], + "alwaysOutputData": true, + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "467f1321-8b33-4fc0-9e0c-e788d3659ea0" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "folder", + "operation": "move", + "path": "=/{{$node[\"Set\"].json[\"name\"]}}", + "toPath": "=/Updated{{$node[\"Set\"].json[\"name\"]}}" + }, + "name": "Nextcloud1", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 1770, + 250 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "2e715385-abea-4304-9e39-0e00443eddb0" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=Folder{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1270, + 250 + ], + "id": "79dabfd8-10a5-47c6-90aa-fa957f99db71" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "folder", + "operation": "copy", + "path": "=/Updated{{$node[\"Set\"].json[\"name\"]}}", + "toPath": "=/Copied{{$node[\"Set\"].json[\"name\"]}}" + }, + "name": "Nextcloud2", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 2070, + 250 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "7a111975-d958-40d8-9f7c-11b7d36650ba" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "folder", + "operation": "delete", + "path": "=/Copied{{$node[\"Set\"].json[\"name\"]}}" + }, + "name": "Nextcloud3", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 2220, + 250 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "b3356660-2aa2-4041-9756-629a45268e1d" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "folder", + "operation": "list", + "path": "=/Updated{{$node[\"Set\"].json[\"name\"]}}" + }, + "name": "Nextcloud4", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 4000, + 240 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "87118dec-fdd8-494b-926d-5870193e456f" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "folder", + "operation": "delete", + "path": "=/Updated{{$node[\"Set\"].json[\"name\"]}}" + }, + "name": "Nextcloud5", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 4000, + 400 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "83d025a2-bc96-4c24-93ab-bcf6acd1d63d" + }, + { + "parameters": { + "authentication": "oAuth2", + "path": "=/Updated{{$node[\"Set\"].json[\"name\"]}}/{{$node[\"Set1\"].json[\"name\"]}}", + "binaryDataUpload": true + }, + "name": "Nextcloud6", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 2820, + 300 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "4142443d-f9d7-4efd-a43b-66d7dfc5df4e" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "string": [ + { + "name": "name", + "value": "=File{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 2520, + 300 + ], + "id": "9ca67953-2298-4400-9439-93e09a64bffe" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 2670, + 300 + ], + "id": "008eb1cf-a715-4764-8dee-ac713bd23387" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "move", + "path": "=/Updated{{$node[\"Set\"].json[\"name\"]}}/{{$node[\"Set1\"].json[\"name\"]}}", + "toPath": "=/Updated{{$node[\"Set\"].json[\"name\"]}}/Moved{{$node[\"Set1\"].json[\"name\"]}}" + }, + "name": "Nextcloud7", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 3120, + 300 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "8f2b1106-2e0c-4da7-915d-27356091ec81" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "copy", + "path": "=/Updated{{$node[\"Set\"].json[\"name\"]}}/Moved{{$node[\"Set1\"].json[\"name\"]}}", + "toPath": "=/Updated{{$node[\"Set\"].json[\"name\"]}}/Copied{{$node[\"Set1\"].json[\"name\"]}}" + }, + "name": "Nextcloud8", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 3270, + 300 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "4f8a6919-c58f-4b54-ba83-9ad4f50bc348" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "download", + "path": "=/Updated{{$node[\"Set\"].json[\"name\"]}}/Moved{{$node[\"Set1\"].json[\"name\"]}}" + }, + "name": "Nextcloud9", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 3570, + 300 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "d6c5dfb2-4bd9-4b40-98b5-adee1e9371c8" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "delete", + "path": "=/Updated{{$node[\"Set\"].json[\"name\"]}}/Moved{{$node[\"Set1\"].json[\"name\"]}}" + }, + "name": "Nextcloud10", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 3720, + 300 + ], + "credentials": { + "nextCloudOAuth2Api": { + "id": "96", + "name": "NextCloud OAuth2 API creds" + } + }, + "id": "804800a7-6329-4a4d-99cf-da2dc38a9096" + }, + { + "parameters": { + "resource": "user", + "userId": "=Username{{Date.now()}}", + "email": "=email{{Date.now()}}@fakeemail.com", + "additionalFields": { + "displayName": "=Username{{Date.now()}}" + } + }, + "name": "Nextcloud11", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 1270, + 450 + ], + "credentials": { + "nextCloudApi": { + "id": "133", + "name": "NextCloud API creds" + } + }, + "id": "605413ab-2e1b-4ac2-801e-4a51d5d8287e" + }, + { + "parameters": { + "resource": "user", + "operation": "get", + "userId": "={{$node[\"Nextcloud11\"].json[\"id\"]}}" + }, + "name": "Nextcloud12", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 1570, + 450 + ], + "credentials": { + "nextCloudApi": { + "id": "133", + "name": "NextCloud API creds" + } + }, + "id": "c0134c0b-74b2-4f67-9ecf-570f052f5aa6" + }, + { + "parameters": { + "resource": "user", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Nextcloud13", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 1720, + 450 + ], + "credentials": { + "nextCloudApi": { + "id": "133", + "name": "NextCloud API creds" + } + }, + "id": "da45a102-91e0-41d7-858e-1680e7af104e" + }, + { + "parameters": { + "resource": "user", + "operation": "update", + "userId": "={{$node[\"Nextcloud11\"].json[\"id\"]}}", + "updateFields": { + "field": { + "key": "website", + "value": "http://community.n8n.io" + } + } + }, + "name": "Nextcloud14", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 2020, + 450 + ], + "credentials": { + "nextCloudApi": { + "id": "133", + "name": "NextCloud API creds" + } + }, + "id": "35b61a88-a9d7-4902-9f5e-b9db05ee6f1b" + }, + { + "parameters": { + "resource": "user", + "operation": "delete", + "userId": "={{$node[\"Nextcloud11\"].json[\"id\"]}}" + }, + "name": "Nextcloud15", + "type": "n8n-nodes-base.nextCloud", + "typeVersion": 1, + "position": [ + 2170, + 450 + ], + "credentials": { + "nextCloudApi": { + "id": "133", + "name": "NextCloud API creds" + } + }, + "id": "c983c376-d307-406d-8134-3469a35b7991" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 1420, + 450 + ], + "typeVersion": 1, + "id": "7024a28f-fb45-45ac-8fd4-af00b229fc25" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 1870, + 450 + ], + "typeVersion": 1, + "id": "42756f4c-e881-4738-b350-58c1630e5975" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn [{json:{}}];" + }, + "name": "Sleep 8 Seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 3860, + 240 + ], + "typeVersion": 1, + "id": "8b8ad7de-70c6-4098-bdf0-487d66827f86" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn [{json:{}}];" + }, + "name": "Sleep 8 Seconds3", + "type": "n8n-nodes-base.function", + "position": [ + 3420, + 300 + ], + "typeVersion": 1, + "id": "5398a6ef-f8ce-4e74-9f2e-6c445875f109" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn [{json:{}}];" + }, + "name": "Sleep 8 Seconds4", + "type": "n8n-nodes-base.function", + "position": [ + 2960, + 300 + ], + "typeVersion": 1, + "id": "f31b62e7-9c78-427a-b3b1-b3373cb86bb8" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn [{json:{}}];" + }, + "name": "Sleep 8 Seconds5", + "type": "n8n-nodes-base.function", + "position": [ + 2370, + 300 + ], + "typeVersion": 1, + "id": "add90777-a9c7-4c56-83b7-44b10f71bb3f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn [{json:{}}];" + }, + "name": "Sleep 8 Seconds6", + "type": "n8n-nodes-base.function", + "position": [ + 1920, + 250 + ], + "typeVersion": 1, + "id": "3e008e1f-e966-4389-8318-91a81fb9d8a7" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn [{json:{}}];" + }, + "name": "Sleep 8 Seconds7", + "type": "n8n-nodes-base.function", + "position": [ + 1620, + 250 + ], + "typeVersion": 1, + "id": "f7461433-5a21-459c-bfbb-e57bfaae6eed" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + }, + { + "node": "Nextcloud11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud": { + "main": [ + [ + { + "node": "Sleep 8 Seconds7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Nextcloud", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud1": { + "main": [ + [ + { + "node": "Sleep 8 Seconds6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud2": { + "main": [ + [ + { + "node": "Nextcloud3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud3": { + "main": [ + [ + { + "node": "Sleep 8 Seconds5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud4": { + "main": [ + [] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud6": { + "main": [ + [ + { + "node": "Sleep 8 Seconds4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Nextcloud6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud7": { + "main": [ + [ + { + "node": "Nextcloud8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud8": { + "main": [ + [ + { + "node": "Sleep 8 Seconds3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud9": { + "main": [ + [ + { + "node": "Nextcloud10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud10": { + "main": [ + [ + { + "node": "Sleep 8 Seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud11": { + "main": [ + [ + { + "node": "Sleep 8 Seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud12": { + "main": [ + [ + { + "node": "Nextcloud13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud13": { + "main": [ + [ + { + "node": "Sleep 8 Seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Nextcloud14": { + "main": [ + [ + { + "node": "Nextcloud15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds": { + "main": [ + [ + { + "node": "Nextcloud12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds1": { + "main": [ + [ + { + "node": "Nextcloud14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds2": { + "main": [ + [ + { + "node": "Nextcloud4", + "type": "main", + "index": 0 + }, + { + "node": "Nextcloud5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds3": { + "main": [ + [ + { + "node": "Nextcloud9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds4": { + "main": [ + [ + { + "node": "Nextcloud7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds5": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds6": { + "main": [ + [ + { + "node": "Nextcloud2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds7": { + "main": [ + [ + { + "node": "Nextcloud1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/130.json b/test-workflows/workflows/130.json new file mode 100644 index 0000000000..b8a75314f2 --- /dev/null +++ b/test-workflows/workflows/130.json @@ -0,0 +1,883 @@ +{ + "createdAt": "2021-03-12T12:14:08.727Z", + "updatedAt": "2021-03-12T12:35:37.990Z", + "id": "130", + "name": "Wekan:Board:create get getAll delete:List:create get getAll delete:Card:create update get getAll delete:CardComment:create get getAll delete:CheckList:create get getAll delete:CheckListItem:get update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d1be5d3e-3071-482a-a8d0-6cd3e1784efd" + }, + { + "parameters": { + "resource": "board", + "title": "=Board{{Date.now()}}", + "owner": "E27bvzwJ5A26xfAPG", + "additionalFields": {} + }, + "name": "Wekan", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 490, + 280 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "1013b4a2-232f-417c-ad61-c424a10eee2a" + }, + { + "parameters": { + "resource": "board", + "operation": "get", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}" + }, + "name": "Wekan1", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 650, + 280 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "0bd0df50-577c-4f42-b653-a933059d5d94" + }, + { + "parameters": { + "resource": "board", + "operation": "getAll", + "IdUser": "E27bvzwJ5A26xfAPG", + "limit": 1 + }, + "name": "Wekan2", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 800, + 280 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "189c8afb-3890-4755-aec7-17577b14f6e7" + }, + { + "parameters": { + "resource": "board", + "operation": "delete", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}" + }, + "name": "Wekan3", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 3500, + 260 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "302a053a-5456-46c0-b6bf-47e3fad8d061" + }, + { + "parameters": { + "resource": "list", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "title": "=List{{Date.now()}}" + }, + "name": "Wekan4", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 950, + 400 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "901bd245-0434-43a4-9c6e-2e0d0012f25b" + }, + { + "parameters": { + "resource": "list", + "operation": "get", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}" + }, + "name": "Wekan5", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 1100, + 400 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "1ad2c40f-606f-468e-b304-f67ba7f09857" + }, + { + "parameters": { + "resource": "list", + "operation": "getAll", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "limit": 1 + }, + "name": "Wekan6", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 1250, + 400 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "7e0bf795-d18a-44fc-b1d0-07dc726d1b9a" + }, + { + "parameters": { + "resource": "list", + "operation": "delete", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}" + }, + "name": "Wekan7", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 3350, + 400 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "4dff32d6-2cfd-4cf7-a5f4-cb670c8f5283" + }, + { + "parameters": { + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "title": "=Card{{Date.now()}}", + "swimlaneId": "CJ44cd7gPRf8qT3Xb", + "authorId": "E27bvzwJ5A26xfAPG", + "additionalFields": {} + }, + "name": "Wekan8", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 1400, + 500 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "03ad5f1f-23df-431c-a98f-3fd966dcd4fa" + }, + { + "parameters": { + "operation": "update", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "updateFields": { + "title": "=UpdatedCard{{Date.now()}}" + } + }, + "name": "Wekan9", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 1550, + 500 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "c0297bac-351b-4af3-ad47-1e4a3f504828" + }, + { + "parameters": { + "operation": "get", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}" + }, + "name": "Wekan10", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 1700, + 500 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "fd68635a-fbf9-4d53-a835-1dc9be3b6fa6" + }, + { + "parameters": { + "operation": "getAll", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "fromObject": "list", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "limit": 1 + }, + "name": "Wekan11", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 1850, + 500 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "da544079-7689-423e-8990-3b886d44d040" + }, + { + "parameters": { + "operation": "delete", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}" + }, + "name": "Wekan12", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 3220, + 500 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "b33dde7e-b503-480b-9dc5-3cf6b68d3b02" + }, + { + "parameters": { + "resource": "cardComment", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "authorId": "E27bvzwJ5A26xfAPG", + "comment": "=CardComment{{Date.now()}}" + }, + "name": "Wekan13", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2000, + 650 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "56c3500d-d9d3-49db-a6cd-fe4558c901df" + }, + { + "parameters": { + "resource": "cardComment", + "operation": "get", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "commentId": "={{$node[\"Wekan13\"].json[\"_id\"]}}" + }, + "name": "Wekan14", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2150, + 650 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "995809d9-3fb6-4968-9590-c4b929e83352" + }, + { + "parameters": { + "resource": "cardComment", + "operation": "getAll", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "limit": 1 + }, + "name": "Wekan15", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2300, + 650 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "1d3d120f-17eb-4f17-9513-cf99d2bd5068" + }, + { + "parameters": { + "resource": "cardComment", + "operation": "delete", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "commentId": "={{$node[\"Wekan13\"].json[\"_id\"]}}" + }, + "name": "Wekan16", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2450, + 650 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "d0960908-6aaf-4284-a2a3-0c2bb305afd7" + }, + { + "parameters": { + "resource": "checklist", + "operation": "create", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "title": "=Checklist{{Date.now()}}", + "items": [ + "=ChecklistItem{{Date.now()}}" + ] + }, + "name": "Wekan17", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2000, + 350 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "93b5ad63-5527-49b2-8803-d91136052169" + }, + { + "parameters": { + "resource": "checklist", + "operation": "get", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "checklistId": "={{$node[\"Wekan17\"].json[\"_id\"]}}" + }, + "name": "Wekan18", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2150, + 350 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "cf310149-4468-4109-9dad-620030f49c4f" + }, + { + "parameters": { + "resource": "checklist", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "limit": 1 + }, + "name": "Wekan19", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2300, + 350 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "34c95cdf-0dd2-43d2-8635-e5cc36fcb6d8" + }, + { + "parameters": { + "resource": "checklist", + "operation": "delete", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "checklistId": "={{$node[\"Wekan17\"].json[\"_id\"]}}" + }, + "name": "Wekan20", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2900, + 350 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "e8a93285-5090-4dff-81d6-c6dea77512af" + }, + { + "parameters": { + "resource": "checklistItem", + "operation": "get", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "checklistId": "={{$node[\"Wekan17\"].json[\"_id\"]}}", + "checklistItemId": "={{$node[\"Wekan18\"].json[\"items\"][0][\"_id\"]}}" + }, + "name": "Wekan21", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2450, + 450 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "8059fe8f-a56d-4b12-9129-6bca650a56f5" + }, + { + "parameters": { + "resource": "checklistItem", + "operation": "update", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "checklistId": "={{$node[\"Wekan17\"].json[\"_id\"]}}", + "checklistItemId": "={{$node[\"Wekan18\"].json[\"items\"][0][\"_id\"]}}", + "updateFields": { + "isFinished": true + } + }, + "name": "Wekan22", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2600, + 450 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "02ca495d-50c2-4b96-b66a-287f630c95c5" + }, + { + "parameters": { + "resource": "checklistItem", + "operation": "delete", + "boardId": "={{$node[\"Wekan\"].json[\"_id\"]}}", + "listId": "={{$node[\"Wekan4\"].json[\"_id\"]}}", + "cardId": "={{$node[\"Wekan8\"].json[\"_id\"]}}", + "checklistId": "={{$node[\"Wekan17\"].json[\"_id\"]}}", + "checklistItemId": "={{$node[\"Wekan18\"].json[\"items\"][0][\"_id\"]}}" + }, + "name": "Wekan23", + "type": "n8n-nodes-base.wekan", + "typeVersion": 1, + "position": [ + 2750, + 450 + ], + "credentials": { + "wekanApi": { + "id": "97", + "name": "Wekan API creds" + } + }, + "id": "0e35867f-089c-4a95-985a-1aeafe45cd6e" + }, + { + "parameters": { + "mode": "wait" + }, + "name": "Merge", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 3050, + 500 + ], + "id": "a72e478c-ae36-4775-9568-494f34ea4edc" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Wekan", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan": { + "main": [ + [ + { + "node": "Wekan1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan1": { + "main": [ + [ + { + "node": "Wekan2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan2": { + "main": [ + [ + { + "node": "Wekan4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan4": { + "main": [ + [ + { + "node": "Wekan5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan5": { + "main": [ + [ + { + "node": "Wekan6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan6": { + "main": [ + [ + { + "node": "Wekan8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan7": { + "main": [ + [ + { + "node": "Wekan3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan8": { + "main": [ + [ + { + "node": "Wekan9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan9": { + "main": [ + [ + { + "node": "Wekan10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan10": { + "main": [ + [ + { + "node": "Wekan11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan12": { + "main": [ + [ + { + "node": "Wekan7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan11": { + "main": [ + [ + { + "node": "Wekan13", + "type": "main", + "index": 0 + }, + { + "node": "Wekan17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan13": { + "main": [ + [ + { + "node": "Wekan14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan14": { + "main": [ + [ + { + "node": "Wekan15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan16": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Wekan17": { + "main": [ + [ + { + "node": "Wekan18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan18": { + "main": [ + [ + { + "node": "Wekan19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan20": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan15": { + "main": [ + [ + { + "node": "Wekan16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan19": { + "main": [ + [ + { + "node": "Wekan21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan21": { + "main": [ + [ + { + "node": "Wekan22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan22": { + "main": [ + [ + { + "node": "Wekan23", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wekan23": { + "main": [ + [ + { + "node": "Wekan20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Merge": { + "main": [ + [ + { + "node": "Wekan12", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/131.json b/test-workflows/workflows/131.json new file mode 100644 index 0000000000..fa9498f18f --- /dev/null +++ b/test-workflows/workflows/131.json @@ -0,0 +1,65 @@ +{ + "createdAt": "2021-03-12T15:30:32.231Z", + "updatedAt": "2021-03-12T15:30:32.231Z", + "id": "131", + "name": "Line:Notification:send", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "b97b22de-c820-46c3-bd9a-9ccd77d9fb2f" + }, + { + "parameters": { + "message": "=Notification{{Date.now()}}", + "additionalFields": {} + }, + "name": "Line", + "type": "n8n-nodes-base.line", + "typeVersion": 1, + "position": [ + 480, + 300 + ], + "credentials": { + "lineNotifyOAuth2Api": { + "id": "99", + "name": "Line Notify OAuth2 API" + } + }, + "id": "bda3f612-99db-4f50-86ec-71f3f7e26917" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Line", + "type": "main", + "index": 0 + } + ] + ] + }, + "Line": { + "main": [ + [] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/132.json b/test-workflows/workflows/132.json new file mode 100644 index 0000000000..4d5319b069 --- /dev/null +++ b/test-workflows/workflows/132.json @@ -0,0 +1,91 @@ +{ + "createdAt": "2021-03-12T15:55:16.919Z", + "updatedAt": "2021-03-12T15:55:16.919Z", + "id": "132", + "name": "Mandrill:Message:sendTemplate sendHTML", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d6242130-9d76-4db0-8fc8-5b2cbd24b5fe" + }, + { + "parameters": { + "template": "testtemplate", + "fromEmail": "=random{{Date.now()}}@email.test", + "toEmail": "=nodeqa{{Date.now()}}@email.test", + "options": {} + }, + "name": "Mandrill", + "type": "n8n-nodes-base.mandrill", + "typeVersion": 1, + "position": [ + 500, + 250 + ], + "credentials": { + "mandrillApi": { + "id": "100", + "name": "Mandrill API creds" + } + }, + "id": "e31f6f3e-eee2-4047-90dc-acc08c80438d" + }, + { + "parameters": { + "operation": "sendHtml", + "fromEmail": "=random{{Date.now()}}@email.test", + "toEmail": "=nodeqa{{Date.now()}}@email.test", + "options": { + "html": "=

This is a the html email from n8n workflow

" + } + }, + "name": "Mandrill1", + "type": "n8n-nodes-base.mandrill", + "typeVersion": 1, + "position": [ + 500, + 400 + ], + "credentials": { + "mandrillApi": { + "id": "100", + "name": "Mandrill API creds" + } + }, + "id": "da056d97-7a2b-457d-8236-5ce62f35ab17" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Mandrill", + "type": "main", + "index": 0 + }, + { + "node": "Mandrill1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/133.json b/test-workflows/workflows/133.json new file mode 100644 index 0000000000..45bf8e484b --- /dev/null +++ b/test-workflows/workflows/133.json @@ -0,0 +1,61 @@ +{ + "createdAt": "2021-03-15T08:20:13.922Z", + "updatedAt": "2021-03-15T08:20:13.922Z", + "id": "133", + "name": "Twilio:SMS:send", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "b7004365-30c6-4792-80ca-7c9ee2eb87a4" + }, + { + "parameters": { + "from": "+15005550006", + "to": "+15005550006", + "message": "=Message{{Date.now()}}" + }, + "name": "Twilio", + "type": "n8n-nodes-base.twilio", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "twilioApi": { + "id": "101", + "name": "Twilio API creds" + } + }, + "id": "6f7e0239-82e7-4b9a-85f2-39ed23ff28b8" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Twilio", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/134.json b/test-workflows/workflows/134.json new file mode 100644 index 0000000000..ebaa556046 --- /dev/null +++ b/test-workflows/workflows/134.json @@ -0,0 +1,262 @@ +{ + "createdAt": "2021-03-15T08:59:35.889Z", + "updatedAt": "2021-04-01T15:38:45.311Z", + "id": "134", + "name": "TravisCI:Build:trigger getAll get restart cancel", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "efbe46b1-9480-434d-b571-430942f31364" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "additionalFields": { + "order": "asc", + "sortBy": "id" + } + }, + "name": "TravisCI", + "type": "n8n-nodes-base.travisCi", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "travisCiApi": { + "id": "102", + "name": "Travis API" + } + }, + "id": "d772b5ee-80af-4627-9278-034a1237da92" + }, + { + "parameters": { + "operation": "get", + "buildId": "={{$node[\"TravisCI\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "TravisCI1", + "type": "n8n-nodes-base.travisCi", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "travisCiApi": { + "id": "102", + "name": "Travis API" + } + }, + "id": "df4d7fe1-85f5-4908-a609-faa41a13a9d1" + }, + { + "parameters": { + "operation": "trigger", + "slug": "nodemationqa/nodeQA", + "branch": "master", + "additionalFields": {} + }, + "name": "TravisCI2", + "type": "n8n-nodes-base.travisCi", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "travisCiApi": { + "id": "102", + "name": "Travis API" + } + }, + "id": "04e656d2-ac8b-4b4e-995b-a167be00ddd2" + }, + { + "parameters": { + "operation": "restart", + "buildId": "={{$node[\"TravisCI\"].json[\"id\"]}}" + }, + "name": "TravisCI3", + "type": "n8n-nodes-base.travisCi", + "typeVersion": 1, + "position": [ + 1200, + 300 + ], + "credentials": { + "travisCiApi": { + "id": "102", + "name": "Travis API" + } + }, + "id": "7fbaf00c-202f-4e95-9645-c8690ab5c829" + }, + { + "parameters": { + "buildId": "={{$node[\"TravisCI\"].json[\"id\"]}}" + }, + "name": "TravisCI4", + "type": "n8n-nodes-base.travisCi", + "typeVersion": 1, + "position": [ + 1500, + 300 + ], + "credentials": { + "travisCiApi": { + "id": "102", + "name": "Travis API" + } + }, + "id": "0e5565a4-d5cd-4471-aa01-740cf2f45e43" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(2000);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 2 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 600, + 300 + ], + "typeVersion": 1, + "id": "b84a023d-475e-42ac-888a-e0c43d13e10e" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(2000);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 2 Seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 1050, + 300 + ], + "typeVersion": 1, + "id": "2303fc2b-2701-44b7-98ed-139094b9c457" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(2000);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 2 Seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 1350, + 300 + ], + "typeVersion": 1, + "id": "3bdb67df-5473-42f6-aacb-5125ac0483b7" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "TravisCI2", + "type": "main", + "index": 0 + } + ] + ] + }, + "TravisCI": { + "main": [ + [ + { + "node": "TravisCI1", + "type": "main", + "index": 0 + } + ] + ] + }, + "TravisCI2": { + "main": [ + [ + { + "node": "Sleep 2 Seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 2 Seconds": { + "main": [ + [ + { + "node": "TravisCI", + "type": "main", + "index": 0 + } + ] + ] + }, + "TravisCI1": { + "main": [ + [ + { + "node": "Sleep 2 Seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 2 Seconds1": { + "main": [ + [ + { + "node": "TravisCI3", + "type": "main", + "index": 0 + } + ] + ] + }, + "TravisCI3": { + "main": [ + [ + { + "node": "Sleep 2 Seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 2 Seconds2": { + "main": [ + [ + { + "node": "TravisCI4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/135.json b/test-workflows/workflows/135.json new file mode 100644 index 0000000000..96fb1814cc --- /dev/null +++ b/test-workflows/workflows/135.json @@ -0,0 +1,225 @@ +{ + "createdAt": "2021-03-15T11:07:38.626Z", + "updatedAt": "2021-07-15T15:43:31.557Z", + "id": "135", + "name": "Cortex:Analyzer:execute:Job:report get:Responder:execute", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "746052e5-aa2d-44d8-9868-51eac17d07b2" + }, + { + "parameters": { + "analyzer": "f4abc1b633b80f45af165970793fd4fd::Abuse_Finder_3_0", + "observableType": "ip", + "observableValue": "129.178.188.205", + "tlp": 1, + "additionalFields": {} + }, + "name": "Cortex", + "type": "n8n-nodes-base.cortex", + "typeVersion": 1, + "position": [ + 490, + 300 + ], + "credentials": { + "cortexApi": { + "id": "103", + "name": "Cortex API creds" + } + }, + "id": "a020251f-8fc4-4257-8038-0092bb07209b" + }, + { + "parameters": { + "resource": "job", + "operation": "report", + "jobId": "={{$node[\"Cortex\"].json[\"_id\"]}}" + }, + "name": "Cortex1", + "type": "n8n-nodes-base.cortex", + "typeVersion": 1, + "position": [ + 640, + 300 + ], + "credentials": { + "cortexApi": { + "id": "103", + "name": "Cortex API creds" + } + }, + "id": "c32de960-141e-4fdb-8b0f-dfd08fc3b28a" + }, + { + "parameters": { + "resource": "job", + "jobId": "={{$node[\"Cortex\"].json[\"_id\"]}}" + }, + "name": "Cortex2", + "type": "n8n-nodes-base.cortex", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "cortexApi": { + "id": "103", + "name": "Cortex API creds" + } + }, + "id": "c2072875-c609-4eb8-88e7-2bba3a8d0a49" + }, + { + "parameters": { + "resource": "responder", + "responder": "fbe415a38eb649eb7df174aa11a32cfe::KnowBe4_1_0", + "entityType": "case_artifact", + "parameters": { + "values": { + "dataType": "ip", + "data": "129.178.188.205", + "message": "test", + "startDate": "2021-03-23T23:00:00.000Z", + "ioc": true, + "status": "Ok" + } + } + }, + "name": "Cortex3", + "type": "n8n-nodes-base.cortex", + "typeVersion": 1, + "position": [ + 950, + 300 + ], + "credentials": { + "cortexApi": { + "id": "103", + "name": "Cortex API creds" + } + }, + "id": "47ccf815-64bd-469f-b836-6d3749cfc7cb" + }, + { + "parameters": { + "resource": "job", + "operation": "report", + "jobId": "={{$node[\"Cortex3\"].json[\"_id\"]}}" + }, + "name": "Cortex4", + "type": "n8n-nodes-base.cortex", + "typeVersion": 1, + "position": [ + 1250, + 300 + ], + "credentials": { + "cortexApi": { + "id": "103", + "name": "Cortex API creds" + } + }, + "disabled": true, + "id": "efec07a1-aa91-49e0-9c2c-3f2c222fa90f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\nawait sleep(10000);\n// Output data\nreturn items;" + }, + "name": "Sleep 4 seconds", + "type": "n8n-nodes-base.function", + "position": [ + 1100, + 300 + ], + "typeVersion": 1, + "id": "68f7efca-c385-4642-814f-3123f7e892ee" + } + ], + "connections": { + "Cortex": { + "main": [ + [ + { + "node": "Cortex1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Cortex1": { + "main": [ + [ + { + "node": "Cortex2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Cortex2": { + "main": [ + [ + { + "node": "Cortex3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Cortex", + "type": "main", + "index": 0 + } + ] + ] + }, + "Cortex3": { + "main": [ + [ + { + "node": "Sleep 4 seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 4 seconds": { + "main": [ + [ + { + "node": "Cortex4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/136.json b/test-workflows/workflows/136.json new file mode 100644 index 0000000000..5adee69b71 --- /dev/null +++ b/test-workflows/workflows/136.json @@ -0,0 +1,155 @@ +{ + "createdAt": "2021-03-15T11:39:24.637Z", + "updatedAt": "2021-03-15T11:39:24.637Z", + "id": "136", + "name": "Pushbullet:Push:create update getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "c3bbbd0f-e93f-46ff-b36c-0ed72f1d207a" + }, + { + "parameters": { + "title": "=Push{{Date.now()}}", + "body": "=Body{{Date.now()}}" + }, + "name": "Pushbullet", + "type": "n8n-nodes-base.pushbullet", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "pushbulletOAuth2Api": { + "id": "104", + "name": "Pushbullet OAuth2 API creds" + } + }, + "id": "d2143ac2-b023-47b1-93ec-281bc86b446d" + }, + { + "parameters": { + "operation": "update", + "pushId": "={{$node[\"Pushbullet\"].json[\"iden\"]}}", + "dismissed": true + }, + "name": "Pushbullet1", + "type": "n8n-nodes-base.pushbullet", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "pushbulletOAuth2Api": { + "id": "104", + "name": "Pushbullet OAuth2 API creds" + } + }, + "id": "bc47ad37-e9bf-4fe0-a595-7a94bc02c193" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Pushbullet2", + "type": "n8n-nodes-base.pushbullet", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "pushbulletOAuth2Api": { + "id": "104", + "name": "Pushbullet OAuth2 API creds" + } + }, + "id": "2293cc5c-1d5e-4d79-a7f4-8d48cf86beaf" + }, + { + "parameters": { + "operation": "delete", + "pushId": "={{$node[\"Pushbullet\"].json[\"iden\"]}}" + }, + "name": "Pushbullet3", + "type": "n8n-nodes-base.pushbullet", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "pushbulletOAuth2Api": { + "id": "104", + "name": "Pushbullet OAuth2 API creds" + } + }, + "id": "72869e7c-e410-4115-bca9-dec16c90cb3f" + } + ], + "connections": { + "Pushbullet": { + "main": [ + [ + { + "node": "Pushbullet1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pushbullet1": { + "main": [ + [ + { + "node": "Pushbullet2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pushbullet2": { + "main": [ + [ + { + "node": "Pushbullet3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Pushbullet", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/137.json b/test-workflows/workflows/137.json new file mode 100644 index 0000000000..91d7a6c069 --- /dev/null +++ b/test-workflows/workflows/137.json @@ -0,0 +1,1230 @@ +{ + "createdAt": "2021-03-16T15:47:37.279Z", + "updatedAt": "2021-05-21T09:19:02.974Z", + "id": "137", + "name": "TheHive[v3]:Alert:create update get getAll promote merge:Case:create update get getAll:Observable:create update get search getAll:Task:create update get search getAll:Log:create get getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 400 + ], + "id": "ade44fe5-e6a3-407d-9a19-d236c09d053e" + }, + { + "parameters": { + "title": "=Title{{Date.now()}}", + "description": "desc", + "date": "={{(new Date()).toISOString()}}", + "tags": "test", + "type": "test", + "source": "n8n", + "sourceRef": "={{Date.now().toString()}}", + "additionalFields": {} + }, + "name": "TheHive", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "7a175f98-ba4d-4e86-8290-1961286069a3" + }, + { + "parameters": { + "operation": "update", + "id": "={{$node[\"TheHive\"].json[\"id\"]}}", + "updateFields": { + "tlp": 1 + } + }, + "name": "TheHive1", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "07153eab-082e-4c15-a3a8-0352ce78d39a" + }, + { + "parameters": { + "operation": "get", + "id": "={{$node[\"TheHive\"].json[\"id\"]}}" + }, + "name": "TheHive2", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "55e955b5-08e5-45ac-a3e9-42a2791e0e86" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {}, + "filters": {} + }, + "name": "TheHive3", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1180, + 300 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "84a55d17-c067-4d5c-b199-378ef1a5e37c" + }, + { + "parameters": { + "operation": "promote", + "id": "={{$node[\"TheHive\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "TheHive4", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1330, + 300 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "0ca31228-af2d-451f-9c65-a7c8e910639d" + }, + { + "parameters": { + "operation": "merge", + "id": "={{$node[\"TheHive30\"].json[\"id\"]}}", + "caseId": "={{$node[\"TheHive29\"].json[\"id\"]}}" + }, + "name": "TheHive5", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 940, + 150 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "d11d3928-e84f-4a7b-bee0-01a6f7903741" + }, + { + "parameters": { + "resource": "case", + "operation": "create", + "title": "=Title{{Date.now()}}", + "description": "desc", + "startDate": "={{(new Date()).toISOString()}}", + "owner": "nodeqa", + "tags": "test", + "options": {} + }, + "name": "TheHive6", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 450, + 600 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "cf77cd22-62ec-461f-8685-35120833d1d8" + }, + { + "parameters": { + "resource": "case", + "operation": "update", + "id": "={{$node[\"TheHive6\"].json[\"caseId\"]}}", + "updateFields": { + "tlp": 3 + } + }, + "name": "TheHive7", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 600, + 600 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "1fceb11e-94ea-42b2-95d0-30e9357a8aa0" + }, + { + "parameters": { + "resource": "case", + "operation": "get", + "id": "={{$node[\"TheHive6\"].json[\"caseId\"]}}" + }, + "name": "TheHive8", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 910, + 600 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "52c085ae-49c1-49b9-9be5-1350d065868c" + }, + { + "parameters": { + "resource": "case", + "limit": 1, + "options": {}, + "filters": {} + }, + "name": "TheHive9", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1060, + 600 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "ecd0b218-41b2-4e43-9553-b17da8942a16" + }, + { + "parameters": { + "resource": "case", + "operation": "executeResponder", + "id": "={{$node[\"TheHive6\"].json[\"id\"]}}", + "responder": "23bc4aef9aa1c88d6624004a3d04aeae" + }, + "name": "TheHive10", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1210, + 600 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "4520dc3b-153c-4239-8e6b-814dc39a324a" + }, + { + "parameters": { + "resource": "task", + "operation": "create", + "caseId": "={{$node[\"TheHive6\"].json[\"caseId\"]}}", + "title": "=Task{{Date.now()}}", + "options": {} + }, + "name": "TheHive11", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 600, + 770 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "c0efb989-b9b1-4cf6-84f5-d30e565eb05b" + }, + { + "parameters": { + "resource": "task", + "operation": "update", + "id": "={{$node[\"TheHive11\"].json[\"id\"]}}", + "updateFields": { + "status": "InProgress" + } + }, + "name": "TheHive12", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 750, + 770 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "79a320c7-796b-4380-bbfd-af5ef73c308c" + }, + { + "parameters": { + "resource": "task", + "operation": "get", + "id": "={{$node[\"TheHive11\"].json[\"id\"]}}" + }, + "name": "TheHive13", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1050, + 770 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "7c5e1c7c-a9a2-4f67-b1d0-62ab12ea4ce9" + }, + { + "parameters": { + "resource": "task", + "operation": "search", + "limit": 1, + "options": {}, + "filters": {} + }, + "name": "TheHive14", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1370, + 770 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "a5b3618e-5c12-480c-975d-cdf58f33e121" + }, + { + "parameters": { + "resource": "log", + "operation": "create", + "taskId": "={{$node[\"TheHive11\"].json[\"id\"]}}", + "message": "=Message{{Date.now()}}", + "startDate": "={{(new Date()).toISOString()}}", + "status": "Ok", + "options": {} + }, + "name": "TheHive16", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 750, + 930 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "efeb839b-df7f-465d-9776-ad3699b8cb56" + }, + { + "parameters": { + "resource": "log", + "operation": "get", + "id": "={{$node[\"TheHive16\"].json[\"_id\"]}}" + }, + "name": "TheHive17", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1050, + 930 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "df7967a1-012c-4e20-b5e4-63fa37265bf5" + }, + { + "parameters": { + "resource": "log", + "taskId": "={{$node[\"TheHive16\"].json[\"_id\"]}}", + "limit": 1 + }, + "name": "TheHive18", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1200, + 930 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "549b23ec-1ccb-4585-b270-b2341b8b409f" + }, + { + "parameters": { + "resource": "observable", + "operation": "create", + "caseId": "={{$node[\"TheHive6\"].json[\"caseId\"]}}", + "dataType": "ip", + "data": "36.123.133.214", + "message": "test", + "startDate": "={{(new Date()).toISOString()}}", + "ioc": true, + "status": "Ok", + "options": {} + }, + "name": "TheHive19", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "86f1d7a0-f22e-46f7-b315-8aecbe4bd5dd" + }, + { + "parameters": { + "resource": "observable", + "operation": "update", + "id": "={{$node[\"TheHive19\"].json[\"_id\"]}}", + "updateFields": { + "ioc": false + } + }, + "name": "TheHive20", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 910, + 450 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "2347e027-4531-48ae-94cb-bd8dd109da0a" + }, + { + "parameters": { + "resource": "observable", + "operation": "get", + "id": "={{$node[\"TheHive19\"].json[\"_id\"]}}" + }, + "name": "TheHive21", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1060, + 450 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "e12c0ed2-ea18-4a0e-a3b1-00d2e417b025" + }, + { + "parameters": { + "resource": "observable", + "operation": "search", + "limit": 1, + "options": {}, + "filters": {} + }, + "name": "TheHive22", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1360, + 450 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "bbed23cc-38f3-4912-a6b3-bdb3e0da4932" + }, + { + "parameters": { + "resource": "observable", + "caseId": "={{$node[\"TheHive6\"].json[\"_id\"]}}", + "limit": 1, + "options": {} + }, + "name": "TheHive23", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1540, + 450 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "b8f259fc-1031-49ea-86b6-cd89fe12f939" + }, + { + "parameters": { + "operation": "executeResponder", + "id": "={{$node[\"TheHive\"].json[\"id\"]}}", + "responder": "23bc4aef9aa1c88d6624004a3d04aeae" + }, + "name": "TheHive15", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1510, + 300 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "50e0654a-f844-43d6-9b5b-eda48c2707f4" + }, + { + "parameters": { + "resource": "observable", + "operation": "executeAnalyzer", + "id": "={{$node[\"TheHive21\"].json[\"id\"]}}", + "dataType": "={{$node[\"TheHive21\"].json[\"dataType\"]}}", + "analyzers": [ + "6fdd3c9b5432f1e2094cd3b8f2347d09::cortex" + ] + }, + "name": "TheHive24", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1720, + 450 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "fe15f804-236e-4dd1-9e3c-13758a9ce53e" + }, + { + "parameters": { + "resource": "observable", + "operation": "executeResponder", + "id": "={{$node[\"TheHive21\"].json[\"id\"]}}", + "responder": "fbe415a38eb649eb7df174aa11a32cfe" + }, + "name": "TheHive25", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1880, + 450 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "9a964882-99d9-4c1e-a23b-1c45d788a9d7" + }, + { + "parameters": { + "resource": "task", + "caseId": "={{$node[\"TheHive6\"].json[\"_id\"]}}", + "limit": 1, + "options": {} + }, + "name": "TheHive26", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1520, + 770 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "67594eb3-fb0c-41c0-a972-b8f79585d9dc" + }, + { + "parameters": { + "resource": "task", + "operation": "executeResponder", + "id": "={{$node[\"TheHive11\"].json[\"id\"]}}", + "responder": "23bc4aef9aa1c88d6624004a3d04aeae" + }, + "name": "TheHive27", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1690, + 770 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "80a817e5-4922-4dea-baa6-ebb412b06178" + }, + { + "parameters": { + "resource": "log", + "operation": "executeResponder", + "id": "={{$node[\"TheHive16\"].json[\"_id\"]}}" + }, + "name": "TheHive28", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1350, + 930 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "disabled": true, + "id": "90f4e4a2-0aee-4b1e-ab19-6d3136c7db7b" + }, + { + "parameters": { + "resource": "case", + "operation": "create", + "title": "=MergingCase{{Date.now()}}", + "description": "desc", + "startDate": "={{(new Date()).toISOString()}}", + "owner": "nodeqa", + "tags": "test", + "options": {} + }, + "name": "TheHive29", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "3c2306f0-34e0-40c8-951c-64dd9482cc22" + }, + { + "parameters": { + "title": "=MergingAlert{{Date.now()}}", + "description": "desc", + "date": "={{(new Date()).toISOString()}}", + "tags": "test", + "type": "test", + "source": "n8n", + "sourceRef": "={{Date.now().toString()}}", + "additionalFields": {} + }, + "name": "TheHive30", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 790, + 150 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "66b2590c-ee6e-451f-b0b6-22200d73209f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 610, + 150 + ], + "typeVersion": 1, + "id": "1a5a6ace-fef4-4fbc-b374-492dfa5ee9c9" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second1", + "type": "n8n-nodes-base.function", + "position": [ + 610, + 300 + ], + "typeVersion": 1, + "id": "1d31e404-48c8-45b1-963a-29689132bf18" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second2", + "type": "n8n-nodes-base.function", + "position": [ + 1060, + 300 + ], + "typeVersion": 1, + "id": "fd1d5353-73bb-4563-8f57-078ace5b7424" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second3", + "type": "n8n-nodes-base.function", + "position": [ + 760, + 450 + ], + "typeVersion": 1, + "id": "979b0aab-acd8-4aeb-a2d5-84516d01e436" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second4", + "type": "n8n-nodes-base.function", + "position": [ + 1210, + 450 + ], + "typeVersion": 1, + "id": "a2448c15-76d1-4611-96c1-382b8537d8e2" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second5", + "type": "n8n-nodes-base.function", + "position": [ + 750, + 600 + ], + "typeVersion": 1, + "id": "07ec5305-28c5-4f70-a4dd-81d9222131b5" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second6", + "type": "n8n-nodes-base.function", + "position": [ + 900, + 770 + ], + "typeVersion": 1, + "id": "6a220308-b57c-4a29-a103-f828564c75f5" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second7", + "type": "n8n-nodes-base.function", + "position": [ + 900, + 930 + ], + "typeVersion": 1, + "id": "3d8ce87e-fa7f-4c91-9a91-84572a4cb5b9" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second8", + "type": "n8n-nodes-base.function", + "position": [ + 1200, + 770 + ], + "typeVersion": 1, + "id": "8437d645-7789-4f5a-a2c0-217538297ead" + } + ], + "connections": { + "TheHive": { + "main": [ + [ + { + "node": "Sleep 0.5 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive1": { + "main": [ + [ + { + "node": "TheHive2", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive2": { + "main": [ + [ + { + "node": "TheHive15", + "type": "main", + "index": 0 + }, + { + "node": "Sleep 0.5 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive3": { + "main": [ + [ + { + "node": "TheHive4", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive6": { + "main": [ + [ + { + "node": "TheHive7", + "type": "main", + "index": 0 + }, + { + "node": "TheHive11", + "type": "main", + "index": 0 + }, + { + "node": "TheHive19", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive7": { + "main": [ + [ + { + "node": "Sleep 0.5 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive8": { + "main": [ + [ + { + "node": "TheHive9", + "type": "main", + "index": 0 + }, + { + "node": "TheHive10", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive11": { + "main": [ + [ + { + "node": "TheHive12", + "type": "main", + "index": 0 + }, + { + "node": "TheHive16", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive12": { + "main": [ + [ + { + "node": "Sleep 0.5 second6", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive13": { + "main": [ + [ + { + "node": "TheHive27", + "type": "main", + "index": 0 + }, + { + "node": "Sleep 0.5 second8", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive16": { + "main": [ + [ + { + "node": "Sleep 0.5 second7", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive17": { + "main": [ + [ + { + "node": "TheHive18", + "type": "main", + "index": 0 + }, + { + "node": "TheHive28", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive19": { + "main": [ + [ + { + "node": "Sleep 0.5 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive20": { + "main": [ + [ + { + "node": "TheHive21", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive21": { + "main": [ + [ + { + "node": "TheHive24", + "type": "main", + "index": 0 + }, + { + "node": "TheHive25", + "type": "main", + "index": 0 + }, + { + "node": "Sleep 0.5 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive22": { + "main": [ + [ + { + "node": "TheHive23", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "TheHive6", + "type": "main", + "index": 0 + }, + { + "node": "TheHive", + "type": "main", + "index": 0 + }, + { + "node": "TheHive29", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive14": { + "main": [ + [ + { + "node": "TheHive26", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive30": { + "main": [ + [ + { + "node": "TheHive5", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive29": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "TheHive30", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second1": { + "main": [ + [ + { + "node": "TheHive1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second2": { + "main": [ + [ + { + "node": "TheHive3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second3": { + "main": [ + [ + { + "node": "TheHive20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second4": { + "main": [ + [ + { + "node": "TheHive22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second5": { + "main": [ + [ + { + "node": "TheHive8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second6": { + "main": [ + [ + { + "node": "TheHive13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second7": { + "main": [ + [ + { + "node": "TheHive17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second8": { + "main": [ + [ + { + "node": "TheHive14", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/138.json b/test-workflows/workflows/138.json new file mode 100644 index 0000000000..22cb7a7e4e --- /dev/null +++ b/test-workflows/workflows/138.json @@ -0,0 +1,1375 @@ +{ + "createdAt": "2021-03-16T16:58:12.352Z", + "updatedAt": "2021-05-21T09:27:19.124Z", + "id": "138", + "name": "TheHive[v4]:Alert:create update get getAll promote merge:Case:create update get getAll:Observable:create update get search getAll:Task:create update get search getAll:Log:create get getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "9f90439e-037b-46fd-b837-9b5c85b79e77" + }, + { + "parameters": { + "title": "=Title{{Date.now()}}", + "description": "desc", + "date": "={{(new Date()).toISOString()}}", + "tags": "test", + "type": "test", + "source": "n8n", + "sourceRef": "={{Date.now().toString()}}", + "additionalFields": {} + }, + "name": "TheHive", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 470, + 50 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "aa971fff-c258-4a9b-b8ee-d02ff2f3742f" + }, + { + "parameters": { + "operation": "update", + "id": "={{$node[\"TheHive\"].json[\"id\"]}}", + "updateFields": { + "tlp": 1 + } + }, + "name": "TheHive1", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 620, + 50 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "f84362fd-61df-4f44-933e-6a8f0c1190ca" + }, + { + "parameters": { + "operation": "get", + "id": "={{$node[\"TheHive\"].json[\"id\"]}}" + }, + "name": "TheHive2", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 970, + 50 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "60e238b5-7826-4338-8367-9bf8a5ac1867" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {}, + "filters": {} + }, + "name": "TheHive3", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1120, + 50 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "4d8575f0-4d93-41bc-acb7-518e89948e3e" + }, + { + "parameters": { + "operation": "promote", + "id": "={{$node[\"TheHive\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "TheHive4", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1430, + 50 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "04f0c48e-95e9-4507-b1f4-3a839118ba61" + }, + { + "parameters": { + "resource": "case", + "operation": "create", + "title": "=Title{{Date.now()}}", + "description": "desc", + "startDate": "={{(new Date()).toISOString()}}", + "owner": "nodeqa", + "tags": "test", + "options": {} + }, + "name": "TheHive6", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 470, + 350 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "0b101032-87b6-4b59-9d31-b2b6622518c6" + }, + { + "parameters": { + "resource": "case", + "operation": "update", + "id": "={{$node[\"TheHive6\"].json[\"caseId\"]}}", + "updateFields": { + "tlp": 3 + } + }, + "name": "TheHive7", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 620, + 350 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "7da42dc0-c2a1-438e-9e44-329dee84938e" + }, + { + "parameters": { + "resource": "case", + "operation": "get", + "id": "={{$node[\"TheHive6\"].json[\"id\"]}}" + }, + "name": "TheHive8", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 950, + 350 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "07902779-ae8c-4c8d-a300-57e86244cd7d" + }, + { + "parameters": { + "resource": "case", + "limit": 1, + "options": {}, + "filters": {} + }, + "name": "TheHive9", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1100, + 350 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "e45a3b35-0452-47b5-9136-521a69f1daed" + }, + { + "parameters": { + "resource": "task", + "operation": "create", + "caseId": "={{$node[\"TheHive6\"].json[\"caseId\"]}}", + "title": "=Task{{Date.now()}}", + "options": {} + }, + "name": "TheHive11", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 620, + 520 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "8bd67bbf-9b6c-43fe-b88e-4575f2a4206e" + }, + { + "parameters": { + "resource": "task", + "operation": "update", + "id": "={{$node[\"TheHive11\"].json[\"id\"]}}", + "updateFields": { + "status": "InProgress" + } + }, + "name": "TheHive12", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 770, + 520 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "1df94f03-a17b-47fe-8711-06e6c973c4cd" + }, + { + "parameters": { + "resource": "task", + "operation": "get", + "id": "={{$node[\"TheHive11\"].json[\"id\"]}}" + }, + "name": "TheHive13", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1080, + 520 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "d766828e-f1d4-47b1-82ef-21ad8b72ac08" + }, + { + "parameters": { + "resource": "task", + "operation": "search", + "limit": 1, + "options": {}, + "filters": {} + }, + "name": "TheHive14", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1230, + 520 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "ddeb0b79-5381-4151-808d-66ba52861c11" + }, + { + "parameters": { + "resource": "log", + "operation": "create", + "taskId": "={{$node[\"TheHive11\"].json[\"id\"]}}", + "message": "=Message{{Date.now()}}", + "startDate": "={{(new Date()).toISOString()}}", + "status": "Ok", + "options": {} + }, + "name": "TheHive16", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 770, + 680 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "b98e4f38-08b0-4dda-949f-9a1d2f02a36e" + }, + { + "parameters": { + "resource": "log", + "operation": "get", + "id": "={{$node[\"TheHive16\"].json[\"_id\"]}}" + }, + "name": "TheHive17", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1090, + 680 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "f14cd395-0d27-4342-8f42-051bdec28e09" + }, + { + "parameters": { + "resource": "log", + "taskId": "={{$node[\"TheHive16\"].json[\"_id\"]}}", + "limit": 1 + }, + "name": "TheHive18", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1240, + 680 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "6f0f685c-de2f-4a5a-b221-fea2b1f9fedf" + }, + { + "parameters": { + "resource": "observable", + "operation": "create", + "caseId": "={{$node[\"TheHive6\"].json[\"caseId\"]}}", + "dataType": "ip", + "data": "36.123.133.214", + "message": "test", + "startDate": "={{(new Date()).toISOString()}}", + "ioc": true, + "status": "Ok", + "options": {} + }, + "name": "TheHive19", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 620, + 200 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "93e80467-34a8-45ba-aa62-77b9b85f5091" + }, + { + "parameters": { + "resource": "observable", + "operation": "update", + "id": "={{$node[\"TheHive19\"].json[\"_id\"]}}", + "updateFields": { + "ioc": false + } + }, + "name": "TheHive20", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 940, + 200 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "34ff3179-4e8b-4947-b5e2-d99a51ab3865" + }, + { + "parameters": { + "resource": "observable", + "operation": "get", + "id": "={{$node[\"TheHive19\"].json[\"_id\"]}}" + }, + "name": "TheHive21", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1090, + 200 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "6292663d-fd3f-48b0-8802-fd0d9e29beb0" + }, + { + "parameters": { + "resource": "observable", + "operation": "search", + "limit": 1, + "options": {}, + "filters": {} + }, + "name": "TheHive22", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1450, + 200 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "5e58213d-6a75-4304-9b10-0b1e9137d436" + }, + { + "parameters": { + "resource": "observable", + "caseId": "={{$node[\"TheHive6\"].json[\"_id\"]}}", + "limit": 1, + "options": {} + }, + "name": "TheHive23", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1600, + 200 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "35a6f784-f1d4-482d-b7b1-7d1e7fe12383" + }, + { + "parameters": { + "resource": "task", + "caseId": "={{$node[\"TheHive6\"].json[\"_id\"]}}", + "limit": 1, + "options": {} + }, + "name": "TheHive26", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1520, + 520 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "3af01f2d-8d05-46f6-bc4e-d299e7b36117" + }, + { + "parameters": { + "resource": "log", + "operation": "executeResponder" + }, + "name": "TheHive28", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1390, + 680 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "disabled": true, + "id": "a6c442cd-4720-45bb-bbc4-360e7aa523f7" + }, + { + "parameters": { + "operation": "count", + "filters": {} + }, + "name": "TheHive29", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1600, + 50 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "129264d0-06f9-4705-8b6a-1656f3e444ac" + }, + { + "parameters": { + "resource": "observable", + "operation": "count", + "filters": {} + }, + "name": "TheHive30", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1730, + 200 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "98c5ecaf-005a-4c35-ad42-42eb9b507fdf" + }, + { + "parameters": { + "resource": "case", + "operation": "count", + "filters": {} + }, + "name": "TheHive31", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1460, + 350 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "fc75071b-b04c-4b46-8001-84e4be11b410" + }, + { + "parameters": { + "resource": "task", + "operation": "count", + "filters": {} + }, + "name": "TheHive32", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1650, + 520 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "ab81354d-86ed-454d-8a8c-179f3bfffcac" + }, + { + "parameters": { + "operation": "merge", + "id": "={{$node[\"TheHive35\"].json[\"id\"]}}", + "caseId": "={{$node[\"TheHive34\"].json[\"id\"]}}" + }, + "name": "TheHive33", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 900, + -100 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "d0348684-a348-47ad-b9bd-bb5ef60eb620" + }, + { + "parameters": { + "resource": "case", + "operation": "create", + "title": "=MergingCase{{Date.now()}}", + "description": "desc", + "startDate": "={{(new Date()).toISOString()}}", + "owner": "nodeqa", + "tags": "test", + "options": {} + }, + "name": "TheHive34", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 470, + -100 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "363b6fcf-f673-485f-b50b-11a2f8274599" + }, + { + "parameters": { + "title": "=MergingAlert{{Date.now()}}", + "description": "desc", + "date": "={{(new Date()).toISOString()}}", + "tags": "test", + "type": "test", + "source": "n8n", + "sourceRef": "={{Date.now().toString()}}", + "additionalFields": {} + }, + "name": "TheHive35", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 750, + -100 + ], + "credentials": { + "theHiveApi": { + "id": "108", + "name": "The Hive API creds (v1)" + } + }, + "id": "b972bf61-8365-42f8-b1b4-bfddb2ea763c" + }, + { + "parameters": { + "operation": "executeResponder", + "id": "={{$node[\"TheHive\"].json[\"id\"]}}", + "responder": "23bc4aef9aa1c88d6624004a3d04aeae" + }, + "name": "TheHive15", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1770, + 50 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "edd53027-11e7-45df-ac58-38e84ea8e68f" + }, + { + "parameters": { + "resource": "observable", + "operation": "executeResponder", + "id": "={{$node[\"TheHive21\"].json[\"_id\"]}}", + "responder": "fbe415a38eb649eb7df174aa11a32cfe" + }, + "name": "TheHive25", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 2060, + 200 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "9cc1c6e0-7467-4143-af7a-18d0927ef266" + }, + { + "parameters": { + "resource": "observable", + "operation": "executeAnalyzer", + "id": "={{$node[\"TheHive21\"].json[\"_id\"]}}", + "dataType": "={{$node[\"TheHive21\"].json[\"dataType\"]}}", + "analyzers": [ + "6fdd3c9b5432f1e2094cd3b8f2347d09::cortex" + ] + }, + "name": "TheHive24", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1880, + 200 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "dd820c65-bf81-4ccb-9f5e-4687c69c60f9" + }, + { + "parameters": { + "resource": "case", + "operation": "executeResponder", + "id": "={{$node[\"TheHive6\"].json[\"id\"]}}", + "responder": "23bc4aef9aa1c88d6624004a3d04aeae" + }, + "name": "TheHive10", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1620, + 350 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "c28cb76f-22b4-4651-a6be-97fbed03f9a2" + }, + { + "parameters": { + "resource": "task", + "operation": "executeResponder", + "id": "={{$node[\"TheHive11\"].json[\"id\"]}}", + "responder": "23bc4aef9aa1c88d6624004a3d04aeae" + }, + "name": "TheHive27", + "type": "n8n-nodes-base.theHive", + "typeVersion": 1, + "position": [ + 1810, + 520 + ], + "credentials": { + "theHiveApi": { + "id": "107", + "name": "The Hive API creds" + } + }, + "id": "faf84c8e-59fa-4cd7-9b96-b6d41ff7fd3e" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 600, + -100 + ], + "typeVersion": 1, + "id": "48448770-8579-45c5-8b44-a3630182989b" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second1", + "type": "n8n-nodes-base.function", + "position": [ + 770, + 50 + ], + "typeVersion": 1, + "id": "56f919d6-ba81-41f5-80f5-f5b1f57edc6a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second2", + "type": "n8n-nodes-base.function", + "position": [ + 780, + 200 + ], + "typeVersion": 1, + "id": "cc581b90-c49e-45dc-a74f-2058b14f54e6" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second3", + "type": "n8n-nodes-base.function", + "position": [ + 790, + 350 + ], + "typeVersion": 1, + "id": "b11a7b70-aa7a-4c94-988e-04576c28ec06" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second4", + "type": "n8n-nodes-base.function", + "position": [ + 920, + 520 + ], + "typeVersion": 1, + "id": "00e38394-b83d-4b2d-8f64-f002f3dee288" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second5", + "type": "n8n-nodes-base.function", + "position": [ + 930, + 680 + ], + "typeVersion": 1, + "id": "203e4d68-f936-4f70-88cc-162cb3754faf" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second6", + "type": "n8n-nodes-base.function", + "position": [ + 1380, + 520 + ], + "typeVersion": 1, + "id": "dc7c936c-b400-402e-af72-927ca98ac0ea" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second7", + "type": "n8n-nodes-base.function", + "position": [ + 1280, + 350 + ], + "typeVersion": 1, + "id": "733a450f-5c8b-4451-b542-afbbd1757233" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second8", + "type": "n8n-nodes-base.function", + "position": [ + 1260, + 200 + ], + "typeVersion": 1, + "id": "96ae2c59-bde3-4c79-be16-525e36e0634f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second9", + "type": "n8n-nodes-base.function", + "position": [ + 1270, + 50 + ], + "typeVersion": 1, + "id": "53151c11-2f85-4596-920a-4770739fd32e" + } + ], + "connections": { + "TheHive": { + "main": [ + [ + { + "node": "TheHive1", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive1": { + "main": [ + [ + { + "node": "Sleep 0.5 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive2": { + "main": [ + [ + { + "node": "TheHive3", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive3": { + "main": [ + [ + { + "node": "TheHive15", + "type": "main", + "index": 0 + }, + { + "node": "Sleep 0.5 second9", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive6": { + "main": [ + [ + { + "node": "TheHive7", + "type": "main", + "index": 0 + }, + { + "node": "TheHive11", + "type": "main", + "index": 0 + }, + { + "node": "TheHive19", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive7": { + "main": [ + [ + { + "node": "Sleep 0.5 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive8": { + "main": [ + [ + { + "node": "TheHive9", + "type": "main", + "index": 0 + }, + { + "node": "TheHive10", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive11": { + "main": [ + [ + { + "node": "TheHive12", + "type": "main", + "index": 0 + }, + { + "node": "TheHive16", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive12": { + "main": [ + [ + { + "node": "Sleep 0.5 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive13": { + "main": [ + [ + { + "node": "TheHive14", + "type": "main", + "index": 0 + }, + { + "node": "TheHive27", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive14": { + "main": [ + [ + { + "node": "Sleep 0.5 second6", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive16": { + "main": [ + [ + { + "node": "Sleep 0.5 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive17": { + "main": [ + [ + { + "node": "TheHive18", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive19": { + "main": [ + [ + { + "node": "Sleep 0.5 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive20": { + "main": [ + [ + { + "node": "TheHive21", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive21": { + "main": [ + [ + { + "node": "TheHive24", + "type": "main", + "index": 0 + }, + { + "node": "TheHive25", + "type": "main", + "index": 0 + }, + { + "node": "Sleep 0.5 second8", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive22": { + "main": [ + [ + { + "node": "TheHive23", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive26": { + "main": [ + [ + { + "node": "TheHive32", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "TheHive6", + "type": "main", + "index": 0 + }, + { + "node": "TheHive", + "type": "main", + "index": 0 + }, + { + "node": "TheHive34", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive4": { + "main": [ + [ + { + "node": "TheHive29", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive23": { + "main": [ + [ + { + "node": "TheHive30", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive9": { + "main": [ + [ + { + "node": "Sleep 0.5 second7", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive34": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "TheHive35": { + "main": [ + [ + { + "node": "TheHive33", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second5": { + "main": [ + [ + { + "node": "TheHive17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second4": { + "main": [ + [ + { + "node": "TheHive13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second3": { + "main": [ + [ + { + "node": "TheHive8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second2": { + "main": [ + [ + { + "node": "TheHive20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second1": { + "main": [ + [ + { + "node": "TheHive2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "TheHive35", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second6": { + "main": [ + [ + { + "node": "TheHive26", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second7": { + "main": [ + [ + { + "node": "TheHive31", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second8": { + "main": [ + [ + { + "node": "TheHive22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second9": { + "main": [ + [ + { + "node": "TheHive4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/139.json b/test-workflows/workflows/139.json new file mode 100644 index 0000000000..ec72bae215 --- /dev/null +++ b/test-workflows/workflows/139.json @@ -0,0 +1,367 @@ +{ + "createdAt": "2021-03-19T09:20:03.334Z", + "updatedAt": "2021-03-19T09:22:57.813Z", + "id": "139", + "name": "Shopify:Product:create update get getAll delete:Order:create update get getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d841866b-3ccd-4f04-97ae-799cc649c163" + }, + { + "parameters": { + "resource": "product", + "title": "=Product{{Date.now()}}", + "additionalFields": {} + }, + "name": "Shopify", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "84e29b73-0cc6-4793-a48b-8972fc733c16" + }, + { + "parameters": { + "resource": "product", + "operation": "update", + "productId": "={{$node[\"Shopify\"].json[\"id\"]}}", + "updateFields": { + "title": "=Updated{{$node[\"Shopify\"].json[\"title\"]}}" + } + }, + "name": "Shopify1", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 1350, + 300 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "4013bda3-f9d6-423a-a936-df538232f5e0" + }, + { + "parameters": { + "resource": "product", + "operation": "get", + "productId": "={{$node[\"Shopify\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Shopify2", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 1500, + 300 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "bbc9b837-505c-4551-9fb1-4a9da938d9f9" + }, + { + "parameters": { + "resource": "product", + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Shopify3", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 1650, + 300 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "e0fffb77-cbd1-47df-8f86-ef2ef89fd6c7" + }, + { + "parameters": { + "resource": "product", + "operation": "delete", + "productId": "={{$node[\"Shopify\"].json[\"id\"]}}" + }, + "name": "Shopify4", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 1800, + 300 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "61f48867-0cc6-4128-8b2b-ce4cbf60e524" + }, + { + "parameters": { + "additionalFields": { + "email": "=fake{{Date.now()}}@gmail.com", + "tags": "test,", + "test": "" + }, + "limeItemsUi": { + "lineItemValues": [ + { + "productId": "={{$node[\"Shopify\"].json[\"id\"]}}", + "title": "=Line{{Date.now()}}", + "grams": "15", + "price": "101" + } + ] + } + }, + "name": "Shopify5", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "c1a9b348-cd93-46be-88e4-ccc2a2698fdb" + }, + { + "parameters": { + "operation": "update", + "orderId": "={{$node[\"Shopify5\"].json[\"id\"]}}", + "updateFields": { + "email": "=updated{{$node[\"Shopify5\"].json[\"email\"]}}" + } + }, + "name": "Shopify6", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 750, + 450 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "e9fd5c83-7ed5-430e-b976-402027f53177" + }, + { + "parameters": { + "operation": "get", + "orderId": "={{$node[\"Shopify5\"].json[\"id\"]}}", + "options": {} + }, + "name": "Shopify7", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 900, + 450 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "9ff0060c-8878-4893-84ae-a24deba7166d" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Shopify8", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 1050, + 450 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "5003db2b-06c5-42ca-899a-3f2e49aa0518" + }, + { + "parameters": { + "operation": "delete", + "orderId": "={{$node[\"Shopify5\"].json[\"id\"]}}" + }, + "name": "Shopify9", + "type": "n8n-nodes-base.shopify", + "typeVersion": 1, + "position": [ + 1200, + 450 + ], + "credentials": { + "shopifyApi": { + "id": "109", + "name": "Shopify API creds" + } + }, + "id": "c6677e77-ca3d-4d7f-b8e9-87d19786a845" + } + ], + "connections": { + "Shopify": { + "main": [ + [ + { + "node": "Shopify5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Shopify", + "type": "main", + "index": 0 + } + ] + ] + }, + "Shopify1": { + "main": [ + [ + { + "node": "Shopify2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Shopify2": { + "main": [ + [ + { + "node": "Shopify3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Shopify3": { + "main": [ + [ + { + "node": "Shopify4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Shopify5": { + "main": [ + [ + { + "node": "Shopify6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Shopify6": { + "main": [ + [ + { + "node": "Shopify7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Shopify7": { + "main": [ + [ + { + "node": "Shopify8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Shopify8": { + "main": [ + [ + { + "node": "Shopify9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Shopify9": { + "main": [ + [ + { + "node": "Shopify1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/140.json b/test-workflows/workflows/140.json new file mode 100644 index 0000000000..f37ee11b53 --- /dev/null +++ b/test-workflows/workflows/140.json @@ -0,0 +1,62 @@ +{ + "createdAt": "2021-03-19T09:48:14.284Z", + "updatedAt": "2021-03-19T09:48:14.284Z", + "id": "140", + "name": "Mailgun", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "61c01ddf-4360-4d4f-8bf3-7bb5499147b3" + }, + { + "parameters": { + "fromEmail": "nodeqa@n8n.io", + "toEmail": "node8qa@gmail.com", + "subject": "=Mailgun{{Date.now()}}", + "text": "=Test text {{(new Date).toUTCString()}}" + }, + "name": "Mailgun", + "type": "n8n-nodes-base.mailgun", + "typeVersion": 1, + "position": [ + 470, + 300 + ], + "credentials": { + "mailgunApi": { + "id": "42", + "name": "Mailgun API creds" + } + }, + "id": "18d17dae-126a-44a3-9832-0bbf60320da8" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Mailgun", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/141.json b/test-workflows/workflows/141.json new file mode 100644 index 0000000000..dfa3405194 --- /dev/null +++ b/test-workflows/workflows/141.json @@ -0,0 +1,444 @@ +{ + "createdAt": "2021-03-19T10:44:59.685Z", + "updatedAt": "2021-05-21T10:01:36.962Z", + "id": "141", + "name": "MicrosoftExcel:Table:lookup getRows getColumns addRow:Workbook:addWorksheet getAll:Worksheet:getAll getContent", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "13273e42-d319-4d4b-8a72-4c034ed61bac" + }, + { + "parameters": { + "operation": "addWorksheet", + "workbook": "51F07A8CA9E72D69!136", + "additionalFields": { + "name": "=WorkSheet{{Date.now()}}" + } + }, + "name": "Microsoft Excel", + "type": "n8n-nodes-base.microsoftExcel", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "microsoftExcelOAuth2Api": { + "id": "73", + "name": "Microsoft Excel OAuth2 creds" + } + }, + "id": "b95b3ba8-c4c8-48ff-9458-3ffdf1445f25" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Microsoft Excel1", + "type": "n8n-nodes-base.microsoftExcel", + "typeVersion": 1, + "position": [ + 790, + 300 + ], + "credentials": { + "microsoftExcelOAuth2Api": { + "id": "73", + "name": "Microsoft Excel OAuth2 creds" + } + }, + "id": "e8bcc5f5-7348-466f-92cd-52b12f0aff5e" + }, + { + "parameters": { + "resource": "worksheet", + "operation": "getAll", + "workbook": "51F07A8CA9E72D69!136", + "limit": 1, + "filters": {} + }, + "name": "Microsoft Excel2", + "type": "n8n-nodes-base.microsoftExcel", + "typeVersion": 1, + "position": [ + 500, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "microsoftExcelOAuth2Api": { + "id": "73", + "name": "Microsoft Excel OAuth2 creds" + } + }, + "id": "859d409b-f7c9-47e1-af7d-e1555c2745a9" + }, + { + "parameters": { + "resource": "worksheet", + "operation": "getContent", + "workbook": "51F07A8CA9E72D69!136", + "worksheet": "{00000000-0001-0000-0000-000000000000}", + "range": "A1:D2" + }, + "name": "Microsoft Excel3", + "type": "n8n-nodes-base.microsoftExcel", + "typeVersion": 1, + "position": [ + 790, + 450 + ], + "credentials": { + "microsoftExcelOAuth2Api": { + "id": "73", + "name": "Microsoft Excel OAuth2 creds" + } + }, + "id": "b9f51de5-c632-49bb-815a-f7fe13e8cce6" + }, + { + "parameters": { + "resource": "table", + "operation": "lookup", + "workbook": "51F07A8CA9E72D69!136", + "worksheet": "{00000000-0001-0000-0000-000000000000}", + "table": "{36FB1939-0994-4A3D-8612-14A5283A6A80}", + "lookupColumn": "t", + "lookupValue": "n", + "options": {} + }, + "name": "Microsoft Excel4", + "type": "n8n-nodes-base.microsoftExcel", + "typeVersion": 1, + "position": [ + 500, + 150 + ], + "credentials": { + "microsoftExcelOAuth2Api": { + "id": "73", + "name": "Microsoft Excel OAuth2 creds" + } + }, + "id": "fbc761ca-7add-4e72-942d-4a55366491fc" + }, + { + "parameters": { + "resource": "table", + "operation": "getRows", + "workbook": "51F07A8CA9E72D69!136", + "worksheet": "{00000000-0001-0000-0000-000000000000}", + "table": "{36FB1939-0994-4A3D-8612-14A5283A6A80}", + "limit": 1 + }, + "name": "Microsoft Excel5", + "type": "n8n-nodes-base.microsoftExcel", + "typeVersion": 1, + "position": [ + 800, + 150 + ], + "credentials": { + "microsoftExcelOAuth2Api": { + "id": "73", + "name": "Microsoft Excel OAuth2 creds" + } + }, + "id": "e0c06d78-2108-457e-955c-7abaf4b377dd" + }, + { + "parameters": { + "resource": "table", + "operation": "getColumns", + "workbook": "51F07A8CA9E72D69!136", + "worksheet": "{00000000-0001-0000-0000-000000000000}", + "table": "{36FB1939-0994-4A3D-8612-14A5283A6A80}", + "limit": 1 + }, + "name": "Microsoft Excel6", + "type": "n8n-nodes-base.microsoftExcel", + "typeVersion": 1, + "position": [ + 1100, + 150 + ], + "credentials": { + "microsoftExcelOAuth2Api": { + "id": "73", + "name": "Microsoft Excel OAuth2 creds" + } + }, + "id": "433e7bea-93de-4efc-b77b-4d039e685527" + }, + { + "parameters": { + "resource": "table", + "workbook": "51F07A8CA9E72D69!136", + "worksheet": "{00000000-0001-0000-0000-000000000000}", + "table": "{36FB1939-0994-4A3D-8612-14A5283A6A80}", + "additionalFields": {} + }, + "name": "Microsoft Excel7", + "type": "n8n-nodes-base.microsoftExcel", + "typeVersion": 1, + "position": [ + 1400, + 150 + ], + "credentials": { + "microsoftExcelOAuth2Api": { + "id": "73", + "name": "Microsoft Excel OAuth2 creds" + } + }, + "id": "5ea1e83f-a0fb-4c12-b722-63b8419fc78a" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "string": [ + { + "name": "Column3", + "value": "={{Date.now().toString().substr(6)}}" + }, + { + "name": "Column4", + "value": "={{Date.now().toString().substr(3)}}" + } + ], + "number": [ + { + "name": "t", + "value": "={{Math.round(Math.random()*100)}}" + }, + { + "name": "e", + "value": "={{Math.round(Math.random()*100)}}" + }, + { + "name": "s", + "value": "={{Math.round(Math.random()*100)}}" + }, + { + "name": "t2", + "value": "={{Math.round(Math.random()*100)}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1250, + 150 + ], + "id": "eb3f568f-c6f6-4a53-b6de-8de28f762848" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second", + "type": "n8n-nodes-base.function", + "position": [ + 650, + 450 + ], + "typeVersion": 1, + "id": "5a289dee-eba5-467f-a7b3-552d94867c0f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second1", + "type": "n8n-nodes-base.function", + "position": [ + 650, + 300 + ], + "typeVersion": 1, + "id": "0ca0ff2b-609a-42a3-a1cf-2bbc8f127f01" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second2", + "type": "n8n-nodes-base.function", + "position": [ + 650, + 150 + ], + "typeVersion": 1, + "id": "0bb04e5a-6001-4bc1-a1dd-32b16f3f0ec0" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second3", + "type": "n8n-nodes-base.function", + "position": [ + 950, + 150 + ], + "typeVersion": 1, + "id": "9704ee84-3b4f-419c-aaa3-3e58c16b7ca9" + } + ], + "connections": { + "Microsoft Excel": { + "main": [ + [ + { + "node": "Sleep 0.8 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Excel2": { + "main": [ + [ + { + "node": "Sleep 0.8 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Microsoft Excel", + "type": "main", + "index": 0 + }, + { + "node": "Microsoft Excel2", + "type": "main", + "index": 0 + }, + { + "node": "Microsoft Excel4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Excel4": { + "main": [ + [ + { + "node": "Sleep 0.8 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Excel5": { + "main": [ + [ + { + "node": "Sleep 0.8 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Excel6": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Microsoft Excel7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second": { + "main": [ + [ + { + "node": "Microsoft Excel3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second1": { + "main": [ + [ + { + "node": "Microsoft Excel1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second2": { + "main": [ + [ + { + "node": "Microsoft Excel5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second3": { + "main": [ + [ + { + "node": "Microsoft Excel6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/142.json b/test-workflows/workflows/142.json new file mode 100644 index 0000000000..e6d7aa4c3c --- /dev/null +++ b/test-workflows/workflows/142.json @@ -0,0 +1,1141 @@ +{ + "createdAt": "2021-03-19T11:16:17.356Z", + "updatedAt": "2021-05-21T10:01:38.488Z", + "id": "142", + "name": "MicrosoftOutlook:Folder:create get getAll getChildren delete:Message send getAll get getMime update delete:FolderMessage:getAll:Draft:create update get delete send:MessageAttachment:add getAll get download", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "c8853916-a370-410c-8c96-fec280e24502" + }, + { + "parameters": { + "subject": "=Subject {{Date.now()}}", + "bodyContent": "=Test {{(new Date).toUTCString()}}", + "toRecipients": "node8qa@gmail.com", + "additionalFields": {} + }, + "name": "Microsoft Outlook", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "75eee31d-df00-4fe7-8c29-0dca953fcec5" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Microsoft Outlook1", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "7b0b82c4-5e02-4819-a2af-748eee795377" + }, + { + "parameters": { + "operation": "get", + "messageId": "={{$node[\"Microsoft Outlook1\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Microsoft Outlook2", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "e11bc3e4-d5fc-496a-b601-939ea3edf709" + }, + { + "parameters": { + "operation": "getMime", + "messageId": "={{$node[\"Microsoft Outlook1\"].json[\"id\"]}}" + }, + "name": "Microsoft Outlook3", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1200, + 300 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "4d18fe05-dc23-47f9-b0bf-776ea266ad94" + }, + { + "parameters": { + "operation": "update", + "messageId": "={{$node[\"Microsoft Outlook2\"].json[\"id\"]}}", + "updateFields": { + "bodyContent": "=Updated{{$node[\"Microsoft Outlook2\"].json[\"body\"][\"content\"]}}" + } + }, + "name": "Microsoft Outlook4", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1350, + 300 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "eba271aa-7a39-45c4-b74c-79be4d600f5e" + }, + { + "parameters": { + "operation": "delete", + "messageId": "={{$node[\"Microsoft Outlook1\"].json[\"id\"]}}" + }, + "name": "Microsoft Outlook5", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1800, + 300 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "631bf979-dfac-4acc-b038-c2efbbc4eb61" + }, + { + "parameters": { + "resource": "draft", + "subject": "=Draft{{Date.now()}}", + "bodyContent": "=draft test{{(new Date).toUTCString()}}", + "additionalFields": { + "toRecipients": " node8qa@gmail.com " + } + }, + "name": "Microsoft Outlook6", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 450, + 500 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "d52c068a-caec-4b41-8f2b-6ecb09eeff45" + }, + { + "parameters": { + "resource": "draft", + "operation": "update", + "messageId": "={{$node[\"Microsoft Outlook6\"].json[\"id\"]}}", + "updateFields": { + "bodyContent": "=Updated{{$node[\"Microsoft Outlook6\"].json[\"body\"][\"content\"]}}" + } + }, + "name": "Microsoft Outlook7", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 600, + 500 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "d9f97b7a-cd2d-476a-bc98-65c622adafae" + }, + { + "parameters": { + "resource": "draft", + "operation": "get", + "messageId": "={{$node[\"Microsoft Outlook6\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Microsoft Outlook8", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 900, + 500 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "d8668bc3-43db-4ba9-ab40-a5bd7fd0ea32" + }, + { + "parameters": { + "resource": "draft", + "operation": "delete", + "messageId": "={{$node[\"Microsoft Outlook6\"].json[\"id\"]}}" + }, + "name": "Microsoft Outlook9", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1050, + 500 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "5c319460-5c69-4622-953a-7bcaee892d07" + }, + { + "parameters": { + "resource": "draft", + "subject": "=Draft{{Date.now()}}", + "bodyContent": "=draft test{{Date.now()}}", + "additionalFields": { + "toRecipients": " node8qa@gmail.com " + } + }, + "name": "Microsoft Outlook10", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1350, + 500 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "4fefb565-502a-4a8d-a9a4-db2b208d7b12" + }, + { + "parameters": { + "resource": "draft", + "operation": "send", + "messageId": "={{$node[\"Microsoft Outlook10\"].json[\"id\"]}}", + "additionalFields": { + "recipients": "node8qa@gmail.com" + } + }, + "name": "Microsoft Outlook11", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 2650, + 550 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "c1d8d7e4-8d6d-4ca4-9e05-e0ad702a586d" + }, + { + "parameters": { + "operation": "delete", + "messageId": "={{$node[\"Microsoft Outlook13\"].json[\"id\"]}}" + }, + "name": "Microsoft Outlook12", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 3100, + 550 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "0e1e8c29-065e-43e2-9751-46b580640c73" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Microsoft Outlook13", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 2950, + 550 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "c4ba0930-587d-47a4-8a4b-a3b3ba7ed3f2" + }, + { + "parameters": { + "resource": "folder", + "displayName": "=Folder{{(new Date).toUTCString()}}" + }, + "name": "Microsoft Outlook14", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 450, + 140 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "3b783dbb-0e38-4cdb-8931-a83c2e542a9e" + }, + { + "parameters": { + "resource": "folder", + "operation": "get", + "folderId": "={{$node[\"Microsoft Outlook14\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Microsoft Outlook15", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 750, + 140 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "c829334b-0ac4-4440-b3bd-537f659608f7" + }, + { + "parameters": { + "resource": "folder", + "operation": "getAll", + "limit": 1, + "additionalFields": { + "filter": "startsWith(displayName,'Folder')" + } + }, + "name": "Microsoft Outlook16", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 900, + 140 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "d446756b-e052-4869-9d2d-7d4af3c155f3" + }, + { + "parameters": { + "resource": "folder", + "operation": "getChildren", + "folderId": "={{$node[\"Microsoft Outlook14\"].json[\"id\"]}}", + "limit": 1, + "additionalFields": {} + }, + "name": "Microsoft Outlook17", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1200, + 140 + ], + "alwaysOutputData": true, + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "8f732179-076b-4375-96ef-396c41ec4f22" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "folderId": "={{$node[\"Microsoft Outlook14\"].json[\"id\"]}}" + }, + "name": "Microsoft Outlook18", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1350, + 140 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "a4b7d61c-74c1-4595-9698-6b1fa7a73842" + }, + { + "parameters": { + "resource": "folderMessage", + "operation": "getAll", + "folderId": "AQMkADAwATNiZmYAZC0zODgAZC1jYjlmLTAwAi0wMAoALgAAA7ObUbW4UV9AtQb9CKQozz8BAIHMmBimhDVHlaNbe8JltA4AAAIBCQAAAA==", + "limit": 1, + "additionalFields": {} + }, + "name": "Microsoft Outlook19", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1650, + 350 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "891fb969-79f6-4832-a3d0-b2d938fe757a" + }, + { + "parameters": { + "resource": "messageAttachment", + "messageId": "={{$node[\"Microsoft Outlook10\"].json[\"id\"]}}", + "additionalFields": { + "fileName": "test" + } + }, + "name": "Microsoft Outlook20", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 1750, + 650 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "d7131b8a-1656-4ad0-baa0-860456471bb1" + }, + { + "parameters": { + "mode": "jsonToBinary", + "options": { + "keepSource": false + } + }, + "name": "Move Binary Data", + "type": "n8n-nodes-base.moveBinaryData", + "typeVersion": 1, + "position": [ + 1600, + 650 + ], + "id": "9f86213f-ce39-4b3e-a9e9-7327d421f7cb" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "data", + "value": "dGVzdCBmb3IgbWljcm9zb2Z0IG91dGxvb2s=" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1450, + 650 + ], + "id": "b909a6f3-09d4-450f-be31-6c771fa96f08" + }, + { + "parameters": { + "resource": "messageAttachment", + "operation": "getAll", + "messageId": "={{$node[\"Microsoft Outlook10\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Microsoft Outlook21", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 2050, + 650 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "3b59dfb0-2204-4073-81fb-9629e95969bb" + }, + { + "parameters": { + "resource": "messageAttachment", + "operation": "get", + "messageId": "={{$node[\"Microsoft Outlook10\"].json[\"id\"]}}", + "attachmentId": "={{$node[\"Microsoft Outlook21\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Microsoft Outlook22", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 2200, + 650 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "20c4215c-8ab5-4621-872e-1799140f546d" + }, + { + "parameters": { + "resource": "messageAttachment", + "operation": "download", + "messageId": "={{$node[\"Microsoft Outlook10\"].json[\"id\"]}}", + "attachmentId": "={{$node[\"Microsoft Outlook21\"].json[\"id\"]}}" + }, + "name": "Microsoft Outlook23", + "type": "n8n-nodes-base.microsoftOutlook", + "typeVersion": 1, + "position": [ + 2490, + 650 + ], + "credentials": { + "microsoftOutlookOAuth2Api": { + "id": "72", + "name": "Microsoft Outlook OAuth2 creds" + } + }, + "id": "5118f8c3-c5e5-417e-8d38-0970f7f56414" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second", + "type": "n8n-nodes-base.function", + "position": [ + 1050, + 140 + ], + "typeVersion": 1, + "id": "94e105e3-0637-4064-8514-af332eb2827f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second1", + "type": "n8n-nodes-base.function", + "position": [ + 610, + 140 + ], + "typeVersion": 1, + "id": "18598ace-99d1-4b66-91c7-e644a87016c5" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second2", + "type": "n8n-nodes-base.function", + "position": [ + 600, + 300 + ], + "typeVersion": 1, + "id": "ba10706c-633c-4cad-968a-f3f18e9c9920" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second3", + "type": "n8n-nodes-base.function", + "position": [ + 1050, + 300 + ], + "typeVersion": 1, + "id": "b0f039ce-0731-4f9a-ba87-bc15d53769b8" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second4", + "type": "n8n-nodes-base.function", + "position": [ + 1500, + 350 + ], + "typeVersion": 1, + "id": "418bceb9-6a77-464f-a4e1-8e1f9405e334" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second5", + "type": "n8n-nodes-base.function", + "position": [ + 2800, + 550 + ], + "typeVersion": 1, + "id": "340d3c0c-faf5-4743-8c1b-f00c6541d8ca" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second6", + "type": "n8n-nodes-base.function", + "position": [ + 2350, + 650 + ], + "typeVersion": 1, + "id": "e46a32dd-2110-4e2d-9c6e-d871edba8fe2" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second7", + "type": "n8n-nodes-base.function", + "position": [ + 1900, + 650 + ], + "typeVersion": 1, + "id": "67a411cf-4505-4c21-aa92-1936ccdb0149" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second8", + "type": "n8n-nodes-base.function", + "position": [ + 1940, + 300 + ], + "typeVersion": 1, + "id": "26cac095-afb7-41c7-85a9-44dbdf916e9f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second9", + "type": "n8n-nodes-base.function", + "position": [ + 750, + 500 + ], + "typeVersion": 1, + "id": "e1fe7a57-75ee-4154-a288-6a4a740b7375" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second10", + "type": "n8n-nodes-base.function", + "position": [ + 1200, + 500 + ], + "typeVersion": 1, + "id": "571afdbd-30e6-45d6-9848-d9c6d71b5ba4" + } + ], + "connections": { + "Microsoft Outlook": { + "main": [ + [ + { + "node": "Sleep 0.8 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook1": { + "main": [ + [ + { + "node": "Microsoft Outlook2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook2": { + "main": [ + [ + { + "node": "Sleep 0.8 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook3": { + "main": [ + [ + { + "node": "Microsoft Outlook4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook4": { + "main": [ + [ + { + "node": "Sleep 0.8 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook5": { + "main": [ + [ + { + "node": "Sleep 0.8 second8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Microsoft Outlook", + "type": "main", + "index": 0 + }, + { + "node": "Microsoft Outlook14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook6": { + "main": [ + [ + { + "node": "Microsoft Outlook7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook7": { + "main": [ + [ + { + "node": "Sleep 0.8 second9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook8": { + "main": [ + [ + { + "node": "Microsoft Outlook9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook10": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook11": { + "main": [ + [ + { + "node": "Sleep 0.8 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook13": { + "main": [ + [ + { + "node": "Microsoft Outlook12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook9": { + "main": [ + [ + { + "node": "Sleep 0.8 second10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook14": { + "main": [ + [ + { + "node": "Sleep 0.8 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook15": { + "main": [ + [ + { + "node": "Microsoft Outlook16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook16": { + "main": [ + [ + { + "node": "Sleep 0.8 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook17": { + "main": [ + [ + { + "node": "Microsoft Outlook18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook19": { + "main": [ + [ + { + "node": "Microsoft Outlook5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Move Binary Data": { + "main": [ + [ + { + "node": "Microsoft Outlook20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Move Binary Data", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook20": { + "main": [ + [ + { + "node": "Sleep 0.8 second7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook21": { + "main": [ + [ + { + "node": "Microsoft Outlook22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook22": { + "main": [ + [ + { + "node": "Sleep 0.8 second6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft Outlook23": { + "main": [ + [ + { + "node": "Microsoft Outlook11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second": { + "main": [ + [ + { + "node": "Microsoft Outlook17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second1": { + "main": [ + [ + { + "node": "Microsoft Outlook15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second2": { + "main": [ + [ + { + "node": "Microsoft Outlook1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second3": { + "main": [ + [ + { + "node": "Microsoft Outlook3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second4": { + "main": [ + [ + { + "node": "Microsoft Outlook19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second5": { + "main": [ + [ + { + "node": "Microsoft Outlook13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second6": { + "main": [ + [ + { + "node": "Microsoft Outlook23", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second7": { + "main": [ + [ + { + "node": "Microsoft Outlook21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second8": { + "main": [ + [ + { + "node": "Microsoft Outlook6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second9": { + "main": [ + [ + { + "node": "Microsoft Outlook8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second10": { + "main": [ + [ + { + "node": "Microsoft Outlook10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/143.json b/test-workflows/workflows/143.json new file mode 100644 index 0000000000..a02b244f42 --- /dev/null +++ b/test-workflows/workflows/143.json @@ -0,0 +1,122 @@ +{ + "createdAt": "2021-03-22T11:26:13.716Z", + "updatedAt": "2021-03-24T08:32:29.467Z", + "id": "143", + "name": "Clearbit:Company:enrich autocomplete:Person:enrich", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + -60, + 280 + ], + "id": "8033ed4d-ce87-413e-a813-6a86713e471d" + }, + { + "parameters": { + "domain": "n8n.io", + "additionalFields": { + "companyName": "n8n", + "twitter": "n8n_io" + } + }, + "name": "Clearbit", + "type": "n8n-nodes-base.clearbit", + "typeVersion": 1, + "position": [ + 150, + 200 + ], + "credentials": { + "clearbitApi": { + "id": "114", + "name": "Clearbit API creds" + } + }, + "id": "09a11c3f-55a2-4d52-8040-5c19b0656758" + }, + { + "parameters": { + "operation": "autocomplete", + "name": "n8n" + }, + "name": "Clearbit1", + "type": "n8n-nodes-base.clearbit", + "typeVersion": 1, + "position": [ + 350, + 200 + ], + "credentials": { + "clearbitApi": { + "id": "114", + "name": "Clearbit API creds" + } + }, + "id": "e71587e3-ca16-4197-b0a7-d9c33f2c82b3" + }, + { + "parameters": { + "resource": "person", + "email": "jan@n8n.io", + "additionalFields": { + "company": "n8n" + } + }, + "name": "Clearbit2", + "type": "n8n-nodes-base.clearbit", + "typeVersion": 1, + "position": [ + 150, + 350 + ], + "credentials": { + "clearbitApi": { + "id": "114", + "name": "Clearbit API creds" + } + }, + "id": "f1c59ebb-3be0-48a5-bd6b-aed005fb54ea" + } + ], + "connections": { + "Clearbit": { + "main": [ + [ + { + "node": "Clearbit1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Clearbit2", + "type": "main", + "index": 0 + }, + { + "node": "Clearbit", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/144.json b/test-workflows/workflows/144.json new file mode 100644 index 0000000000..20293f4d28 --- /dev/null +++ b/test-workflows/workflows/144.json @@ -0,0 +1,138 @@ +{ + "createdAt": "2021-03-23T16:29:37.939Z", + "updatedAt": "2021-03-23T16:47:30.728Z", + "id": "144", + "name": "APITemplate.io:Account:get:Image:create:PDF:create", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "4b9021d7-c23b-4b65-be5b-8c597bfcd020" + }, + { + "parameters": { + "resource": "account" + }, + "name": "APITemplate.io", + "type": "n8n-nodes-base.apiTemplateIo", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "apiTemplateIoApi": { + "id": "115", + "name": "APITemplate.io API creds" + } + }, + "id": "a66cee09-cb64-4958-a4b9-b864bca5f583" + }, + { + "parameters": { + "imageTemplateId": "43c77b2b1a93c324", + "download": true, + "overridesUi": { + "overrideValues": [ + { + "propertiesUi": { + "propertyValues": [ + { + "key": "src", + "value": "https://n8n.io/_nuxt/img/df5be1c.png" + }, + { + "key": "name", + "value": "background-image" + } + ] + } + } + ] + }, + "options": {} + }, + "name": "APITemplate.io1", + "type": "n8n-nodes-base.apiTemplateIo", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "apiTemplateIoApi": { + "id": "115", + "name": "APITemplate.io API creds" + } + }, + "id": "0ec44b99-4d88-4124-adb0-398523d1efe5" + }, + { + "parameters": { + "resource": "pdf", + "pdfTemplateId": "02777b2b1a99bac8", + "download": true, + "propertiesUi": { + "propertyValues": [ + { + "key": "name", + "value": "nodeaqa" + } + ] + }, + "options": {} + }, + "name": "APITemplate.io2", + "type": "n8n-nodes-base.apiTemplateIo", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "apiTemplateIoApi": { + "id": "115", + "name": "APITemplate.io API creds" + } + }, + "id": "7a6502cc-3287-4732-b140-6b66e86987d7" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "APITemplate.io", + "type": "main", + "index": 0 + }, + { + "node": "APITemplate.io1", + "type": "main", + "index": 0 + }, + { + "node": "APITemplate.io2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/145.json b/test-workflows/workflows/145.json new file mode 100644 index 0000000000..f522ba859b --- /dev/null +++ b/test-workflows/workflows/145.json @@ -0,0 +1,84 @@ +{ + "createdAt": "2021-03-23T16:57:55.466Z", + "updatedAt": "2021-03-23T16:57:55.466Z", + "id": "145", + "name": "Peekalink:isAvailable preview", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "81f5cd1e-3133-46d5-a1e2-70790d6d338a" + }, + { + "parameters": { + "operation": "isAvailable", + "url": "https://example.com/" + }, + "name": "Peekalink", + "type": "n8n-nodes-base.peekalink", + "typeVersion": 1, + "position": [ + 550, + 250 + ], + "credentials": { + "peekalinkApi": { + "id": "116", + "name": "Peekalink API" + } + }, + "id": "a8686c14-d503-4e1f-a693-e08cf71ac65e" + }, + { + "parameters": { + "url": "https://example.com/" + }, + "name": "Peekalink1", + "type": "n8n-nodes-base.peekalink", + "typeVersion": 1, + "position": [ + 550, + 400 + ], + "credentials": { + "peekalinkApi": { + "id": "116", + "name": "Peekalink API" + } + }, + "id": "dfffa4d9-913a-4a08-89de-a1e8f6b010d4" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Peekalink1", + "type": "main", + "index": 0 + }, + { + "node": "Peekalink", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/146.json b/test-workflows/workflows/146.json new file mode 100644 index 0000000000..f865a38208 --- /dev/null +++ b/test-workflows/workflows/146.json @@ -0,0 +1,232 @@ +{ + "createdAt": "2021-03-23T19:24:34.036Z", + "updatedAt": "2021-03-23T19:24:34.036Z", + "id": "146", + "name": "TimescaleDB:insert update executeQuery", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "22efcecd-6cad-42b4-9571-123444740429" + }, + { + "parameters": { + "table": "conditions", + "columns": "temperature,location,time" + }, + "name": "TimescaleDB", + "type": "n8n-nodes-base.timescaleDb", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "timescaleDb": { + "id": "117", + "name": "TimescaleDB creds" + } + }, + "id": "e1b1c99c-bf00-4203-b879-bce0feda1963" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "location", + "value": "n8n" + }, + { + "name": "time", + "value": "={{(new Date()).toISOString()}}" + } + ], + "number": [ + { + "name": "temperature", + "value": "={{Math.random()*100}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "834fa03b-7027-435b-acb0-21ca690a6252" + }, + { + "parameters": { + "operation": "update", + "table": "conditions", + "updateKey": "temperature", + "columns": "location" + }, + "name": "TimescaleDB1", + "type": "n8n-nodes-base.timescaleDb", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "credentials": { + "timescaleDb": { + "id": "117", + "name": "TimescaleDB creds" + } + }, + "id": "1fae6a3d-91b5-4c4d-8204-270856d7d6de" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "=SELECT *\nFROM conditions\nWHERE time='{{$node[\"Set\"].json[\"time\"]}}'" + }, + "name": "TimescaleDB2", + "type": "n8n-nodes-base.timescaleDb", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "notesInFlow": true, + "credentials": { + "timescaleDb": { + "id": "117", + "name": "TimescaleDB creds" + } + }, + "notes": "Select row using query", + "id": "6e296996-47ee-446a-8784-731d7ecfc9e7" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "location", + "value": "updatedn8n" + } + ], + "number": [] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "344e4ad6-aba8-4792-b846-508e61592a38" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "DELETE FROM conditions;" + }, + "name": "TimescaleDB3", + "type": "n8n-nodes-base.timescaleDb", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "credentials": { + "timescaleDb": { + "id": "117", + "name": "TimescaleDB creds" + } + }, + "id": "516e1804-3f18-4897-86e7-cf924f92b5aa" + } + ], + "connections": { + "TimescaleDB": { + "main": [ + [ + { + "node": "TimescaleDB2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "TimescaleDB", + "type": "main", + "index": 0 + } + ] + ] + }, + "TimescaleDB2": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "TimescaleDB1", + "type": "main", + "index": 0 + } + ] + ] + }, + "TimescaleDB1": { + "main": [ + [ + { + "node": "TimescaleDB3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/147.json b/test-workflows/workflows/147.json new file mode 100644 index 0000000000..1f607bdf13 --- /dev/null +++ b/test-workflows/workflows/147.json @@ -0,0 +1,447 @@ +{ + "createdAt": "2021-03-24T08:48:20.306Z", + "updatedAt": "2021-03-24T08:55:26.613Z", + "id": "147", + "name": "Raindrop:User:get:Collection:create get update getAll delete:Bookmark:create get update getAll delete:Tag:getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "953c7b03-6474-482f-84d8-1f38d7183bd3" + }, + { + "parameters": { + "resource": "user" + }, + "name": "Raindrop", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 460, + 230 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "c299bc92-d175-4684-9c2e-e7d6b730d94c" + }, + { + "parameters": { + "operation": "create", + "title": "=Collection{{Date.now()}}", + "additionalFields": { + "public": false + } + }, + "name": "Raindrop1", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 460, + 380 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "30ba40e6-5e26-4937-ae66-5a5257529c11" + }, + { + "parameters": { + "collectionId": "={{$node[\"Raindrop1\"].json[\"_id\"]}}" + }, + "name": "Raindrop2", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 600, + 380 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "7dad07a5-e3d6-450d-89bb-c769e31352ad" + }, + { + "parameters": { + "operation": "update", + "collectionId": "={{$node[\"Raindrop1\"].json[\"_id\"]}}", + "updateFields": { + "title": "=Updated{{$node[\"Raindrop1\"].json[\"title\"]}}" + } + }, + "name": "Raindrop3", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 750, + 380 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "cc020621-137d-42b4-9d89-80efcc6a2b84" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Raindrop4", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 900, + 380 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "142119f2-857c-4f0c-b64b-869fc06c7b95" + }, + { + "parameters": { + "operation": "delete", + "collectionId": "={{$node[\"Raindrop1\"].json[\"_id\"]}}" + }, + "name": "Raindrop5", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 2100, + 370 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "bea41e9d-700f-42a2-99b7-53ff087665b8" + }, + { + "parameters": { + "resource": "bookmark", + "operation": "create", + "collectionId": "={{$node[\"Raindrop1\"].json[\"_id\"]}}", + "link": "https://n8n.io/", + "additionalFields": { + "tags": "n8n,automation,worfklow,test", + "title": "=Bookmark{{Date.now()}}" + } + }, + "name": "Raindrop6", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 1050, + 500 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "c8a5347b-d739-4cf1-be7c-1a6039837561" + }, + { + "parameters": { + "resource": "bookmark", + "bookmarkId": "={{$node[\"Raindrop6\"].json[\"_id\"]}}" + }, + "name": "Raindrop7", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 1200, + 500 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "f37f269e-85b5-4159-85a5-34bd8401a8b4" + }, + { + "parameters": { + "resource": "bookmark", + "operation": "update", + "bookmarkId": "={{$node[\"Raindrop6\"].json[\"_id\"]}}", + "updateFields": { + "title": "=Updated{{$node[\"Raindrop6\"].json[\"title\"]}}" + } + }, + "name": "Raindrop8", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 1350, + 500 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "d715febb-1ab1-41d3-8a19-93da561c50bb" + }, + { + "parameters": { + "resource": "bookmark", + "operation": "getAll", + "collectionId": "={{$node[\"Raindrop1\"].json[\"_id\"]}}", + "limit": 1 + }, + "name": "Raindrop9", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 1500, + 500 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "847a3d9e-862b-406e-a34f-547af4ac0daa" + }, + { + "parameters": { + "resource": "bookmark", + "operation": "delete", + "bookmarkId": "={{$node[\"Raindrop6\"].json[\"_id\"]}}" + }, + "name": "Raindrop10", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 1950, + 500 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "6e9390e2-9249-481e-8345-c6f039a267b9" + }, + { + "parameters": { + "resource": "tag", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Raindrop11", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 1650, + 650 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "e6c67559-328b-4442-b3e8-167a3c58116a" + }, + { + "parameters": { + "resource": "tag", + "operation": "delete", + "tags": "test", + "additionalFields": {} + }, + "name": "Raindrop12", + "type": "n8n-nodes-base.raindrop", + "typeVersion": 1, + "position": [ + 1800, + 650 + ], + "credentials": { + "raindropOAuth2Api": { + "id": "118", + "name": "Raindrop OAuth2 API creds" + } + }, + "id": "4db832b9-cbce-4e45-b404-fe5f7d0e7924" + } + ], + "connections": { + "Raindrop1": { + "main": [ + [ + { + "node": "Raindrop2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop2": { + "main": [ + [ + { + "node": "Raindrop3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop3": { + "main": [ + [ + { + "node": "Raindrop4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop4": { + "main": [ + [ + { + "node": "Raindrop6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop6": { + "main": [ + [ + { + "node": "Raindrop7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop7": { + "main": [ + [ + { + "node": "Raindrop8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop8": { + "main": [ + [ + { + "node": "Raindrop9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop9": { + "main": [ + [ + { + "node": "Raindrop11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop11": { + "main": [ + [ + { + "node": "Raindrop12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop12": { + "main": [ + [ + { + "node": "Raindrop10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Raindrop10": { + "main": [ + [ + { + "node": "Raindrop5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Raindrop", + "type": "main", + "index": 0 + }, + { + "node": "Raindrop1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/148.json b/test-workflows/workflows/148.json new file mode 100644 index 0000000000..740527f386 --- /dev/null +++ b/test-workflows/workflows/148.json @@ -0,0 +1,89 @@ +{ + "createdAt": "2021-03-24T09:07:34.933Z", + "updatedAt": "2021-07-29T14:07:02.141Z", + "id": "148", + "name": "Deepl:Language:translate", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e3254a53-50f2-42df-925a-f7f4ac8d0a50" + }, + { + "parameters": { + "text": "n8n (pronounced n-eight-n) helps you to interconnect every app with an API in the world with each other to share and manipulate its data without a single line of code. It is an easy to use, user-friendly and highly customizable service.", + "translateTo": "DE", + "additionalFields": { + "splitSentences": "1", + "preserveFormatting": "0", + "formality": "default" + } + }, + "name": "DeepL", + "type": "n8n-nodes-base.deepL", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "deepLApi": { + "id": "183", + "name": "Deepl Free API creds" + } + }, + "id": "e8c6fe13-54b6-476f-a5c5-d6699874fc9e" + }, + { + "parameters": { + "functionCode": "testData ='n8n (ausgesprochen n-eight-n) hilft Ihnen, jede App mit einer API auf der Welt miteinander zu verbinden, um ihre Daten ohne eine einzige Zeile Code zu teilen und zu manipulieren. Es ist ein einfach zu bedienender, benutzerfreundlicher und hochgradig anpassbarer Dienst.'\nif(items[0].json['text'] !== testData){\n throw new Error('Problem in DeepL node')\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "2672ca93-3052-4bc7-9145-f0f25405378d" + } + ], + "connections": { + "DeepL": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "DeepL", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/149.json b/test-workflows/workflows/149.json new file mode 100644 index 0000000000..0956dc2100 --- /dev/null +++ b/test-workflows/workflows/149.json @@ -0,0 +1,664 @@ +{ + "createdAt": "2021-03-24T10:13:37.863Z", + "updatedAt": "2021-07-29T16:13:27.056Z", + "id": "149", + "name": "Reddit:User:get:Subreddit:get getAll:Profile:get:Post:create get getAll search delete:PostComment:create getAll reply delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "0591985b-5e87-405c-9836-f3445e04edf6" + }, + { + "parameters": { + "resource": "user", + "username": "nodeqa" + }, + "name": "Reddit", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "id": "56e5318b-d8b6-4e9b-a847-29871a1671a1" + }, + { + "parameters": { + "resource": "user", + "username": "nodeqa", + "details": "comments", + "limit": 1 + }, + "name": "Reddit1", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 600, + 150 + ], + "alwaysOutputData": true, + "id": "31923945-dd5e-4fc2-8f6d-2aa45e32b06b" + }, + { + "parameters": { + "resource": "user", + "username": "nodeqa", + "details": "gilded", + "limit": 1 + }, + "name": "Reddit2", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 750, + 150 + ], + "alwaysOutputData": true, + "id": "a7954654-dc0e-44eb-9ff3-f9b5a8f2b1a0" + }, + { + "parameters": { + "resource": "user", + "username": "nodeqa", + "details": "overview", + "limit": 1 + }, + "name": "Reddit3", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 900, + 150 + ], + "alwaysOutputData": true, + "id": "175fcb7c-a5ee-4900-aeee-4a4bfe2ad1be" + }, + { + "parameters": { + "resource": "user", + "username": "nodeqa", + "details": "submitted", + "limit": 1 + }, + "name": "Reddit4", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 1050, + 150 + ], + "alwaysOutputData": true, + "id": "6d3148bb-7c31-435c-aad2-06272d3a8197" + }, + { + "parameters": { + "resource": "subreddit", + "subreddit": "nocode" + }, + "name": "Reddit5", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "alwaysOutputData": true, + "id": "33965804-57f3-4f25-afb8-68715fa81354" + }, + { + "parameters": { + "resource": "subreddit", + "operation": "getAll", + "limit": 1, + "filters": { + "trending": false + } + }, + "name": "Reddit6", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "alwaysOutputData": true, + "id": "f918e479-b30a-4fa0-8830-89dd7edf5004" + }, + { + "parameters": { + "resource": "profile" + }, + "name": "Reddit7", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "notes": "IGNORED_PROPERTIES=cookie_consent_banner", + "id": "5747c453-08f3-4777-8cee-36315d2dfdc0" + }, + { + "parameters": { + "resource": "profile", + "details": "prefs" + }, + "name": "Reddit8", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "7301f84d-f865-4ce6-b754-26c6688927dc" + }, + { + "parameters": { + "resource": "profile", + "details": "trophies" + }, + "name": "Reddit9", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 750, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "6e6261e9-4b73-4cfd-9c43-06e3419204e1" + }, + { + "parameters": { + "subreddit": "test", + "title": "=Title{{Date.now()}}", + "text": "=Test post {{Date.now()}}" + }, + "name": "Reddit10", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 450, + 600 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "008c54e0-80a0-478d-a71e-3d84ede2952e" + }, + { + "parameters": { + "operation": "get", + "subreddit": "test", + "postId": "={{$node[\"Reddit10\"].json[\"id\"]}}" + }, + "name": "Reddit11", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 600, + 600 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "57990704-189f-4f6a-8fc5-6bb9c6593f05" + }, + { + "parameters": { + "operation": "getAll", + "subreddit": "test", + "limit": 1, + "filters": { + "category": "new" + } + }, + "name": "Reddit12", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 750, + 600 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "bbb708d3-a7b5-42fe-bc28-e617f0a95dff" + }, + { + "parameters": { + "operation": "search", + "subreddit": "test", + "keyword": "post", + "limit": 1, + "additionalFields": { + "sort": "new" + } + }, + "name": "Reddit13", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 900, + 600 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "notes": "IGNORED_PROPERTIES=post_hint,preview,url_overridden_by_dest,is_gallery,gallery_data,media_metadata", + "id": "2201c9ff-a721-4b00-a17f-d285bd9daee7" + }, + { + "parameters": { + "operation": "delete", + "postId": "={{$node[\"Reddit10\"].json[\"id\"]}}" + }, + "name": "Reddit14", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 1960, + 600 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "6653bae4-be12-47a1-b515-a88ca01a0f03" + }, + { + "parameters": { + "resource": "postComment", + "postId": "={{$node[\"Reddit10\"].json[\"id\"]}}", + "commentText": "=Comment{{Date.now()}}" + }, + "name": "Reddit15", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 1050, + 750 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "d11b902b-9839-436b-b370-e90d61b9ed80" + }, + { + "parameters": { + "resource": "postComment", + "operation": "getAll", + "subreddit": "test", + "postId": "={{$node[\"Reddit10\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Reddit16", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 1360, + 750 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "a90dfeb6-1940-41eb-8083-eb9e7003bf10" + }, + { + "parameters": { + "resource": "postComment", + "operation": "reply", + "commentId": "={{$node[\"Reddit15\"].json[\"id\"]}}", + "replyText": "=ReplyComment{{Date.now()}}" + }, + "name": "Reddit17", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 1510, + 750 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "c80efe81-fc7d-4523-ba4c-11e0e22e064a" + }, + { + "parameters": { + "resource": "postComment", + "operation": "delete", + "commentId": "={{$node[\"Reddit15\"].json[\"id\"]}}" + }, + "name": "Reddit18", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 1660, + 750 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "ad24a5e6-0d22-441e-a7f9-d74dcf49ecd4" + }, + { + "parameters": { + "resource": "postComment", + "operation": "delete", + "commentId": "={{$node[\"Reddit17\"].json[\"id\"]}}" + }, + "name": "Reddit19", + "type": "n8n-nodes-base.reddit", + "typeVersion": 1, + "position": [ + 1810, + 750 + ], + "alwaysOutputData": true, + "credentials": { + "redditOAuth2Api": { + "id": "120", + "name": "Reddit OAuth2 API creds" + } + }, + "id": "a9ec2a18-187e-47ee-a5ce-73bbd02576f2" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(10000);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 10 seconds", + "type": "n8n-nodes-base.function", + "position": [ + 1200, + 750 + ], + "typeVersion": 1, + "id": "858b86f3-9efd-45b0-88e7-c2b25d560159" + } + ], + "connections": { + "Reddit": { + "main": [ + [ + { + "node": "Reddit1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit1": { + "main": [ + [ + { + "node": "Reddit2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit2": { + "main": [ + [ + { + "node": "Reddit3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit3": { + "main": [ + [ + { + "node": "Reddit4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit5": { + "main": [ + [ + { + "node": "Reddit6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit7": { + "main": [ + [ + { + "node": "Reddit8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit8": { + "main": [ + [ + { + "node": "Reddit9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit10": { + "main": [ + [ + { + "node": "Reddit11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit11": { + "main": [ + [ + { + "node": "Reddit12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit12": { + "main": [ + [ + { + "node": "Reddit13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit13": { + "main": [ + [ + { + "node": "Reddit15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit15": { + "main": [ + [ + { + "node": "Sleep 10 seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit16": { + "main": [ + [ + { + "node": "Reddit17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit17": { + "main": [ + [ + { + "node": "Reddit18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit18": { + "main": [ + [ + { + "node": "Reddit19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Reddit19": { + "main": [ + [ + { + "node": "Reddit14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Reddit", + "type": "main", + "index": 0 + }, + { + "node": "Reddit5", + "type": "main", + "index": 0 + }, + { + "node": "Reddit7", + "type": "main", + "index": 0 + }, + { + "node": "Reddit10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 10 seconds": { + "main": [ + [ + { + "node": "Reddit16", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/15.json b/test-workflows/workflows/15.json new file mode 100644 index 0000000000..1ff348562d --- /dev/null +++ b/test-workflows/workflows/15.json @@ -0,0 +1,543 @@ +{ + "createdAt": "2021-02-16T10:16:46.803Z", + "updatedAt": "2021-05-20T15:21:14.466Z", + "id": "15", + "name": "DropBox:File: upload move copy download delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 120, + 300 + ], + "id": "96dbd3bb-afe7-43ce-a204-ab0a1fec38e1" + }, + { + "parameters": { + "path": "={{$json[\"metadata\"][\"path_display\"]}}/testFile", + "binaryData": true + }, + "name": "Dropbox", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "continueOnFail": true, + "id": "ae1f6047-70fc-4da6-a602-663fc63442e4" + }, + { + "parameters": { + "operation": "move", + "path": "={{$node[\"Dropbox8\"].json[\"metadata\"][\"path_display\"]}}/testFile", + "toPath": "={{$node[\"Dropbox8\"].json[\"metadata\"][\"path_display\"]}}/moveTestFile{{Date.now()}}" + }, + "name": "Dropbox2", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "6b0ee1ef-fd36-4a78-bf5a-77a6351e7cb5" + }, + { + "parameters": { + "operation": "copy", + "path": "={{$json[\"metadata\"][\"path_display\"]}}", + "toPath": "={{$node[\"Dropbox8\"].json[\"metadata\"][\"path_display\"]}}/copiedTestFile" + }, + "name": "Dropbox3", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 1210, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "249d895c-adab-4ef9-a9de-107a707eedc2" + }, + { + "parameters": { + "operation": "delete", + "path": "={{$json[\"metadata\"][\"path_display\"]}}" + }, + "name": "Dropbox4", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 1490, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "6f5575aa-9fb2-4ce9-8d17-0955797fb62d" + }, + { + "parameters": { + "operation": "download", + "path": "={{$json[\"metadata\"][\"path_display\"]}}" + }, + "name": "Dropbox5", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 1210, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "b982811b-6408-4410-8519-fa3a1df215ba" + }, + { + "parameters": { + "operation": "delete", + "path": "={{$json[\"metadata\"][\"path_display\"]}}" + }, + "name": "Dropbox6", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 1500, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "e168f6df-3d70-4256-a19d-ada81d6e29d1" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "0ac33c86-3813-4af0-be35-9201501cbd28" + }, + { + "parameters": { + "resource": "folder", + "path": "=/testFolder{{Date.now()}}" + }, + "name": "Dropbox8", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 300, + 130 + ], + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "8d123a27-69dc-4fb1-95b4-c5d5eb90e07b" + }, + { + "parameters": { + "resource": "folder", + "operation": "list", + "path": "={{$node[\"Dropbox10\"].json[\"metadata\"][\"path_display\"]}}", + "limit": 1, + "filters": { + "include_deleted": true + } + }, + "name": "Dropbox9", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 2070, + 150 + ], + "alwaysOutputData": true, + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "09395798-ba6f-4d77-a96a-01b162e9695f" + }, + { + "parameters": { + "resource": "folder", + "operation": "move", + "path": "={{$node[\"Dropbox8\"].json[\"metadata\"][\"path_display\"]}}", + "toPath": "={{$node[\"Dropbox8\"].json[\"metadata\"][\"path_display\"]}}Renamed" + }, + "name": "Dropbox10", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 1800, + 150 + ], + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "7eca30c5-506c-46cc-bbe0-6ded1099dee3" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "path": "={{$node[\"Dropbox10\"].json[\"metadata\"][\"path_display\"]}}" + }, + "name": "Dropbox11", + "type": "n8n-nodes-base.dropbox", + "typeVersion": 1, + "position": [ + 2380, + 150 + ], + "credentials": { + "dropboxApi": { + "id": "31", + "name": "Dropbox creds" + } + }, + "id": "f513eda7-84d7-4903-ad94-c33c6f1a37a9" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 seconds", + "type": "n8n-nodes-base.function", + "position": [ + 600, + 300 + ], + "typeVersion": 1, + "id": "28826f4e-1aeb-4bad-9516-fd49a29a4db5" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 900, + 300 + ], + "typeVersion": 1, + "id": "55fa0728-bd74-41b0-b0b4-6b59175633b8" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 1350, + 300 + ], + "typeVersion": 1, + "id": "694407f2-2225-459d-bfd3-23f9371c7e22" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 seconds3", + "type": "n8n-nodes-base.function", + "position": [ + 1350, + 450 + ], + "typeVersion": 1, + "id": "c42d5236-994b-446a-9427-2095bb3b5121" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 seconds4", + "type": "n8n-nodes-base.function", + "position": [ + 2230, + 150 + ], + "typeVersion": 1, + "id": "84d5255b-7ef5-4f96-92dc-4bd7d406cba7" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 seconds5", + "type": "n8n-nodes-base.function", + "position": [ + 1930, + 150 + ], + "typeVersion": 1, + "id": "425dc02d-8d3c-42f9-a812-3a223f6b7a47" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 seconds6", + "type": "n8n-nodes-base.function", + "position": [ + 1650, + 450 + ], + "typeVersion": 1, + "id": "de860b61-34ef-4faa-a0a8-6054fcd8079b" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Dropbox8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Dropbox": { + "main": [ + [ + { + "node": "Sleep 0.8 seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Dropbox2": { + "main": [ + [ + { + "node": "Dropbox3", + "type": "main", + "index": 0 + }, + { + "node": "Dropbox5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Dropbox3": { + "main": [ + [ + { + "node": "Sleep 0.8 seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Dropbox5": { + "main": [ + [ + { + "node": "Sleep 0.8 seconds3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Dropbox6": { + "main": [ + [ + { + "node": "Sleep 0.8 seconds6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Sleep 0.8 seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "Dropbox8": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Dropbox9": { + "main": [ + [ + { + "node": "Sleep 0.8 seconds4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Dropbox10": { + "main": [ + [ + { + "node": "Sleep 0.8 seconds5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 seconds": { + "main": [ + [ + { + "node": "Dropbox", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 seconds1": { + "main": [ + [ + { + "node": "Dropbox2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 seconds2": { + "main": [ + [ + { + "node": "Dropbox4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 seconds3": { + "main": [ + [ + { + "node": "Dropbox6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 seconds4": { + "main": [ + [ + { + "node": "Dropbox11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 seconds5": { + "main": [ + [ + { + "node": "Dropbox9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 seconds6": { + "main": [ + [ + { + "node": "Dropbox10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/150.json b/test-workflows/workflows/150.json new file mode 100644 index 0000000000..fe9f451413 --- /dev/null +++ b/test-workflows/workflows/150.json @@ -0,0 +1,215 @@ +{ + "createdAt": "2021-03-24T13:20:07.626Z", + "updatedAt": "2021-03-24T13:33:51.181Z", + "id": "150", + "name": "PostHog:Event:create:Identity:create:Alias:create:Track:page screen", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "74887071-8225-4c30-8b67-c3bc2cbbbb3c" + }, + { + "parameters": { + "eventName": "=Event{{Date.now()}}", + "distinctId": "={{Date.now()}}", + "additionalFields": { + "propertiesUi": { + "propertyValues": [ + { + "key": "name", + "value": "test" + } + ] + }, + "timestamp": "={{(new Date()).toISOString()}}" + } + }, + "name": "PostHog", + "type": "n8n-nodes-base.postHog", + "typeVersion": 1, + "position": [ + 500, + 150 + ], + "credentials": { + "postHogApi": { + "id": "121", + "name": "PostHog API" + } + }, + "id": "73600be8-3dde-4dea-a1d0-cea020c02acf" + }, + { + "parameters": { + "resource": "identity", + "distinctId": "={{Date.now()}}", + "additionalFields": { + "propertiesUi": { + "propertyValues": [ + { + "key": "name", + "value": "identity test" + }, + { + "key": "email", + "value": "=fake{{Date.now()}}@gmail.com" + } + ] + }, + "timestamp": "={{Date.now()}}" + } + }, + "name": "PostHog1", + "type": "n8n-nodes-base.postHog", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "postHogApi": { + "id": "121", + "name": "PostHog API" + } + }, + "id": "dd146375-b44f-445a-a2a4-fbaeb9028b0c" + }, + { + "parameters": { + "resource": "alias", + "alias": "=Alias{{Date.now()}}", + "distinctId": "={{Date.now()}}", + "additionalFields": { + "contextUi": { + "contextValues": [ + { + "key": "name", + "value": "Aliastest" + } + ] + }, + "timestamp": "={{Date.now()}}" + } + }, + "name": "PostHog2", + "type": "n8n-nodes-base.postHog", + "typeVersion": 1, + "position": [ + 500, + 450 + ], + "credentials": { + "postHogApi": { + "id": "121", + "name": "PostHog API" + } + }, + "id": "cb1f2644-f1a7-46b0-950e-de720819b2b7" + }, + { + "parameters": { + "resource": "track", + "name": "=TrackPage{{Date.now()}}", + "distinctId": "={{Date.now()}}", + "additionalFields": { + "category": "landing", + "timestamp": "={{Date.now()}}" + } + }, + "name": "PostHog3", + "type": "n8n-nodes-base.postHog", + "typeVersion": 1, + "position": [ + 500, + 600 + ], + "credentials": { + "postHogApi": { + "id": "121", + "name": "PostHog API" + } + }, + "id": "88973d09-036b-41c3-a24c-d799ef0354e2" + }, + { + "parameters": { + "resource": "track", + "operation": "screen", + "name": "=TrackScreen{{Date.now()}}", + "distinctId": "={{Date.now()}}", + "additionalFields": { + "category": "registration", + "timestamp": "={{Date.now()}}" + } + }, + "name": "PostHog4", + "type": "n8n-nodes-base.postHog", + "typeVersion": 1, + "position": [ + 650, + 600 + ], + "credentials": { + "postHogApi": { + "id": "121", + "name": "PostHog API" + } + }, + "id": "2677f5a4-9a15-41f2-a8c0-ea42f269f57b" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "PostHog", + "type": "main", + "index": 0 + }, + { + "node": "PostHog1", + "type": "main", + "index": 0 + }, + { + "node": "PostHog2", + "type": "main", + "index": 0 + }, + { + "node": "PostHog3", + "type": "main", + "index": 0 + } + ] + ] + }, + "PostHog3": { + "main": [ + [ + { + "node": "PostHog4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/151.json b/test-workflows/workflows/151.json new file mode 100644 index 0000000000..5e7775abfc --- /dev/null +++ b/test-workflows/workflows/151.json @@ -0,0 +1,480 @@ +{ + "createdAt": "2021-03-24T14:46:45.567Z", + "updatedAt": "2024-02-23T14:00:43.000Z", + "id": "151", + "name": "Wise:Account:getStatement getBalances getCurrencies:ExchangeRate:get:Profile:get getAll:Recipient:getAll:Quote:create get:Transfer:create get getAll execute delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [250, 650], + "id": "b6204c57-404f-4c53-acc1-a9c9f2e698f5" + }, + { + "parameters": { + "profileId": 16154361 + }, + "name": "Wise", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [650, 200], + "id": "b5851401-b389-4093-9ac2-4f3006f0d21c", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "operation": "getCurrencies" + }, + "name": "Wise1", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [800, 200], + "id": "f0ae63de-1ea4-4ab7-9e72-27aad926e330", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1" + }, + { + "parameters": { + "operation": "getStatement", + "profileId": 16154361, + "borderlessAccountId": 23302, + "currency": "EUR", + "additionalFields": { + "lineStyle": "FLAT" + } + }, + "name": "Wise2", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [500, 200], + "id": "519dda48-ddf1-403b-8dd0-9d91d503f2bb", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "exchangeRate", + "source": "EUR", + "target": "USD", + "additionalFields": {} + }, + "name": "Wise3", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [500, 350], + "id": "ea08c815-9107-41b5-a5af-e2f45b251423", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1" + }, + { + "parameters": { + "resource": "profile", + "profileId": 16154361 + }, + "name": "Wise4", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [500, 500], + "id": "8565eca9-04f5-4c9c-be56-8e3e424e907f", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "recipient", + "limit": 1 + }, + "name": "Wise5", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [500, 650], + "id": "4e57ca88-b2a7-4459-a0c7-09c71da2162b", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "quote", + "operation": "create", + "profileId": 16154361, + "targetAccountId": 147784112, + "amount": 2, + "sourceCurrency": "EUR", + "targetCurrency": "EUR" + }, + "name": "Wise6", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [500, 800], + "id": "0d28f340-cf11-4c34-922e-e82336dfed81", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "quote", + "quoteId": "={{$node[\"Wise6\"].json[\"id\"]}}" + }, + "name": "Wise7", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [640, 800], + "id": "463946cf-45f9-4499-af29-ca3f7ea4f149", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "transfer", + "operation": "create", + "profileId": 16154361, + "quoteId": "={{$node[\"Wise6\"].json[\"id\"]}}", + "targetAccountId": 700007874, + "additionalFields": {} + }, + "name": "Wise8", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [800, 850], + "id": "7adccbb0-f2c0-433c-a80d-5ce191e71ec6", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "transfer", + "transferId": "={{$node[\"Wise8\"].json[\"id\"]}}" + }, + "name": "Wise9", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [950, 850], + "id": "6f34d46a-b8a9-462c-912f-a9de39b43aba", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "transfer", + "operation": "getAll", + "profileId": 16154361, + "limit": 1, + "filters": {} + }, + "name": "Wise10", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [1100, 850], + "executeOnce": false, + "alwaysOutputData": true, + "id": "ba5f7e05-3192-4727-9340-a1003b6b73cb", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "profile", + "operation": "getAll" + }, + "name": "Wise12", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [650, 500], + "id": "a33da4e1-d27c-4f69-9ce0-0734dbce5df7", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "transfer", + "operation": "execute", + "profileId": 16154361, + "transferId": "={{$node[\"Wise8\"].json[\"id\"]}}" + }, + "name": "Wise13", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [1250, 850], + "id": "093d0ca7-9888-4fb1-9734-bc3bf746ce73", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + }, + "disabled": true + }, + { + "parameters": { + "resource": "quote", + "operation": "create", + "profileId": 16154361, + "targetAccountId": 147784112, + "amount": 2, + "sourceCurrency": "EUR", + "targetCurrency": "EUR" + }, + "name": "Wise14", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [500, 1000], + "id": "52b98874-8d52-4e6f-bd45-808afaa13e20", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "transfer", + "operation": "create", + "profileId": 16154361, + "quoteId": "={{$node[\"Wise14\"].json[\"id\"]}}", + "targetAccountId": 700007874, + "additionalFields": {} + }, + "name": "Wise16", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [650, 1050], + "id": "e3d1a7a9-db38-4786-a21a-400182843da5", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + }, + { + "parameters": { + "resource": "transfer", + "operation": "delete", + "transferId": "={{$node[\"Wise16\"].json[\"id\"]}}" + }, + "name": "Wise15", + "type": "n8n-nodes-base.wise", + "typeVersion": 1, + "position": [800, 1050], + "id": "18f10919-83ea-48e0-8df0-19b0ebb2673f", + "credentials": { + "wiseApi": { + "id": "122", + "name": "Wise API creds" + } + } + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Wise5", + "type": "main", + "index": 0 + }, + { + "node": "Wise4", + "type": "main", + "index": 0 + }, + { + "node": "Wise3", + "type": "main", + "index": 0 + }, + { + "node": "Wise2", + "type": "main", + "index": 0 + }, + { + "node": "Wise6", + "type": "main", + "index": 0 + }, + { + "node": "Wise14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise": { + "main": [ + [ + { + "node": "Wise1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise2": { + "main": [ + [ + { + "node": "Wise", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise6": { + "main": [ + [ + { + "node": "Wise7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise4": { + "main": [ + [ + { + "node": "Wise12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise7": { + "main": [ + [ + { + "node": "Wise8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise8": { + "main": [ + [ + { + "node": "Wise9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise9": { + "main": [ + [ + { + "node": "Wise10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise10": { + "main": [ + [ + { + "node": "Wise13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise14": { + "main": [ + [ + { + "node": "Wise16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wise16": { + "main": [ + [ + { + "node": "Wise15", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "12d5670d-e8b6-4c6a-bf37-bcc7f8e53f43", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/152.json b/test-workflows/workflows/152.json new file mode 100644 index 0000000000..7c0f603d5d --- /dev/null +++ b/test-workflows/workflows/152.json @@ -0,0 +1,110 @@ +{ + "createdAt": "2021-03-25T09:23:15.717Z", + "updatedAt": "2021-05-10T14:22:21.201Z", + "id": "152", + "name": "AWSComprehend:Text:detectDominantLanguage detectSentiment detectEntities", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "4db01d0f-ffb0-4ced-be9a-8e80eddc20d4" + }, + { + "parameters": { + "text": "n8n (pronounced n-eight-n) helps you to interconnect every app with an API in the world with each other to share and manipulate its data without a single line of code. It is an easy to use, user-friendly and highly customizable service, which uses an intuitive user interface for you to design your unique workflows very fast. Hosted on your server and not based in the cloud, it keeps your sensible data very secure in your own trusted database." + }, + "name": "AWS Comprehend", + "type": "n8n-nodes-base.awsComprehend", + "typeVersion": 1, + "position": [ + 450, + 200 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "dbc6fd62-d8c6-44e7-aed9-6f8f28e609db" + }, + { + "parameters": { + "operation": "detectSentiment", + "text": "n8n (pronounced n-eight-n) helps you to interconnect every app with an API in the world with each other to share and manipulate its data without a single line of code. It is an easy to use, user-friendly and highly customizable service, which uses an intuitive user interface for you to design your unique workflows very fast. Hosted on your server and not based in the cloud, it keeps your sensible data very secure in your own trusted database." + }, + "name": "AWS Comprehend1", + "type": "n8n-nodes-base.awsComprehend", + "typeVersion": 1, + "position": [ + 450, + 380 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "5ba9b2b0-0534-44d9-bdb5-3f45cd4964d9" + }, + { + "parameters": { + "operation": "detectEntities", + "text": "n8n (pronounced n-eight-n) helps you to interconnect every app with an API in the world with each other to share and manipulate its data without a single line of code. It is an easy to use, user-friendly and highly customizable service, which uses an intuitive user interface for you to design your unique workflows very fast. Hosted on your server and not based in the cloud, it keeps your sensible data very secure in your own trusted database.", + "additionalFields": {} + }, + "name": "AWS Comprehend2", + "type": "n8n-nodes-base.awsComprehend", + "typeVersion": 1, + "position": [ + 450, + 550 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "c744db52-65cc-4e4a-811b-69b2ec328352" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "AWS Comprehend", + "type": "main", + "index": 0 + }, + { + "node": "AWS Comprehend1", + "type": "main", + "index": 0 + }, + { + "node": "AWS Comprehend2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/153.json b/test-workflows/workflows/153.json new file mode 100644 index 0000000000..efb19b570d --- /dev/null +++ b/test-workflows/workflows/153.json @@ -0,0 +1,84 @@ +{ + "createdAt": "2021-03-25T09:44:00.500Z", + "updatedAt": "2021-03-25T09:44:00.500Z", + "id": "153", + "name": "AWSLambda:invoke", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "0e6c4d13-c106-4581-890c-ff9d76f686b5" + }, + { + "parameters": { + "function": "arn:aws:lambda:us-east-1:589875339869:function:test-helloworld" + }, + "name": "AWS Lambda", + "type": "n8n-nodes-base.awsLambda", + "typeVersion": 1, + "position": [ + 450, + 200 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "2f7188cc-0b10-48aa-93a7-68814c18cdcb" + }, + { + "parameters": { + "function": "arn:aws:lambda:us-east-1:589875339869:function:test-helloworld", + "payload": "{\n \"name\": \"nodeqa\"\n}" + }, + "name": "AWS Lambda1", + "type": "n8n-nodes-base.awsLambda", + "typeVersion": 1, + "position": [ + 450, + 360 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "798f32bd-9032-4fad-9b3f-5cd4fb35fdb2" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "AWS Lambda", + "type": "main", + "index": 0 + }, + { + "node": "AWS Lambda1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/154.json b/test-workflows/workflows/154.json new file mode 100644 index 0000000000..a232e73527 --- /dev/null +++ b/test-workflows/workflows/154.json @@ -0,0 +1,85 @@ +{ + "createdAt": "2021-03-25T09:52:50.269Z", + "updatedAt": "2021-03-25T09:52:50.269Z", + "id": "154", + "name": "AWSRekognition:Image:analyze", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "b1f09994-6b4a-4979-bfc4-ec27ba3003ff" + }, + { + "parameters": { + "type": "detectText", + "binaryData": true, + "additionalFields": {} + }, + "name": "AWS Rekognition", + "type": "n8n-nodes-base.awsRekognition", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "9dd43252-32fd-469a-9698-7f486fc51bb5" + }, + { + "parameters": { + "functionCode": "item = {\n json:{},\n binary:{\n data: {\n data: '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', // Base64 encoded binary data (required)\n mimeType: 'image/png',\n fileExtension: 'png',\n fileName: 'n8n-logo.png',\n }\n }\n}\n\nreturn [item];" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "id": "1d29136d-934f-4913-bd1c-d34a2881c9c8" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "AWS Rekognition", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/155.json b/test-workflows/workflows/155.json new file mode 100644 index 0000000000..a8615d20c3 --- /dev/null +++ b/test-workflows/workflows/155.json @@ -0,0 +1,512 @@ +{ + "createdAt": "2021-03-25T10:06:21.916Z", + "updatedAt": "2023-03-16T11:39:51.000Z", + "id": "155", + "name": "AWSS3:Bucket:create getAll search:File:upload getAll download delete:Folder:create getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d1457491-53e0-46a5-b33d-f950be72cd4d" + }, + { + "parameters": { + "resource": "bucket", + "name": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "additionalFields": {} + }, + "name": "AWS S3", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "id": "07bca9de-36b9-4dcb-b61e-7fe54ac44273", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "string": [ + { + "name": "bucketName", + "value": "=Bucket{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "cc6144f2-31e2-47ff-bcb3-92d1c61d07fe" + }, + { + "parameters": { + "resource": "bucket", + "operation": "getAll", + "limit": 1 + }, + "name": "AWS S", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "id": "d500a6b2-04ba-4786-bd4e-ab0432456caa", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "resource": "bucket", + "operation": "search", + "bucketName": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "limit": 1, + "additionalFields": {} + }, + "name": "AWS S1", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1650, + 310 + ], + "id": "ae1381cd-181d-41d4-a058-a276b9a860bc", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "operation": "upload", + "bucketName": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "fileName": "n8n-logo.png", + "additionalFields": {} + }, + "name": "AWS S2", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1050, + 400 + ], + "id": "1ae1e324-2cbd-460b-ae07-45d76283b3de", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "functionCode": "item = {\n json:{},\n binary:{\n data: {\n data: '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', // Base64 encoded binary data (required)\n mimeType: 'image/png',\n fileExtension: 'png',\n fileName: 'n8n-logo.png',\n }\n }\n}\n\nreturn [item];" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 900, + 400 + ], + "id": "07cbc362-2f04-49d7-bfe7-f6dc1449e633" + }, + { + "parameters": { + "operation": "getAll", + "bucketName": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "limit": 1, + "options": {} + }, + "name": "AWS S4", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1200, + 400 + ], + "id": "6409d30f-f301-4455-915f-dca4ba380abd", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "bucketName": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "fileKey": "n8n-logo.png" + }, + "name": "AWS S5", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1350, + 400 + ], + "id": "c92b350b-d8ca-434a-8c46-8f2af62100f4", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "operation": "copy", + "sourcePath": "={{$node[\"Set\"].json[\"bucketName\"]}}/n8n-logo.png", + "destinationPath": "={{$node[\"Set\"].json[\"bucketName\"]}}/copied-n8n-logo.png", + "additionalFields": {} + }, + "name": "AWS S6", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1500, + 400 + ], + "id": "f2d2014a-1b8a-4d40-88ea-c4033cc9cfcb", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "disabled": true + }, + { + "parameters": { + "operation": "delete", + "bucketName": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "fileKey": "n8n-logo.png", + "options": {} + }, + "name": "AWS S7", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1800, + 400 + ], + "id": "844d7a3e-3e56-4111-9667-f985f4ef3cfc", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "resource": "folder", + "bucketName": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "folderName": "={{$node[\"Set1\"].json[\"folderName\"]}}", + "additionalFields": {} + }, + "name": "AWS S8", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 900, + 150 + ], + "id": "2ede20ee-72aa-431a-bea6-b5831f4df5ae", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "resource": "folder", + "operation": "getAll", + "bucketName": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "limit": 1, + "options": {} + }, + "name": "AWS S9", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1050, + 150 + ], + "id": "6ec127d1-bb69-4d7d-9fcf-1ff928ae6b32", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "bucketName": "={{$node[\"Set\"].json[\"bucketName\"]}}", + "folderKey": "={{$node[\"Set1\"].json[\"folderName\"]}}" + }, + "name": "AWS S10", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1200, + 150 + ], + "id": "2697e526-d402-4d6b-8e87-6bd52cc39183", + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "string": [ + { + "name": "folderName", + "value": "=Folder{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 750, + 150 + ], + "id": "a2c96217-5106-46a3-bbf9-ed8fb0062592" + }, + { + "parameters": { + "resource": "bucket", + "operation": "delete", + "name": "={{$node[\"Set\"].json[\"bucketName\"]}}" + }, + "id": "afab353f-4e1a-437b-9351-1fd786ededcc", + "name": "AWS S31", + "type": "n8n-nodes-base.awsS3", + "typeVersion": 1, + "position": [ + 1980, + 400 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + } + ], + "connections": { + "AWS S3": { + "main": [ + [ + { + "node": "AWS S", + "type": "main", + "index": 0 + }, + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "AWS S3", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "AWS S2", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S2": { + "main": [ + [ + { + "node": "AWS S4", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S4": { + "main": [ + [ + { + "node": "AWS S5", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S5": { + "main": [ + [ + { + "node": "AWS S6", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S6": { + "main": [ + [ + { + "node": "AWS S1", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S1": { + "main": [ + [ + { + "node": "AWS S7", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S8": { + "main": [ + [ + { + "node": "AWS S9", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S9": { + "main": [ + [ + { + "node": "AWS S10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "AWS S8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS S10": { + "main": [ + [] + ] + }, + "AWS S7": { + "main": [ + [ + { + "node": "AWS S31", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": {}, + "versionId": "75e8472d-f6c4-41de-9cc8-021c88f2e070", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/156.json b/test-workflows/workflows/156.json new file mode 100644 index 0000000000..6009efd38b --- /dev/null +++ b/test-workflows/workflows/156.json @@ -0,0 +1,61 @@ +{ + "createdAt": "2021-03-25T10:56:20.715Z", + "updatedAt": "2021-03-25T10:56:20.715Z", + "id": "156", + "name": "AWSSNS:publish", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "b5a64e20-a0a9-4ed0-8eb2-f648f8f12789" + }, + { + "parameters": { + "topic": "arn:aws:sns:us-east-1:589875339869:TestingTopic", + "subject": "=Subject{{Date.now()}}", + "message": "=Message{{Date.now()}}" + }, + "name": "AWS SNS", + "type": "n8n-nodes-base.awsSns", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "f57aef0c-0bb4-4e26-b9c2-89df3c72675c" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "AWS SNS", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/157.json b/test-workflows/workflows/157.json new file mode 100644 index 0000000000..cd97d388c4 --- /dev/null +++ b/test-workflows/workflows/157.json @@ -0,0 +1,495 @@ +{ + "createdAt": "2021-03-25T14:16:35.634Z", + "updatedAt": "2021-03-25T14:30:21.247Z", + "id": "157", + "name": "AWSSES:Template:create geAll get update delete:Email:sendTemplate send:CustomVerificationEmail:create get getAll update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "b45b0b50-c25f-4e41-9d82-f0c06af9777a" + }, + { + "parameters": { + "resource": "template", + "templateName": "={{$node[\"Set\"].json[\"templateName\"]}}", + "subjectPart": "=Subject{{Date.now()}}", + "additionalFields": { + "textPart": "=Email body example {{Date.now()}}" + } + }, + "name": "AWS SES", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "3bacb945-31c3-4889-ae64-e956c40c4830" + }, + { + "parameters": { + "resource": "template", + "operation": "getAll", + "limit": 1 + }, + "name": "AWS SES1", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "8dd0d2de-eeac-49e4-ab06-04d56d09972e" + }, + { + "parameters": { + "resource": "template", + "operation": "get", + "templateName": "={{$node[\"Set\"].json[\"templateName\"]}}" + }, + "name": "AWS SES2", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "ab6f7068-8997-473c-a58c-59f881694dc3" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "templateName", + "value": "=Template{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "d8d7bba3-dc23-493e-8f26-781a66685439" + }, + { + "parameters": { + "resource": "template", + "operation": "update", + "templateName": "={{$node[\"Set\"].json[\"templateName\"]}}", + "updateFields": { + "subjectPart": "={{$node[\"AWS SES2\"].json[\"GetTemplateResult\"][\"Template\"][\"SubjectPart\"]}}", + "htmlPart": "=Updated{{$node[\"AWS SES2\"].json[\"GetTemplateResult\"][\"Template\"][\"TextPart\"]}}" + } + }, + "name": "AWS SES3", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "f807da32-fd62-46b0-9204-2667437bc3ee" + }, + { + "parameters": { + "resource": "template", + "operation": "delete", + "templateName": "={{$node[\"Set\"].json[\"templateName\"]}}" + }, + "name": "AWS SES4", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 1500, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "913d5637-d449-42dc-b4b9-ccc6dcb92bde" + }, + { + "parameters": { + "operation": "sendTemplate", + "templateName": "={{$node[\"Set\"].json[\"templateName\"]}}", + "fromEmail": "node8qa@gmail.com", + "toAddresses": [ + "node8qa@gmail.com" + ], + "templateDataUi": { + "templateDataValues": [] + }, + "additionalFields": {} + }, + "name": "AWS SES5", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 1200, + 450 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "6681aed4-834c-480c-b712-3fac85484bae" + }, + { + "parameters": { + "subject": "=AWS email {{Date.now()}}", + "body": "=Testing AWS SES node {{Date.now()}}", + "fromEmail": "node8qa@gmail.com", + "toAddresses": [ + "node8qa@gmail.com" + ], + "additionalFields": {} + }, + "name": "AWS SES6", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 1350, + 450 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "00af365e-6cc7-4006-acdf-6357a1fc80d2" + }, + { + "parameters": { + "resource": "customVerificationEmail", + "fromEmailAddress": "node8qa@gmail.com", + "templateName": "={{$node[\"Set1\"].json[\"templateName\"]}}", + "templateSubject": "=VerificationSubject{{Date.now()}}", + "successRedirectionURL": "http://n8n.io", + "failureRedirectionURL": "http://n8n.io" + }, + "name": "AWS SES7", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 600, + 100 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "844157e9-3159-4ba1-9a6d-0d9a88622cb7" + }, + { + "parameters": { + "resource": "customVerificationEmail", + "operation": "get", + "templateName": "={{$node[\"Set1\"].json[\"templateName\"]}}" + }, + "name": "AWS SES8", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 800, + 100 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "a43d3806-6471-4db1-ac5b-ebf3f85198ca" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "templateName", + "value": "=VerificationTemplate{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 100 + ], + "id": "4c2fa60b-186d-49bc-8c1c-125c25553acb" + }, + { + "parameters": { + "resource": "customVerificationEmail", + "operation": "getAll", + "limit": 1 + }, + "name": "AWS SES9", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 1000, + 100 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "cfcaa069-6215-4adf-81cf-20a8d7d4da49" + }, + { + "parameters": { + "resource": "customVerificationEmail", + "operation": "update", + "templateName": "={{$node[\"Set1\"].json[\"templateName\"]}}", + "updateFields": { + "failureRedirectionURL": "https://community.n8n.io/" + } + }, + "name": "AWS SES10", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 1200, + 100 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "42712f43-3c40-48db-b031-f370b75efae6" + }, + { + "parameters": { + "resource": "customVerificationEmail", + "operation": "delete", + "templateName": "={{$node[\"Set1\"].json[\"templateName\"]}}" + }, + "name": "AWS SES11", + "type": "n8n-nodes-base.awsSes", + "typeVersion": 1, + "position": [ + 1400, + 100 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "ec9b73d3-c23c-4f14-9e2e-2c55910d508f" + } + ], + "connections": { + "AWS SES": { + "main": [ + [ + { + "node": "AWS SES1", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES1": { + "main": [ + [ + { + "node": "AWS SES2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "AWS SES", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES2": { + "main": [ + [ + { + "node": "AWS SES3", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES3": { + "main": [ + [ + { + "node": "AWS SES5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + }, + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES5": { + "main": [ + [ + { + "node": "AWS SES6", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES6": { + "main": [ + [ + { + "node": "AWS SES4", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES7": { + "main": [ + [ + { + "node": "AWS SES8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "AWS SES7", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES8": { + "main": [ + [ + { + "node": "AWS SES9", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES9": { + "main": [ + [ + { + "node": "AWS SES10", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS SES10": { + "main": [ + [ + { + "node": "AWS SES11", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/158.json b/test-workflows/workflows/158.json new file mode 100644 index 0000000000..da78e96f91 --- /dev/null +++ b/test-workflows/workflows/158.json @@ -0,0 +1,260 @@ +{ + "createdAt": "2021-03-25T15:40:17.167Z", + "updatedAt": "2021-03-25T15:40:17.167Z", + "id": "158", + "name": "MicrosoftSQL:insert update executeQuery", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "07cfaafd-88a2-4563-9c2d-7ecfacc4a008" + }, + { + "parameters": { + "table": "TestTable", + "columns": "id,content" + }, + "name": "Microsoft SQL", + "type": "n8n-nodes-base.microsoftSql", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "microsoftSql": { + "id": "98", + "name": "Microsoft SQL" + } + }, + "id": "e854f1b2-572c-4697-8597-aaa1cbfb06cb" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "content", + "value": "=Content{{(new Date()).toISOString()}}" + } + ], + "number": [ + { + "name": "id", + "value": "={{Math.round(Math.random()*10000)}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "59f67b24-0711-4944-aec9-b3470e58ef3a" + }, + { + "parameters": { + "operation": "update", + "table": "TestTable", + "columns": "id,content" + }, + "name": "Microsoft SQL1", + "type": "n8n-nodes-base.microsoftSql", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "microsoftSql": { + "id": "98", + "name": "Microsoft SQL" + } + }, + "id": "7dd65584-a631-4365-aa97-d1eac48055dd" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "content", + "value": "=UpdatedContent{{(new Date()).toISOString()}}" + } + ], + "number": [] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "id": "a7177030-713f-456c-97d8-2d1eeeabacd8" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "=SELECT * FROM TestTable WHERE id={{$node[\"Set\"].json[\"id\"]}};" + }, + "name": "Microsoft SQL2", + "type": "n8n-nodes-base.microsoftSql", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "notesInFlow": true, + "credentials": { + "microsoftSql": { + "id": "98", + "name": "Microsoft SQL" + } + }, + "notes": "Execute Query (SELECT one)", + "id": "66a5e1da-49ef-4b2a-a505-6d42985c72d3" + }, + { + "parameters": { + "operation": "delete", + "table": "TestTable" + }, + "name": "Microsoft SQL3", + "type": "n8n-nodes-base.microsoftSql", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "credentials": { + "microsoftSql": { + "id": "98", + "name": "Microsoft SQL" + } + }, + "id": "43594a06-313c-40f6-b454-7bf217d8dfb8" + }, + { + "parameters": { + "operation": "executeQuery", + "query": "SELECT * FROM TestTable;" + }, + "name": "Microsoft SQL4", + "type": "n8n-nodes-base.microsoftSql", + "typeVersion": 1, + "position": [ + 1300, + 300 + ], + "notesInFlow": true, + "credentials": { + "microsoftSql": { + "id": "98", + "name": "Microsoft SQL" + } + }, + "notes": "Execute Query (SELECT All)", + "id": "5c833fc6-917e-445b-b4bc-d7d2090c9e1a" + } + ], + "connections": { + "Microsoft SQL": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Microsoft SQL", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Microsoft SQL1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft SQL1": { + "main": [ + [ + { + "node": "Microsoft SQL2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft SQL2": { + "main": [ + [ + { + "node": "Microsoft SQL3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft SQL3": { + "main": [ + [ + { + "node": "Microsoft SQL4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/159.json b/test-workflows/workflows/159.json new file mode 100644 index 0000000000..4ac3893766 --- /dev/null +++ b/test-workflows/workflows/159.json @@ -0,0 +1,457 @@ +{ + "createdAt": "2021-03-25T16:19:55.787Z", + "updatedAt": "2021-03-25T16:30:10.075Z", + "id": "159", + "name": "Tapfiliate:Affiliate:create getAll get delete:ProgramAffiliate:add disapprove approve get getAll:AffiliateMetaData:add update remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "35279fb2-20b3-4fb0-b959-7a34dfdd053f" + }, + { + "parameters": { + "email": "=fake{{Date.now()}}@gmail.com", + "firstname": "=Fname{{Date.now()}}", + "lastname": "=Lname{{Date.now()}}", + "additionalFields": {} + }, + "name": "Tapfiliate", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "c69d2f6e-658d-4372-a697-f7e56b1a0f3e" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Tapfiliate1", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "448a390b-2bf9-4676-bb8a-a963a6662117" + }, + { + "parameters": { + "operation": "get", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}" + }, + "name": "Tapfiliate2", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "6d5a78c3-8e56-4401-ada4-2de21b0710c6" + }, + { + "parameters": { + "operation": "delete", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}" + }, + "name": "Tapfiliate3", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 1850, + 300 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "b30f84fe-d53f-485a-8362-509e66c19060" + }, + { + "parameters": { + "resource": "affiliateMetadata", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}", + "metadataUi": { + "metadataValues": [ + { + "key": "source", + "value": "n8n" + } + ] + } + }, + "name": "Tapfiliate4", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 950, + 400 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "a6109eae-d935-48c9-a9aa-b06f15f604c9" + }, + { + "parameters": { + "resource": "affiliateMetadata", + "operation": "update", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}", + "key": "source", + "value": "n8n.io" + }, + "name": "Tapfiliate5", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 1100, + 400 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "0492bf9a-1a4b-4282-8a07-1319fe026e45" + }, + { + "parameters": { + "resource": "affiliateMetadata", + "operation": "remove", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}", + "key": "source" + }, + "name": "Tapfiliate6", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 1250, + 400 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "baf74150-4967-4c31-8bbf-602ffdeef566" + }, + { + "parameters": { + "resource": "programAffiliate", + "programId": "nodeqa-affiliate", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Tapfiliate7", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 950, + 200 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "c909217e-f419-46b9-83fd-7a3b7c8203dc" + }, + { + "parameters": { + "resource": "programAffiliate", + "operation": "disapprove", + "programId": "nodeqa-affiliate", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}" + }, + "name": "Tapfiliate8", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 1100, + 200 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "9178e7d7-d054-466d-83c3-e99b09705035" + }, + { + "parameters": { + "resource": "programAffiliate", + "operation": "approve", + "programId": "nodeqa-affiliate", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}" + }, + "name": "Tapfiliate9", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 1250, + 200 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "8c873324-9d69-4bc8-97c8-3a3907aff5a2" + }, + { + "parameters": { + "resource": "programAffiliate", + "operation": "get", + "programId": "nodeqa-affiliate", + "affiliateId": "={{$node[\"Tapfiliate\"].json[\"id\"]}}" + }, + "name": "Tapfiliate10", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 1400, + 200 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "16dc0791-f3b0-4d70-ba91-8f68eaceb7e0" + }, + { + "parameters": { + "resource": "programAffiliate", + "operation": "getAll", + "programId": "nodeqa-affiliate", + "limit": 1, + "filters": {} + }, + "name": "Tapfiliate11", + "type": "n8n-nodes-base.tapfiliate", + "typeVersion": 1, + "position": [ + 1550, + 200 + ], + "credentials": { + "tapfiliateApi": { + "id": "125", + "name": "Tapfiliate API creds" + } + }, + "id": "56c57083-92db-4e64-97d8-34fc470147de" + }, + { + "parameters": { + "mode": "wait" + }, + "name": "Merge", + "type": "n8n-nodes-base.merge", + "typeVersion": 1, + "position": [ + 1700, + 300 + ], + "id": "8465e4b1-c77d-4522-8f59-df64f4582255" + } + ], + "connections": { + "Tapfiliate": { + "main": [ + [ + { + "node": "Tapfiliate1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate1": { + "main": [ + [ + { + "node": "Tapfiliate2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Tapfiliate", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate2": { + "main": [ + [ + { + "node": "Tapfiliate4", + "type": "main", + "index": 0 + }, + { + "node": "Tapfiliate7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate4": { + "main": [ + [ + { + "node": "Tapfiliate5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate5": { + "main": [ + [ + { + "node": "Tapfiliate6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate7": { + "main": [ + [ + { + "node": "Tapfiliate8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate8": { + "main": [ + [ + { + "node": "Tapfiliate9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate9": { + "main": [ + [ + { + "node": "Tapfiliate10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate10": { + "main": [ + [ + { + "node": "Tapfiliate11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate11": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + } + ] + ] + }, + "Tapfiliate6": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Merge": { + "main": [ + [ + { + "node": "Tapfiliate3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/16.json b/test-workflows/workflows/16.json new file mode 100644 index 0000000000..1efac1a16f --- /dev/null +++ b/test-workflows/workflows/16.json @@ -0,0 +1,93 @@ +{ + "createdAt": "2021-02-16T12:21:52.835Z", + "updatedAt": "2021-07-15T14:40:02.810Z", + "id": "16", + "name": "OpenWeatherMap:: current-weather 5-day-forecast", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "3af2c46a-cc25-4094-8889-0539e80bbbfb" + }, + { + "parameters": { + "cityName": "berlin", + "language": "en" + }, + "name": "OpenWeatherMap", + "type": "n8n-nodes-base.openWeatherMap", + "typeVersion": 1, + "position": [ + 490, + 300 + ], + "credentials": { + "openWeatherMapApi": { + "id": "9", + "name": "openweathermap token" + } + }, + "notes": "IGNORED_PROPERTIES=rain", + "id": "e12fb37d-8207-4219-a3df-20cbd5b9a4d8" + }, + { + "parameters": { + "operation": "5DayForecast", + "cityName": "berlin", + "language": "en" + }, + "name": "OpenWeatherMap1", + "type": "n8n-nodes-base.openWeatherMap", + "typeVersion": 1, + "position": [ + 690, + 300 + ], + "credentials": { + "openWeatherMapApi": { + "id": "9", + "name": "openweathermap token" + } + }, + "id": "4923e536-3bc8-4659-b3bc-c15b7cf7352f" + } + ], + "connections": { + "OpenWeatherMap": { + "main": [ + [ + { + "node": "OpenWeatherMap1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "OpenWeatherMap", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/160.json b/test-workflows/workflows/160.json new file mode 100644 index 0000000000..b5a3cb6cd5 --- /dev/null +++ b/test-workflows/workflows/160.json @@ -0,0 +1,293 @@ +{ + "createdAt": "2021-03-26T08:52:34.511Z", + "updatedAt": "2021-11-19T13:01:47.053Z", + "id": "160", + "name": "Wordpress:User:getAll get create update:Post:create get getAll update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "1a1d54e3-a566-4100-9ce1-3299836fbf11" + }, + { + "parameters": { + "resource": "user", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Wordpress", + "type": "n8n-nodes-base.wordpress", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "wordpressApi": { + "id": "126", + "name": "Wordpress API creds" + } + }, + "id": "47be3700-b529-4ea0-b262-9230788cc460" + }, + { + "parameters": { + "resource": "user", + "username": "=username{{Date.now()}}", + "name": "=Name{{Date.now()}}", + "firstName": "=Fname{{Date.now()}}", + "lastName": "=Lname{{Date.now()}}", + "email": "=fake{{Date.now()}}@gmail.com", + "password": "={{new Array(12).fill().map(() => String.fromCharCode(Math.random()*25+66)).join(\"\")}}", + "additionalFields": {} + }, + "name": "Wordpress1", + "type": "n8n-nodes-base.wordpress", + "typeVersion": 1, + "position": [ + 750, + 150 + ], + "credentials": { + "wordpressApi": { + "id": "126", + "name": "Wordpress API creds" + } + }, + "id": "3195d3b1-4dad-4470-9707-cefbe4409813" + }, + { + "parameters": { + "resource": "user", + "operation": "get", + "userId": "={{$node[\"Wordpress\"].json[\"id\"]}}", + "options": {} + }, + "name": "Wordpress2", + "type": "n8n-nodes-base.wordpress", + "typeVersion": 1, + "position": [ + 600, + 150 + ], + "credentials": { + "wordpressApi": { + "id": "126", + "name": "Wordpress API creds" + } + }, + "id": "e1ef9cce-7248-470b-a827-b4bb27c3ce22" + }, + { + "parameters": { + "resource": "user", + "operation": "update", + "userId": "={{$node[\"Wordpress1\"].json[\"id\"]}}", + "updateFields": { + "slug": "=slug-updated{{$node[\"Wordpress1\"].json[\"slug\"]}}" + } + }, + "name": "Wordpress3", + "type": "n8n-nodes-base.wordpress", + "typeVersion": 1, + "position": [ + 900, + 150 + ], + "credentials": { + "wordpressApi": { + "id": "126", + "name": "Wordpress API creds" + } + }, + "id": "cf5aa95b-d232-493e-9c8a-d35039ac13b4" + }, + { + "parameters": { + "title": "=Title{{Date.now()}}", + "additionalFields": { + "content": "=Post content {{Date.now()}}", + "status": "draft" + } + }, + "name": "Wordpress4", + "type": "n8n-nodes-base.wordpress", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "wordpressApi": { + "id": "126", + "name": "Wordpress API creds" + } + }, + "id": "3e3bf3c6-e000-4034-9919-6ff705999f1a" + }, + { + "parameters": { + "operation": "get", + "postId": "={{$node[\"Wordpress4\"].json[\"id\"]}}", + "options": {} + }, + "name": "Wordpress5", + "type": "n8n-nodes-base.wordpress", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "wordpressApi": { + "id": "126", + "name": "Wordpress API creds" + } + }, + "id": "761de321-3bf2-4c4d-9432-ffe80813bda9" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Wordpress6", + "type": "n8n-nodes-base.wordpress", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "wordpressApi": { + "id": "126", + "name": "Wordpress API creds" + } + }, + "id": "2bf2fd5e-ed32-4964-95dd-2a94e7f0fb4d" + }, + { + "parameters": { + "operation": "update", + "postId": "={{$node[\"Wordpress4\"].json[\"id\"]}}", + "updateFields": { + "title": "=Updated{{$node[\"Wordpress4\"].json[\"title\"][\"rendered\"]}}" + } + }, + "name": "Wordpress7", + "type": "n8n-nodes-base.wordpress", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "wordpressApi": { + "id": "126", + "name": "Wordpress API creds" + } + }, + "id": "f574c739-2015-4996-ace7-c9d6f7f170ba" + } + ], + "connections": { + "Wordpress": { + "main": [ + [ + { + "node": "Wordpress2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wordpress2": { + "main": [ + [ + { + "node": "Wordpress1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wordpress1": { + "main": [ + [ + { + "node": "Wordpress3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wordpress4": { + "main": [ + [ + { + "node": "Wordpress5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wordpress5": { + "main": [ + [ + { + "node": "Wordpress6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Wordpress", + "type": "main", + "index": 0 + }, + { + "node": "Wordpress4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wordpress6": { + "main": [ + [ + { + "node": "Wordpress7", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/161.json b/test-workflows/workflows/161.json new file mode 100644 index 0000000000..1fa13a1e27 --- /dev/null +++ b/test-workflows/workflows/161.json @@ -0,0 +1,62 @@ +{ + "createdAt": "2021-03-29T08:38:31.241Z", + "updatedAt": "2021-03-29T08:39:51.181Z", + "id": "161", + "name": "Vonage:SMS:send", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e945a821-3ba5-4579-966a-2dad40345d27" + }, + { + "parameters": { + "from": "21624827732", + "to": "21624827732", + "message": "=Message{{Date.now()}}", + "additionalFields": {} + }, + "name": "Vonage", + "type": "n8n-nodes-base.vonage", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "vonageApi": { + "id": "128", + "name": "Vonage API creds" + } + }, + "id": "d92003eb-6352-45fe-9e96-7a4b98fdd513" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Vonage", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/162.json b/test-workflows/workflows/162.json new file mode 100644 index 0000000000..ec8c7cc8aa --- /dev/null +++ b/test-workflows/workflows/162.json @@ -0,0 +1,110 @@ +{ + "createdAt": "2021-04-06T08:27:12.354Z", + "updatedAt": "2021-04-19T08:16:20.657Z", + "id": "162", + "name": "AWSSQS:sendMessage", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "61c9e1a4-21ab-4146-82ae-4c4388c1da30" + }, + { + "parameters": { + "queue": "https://sqs.us-east-1.amazonaws.com/589875339869/StandardTestQueue", + "sendInputData": false, + "message": "=StandardMessage{{Date.now()}}", + "options": { + "messageAttributes": { + "string": [ + { + "name": "type", + "value": "test" + } + ] + } + } + }, + "name": "AWS SQS", + "type": "n8n-nodes-base.awsSqs", + "typeVersion": 1, + "position": [ + 550, + 200 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "0194b047-c629-4f68-a629-12455de6ecf6" + }, + { + "parameters": { + "queue": "https://sqs.us-east-1.amazonaws.com/589875339869/FifoTestQueue.fifo", + "queueType": "fifo", + "sendInputData": false, + "message": "=FIFOMessage{{Date.now()}}", + "messageGroupId": "TestMessageGroupId", + "options": { + "messageAttributes": { + "string": [ + { + "name": "type", + "value": "test" + } + ] + }, + "messageDeduplicationId": "DedupTestMessageGroupId" + } + }, + "name": "AWS SQS1", + "type": "n8n-nodes-base.awsSqs", + "typeVersion": 1, + "position": [ + 550, + 380 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "25bc7b70-06c8-4605-8744-f27ab8765761" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "AWS SQS1", + "type": "main", + "index": 0 + }, + { + "node": "AWS SQS", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/163.json b/test-workflows/workflows/163.json new file mode 100644 index 0000000000..4e3a1a33f2 --- /dev/null +++ b/test-workflows/workflows/163.json @@ -0,0 +1,277 @@ +{ + "createdAt": "2021-04-06T10:52:29.924Z", + "updatedAt": "2021-04-06T12:05:26.358Z", + "id": "163", + "name": "GoogleSlides:Presentation:create get getSlides replaceText:Page:get getThumbnail", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "280bf9cc-7749-4adb-972f-17c43e386aa9" + }, + { + "parameters": { + "authentication": "serviceAccount", + "title": "=Slides{{(new Date()).toUTCString()}}" + }, + "name": "Google Slides", + "type": "n8n-nodes-base.googleSlides", + "typeVersion": 1, + "position": [ + 480, + 220 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "4c2f181a-17c4-41d9-aef1-05c8e0641974" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "get", + "presentationId": "={{$node[\"Google Slides\"].json[\"presentationId\"]}}" + }, + "name": "Google Slides1", + "type": "n8n-nodes-base.googleSlides", + "typeVersion": 1, + "position": [ + 640, + 220 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "1b3d04df-4bab-4b44-b1c3-1ed81e90c7f0" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "getSlides", + "presentationId": "={{$node[\"Google Slides\"].json[\"presentationId\"]}}" + }, + "name": "Google Slides2", + "type": "n8n-nodes-base.googleSlides", + "typeVersion": 1, + "position": [ + 800, + 220 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "65882408-7d0c-4869-aa45-d454cc9e3c3f" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "replaceText", + "presentationId": "=1y7glcx_2V4LQoSWXTkBbn-kWRLBEAsn7I27B6RQ3cdo", + "textUi": { + "textValues": [ + { + "pageObjectIds": [ + "p" + ], + "replaceText": "n8n", + "text": "Title" + } + ] + }, + "options": { + "revisionId": "" + } + }, + "name": "Google Slides3", + "type": "n8n-nodes-base.googleSlides", + "typeVersion": 1, + "position": [ + 500, + 50 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "81aa81ed-04d3-4204-a583-9b31fda35266" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "page", + "operation": "getThumbnail", + "presentationId": "={{$node[\"Google Slides\"].json[\"presentationId\"]}}", + "pageObjectId": "p", + "download": true + }, + "name": "Google Slides4", + "type": "n8n-nodes-base.googleSlides", + "typeVersion": 1, + "position": [ + 640, + 390 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "4b42479d-07ed-49ce-9bf6-4c13e7541d89" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "page", + "presentationId": "={{$node[\"Google Slides\"].json[\"presentationId\"]}}", + "pageObjectId": "p" + }, + "name": "Google Slides5", + "type": "n8n-nodes-base.googleSlides", + "typeVersion": 1, + "position": [ + 800, + 390 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "4525257c-52bd-4520-87eb-b7327b01bccb" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "replaceText", + "presentationId": "=1y7glcx_2V4LQoSWXTkBbn-kWRLBEAsn7I27B6RQ3cdo", + "textUi": { + "textValues": [ + { + "pageObjectIds": [ + "p" + ], + "replaceText": "Title", + "text": "n8n" + } + ] + }, + "options": { + "revisionId": "" + } + }, + "name": "Google Slides6", + "type": "n8n-nodes-base.googleSlides", + "typeVersion": 1, + "position": [ + 650, + 50 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "11ef0bd7-e0bf-4779-b21e-4a9f81327119" + } + ], + "connections": { + "Google Slides": { + "main": [ + [ + { + "node": "Google Slides1", + "type": "main", + "index": 0 + }, + { + "node": "Google Slides4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Slides1": { + "main": [ + [ + { + "node": "Google Slides2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Slides2": { + "main": [ + [] + ] + }, + "Google Slides4": { + "main": [ + [ + { + "node": "Google Slides5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Google Slides", + "type": "main", + "index": 0 + }, + { + "node": "Google Slides3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Slides3": { + "main": [ + [ + { + "node": "Google Slides6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/164.json b/test-workflows/workflows/164.json new file mode 100644 index 0000000000..cedfa5dffe --- /dev/null +++ b/test-workflows/workflows/164.json @@ -0,0 +1,812 @@ +{ + "createdAt": "2021-04-07T16:05:43.152Z", + "updatedAt": "2021-05-21T11:15:28.503Z", + "id": "164", + "name": "ClickUp:SpaceTag:create getAll update delete:TaskTag:add remove:TaskList:add remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e574628c-4213-42a6-9675-067f8663a712" + }, + { + "parameters": { + "resource": "spaceTag", + "space": "8716115", + "name": "={{$node[\"Set\"].json[\"name\"]}}", + "foregroundColor": "#fff", + "backgroundColor": "#FF6D5A" + }, + "name": "ClickUp", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "cac9ec08-3ee6-4e13-bf16-97e2f65384f3" + }, + { + "parameters": { + "resource": "spaceTag", + "operation": "getAll", + "space": "8716115", + "returnAll": false, + "limit": 1 + }, + "name": "ClickUp2", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "c23b91c3-7954-4779-ae69-6ba40d03c207" + }, + { + "parameters": { + "resource": "spaceTag", + "operation": "update", + "space": "8716115", + "name": "={{$node[\"Set\"].json[\"name\"].toLowerCase()}}", + "newName": "={{$node[\"Set1\"].json[\"updatedname\"]}}", + "foregroundColor": "#FF6D5A" + }, + "name": "ClickUp3", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1300, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "a242d8e6-7e91-4cf2-a092-677a156e72bd" + }, + { + "parameters": { + "resource": "spaceTag", + "operation": "delete", + "space": "8716115", + "name": "={{$node[\"Set1\"].json[\"updatedname\"].toLowerCase()}}" + }, + "name": "ClickUp4", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1600, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "8c4ab219-84b6-4bd6-8b31-babfd3971f5d" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=SpaceTag{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "52b9c2d4-d0e7-46f7-b62e-0c5e55d50bf4" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "updatedname", + "value": "=UpdatedSpaceTag{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "id": "6da544fc-4cd1-479a-8692-7ed19d7b2125" + }, + { + "parameters": { + "resource": "list", + "operation": "create", + "team": "4651110", + "space": "8716115", + "folderless": true, + "name": "=TestList{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp1", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 400, + 450 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "d4cec873-fa7d-46b5-80d8-99c1976cf787" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second", + "type": "n8n-nodes-base.function", + "position": [ + 550, + 500 + ], + "typeVersion": 1, + "id": "e4f9c382-78bb-4eb3-b27a-408e5d696cce" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second1", + "type": "n8n-nodes-base.function", + "position": [ + 700, + 300 + ], + "typeVersion": 1, + "id": "2dad6f1d-f2e3-48db-8593-e741e04bd5ae" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second2", + "type": "n8n-nodes-base.function", + "position": [ + 1150, + 300 + ], + "typeVersion": 1, + "id": "f5f6b488-12be-4c2c-91f0-ff1b6a932a4c" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second3", + "type": "n8n-nodes-base.function", + "position": [ + 1450, + 300 + ], + "typeVersion": 1, + "id": "29ab4028-3ffd-4b2a-bad6-b1702f2709c2" + }, + { + "parameters": { + "team": "4651110", + "space": "8716115", + "folderless": true, + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "name": "=testTask{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp5", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1000, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "8e04926c-2eca-41e2-b48a-bf3b679d4df4" + }, + { + "parameters": { + "resource": "taskList", + "taskId": "={{$node[\"ClickUp5\"].json[\"id\"]}}", + "listId": "={{$node[\"ClickUp7\"].json[\"id\"]}}" + }, + "name": "ClickUp6", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2050, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "55659b0d-1067-4a18-a849-72ce9bc20e39" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second4", + "type": "n8n-nodes-base.function", + "position": [ + 1150, + 500 + ], + "typeVersion": 1, + "id": "94369ca0-c7c9-4b4e-ad64-7f400169ea24" + }, + { + "parameters": { + "resource": "list", + "operation": "create", + "team": "4651110", + "space": "8716115", + "folderless": true, + "name": "=TestList{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp7", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 700, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "5d662490-3d98-4427-98c8-308fba1ef216" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "string": [ + { + "name": "name", + "value": "=TaskTag{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set2", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1300, + 600 + ], + "id": "d5d2592b-4e8e-4fef-b151-43a5d0f11d28" + }, + { + "parameters": { + "resource": "taskTag", + "taskId": "={{$node[\"ClickUp5\"].json[\"id\"]}}", + "tagName": "={{$node[\"Set2\"].json[\"name\"]}}", + "additionalFields": {} + }, + "name": "ClickUp8", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1450, + 600 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "61f2fe7f-b3a9-495a-84a3-8c3d7a7865b8" + }, + { + "parameters": { + "resource": "taskTag", + "operation": "remove", + "taskId": "={{$node[\"ClickUp5\"].json[\"id\"]}}", + "tagName": "={{$node[\"Set2\"].json[\"name\"]}}", + "additionalFields": {} + }, + "name": "ClickUp9", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1750, + 600 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "3a612843-f56e-450e-b570-597adb5c16e1" + }, + { + "parameters": { + "resource": "taskList", + "operation": "remove", + "taskId": "={{$node[\"ClickUp5\"].json[\"id\"]}}", + "listId": "={{$node[\"ClickUp7\"].json[\"id\"]}}" + }, + "name": "ClickUp10", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2350, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "419a6bd0-af51-4835-9357-d67592c5ac59" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"ClickUp5\"].json[\"id\"]}}" + }, + "name": "ClickUp11", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2550, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "b3d6e8db-f9b1-4ad5-bb07-67414b83c06e" + }, + { + "parameters": { + "resource": "list", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folderless": true, + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}" + }, + "name": "ClickUp12", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2700, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "f864bc89-0fbd-4268-94bd-947f4bfbd283" + }, + { + "parameters": { + "resource": "list", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folderless": true, + "list": "={{$node[\"ClickUp7\"].json[\"id\"]}}" + }, + "name": "ClickUp13", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2850, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "a18e9bc1-c907-49a6-ad91-d06a3d08607a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second5", + "type": "n8n-nodes-base.function", + "position": [ + 850, + 500 + ], + "typeVersion": 1, + "id": "88500c7b-e4da-4d5c-aef5-f533b1beca73" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second6", + "type": "n8n-nodes-base.function", + "position": [ + 1600, + 600 + ], + "typeVersion": 1, + "id": "a65e5617-7265-44b4-a4f9-0b24e9bc8a63" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second7", + "type": "n8n-nodes-base.function", + "position": [ + 1900, + 500 + ], + "typeVersion": 1, + "id": "b1abb9ec-9534-462e-9b87-c2b15d5fdd94" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second8", + "type": "n8n-nodes-base.function", + "position": [ + 2200, + 500 + ], + "typeVersion": 1, + "id": "4bcf2ad3-34c5-4061-9c14-eb9033e726fa" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + }, + { + "node": "ClickUp1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp": { + "main": [ + [ + { + "node": "Sleep 0.8 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp2": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp3": { + "main": [ + [ + { + "node": "Sleep 0.8 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "ClickUp", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Sleep 0.8 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp1": { + "main": [ + [ + { + "node": "Sleep 0.8 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second": { + "main": [ + [ + { + "node": "ClickUp7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second1": { + "main": [ + [ + { + "node": "ClickUp2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second2": { + "main": [ + [ + { + "node": "ClickUp3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second3": { + "main": [ + [ + { + "node": "ClickUp4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp5": { + "main": [ + [ + { + "node": "Sleep 0.8 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp6": { + "main": [ + [ + { + "node": "Sleep 0.8 second8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second4": { + "main": [ + [ + { + "node": "Set2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp7": { + "main": [ + [ + { + "node": "Sleep 0.8 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set2": { + "main": [ + [ + { + "node": "ClickUp8", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp8": { + "main": [ + [ + { + "node": "Sleep 0.8 second6", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp9": { + "main": [ + [ + { + "node": "Sleep 0.8 second7", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp10": { + "main": [ + [ + { + "node": "ClickUp11", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp11": { + "main": [ + [ + { + "node": "ClickUp12", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp12": { + "main": [ + [ + { + "node": "ClickUp13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second5": { + "main": [ + [ + { + "node": "ClickUp5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second6": { + "main": [ + [ + { + "node": "ClickUp9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second7": { + "main": [ + [ + { + "node": "ClickUp6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second8": { + "main": [ + [ + { + "node": "ClickUp10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/165.json b/test-workflows/workflows/165.json new file mode 100644 index 0000000000..816c2ac40c --- /dev/null +++ b/test-workflows/workflows/165.json @@ -0,0 +1,264 @@ +{ + "createdAt": "2021-04-09T07:26:51.323Z", + "updatedAt": "2021-05-21T09:03:30.653Z", + "id": "165", + "name": "Emelia:Campaign:create addContact get getAll start pause:ContactList:getAll add", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e0161f99-f352-4391-a04c-4f5f35a5579d" + }, + { + "parameters": { + "operation": "addContact", + "campaignId": "={{$node[\"Emelia3\"].json[\"_id\"]}}", + "contactEmail": "=fake{{Date.now()}}@email.com", + "additionalFields": {} + }, + "name": "Emelia", + "type": "n8n-nodes-base.emelia", + "typeVersion": 1, + "position": [ + 590, + 150 + ], + "credentials": { + "emeliaApi": { + "id": "136", + "name": "Emelia API creds" + } + }, + "id": "b01f183f-33bb-4f66-a35b-c3510f25566c" + }, + { + "parameters": { + "campaignId": "={{$node[\"Emelia3\"].json[\"_id\"]}}" + }, + "name": "Emelia1", + "type": "n8n-nodes-base.emelia", + "typeVersion": 1, + "position": [ + 750, + 150 + ], + "credentials": { + "emeliaApi": { + "id": "136", + "name": "Emelia API creds" + } + }, + "id": "a7748a81-f4c6-4412-81f3-a30433806180" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Emelia2", + "type": "n8n-nodes-base.emelia", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "emeliaApi": { + "id": "136", + "name": "Emelia API creds" + } + }, + "id": "3915812e-9ccc-4106-9617-f8e4a0e86721" + }, + { + "parameters": { + "operation": "create", + "campaignName": "=TestCampaign{{Date.now()}}" + }, + "name": "Emelia3", + "type": "n8n-nodes-base.emelia", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "emeliaApi": { + "id": "136", + "name": "Emelia API creds" + } + }, + "id": "2c3250bc-e6e8-4d96-ba6c-e48b7d4d7029" + }, + { + "parameters": { + "operation": "start", + "campaignId": "6076e11687008a0e9fc32356" + }, + "name": "Emelia4", + "type": "n8n-nodes-base.emelia", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "emeliaApi": { + "id": "136", + "name": "Emelia API creds" + } + }, + "id": "425267c3-ceee-44b8-a225-8b9754df353d" + }, + { + "parameters": { + "operation": "pause", + "campaignId": "6076e11687008a0e9fc32356" + }, + "name": "Emelia5", + "type": "n8n-nodes-base.emelia", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "emeliaApi": { + "id": "136", + "name": "Emelia API creds" + } + }, + "id": "385748b1-d93b-48f9-bcde-3f5dc8bbd72a" + }, + { + "parameters": { + "resource": "contactList", + "operation": "getAll", + "limit": 1 + }, + "name": "Emelia6", + "type": "n8n-nodes-base.emelia", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "emeliaApi": { + "id": "136", + "name": "Emelia API creds" + } + }, + "id": "6026559f-751f-4cc0-9762-6be2c85011a0" + }, + { + "parameters": { + "resource": "contactList", + "operation": "add", + "contactListId": "={{$node[\"Emelia6\"].json[\"_id\"]}}", + "contactEmail": "=fakeContact{{Date.now()}}@email.com", + "additionalFields": {} + }, + "name": "Emelia7", + "type": "n8n-nodes-base.emelia", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "emeliaApi": { + "id": "136", + "name": "Emelia API creds" + } + }, + "id": "9b44146c-54be-48fe-868e-30029a235f7a" + } + ], + "connections": { + "Emelia": { + "main": [ + [ + { + "node": "Emelia1", + "type": "main", + "index": 0 + }, + { + "node": "Emelia2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Emelia3": { + "main": [ + [ + { + "node": "Emelia", + "type": "main", + "index": 0 + } + ] + ] + }, + "Emelia4": { + "main": [ + [ + { + "node": "Emelia5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Emelia6": { + "main": [ + [ + { + "node": "Emelia7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Emelia3", + "type": "main", + "index": 0 + }, + { + "node": "Emelia4", + "type": "main", + "index": 0 + }, + { + "node": "Emelia6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/166.json b/test-workflows/workflows/166.json new file mode 100644 index 0000000000..432ee5d0b7 --- /dev/null +++ b/test-workflows/workflows/166.json @@ -0,0 +1,520 @@ +{ + "createdAt": "2021-04-09T07:48:03.152Z", + "updatedAt": "2021-04-16T10:57:50.621Z", + "id": "166", + "name": "Intercom:Company:create get getAll update users:Lead:create get getAll update delete:User:create get getAll update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 270, + 300 + ], + "id": "64bf3c53-0178-4d4d-9512-03e5d4499dbd" + }, + { + "parameters": { + "resource": "company", + "companyId": "=Company{{Date.now()}}", + "additionalFields": { + "name": "=TestingCompany{{(new Date()).toISOString()}}" + }, + "customAttributesUi": { + "customAttributesValues": [] + } + }, + "name": "Intercom1", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 450, + 140 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "58a9b746-7277-4ade-96cd-cbe1d7b043f1" + }, + { + "parameters": { + "resource": "company", + "operation": "get", + "selectBy": "companyId", + "value": "={{$node[\"Intercom1\"].json[\"company_id\"]}}" + }, + "name": "Intercom", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 600, + 140 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "6dc0d8fe-d4f2-420b-aa34-dbae9b3720f7" + }, + { + "parameters": { + "resource": "company", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Intercom2", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 750, + 140 + ], + "alwaysOutputData": true, + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "ca96c3e9-1a42-4586-a59e-e020ff6bb533" + }, + { + "parameters": { + "resource": "company", + "operation": "update", + "companyId": "={{$node[\"Intercom1\"].json[\"company_id\"]}}", + "additionalFields": { + "name": "=Updated{{$node[\"Intercom\"].json[\"name\"]}}" + } + }, + "name": "Intercom3", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 900, + 140 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "10bc6886-98c8-4abd-a43e-955b02228f32" + }, + { + "parameters": { + "resource": "company", + "operation": "users", + "listBy": "companyId", + "value": "={{$node[\"Intercom\"].json[\"company_id\"]}}" + }, + "name": "Intercom4", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 1050, + 140 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "b9b67277-92d0-4f4f-ad58-c052bd7fdc1e" + }, + { + "parameters": { + "resource": "lead", + "email": "=fake{{Date.now()}}@email.com", + "additionalFields": { + "avatar": "https://static.intercomassets.com/ember/assets/images/onboarding/home/guide-assistants/phil-978b5567c644d4c0f67a4516c03c6b91.png" + } + }, + "name": "Intercom5", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "ee755a25-9b93-4041-9021-e4f81c3d7c69" + }, + { + "parameters": { + "resource": "lead", + "operation": "get", + "selectBy": "id", + "value": "={{$node[\"Intercom5\"].json[\"id\"]}}" + }, + "name": "Intercom6", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "fceb5905-6512-4c30-b0e8-de1720e7cace" + }, + { + "parameters": { + "resource": "lead", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Intercom7", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "03ace0e9-3abc-4144-ba2a-6a3785887d39" + }, + { + "parameters": { + "resource": "lead", + "operation": "update", + "value": "={{$node[\"Intercom5\"].json[\"id\"]}}", + "additionalFields": { + "name": "=UpdatedLead" + } + }, + "name": "Intercom8", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "0deacb0c-d21c-4f03-85c1-83f6383f3c67" + }, + { + "parameters": { + "resource": "lead", + "operation": "delete", + "deleteBy": "id", + "value": "={{$node[\"Intercom5\"].json[\"id\"]}}" + }, + "name": "Intercom9", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "c4dbf1f2-2c89-4041-b409-64f83643c235" + }, + { + "parameters": { + "identifierType": "userId", + "idValue": "=User{{Date.now()}}", + "additionalFields": {} + }, + "name": "Intercom10", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 450, + 440 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "3a93e3d0-b94e-4987-bf80-b272d9315472" + }, + { + "parameters": { + "operation": "get", + "selectBy": "id", + "value": "={{$node[\"Intercom10\"].json[\"id\"]}}" + }, + "name": "Intercom11", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 600, + 440 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "7442311e-f761-47fb-8008-b884e434acd8" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Intercom12", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 740, + 440 + ], + "alwaysOutputData": true, + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "f82997b8-6501-4e4f-b36f-34571cbb4b84" + }, + { + "parameters": { + "operation": "update", + "value": "={{$node[\"Intercom10\"].json[\"id\"]}}", + "additionalFields": { + "name": "UpdatedUser" + } + }, + "name": "Intercom13", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 900, + 440 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "a11ffecd-9647-4a31-846f-687b1f5146fd" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"Intercom10\"].json[\"id\"]}}" + }, + "name": "Intercom14", + "type": "n8n-nodes-base.intercom", + "typeVersion": 1, + "position": [ + 1050, + 440 + ], + "credentials": { + "intercomApi": { + "id": "137", + "name": "Intercom API creds" + } + }, + "id": "300d5a46-b105-4360-80d6-f60f8f4e8e35" + } + ], + "connections": { + "Intercom1": { + "main": [ + [ + { + "node": "Intercom", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom": { + "main": [ + [ + { + "node": "Intercom2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom2": { + "main": [ + [ + { + "node": "Intercom3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom3": { + "main": [ + [ + { + "node": "Intercom4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom5": { + "main": [ + [ + { + "node": "Intercom6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom6": { + "main": [ + [ + { + "node": "Intercom7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom7": { + "main": [ + [ + { + "node": "Intercom8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom8": { + "main": [ + [ + { + "node": "Intercom9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom10": { + "main": [ + [ + { + "node": "Intercom11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom11": { + "main": [ + [ + { + "node": "Intercom12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom12": { + "main": [ + [ + { + "node": "Intercom13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Intercom13": { + "main": [ + [ + { + "node": "Intercom14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Intercom5", + "type": "main", + "index": 0 + }, + { + "node": "Intercom10", + "type": "main", + "index": 0 + }, + { + "node": "Intercom1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/167.json b/test-workflows/workflows/167.json new file mode 100644 index 0000000000..29b37e3458 --- /dev/null +++ b/test-workflows/workflows/167.json @@ -0,0 +1,370 @@ +{ + "createdAt": "2021-04-09T18:07:51.949Z", + "updatedAt": "2021-04-09T18:10:34.849Z", + "id": "167", + "name": "FreshDesk:Contact:create get update getAll delete:Ticket:create get getAll update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "30b651f9-2126-4c0c-9574-2c52f2ebddc0" + }, + { + "parameters": { + "resource": "contact", + "name": "=Name{{Date.now()}}", + "email": "=Fake{{Date.now()}}@email.com", + "additionalFields": { + "company_id": 80000582589 + } + }, + "name": "Freshdesk", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "106ad001-92d8-4969-8bbb-44f90f77b2f0" + }, + { + "parameters": { + "resource": "contact", + "operation": "get", + "contactId": "={{$node[\"Freshdesk\"].json[\"id\"]}}" + }, + "name": "Freshdesk1", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "6953c12c-ddce-45c5-89f7-65179a5b8f5a" + }, + { + "parameters": { + "resource": "contact", + "operation": "update", + "contactId": "={{$node[\"Freshdesk\"].json[\"id\"]}}", + "additionalFields": { + "job_title": "QA", + "tags": [ + "Test" + ] + } + }, + "name": "Freshdesk2", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "b31d99f6-5818-458c-98ca-17ba07e85319" + }, + { + "parameters": { + "resource": "contact", + "operation": "getAll", + "filters": { + "email": "={{$node[\"Freshdesk1\"].json[\"email\"]}}" + } + }, + "name": "Freshdesk3", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 950, + 300 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "67a516db-2f2e-4963-a3e2-e1c692c4d271" + }, + { + "parameters": { + "resource": "contact", + "operation": "delete", + "contactId": "={{$node[\"Freshdesk\"].json[\"id\"]}}" + }, + "name": "Freshdesk4", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 1850, + 300 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "f1658504-002f-4bd9-9323-87c9923953e2" + }, + { + "parameters": { + "requesterIdentificationValue": "={{$node[\"Freshdesk\"].json[\"id\"]}}", + "priority": "medium", + "options": { + "agent": 80014216011, + "company": 80000582589, + "description": "Testing Workflow", + "group": 80000368389, + "name": "=TicketTest", + "subject": "Testing ticket creation", + "tags": "test,", + "type": "Question" + } + }, + "name": "Freshdesk5", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 1100, + 400 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "6859ca0a-615c-451e-961f-2293fbd40ae0" + }, + { + "parameters": { + "operation": "get", + "ticketId": "={{$node[\"Freshdesk5\"].json[\"id\"]}}" + }, + "name": "Freshdesk6", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 1250, + 400 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "b20c4c3a-7bcb-4c22-995e-c4ce5f920c70" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Freshdesk7", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 1400, + 400 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "988bd8e4-4b99-4612-b0cf-8e77c652fd4b" + }, + { + "parameters": { + "operation": "update", + "ticketId": "={{$node[\"Freshdesk5\"].json[\"id\"]}}", + "updateFields": { + "status": "open", + "tags": "test,updated" + } + }, + "name": "Freshdesk8", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 1550, + 400 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "421ede3f-463e-4262-b4a3-7f874e0866c1" + }, + { + "parameters": { + "operation": "delete", + "ticketId": "={{$node[\"Freshdesk5\"].json[\"id\"]}}" + }, + "name": "Freshdesk9", + "type": "n8n-nodes-base.freshdesk", + "typeVersion": 1, + "position": [ + 1700, + 400 + ], + "credentials": { + "freshdeskApi": { + "id": "134", + "name": "Freshdesk API creds" + } + }, + "id": "2a3e7a8e-b5e8-42a4-be76-b97d1c877942" + } + ], + "connections": { + "Freshdesk": { + "main": [ + [ + { + "node": "Freshdesk1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Freshdesk1": { + "main": [ + [ + { + "node": "Freshdesk2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Freshdesk2": { + "main": [ + [ + { + "node": "Freshdesk3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Freshdesk3": { + "main": [ + [ + { + "node": "Freshdesk5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Freshdesk5": { + "main": [ + [ + { + "node": "Freshdesk6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Freshdesk6": { + "main": [ + [ + { + "node": "Freshdesk7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Freshdesk7": { + "main": [ + [ + { + "node": "Freshdesk8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Freshdesk8": { + "main": [ + [ + { + "node": "Freshdesk9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Freshdesk9": { + "main": [ + [ + { + "node": "Freshdesk4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Freshdesk", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/168.json b/test-workflows/workflows/168.json new file mode 100644 index 0000000000..94307143ad --- /dev/null +++ b/test-workflows/workflows/168.json @@ -0,0 +1,153 @@ +{ + "createdAt": "2021-04-13T14:55:34.780Z", + "updatedAt": "2021-05-26T08:10:22.923Z", + "id": "168", + "name": "Demio:Event:getAll get register:Report:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 400, + 480 + ], + "id": "47dbd966-77aa-4bda-96ed-e97f6a5981fd" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Demio", + "type": "n8n-nodes-base.demio", + "typeVersion": 1, + "position": [ + 650, + 420 + ], + "credentials": { + "demioApi": { + "id": "135", + "name": "Demio API creds" + } + }, + "id": "57e082a8-354b-45a4-942d-11f7227fc3ce" + }, + { + "parameters": { + "eventId": "={{$node[\"Demio\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Demio1", + "type": "n8n-nodes-base.demio", + "typeVersion": 1, + "position": [ + 790, + 420 + ], + "credentials": { + "demioApi": { + "id": "135", + "name": "Demio API creds" + } + }, + "id": "1e57d585-0f82-4111-8c63-f5b4e66cef5e" + }, + { + "parameters": { + "operation": "register", + "eventId": "={{$node[\"Demio\"].json[\"id\"]}}", + "firstName": "=Name{{Date.now()}}", + "email": "=Fake{{Date.now()}}@email.com", + "additionalFields": {} + }, + "name": "Demio2", + "type": "n8n-nodes-base.demio", + "typeVersion": 1, + "position": [ + 940, + 420 + ], + "credentials": { + "demioApi": { + "id": "135", + "name": "Demio API creds" + } + }, + "id": "517f9682-cda3-406e-bf92-668fcc9feccb" + }, + { + "parameters": { + "resource": "report", + "eventId": 400538, + "dateId": 1967450, + "filters": {} + }, + "name": "Demio3", + "type": "n8n-nodes-base.demio", + "typeVersion": 1, + "position": [ + 650, + 570 + ], + "credentials": { + "demioApi": { + "id": "135", + "name": "Demio API creds" + } + }, + "id": "3404303d-775a-4445-9458-a77f408726a7" + } + ], + "connections": { + "Demio": { + "main": [ + [ + { + "node": "Demio1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Demio1": { + "main": [ + [ + { + "node": "Demio2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Demio", + "type": "main", + "index": 0 + }, + { + "node": "Demio3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/169.json b/test-workflows/workflows/169.json new file mode 100644 index 0000000000..aae1b055c3 --- /dev/null +++ b/test-workflows/workflows/169.json @@ -0,0 +1,90 @@ +{ + "createdAt": "2021-04-19T08:59:29.617Z", + "updatedAt": "2021-04-19T08:59:29.617Z", + "id": "169", + "name": "Mocean:SMS:send", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "7f66f905-8236-4fe4-922b-8a7ab6921f26" + }, + { + "parameters": { + "from": "Nodeqa", + "to": "21624827732", + "message": "=SMS-TEST-{{Date.now()}}" + }, + "name": "Mocean", + "type": "n8n-nodes-base.mocean", + "typeVersion": 1, + "position": [ + 500, + 200 + ], + "credentials": { + "moceanApi": { + "id": "138", + "name": "Mocean Api creds" + } + }, + "id": "3a8d2f48-5719-466e-95be-21d0c1d84c88" + }, + { + "parameters": { + "resource": "voice", + "from": "Nodeqa", + "to": "21624827732", + "language": "en-GB", + "message": "=SMS{{Date.now()}}" + }, + "name": "Mocean1", + "type": "n8n-nodes-base.mocean", + "typeVersion": 1, + "position": [ + 500, + 350 + ], + "credentials": { + "moceanApi": { + "id": "138", + "name": "Mocean Api creds" + } + }, + "disabled": true, + "id": "2b80cb4d-4dda-4b2b-8c7a-05293a2ae063" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Mocean", + "type": "main", + "index": 0 + }, + { + "node": "Mocean1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/17.json b/test-workflows/workflows/17.json new file mode 100644 index 0000000000..dd0ff48469 --- /dev/null +++ b/test-workflows/workflows/17.json @@ -0,0 +1,56 @@ +{ + "createdAt": "2021-02-16T12:25:56.509Z", + "updatedAt": "2021-02-16T12:26:09.769Z", + "id": "17", + "name": "OpenThesaurus:: Get Synonyms", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d7c16b8e-f8b9-42dc-8c13-b38f754dac42" + }, + { + "parameters": { + "text": "Wasser", + "options": { + "similar": true + } + }, + "name": "OpenThesaurus", + "type": "n8n-nodes-base.openThesaurus", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "id": "54144d68-c88f-447d-8831-72754b58214a" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "OpenThesaurus", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/170.json b/test-workflows/workflows/170.json new file mode 100644 index 0000000000..694bdee929 --- /dev/null +++ b/test-workflows/workflows/170.json @@ -0,0 +1,311 @@ +{ + "createdAt": "2021-04-19T09:55:16.357Z", + "updatedAt": "2021-05-25T13:38:12.376Z", + "id": "170", + "name": "Xero:Contact:create get getAll update:Invoice:create get getAll update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "f0c45c75-abab-4369-b823-165926299d4d" + }, + { + "parameters": { + "resource": "contact", + "organizationId": "90ee722a-8780-44f6-8788-e1d6b0bd2aa4", + "name": "=Contact{{Date.now()}}", + "additionalFields": { + "firstName": "=FirstName{{Date.now()}}" + } + }, + "name": "Xero", + "type": "n8n-nodes-base.xero", + "typeVersion": 1, + "position": [ + 500, + 200 + ], + "credentials": { + "xeroOAuth2Api": { + "id": "139", + "name": "Xero OAuth2 API creds" + } + }, + "id": "bef8a1fb-6608-4881-843a-3f1a0bf6d0df" + }, + { + "parameters": { + "resource": "contact", + "operation": "get", + "organizationId": "90ee722a-8780-44f6-8788-e1d6b0bd2aa4", + "contactId": "={{$node[\"Xero\"].json[\"ContactID\"]}}" + }, + "name": "Xero1", + "type": "n8n-nodes-base.xero", + "typeVersion": 1, + "position": [ + 650, + 200 + ], + "credentials": { + "xeroOAuth2Api": { + "id": "139", + "name": "Xero OAuth2 API creds" + } + }, + "id": "04550831-0f26-471a-ac9d-4acd8d25e905" + }, + { + "parameters": { + "resource": "contact", + "operation": "getAll", + "organizationId": "90ee722a-8780-44f6-8788-e1d6b0bd2aa4", + "limit": 1, + "options": { + "orderBy": "UpdatedDateUTC", + "sortOrder": "ASC" + } + }, + "name": "Xero2", + "type": "n8n-nodes-base.xero", + "typeVersion": 1, + "position": [ + 800, + 200 + ], + "credentials": { + "xeroOAuth2Api": { + "id": "139", + "name": "Xero OAuth2 API creds" + } + }, + "id": "db15691c-4eb1-4ada-81c0-deb62b1ad238" + }, + { + "parameters": { + "resource": "contact", + "operation": "update", + "organizationId": "90ee722a-8780-44f6-8788-e1d6b0bd2aa4", + "contactId": "={{$node[\"Xero\"].json[\"ContactID\"]}}", + "updateFields": { + "firstName": "=Updated{{$node[\"Xero1\"].json[\"FirstName\"]}}" + } + }, + "name": "Xero3", + "type": "n8n-nodes-base.xero", + "typeVersion": 1, + "position": [ + 950, + 200 + ], + "credentials": { + "xeroOAuth2Api": { + "id": "139", + "name": "Xero OAuth2 API creds" + } + }, + "id": "8ca6dfd8-8429-4ae8-809e-7f2167350cf2" + }, + { + "parameters": { + "organizationId": "90ee722a-8780-44f6-8788-e1d6b0bd2aa4", + "type": "ACCPAY", + "contactId": "={{$node[\"Xero1\"].json[\"ContactID\"]}}", + "lineItemsUi": { + "lineItemsValues": [ + { + "description": "Test", + "quantity": 3, + "unitAmount": "10", + "itemCode": "BOOK", + "accountCode": "300", + "taxType": "INPUT", + "taxAmount": "10" + } + ] + }, + "additionalFields": {} + }, + "name": "Xero4", + "type": "n8n-nodes-base.xero", + "typeVersion": 1, + "position": [ + 800, + 350 + ], + "credentials": { + "xeroOAuth2Api": { + "id": "139", + "name": "Xero OAuth2 API creds" + } + }, + "id": "fd0adcca-b10b-4ae1-9a24-d088339623f7" + }, + { + "parameters": { + "operation": "get", + "organizationId": "90ee722a-8780-44f6-8788-e1d6b0bd2aa4", + "invoiceId": "={{$node[\"Xero4\"].json[\"InvoiceID\"]}}" + }, + "name": "Xero5", + "type": "n8n-nodes-base.xero", + "typeVersion": 1, + "position": [ + 950, + 350 + ], + "credentials": { + "xeroOAuth2Api": { + "id": "139", + "name": "Xero OAuth2 API creds" + } + }, + "id": "576e9017-aabf-4651-b653-fa13d56de323" + }, + { + "parameters": { + "operation": "getAll", + "organizationId": "90ee722a-8780-44f6-8788-e1d6b0bd2aa4", + "limit": 1, + "options": {} + }, + "name": "Xero6", + "type": "n8n-nodes-base.xero", + "typeVersion": 1, + "position": [ + 1100, + 350 + ], + "credentials": { + "xeroOAuth2Api": { + "id": "139", + "name": "Xero OAuth2 API creds" + } + }, + "id": "fe2004ce-131e-448a-90c5-8c326a30b2dd" + }, + { + "parameters": { + "operation": "update", + "organizationId": "90ee722a-8780-44f6-8788-e1d6b0bd2aa4", + "invoiceId": "={{$node[\"Xero4\"].json[\"InvoiceID\"]}}", + "updateFields": { + "dueDate": "2021-04-29T22:00:00.000Z", + "status": "SUBMITTED" + } + }, + "name": "Xero7", + "type": "n8n-nodes-base.xero", + "typeVersion": 1, + "position": [ + 1250, + 350 + ], + "credentials": { + "xeroOAuth2Api": { + "id": "139", + "name": "Xero OAuth2 API creds" + } + }, + "id": "1e653ae8-8157-4d05-9dd2-2446a64385d1" + } + ], + "connections": { + "Xero": { + "main": [ + [ + { + "node": "Xero1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Xero1": { + "main": [ + [ + { + "node": "Xero2", + "type": "main", + "index": 0 + }, + { + "node": "Xero4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Xero2": { + "main": [ + [ + { + "node": "Xero3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Xero4": { + "main": [ + [ + { + "node": "Xero5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Xero5": { + "main": [ + [ + { + "node": "Xero6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Xero6": { + "main": [ + [ + { + "node": "Xero7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Xero", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/171.json b/test-workflows/workflows/171.json new file mode 100644 index 0000000000..809c936f9c --- /dev/null +++ b/test-workflows/workflows/171.json @@ -0,0 +1,202 @@ +{ + "createdAt": "2021-04-19T10:15:58.189Z", + "updatedAt": "2021-06-04T14:55:29.008Z", + "id": "171", + "name": "Stackby:append read list delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "570ac713-7639-4d31-aed5-d813b6cb3f32" + }, + { + "parameters": { + "stackId": "stOgji6AOGIluLfusu", + "table": "TestTable", + "columns": "id,name" + }, + "name": "Stackby", + "type": "n8n-nodes-base.stackby", + "typeVersion": 1, + "position": [ + 570, + 300 + ], + "credentials": { + "stackbyApi": { + "id": "140", + "name": "Stackby API creds" + } + }, + "id": "c5684dac-5284-4aee-ac91-fbf9cd9f0ee6" + }, + { + "parameters": { + "values": { + "number": [ + { + "name": "id", + "value": "={{Math.round(Math.random()*1000)}}" + } + ], + "string": [ + { + "name": "name", + "value": "=Test{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "31ebc435-4f59-42a7-813d-6d98eb59449e" + }, + { + "parameters": { + "operation": "read", + "stackId": "stOgji6AOGIluLfusu", + "table": "TestTable", + "id": "={{$node[\"Stackby\"].json[\"rowId\"]}}" + }, + "name": "Stackby1", + "type": "n8n-nodes-base.stackby", + "typeVersion": 1, + "position": [ + 720, + 300 + ], + "credentials": { + "stackbyApi": { + "id": "140", + "name": "Stackby API creds" + } + }, + "id": "d78e9f09-6930-46d9-919b-80bfaeeac953" + }, + { + "parameters": { + "operation": "list", + "stackId": "stOgji6AOGIluLfusu", + "table": "TestTable", + "additionalFields": { + "view": "" + } + }, + "name": "Stackby2", + "type": "n8n-nodes-base.stackby", + "typeVersion": 1, + "position": [ + 880, + 300 + ], + "credentials": { + "stackbyApi": { + "id": "140", + "name": "Stackby API creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "e94a8735-e82b-4388-8020-925e6e549c1b" + }, + { + "parameters": { + "operation": "delete", + "stackId": "stOgji6AOGIluLfusu", + "table": "TestTable", + "id": "={{$node[\"Stackby\"].json[\"rowId\"]}}" + }, + "name": "Stackby3", + "type": "n8n-nodes-base.stackby", + "typeVersion": 1, + "position": [ + 1030, + 300 + ], + "executeOnce": true, + "credentials": { + "stackbyApi": { + "id": "140", + "name": "Stackby API creds" + } + }, + "id": "18174a44-9f60-4a2b-9635-1f5f5eb579c7" + } + ], + "connections": { + "Stackby": { + "main": [ + [ + { + "node": "Stackby1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Stackby", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Stackby1": { + "main": [ + [ + { + "node": "Stackby2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Stackby2": { + "main": [ + [ + { + "node": "Stackby3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/172.json b/test-workflows/workflows/172.json new file mode 100644 index 0000000000..cdc931c78f --- /dev/null +++ b/test-workflows/workflows/172.json @@ -0,0 +1,166 @@ +{ + "createdAt": "2021-04-19T13:01:49.487Z", + "updatedAt": "2021-06-08T09:29:29.798Z", + "id": "172", + "name": "Paypal:Payout:create get:PayoutItem:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "c685e7cb-90e2-42d3-87d4-c8f8143c5a8c" + }, + { + "parameters": { + "senderBatchId": "={{Date.now()}}", + "itemsUi": { + "itemsValues": [ + { + "receiverValue": "sb-0ci8p5941871@business.example.com", + "amount": "20" + } + ] + }, + "additionalFields": {} + }, + "name": "PayPal", + "type": "n8n-nodes-base.payPal", + "typeVersion": 1, + "position": [ + 450, + 200 + ], + "credentials": { + "payPalApi": { + "id": "141", + "name": "PayPal API creds" + } + }, + "id": "31bf4a9b-bc38-4b63-9990-4f08db26a285" + }, + { + "parameters": { + "operation": "get", + "payoutBatchId": "={{$node[\"PayPal\"].json[\"batch_header\"][\"payout_batch_id\"]}}", + "limit": 1 + }, + "name": "PayPal1", + "type": "n8n-nodes-base.payPal", + "typeVersion": 1, + "position": [ + 600, + 200 + ], + "credentials": { + "payPalApi": { + "id": "141", + "name": "PayPal API creds" + } + }, + "notes": "IGNORED_PROPERTIES=errors", + "id": "d2fdb861-6f84-4ee1-86a4-a5b8c81b0656" + }, + { + "parameters": { + "resource": "payoutItem", + "payoutItemId": "={{$node[\"PayPal1\"].json[\"payout_item_id\"]}}" + }, + "name": "PayPal2", + "type": "n8n-nodes-base.payPal", + "typeVersion": 1, + "position": [ + 750, + 250 + ], + "credentials": { + "payPalApi": { + "id": "141", + "name": "PayPal API creds" + } + }, + "notes": "IGNORED_PROPERTIES=errors", + "id": "0ef6ac4c-4aa1-4cb1-a4f7-3feb6a17208e" + }, + { + "parameters": { + "resource": "payoutItem", + "operation": "cancel", + "payoutItemId": "={{$node[\"PayPal1\"].json[\"payout_item_id\"]}}" + }, + "name": "PayPal3", + "type": "n8n-nodes-base.payPal", + "typeVersion": 1, + "position": [ + 900, + 250 + ], + "credentials": { + "payPalApi": { + "id": "141", + "name": "PayPal API creds" + } + }, + "disabled": true, + "id": "bec01033-9ce1-4789-9115-7f07991ac6b1" + } + ], + "connections": { + "PayPal": { + "main": [ + [ + { + "node": "PayPal1", + "type": "main", + "index": 0 + } + ] + ] + }, + "PayPal1": { + "main": [ + [ + { + "node": "PayPal2", + "type": "main", + "index": 0 + } + ] + ] + }, + "PayPal2": { + "main": [ + [ + { + "node": "PayPal3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "PayPal", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/173.json b/test-workflows/workflows/173.json new file mode 100644 index 0000000000..c8b043a2bf --- /dev/null +++ b/test-workflows/workflows/173.json @@ -0,0 +1,221 @@ +{ + "createdAt": "2021-04-19T15:04:14.654Z", + "updatedAt": "2021-04-20T08:10:42.292Z", + "id": "173", + "name": "GetResponse:Contact:create getAll get update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "5651ff0c-3724-4194-8070-66f3737a0762" + }, + { + "parameters": { + "operation": "create", + "email": "=fake{{Date.now()}}@email.com", + "campaignId": "MHDjt", + "additionalFields": { + "name": "=Name{{Date.now()}}" + } + }, + "name": "GetResponse", + "type": "n8n-nodes-base.getResponse", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "getResponseApi": { + "id": "143", + "name": "GetResponse API creds" + } + }, + "id": "a3fa00e2-6539-4066-ac49-a6e2561397a9" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": { + "sortBy": "createdOn", + "sortOrder": "DESC" + } + }, + "name": "GetResponse1", + "type": "n8n-nodes-base.getResponse", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "getResponseApi": { + "id": "143", + "name": "GetResponse API creds" + } + }, + "id": "6abe5d00-d52a-4624-a45b-e7508bdc8cbc" + }, + { + "parameters": { + "contactId": "={{$node[\"GetResponse1\"].json[\"contactId\"]}}", + "options": {} + }, + "name": "GetResponse2", + "type": "n8n-nodes-base.getResponse", + "typeVersion": 1, + "position": [ + 1100, + 300 + ], + "credentials": { + "getResponseApi": { + "id": "143", + "name": "GetResponse API creds" + } + }, + "id": "f6ac6160-9cf1-4f5f-88e9-6c1fee5328bd" + }, + { + "parameters": { + "operation": "update", + "contactId": "={{$node[\"GetResponse1\"].json[\"contactId\"]}}", + "updateFields": { + "email": "=Updated{{$node[\"GetResponse1\"].json[\"email\"]}}", + "name": "=Updated{{$node[\"GetResponse1\"].json[\"name\"]}}" + } + }, + "name": "GetResponse3", + "type": "n8n-nodes-base.getResponse", + "typeVersion": 1, + "position": [ + 1300, + 300 + ], + "credentials": { + "getResponseApi": { + "id": "143", + "name": "GetResponse API creds" + } + }, + "id": "af223c10-9e82-4e4f-b4a2-fbcb87e3a81f" + }, + { + "parameters": { + "operation": "delete", + "contactId": "={{$node[\"GetResponse1\"].json[\"contactId\"]}}", + "options": {} + }, + "name": "GetResponse4", + "type": "n8n-nodes-base.getResponse", + "typeVersion": 1, + "position": [ + 1500, + 300 + ], + "credentials": { + "getResponseApi": { + "id": "143", + "name": "GetResponse API creds" + } + }, + "id": "85f302a7-b522-4e38-a88a-07e0705f0711" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(1000);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 1 second", + "type": "n8n-nodes-base.function", + "position": [ + 700, + 300 + ], + "typeVersion": 1, + "id": "994c0e7a-3a6d-4cdd-8fa6-f62d67f15a70" + } + ], + "connections": { + "GetResponse1": { + "main": [ + [ + { + "node": "GetResponse2", + "type": "main", + "index": 0 + } + ] + ] + }, + "GetResponse2": { + "main": [ + [ + { + "node": "GetResponse3", + "type": "main", + "index": 0 + } + ] + ] + }, + "GetResponse3": { + "main": [ + [ + { + "node": "GetResponse4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "GetResponse", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 1 second": { + "main": [ + [ + { + "node": "GetResponse1", + "type": "main", + "index": 0 + } + ] + ] + }, + "GetResponse": { + "main": [ + [ + { + "node": "Sleep 1 second", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/174.json b/test-workflows/workflows/174.json new file mode 100644 index 0000000000..312e667428 --- /dev/null +++ b/test-workflows/workflows/174.json @@ -0,0 +1,337 @@ +{ + "createdAt": "2021-04-20T08:36:34.927Z", + "updatedAt": "2021-04-20T08:36:34.927Z", + "id": "174", + "name": "Vero:User:create alias addTags removeTags unsubscribe resubscribe delete:Event:track", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "b7de37cc-c85a-4eac-beec-1f0c1ea5190a" + }, + { + "parameters": { + "id": "={{$node[\"Set id & email\"].json[\"id\"]}}", + "additionalFields": { + "email": "={{$node[\"Set id & email\"].json[\"email\"]}}" + }, + "dataAttributesUi": { + "dataAttributesValues": [] + } + }, + "name": "Vero", + "type": "n8n-nodes-base.vero", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "veroApi": { + "id": "144", + "name": "Vero API creds" + } + }, + "id": "d27a15f1-3855-42b0-b3d9-bca97501ed10" + }, + { + "parameters": { + "operation": "alias", + "id": "={{$node[\"Set id & email\"].json[\"id\"]}}", + "newId": "={{$node[\"Set id & email\"].json[\"email\"]}}" + }, + "name": "Vero1", + "type": "n8n-nodes-base.vero", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "veroApi": { + "id": "144", + "name": "Vero API creds" + } + }, + "id": "ea140d44-f58b-4d57-9ac3-5bf93cddbe93" + }, + { + "parameters": { + "operation": "addTags", + "id": "={{$node[\"Set id & email\"].json[\"email\"]}}", + "tags": "TEST," + }, + "name": "Vero2", + "type": "n8n-nodes-base.vero", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "veroApi": { + "id": "144", + "name": "Vero API creds" + } + }, + "id": "903d206c-c3c4-4d20-81b7-a6ea73aeaebf" + }, + { + "parameters": { + "operation": "removeTags", + "id": "={{$node[\"Set id & email\"].json[\"email\"]}}", + "tags": "TEST," + }, + "name": "Vero3", + "type": "n8n-nodes-base.vero", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "credentials": { + "veroApi": { + "id": "144", + "name": "Vero API creds" + } + }, + "id": "1e426c6f-88d4-4c23-8c01-9ffcca7bed76" + }, + { + "parameters": { + "operation": "unsubscribe", + "id": "={{$node[\"Set id & email\"].json[\"email\"]}}" + }, + "name": "Vero4", + "type": "n8n-nodes-base.vero", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "credentials": { + "veroApi": { + "id": "144", + "name": "Vero API creds" + } + }, + "id": "a92a41ef-d98b-4ff8-931d-d2488777ecf8" + }, + { + "parameters": { + "operation": "resubscribe", + "id": "={{$node[\"Set id & email\"].json[\"email\"]}}" + }, + "name": "Vero5", + "type": "n8n-nodes-base.vero", + "typeVersion": 1, + "position": [ + 1300, + 300 + ], + "credentials": { + "veroApi": { + "id": "144", + "name": "Vero API creds" + } + }, + "id": "629e08e8-9f31-4824-afc1-f09c7fbfdf1a" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"Set id & email\"].json[\"email\"]}}" + }, + "name": "Vero6", + "type": "n8n-nodes-base.vero", + "typeVersion": 1, + "position": [ + 1600, + 300 + ], + "credentials": { + "veroApi": { + "id": "144", + "name": "Vero API creds" + } + }, + "id": "5da2dd1f-d40e-490c-bb38-9adaf10ebc92" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "string": [ + { + "name": "email", + "value": "=fake{{Date.now()}}@email.com" + } + ], + "number": [ + { + "name": "id", + "value": "={{Math.round(Math.random()*1000)}}" + } + ] + }, + "options": {} + }, + "name": "Set id & email", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "76d32334-89e0-4fc0-aa81-e56eaeb206c2" + }, + { + "parameters": { + "resource": "event", + "id": "={{$node[\"Set id & email\"].json[\"email\"]}}", + "email": "={{$node[\"Set id & email\"].json[\"email\"]}}", + "eventName": "=Event{{Date.now()}}", + "dataAttributesUi": { + "dataAttributesValues": [ + { + "key": "Type", + "value": "Test" + } + ] + }, + "extraAttributesUi": { + "extraAttributesValues": [] + } + }, + "name": "Vero7", + "type": "n8n-nodes-base.vero", + "typeVersion": 1, + "position": [ + 1450, + 400 + ], + "credentials": { + "veroApi": { + "id": "144", + "name": "Vero API creds" + } + }, + "id": "89b0e1de-a2b6-4f67-a63b-1d7dafdba2c2" + } + ], + "connections": { + "Vero1": { + "main": [ + [ + { + "node": "Vero2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set id & email", + "type": "main", + "index": 0 + } + ] + ] + }, + "Vero": { + "main": [ + [ + { + "node": "Vero1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Vero2": { + "main": [ + [ + { + "node": "Vero3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Vero3": { + "main": [ + [ + { + "node": "Vero4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Vero4": { + "main": [ + [ + { + "node": "Vero5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Vero5": { + "main": [ + [ + { + "node": "Vero7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set id & email": { + "main": [ + [ + { + "node": "Vero", + "type": "main", + "index": 0 + } + ] + ] + }, + "Vero7": { + "main": [ + [ + { + "node": "Vero6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/176.json b/test-workflows/workflows/176.json new file mode 100644 index 0000000000..eb84f56ca3 --- /dev/null +++ b/test-workflows/workflows/176.json @@ -0,0 +1,1192 @@ +{ + "createdAt": "2021-04-20T13:25:03.086Z", + "updatedAt": "2021-04-20T15:03:32.741Z", + "id": "176", + "name": "uProc:Audio:*:company:*;", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d0c17f4b-8961-440e-a16c-c2b24573ded4" + }, + { + "parameters": { + "group": "audio", + "text": "n8n rocks!", + "gender": "female", + "language": "american", + "additionalOptions": {} + }, + "name": "uProc", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 560, + 200 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "93760945-e663-434d-929b-bde008a9048d" + }, + { + "parameters": { + "group": "audio", + "tool": "getAudioSpeechByText", + "text": "n8n rocks!", + "gender": "female", + "language": "american", + "additionalOptions": {} + }, + "name": "uProc1", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 740, + 200 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "048ecc11-0c05-474f-b05c-758e4ed5debb" + }, + { + "parameters": { + "group": "company", + "tool": "getCifNormalized", + "cif": "B 12345 678", + "additionalOptions": {} + }, + "name": "uProc10", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 560, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a6e61a99-e759-45ce-9564-c07e9edd4ff9" + }, + { + "parameters": { + "group": "company", + "cif": "B 12345 678", + "additionalOptions": {} + }, + "name": "uProc11", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 690, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "3176fdab-d652-4402-883f-eb3b49173235" + }, + { + "parameters": { + "group": "company", + "tool": "checkNumberIsin", + "isin": "US0004026250", + "additionalOptions": {} + }, + "name": "uProc12", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 820, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "e015d1d9-aa1e-49e5-823c-9e6372d316ec" + }, + { + "parameters": { + "group": "company", + "tool": "checkNumberSsEs", + "number": "998239812282", + "additionalOptions": {} + }, + "name": "uProc13", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 950, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "90bde607-e419-4547-b8e2-e96a181dd152" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyByCif", + "cif": "B 12345 678", + "additionalOptions": {} + }, + "name": "uProc14", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1080, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "d4ad8ce2-d306-432d-a6de-a82826964eda" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyByDomain", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc15", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1210, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "d2852025-5de5-41fa-9f29-d9783cb3ec9d" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyByDuns", + "duns": "150483782", + "additionalOptions": {} + }, + "name": "uProc16", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1340, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "88e58d49-0c18-42e4-84bf-d9752cf74fa7" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyByEmail", + "email": "hello@n8n.io", + "additionalOptions": {} + }, + "name": "uProc17", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1470, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "74543b06-f296-417a-a9cb-cf5c9aeb8bf4" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyByIp", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc18", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1600, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "6cbbc927-2cef-4688-9824-50e15a2ab433" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyByName", + "country": "DE", + "name": "n8n", + "additionalOptions": {} + }, + "name": "uProc19", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1730, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "b9198acf-94fb-4d58-81f6-9713d3588e64" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyByPhone", + "phone": "932187670", + "additionalOptions": {} + }, + "name": "uProc20", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1860, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "2862f234-cc12-4df0-b994-26d38ee16414" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyByProfile", + "url": "https://twitter.com/n8n_io", + "additionalOptions": {} + }, + "name": "uProc21", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1990, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "b6c61930-8b49-4c7d-8831-93722da0f894" + }, + { + "parameters": { + "group": "company", + "tool": "getRoleClassified", + "role": "Junior web developer", + "additionalOptions": {} + }, + "name": "uProc22", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2120, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "d051cee8-5bca-4c2a-b945-95cbf54a08b4" + }, + { + "parameters": { + "group": "company", + "tool": "checkCompanyDebtorByTaxid", + "taxid": "B12345678", + "additionalOptions": {} + }, + "name": "uProc23", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2250, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "421b79d2-8337-41f9-9f3b-e44d49040cb3" + }, + { + "parameters": { + "group": "company", + "tool": "getPersonDecisionMaker", + "company": "n8n.io", + "area": "Engineering", + "additionalOptions": {} + }, + "name": "uProc24", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2380, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "1e955a1c-eb87-4c24-af10-8f5bfc0728dd" + }, + { + "parameters": { + "group": "company", + "tool": "getPersonDecisionMakerBySearch", + "company": "n8n.io", + "area": "Product", + "clevel": "No", + "additionalOptions": {} + }, + "name": "uProc25", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2510, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "d288cae2-b1d9-46e7-a4f2-339fc7a8fab1" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyDomainByName", + "name": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc26", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2640, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "896d6a19-4717-4e1e-9380-b7fa88e05a3b" + }, + { + "parameters": { + "group": "company", + "tool": "getPersonEmailsByDomainAndArea", + "domain": "n8n.io", + "area": "Engineering", + "additionalOptions": {} + }, + "name": "uProc27", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2770, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "c5b64761-444e-4ee1-8289-b3e3805b071d" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyExtendedByDomain", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc28", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2900, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "01cb8555-31bc-49ec-82a2-36b24bb48873" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyExtendedByEmail", + "email": "hello@n8n.io", + "additionalOptions": {} + }, + "name": "uProc29", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3030, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a801f605-1677-443b-8c86-fe636414c2ab" + }, + { + "parameters": { + "group": "company", + "tool": "getProfileFacebookByCompany", + "company": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc30", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3160, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a0f7131d-c121-4eb2-b6f5-bf72e3af23c0" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyFinancialByDomain", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc31", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3290, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "1b027a55-7122-4a63-8364-9dd7176f9672" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyFinancialByDuns", + "duns": "150483782", + "additionalOptions": {} + }, + "name": "uProc32", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3420, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "b046e6e6-34c2-4b91-ab6b-0f69905f85ce" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyFinancialByName", + "name": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc33", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3550, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a01a0c27-1386-45a7-a86e-8e118bf5d327" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyFinancialByTaxid", + "taxid": "B12345678", + "additionalOptions": {} + }, + "name": "uProc34", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3680, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "60c8d394-358a-47e1-9a2c-dd11553737a0" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyGeocodedByIp", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc35", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3810, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a4efe1ed-b5da-4185-99e0-840da0544e4f" + }, + { + "parameters": { + "group": "company", + "tool": "getProfileLinkedinByCompany", + "company": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc36", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3940, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "ad662983-c0b8-4650-9577-dd23ac9b3db7" + }, + { + "parameters": { + "group": "company", + "tool": "getPersonListByParams", + "country": "DE", + "phone": "932187670", + "email": "hello@n8n.io", + "company": "n8n.io", + "area": "Information technology", + "seniority": "Intermediate", + "additionalOptions": {} + }, + "name": "uProc37", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 4070, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "aaaa41b2-d90e-4cb4-8083-87cd7bdcaf69" + }, + { + "parameters": { + "group": "company", + "tool": "getPersonMultipleDecisionMakerBySearch", + "company": "n8n.io", + "area": "Information technology", + "clevel": "No", + "additionalOptions": {} + }, + "name": "uProc38", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 4200, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "ba76171b-5070-4938-9e9d-923121f1c45a" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyNameByDomain", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc39", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 4330, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "d76f3d0a-9a82-4d93-a783-8f793c412c94" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyPhoneByDomain", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc40", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 4460, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "f53778bf-935f-4f49-9281-552993ae1429" + }, + { + "parameters": { + "group": "company", + "tool": "getCompanyPhoneByName", + "name": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc41", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 4590, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "ab0ec7c3-397d-44de-b082-33e244ba1272" + }, + { + "parameters": { + "group": "company", + "tool": "getProfileTwitterByCompany", + "company": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc42", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 4720, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "bbe5a143-20db-49b7-a9ac-8600a895b74d" + } + ], + "connections": { + "uProc": { + "main": [ + [ + { + "node": "uProc1", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc10": { + "main": [ + [ + { + "node": "uProc11", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc11": { + "main": [ + [ + { + "node": "uProc12", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc12": { + "main": [ + [ + { + "node": "uProc13", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc13": { + "main": [ + [ + { + "node": "uProc14", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc14": { + "main": [ + [ + { + "node": "uProc15", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc15": { + "main": [ + [ + { + "node": "uProc16", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc16": { + "main": [ + [ + { + "node": "uProc17", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc17": { + "main": [ + [ + { + "node": "uProc18", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc18": { + "main": [ + [ + { + "node": "uProc19", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc19": { + "main": [ + [ + { + "node": "uProc20", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc20": { + "main": [ + [ + { + "node": "uProc21", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc21": { + "main": [ + [ + { + "node": "uProc22", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc22": { + "main": [ + [ + { + "node": "uProc23", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc23": { + "main": [ + [ + { + "node": "uProc24", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc24": { + "main": [ + [ + { + "node": "uProc25", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc25": { + "main": [ + [ + { + "node": "uProc26", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc26": { + "main": [ + [ + { + "node": "uProc27", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc27": { + "main": [ + [ + { + "node": "uProc28", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc28": { + "main": [ + [ + { + "node": "uProc29", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc29": { + "main": [ + [ + { + "node": "uProc30", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc30": { + "main": [ + [ + { + "node": "uProc31", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc31": { + "main": [ + [ + { + "node": "uProc32", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc32": { + "main": [ + [ + { + "node": "uProc33", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc33": { + "main": [ + [ + { + "node": "uProc34", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc34": { + "main": [ + [ + { + "node": "uProc35", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc35": { + "main": [ + [ + { + "node": "uProc36", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc36": { + "main": [ + [ + { + "node": "uProc37", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc37": { + "main": [ + [ + { + "node": "uProc38", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc38": { + "main": [ + [ + { + "node": "uProc39", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc39": { + "main": [ + [ + { + "node": "uProc40", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc40": { + "main": [ + [ + { + "node": "uProc41", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc41": { + "main": [ + [ + { + "node": "uProc42", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "uProc", + "type": "main", + "index": 0 + }, + { + "node": "uProc10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/177.json b/test-workflows/workflows/177.json new file mode 100644 index 0000000000..18571c297e --- /dev/null +++ b/test-workflows/workflows/177.json @@ -0,0 +1,825 @@ +{ + "createdAt": "2021-04-20T15:07:09.205Z", + "updatedAt": "2021-04-20T15:15:49.518Z", + "id": "177", + "name": "uProc:Finance:*;", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "6b5f7fea-a0f3-445b-8366-b6631683411e" + }, + { + "parameters": { + "group": "finance", + "tool": "checkCreditcardChecksum", + "credit_card": "5564456122310619", + "additionalOptions": {} + }, + "name": "uProc1", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 510, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "74ad2ff7-afc0-4327-9fad-600cb2675d92" + }, + { + "parameters": { + "group": "finance", + "tool": "getCreditcardType", + "credit_card": "5564456122310619", + "additionalOptions": {} + }, + "name": "uProc2", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 640, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "47cd053a-0375-4e02-944e-57ca74d30b3a" + }, + { + "parameters": { + "group": "finance", + "tool": "checkBankAccountValidEs", + "account": "5564456122310619", + "additionalOptions": {} + }, + "name": "uProc3", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 770, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "25a3db7b-f396-4cc4-bb1c-2d95c72a3e70" + }, + { + "parameters": { + "group": "finance", + "bic": "AYGBESMM", + "additionalOptions": {} + }, + "name": "uProc4", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 900, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a96d6b7d-de57-4b0f-9451-da49bcad0023" + }, + { + "parameters": { + "group": "finance", + "tool": "getBankIbanByAccount", + "account": "9121000418450200051332M", + "isocode": "ES", + "additionalOptions": {} + }, + "name": "uProc5", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1030, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "48f91455-d72d-404f-8edb-a3113272a656" + }, + { + "parameters": { + "group": "finance", + "tool": "getBankIbanLookup", + "iban": "ES9121000418450200051332M", + "additionalOptions": {} + }, + "name": "uProc6", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1160, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "2926e714-090d-4605-ad8a-a3fc6299d953" + }, + { + "parameters": { + "group": "finance", + "tool": "checkBankIbanValid", + "iban": "ES9121000418450200051332M", + "additionalOptions": {} + }, + "name": "uProc7", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1290, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "851c69bb-ca48-4be7-a536-00de1d6e1705" + }, + { + "parameters": { + "group": "finance", + "tool": "getCurrencyByCountry", + "country": "ES", + "additionalOptions": {} + }, + "name": "uProc8", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1420, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "0783831e-2de6-429b-8b65-0a891c43c524" + }, + { + "parameters": { + "group": "finance", + "tool": "getCurrencyByCountryIsocode", + "country_code": "ES", + "additionalOptions": {} + }, + "name": "uProc9", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1550, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "b34da6a8-3825-4d75-bb7f-33f2777bd05e" + }, + { + "parameters": { + "group": "finance", + "tool": "getCurrencyByIp", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc10", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1680, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a6d4a2b4-16bc-44d6-8f62-289fe44e3150" + }, + { + "parameters": { + "group": "finance", + "tool": "getCurrencyByIsocode", + "isocode": "ES", + "additionalOptions": {} + }, + "name": "uProc11", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1810, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "df8e1a41-aee5-45b2-96ce-743a871263e9" + }, + { + "parameters": { + "group": "finance", + "tool": "getCurrencyConvertedBetweenIsocodeDate", + "date": "104.21.37.3", + "amount": "10", + "isocode1": "EUR", + "isocode2": "JPY", + "additionalOptions": {} + }, + "name": "uProc12", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1940, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "1be97cfc-7d88-4308-8fcc-bf089c1a89a9" + }, + { + "parameters": { + "group": "finance", + "tool": "getCurrencyListByCountry", + "additionalOptions": {} + }, + "name": "uProc13", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2070, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "07c56b1c-ec2d-4041-96bb-976c33920f95" + }, + { + "parameters": { + "group": "finance", + "tool": "getCurrencyListByIp", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc14", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2200, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "e8d0f97f-9d56-412c-9a05-0ba48a923a76" + }, + { + "parameters": { + "group": "finance", + "tool": "getCurrencyListByIsocode", + "isocode": "DE", + "additionalOptions": {} + }, + "name": "uProc15", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2330, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "804d201d-919c-4464-8280-49fd0c6126ca" + }, + { + "parameters": { + "group": "finance", + "tool": "checkCurrencyValidIso", + "isocode": "DE", + "additionalOptions": {} + }, + "name": "uProc16", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2460, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "dff16814-7b04-4e4c-82f4-a480686e490e" + }, + { + "parameters": { + "group": "finance", + "tool": "getVatByAddress", + "address": "10115, Berlin, Germany", + "additionalOptions": {} + }, + "name": "uProc17", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2590, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "919c88b5-7079-46c4-9c7a-e5c7e29adcce" + }, + { + "parameters": { + "group": "finance", + "tool": "getVatByCoordinates", + "coordinates": "52.52986092913615, 13.389315284523297", + "additionalOptions": {} + }, + "name": "uProc18", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2720, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "e93ca526-f829-4793-a05a-9ecab9b45b78" + }, + { + "parameters": { + "group": "finance", + "tool": "getVatByIp", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc19", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2850, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "c90211c8-5e05-4f0b-bd91-fef5d2d51e3a" + }, + { + "parameters": { + "group": "finance", + "tool": "getVatByIsocode", + "isocode": "DE", + "additionalOptions": {} + }, + "name": "uProc20", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2980, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "c5be744b-9203-4e74-9626-37afc39a1577" + }, + { + "parameters": { + "group": "finance", + "tool": "getVatByNumber", + "isocode": "DE", + "tin": "44016116G", + "additionalOptions": {} + }, + "name": "uProc21", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3110, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "9a011b5c-ef1a-4b51-bb7a-6a2458116342" + }, + { + "parameters": { + "group": "finance", + "tool": "getVatByPhone", + "phone": "932187670", + "additionalOptions": {} + }, + "name": "uProc22", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3240, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "094bb0ed-9abf-47e1-8c35-dcb30e1c966a" + }, + { + "parameters": { + "group": "finance", + "tool": "getVatByZipcode", + "zipcode": "10115", + "additionalOptions": {} + }, + "name": "uProc23", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3370, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "644bf7bc-3fdf-4e27-91ea-8bbd7912a79c" + }, + { + "parameters": { + "group": "finance", + "tool": "checkVatExist", + "isocode": "ES", + "tin": "44016116G", + "additionalOptions": {} + }, + "name": "uProc24", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3500, + 290 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "8d9a2640-f227-4184-8563-16a2054a5992" + } + ], + "connections": { + "uProc1": { + "main": [ + [ + { + "node": "uProc2", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc2": { + "main": [ + [ + { + "node": "uProc3", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc3": { + "main": [ + [ + { + "node": "uProc4", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc4": { + "main": [ + [ + { + "node": "uProc5", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc5": { + "main": [ + [ + { + "node": "uProc6", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc6": { + "main": [ + [ + { + "node": "uProc7", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc7": { + "main": [ + [ + { + "node": "uProc8", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc8": { + "main": [ + [ + { + "node": "uProc9", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc9": { + "main": [ + [ + { + "node": "uProc10", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc10": { + "main": [ + [ + { + "node": "uProc11", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc11": { + "main": [ + [ + { + "node": "uProc12", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc12": { + "main": [ + [ + { + "node": "uProc13", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc13": { + "main": [ + [ + { + "node": "uProc14", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc14": { + "main": [ + [ + { + "node": "uProc15", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc15": { + "main": [ + [ + { + "node": "uProc16", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc16": { + "main": [ + [ + { + "node": "uProc17", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc17": { + "main": [ + [ + { + "node": "uProc18", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc18": { + "main": [ + [ + { + "node": "uProc19", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc19": { + "main": [ + [ + { + "node": "uProc20", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc20": { + "main": [ + [ + { + "node": "uProc21", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc21": { + "main": [ + [ + { + "node": "uProc22", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc22": { + "main": [ + [ + { + "node": "uProc23", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc23": { + "main": [ + [ + { + "node": "uProc24", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "uProc1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/179.json b/test-workflows/workflows/179.json new file mode 100644 index 0000000000..85c584b294 --- /dev/null +++ b/test-workflows/workflows/179.json @@ -0,0 +1,363 @@ +{ + "createdAt": "2021-04-21T07:53:05.959Z", + "updatedAt": "2021-04-21T07:53:05.959Z", + "id": "179", + "name": "uProc:Image:*:Security:*;", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "ea22a2a9-c7b7-4e4c-b89a-d123c4de7c63" + }, + { + "parameters": { + "group": "security", + "tool": "checkNumberUuid", + "uuid": "0c6a1543-6232-49d2-b50d-c1e70cd015a0", + "additionalOptions": {} + }, + "name": "uProc1", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 450, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "cd9469be-7495-4963-9e72-2946c8c9026b" + }, + { + "parameters": { + "group": "security", + "tool": "getDomainBlacklists", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc2", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 580, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "65d979d4-1b48-4e05-81ec-003ca73360ec" + }, + { + "parameters": { + "group": "security", + "tool": "getIpBlacklists", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc3", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 710, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a93216f3-6d7e-4e8e-808f-2a9781cd54d1" + }, + { + "parameters": { + "group": "security", + "luhn": "79927398713", + "additionalOptions": {} + }, + "name": "uProc4", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 840, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "c850df47-d882-4253-9912-87781ce9cca5" + }, + { + "parameters": { + "group": "security", + "tool": "checkPasswordStrong", + "password": "randompassword", + "additionalOptions": {} + }, + "name": "uProc5", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 970, + 350 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "13527442-5599-40a4-aa97-69e88fc71dac" + }, + { + "parameters": { + "group": "image", + "tool": "getBarcodeEncoded", + "text": "n8n rocks!", + "bcid": "auspost", + "additionalOptions": {} + }, + "name": "uProc", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "826bf485-a60a-4835-8290-1259daf44305" + }, + { + "parameters": { + "group": "image", + "tool": "getImageExif", + "url": "https://n8n.io/_nuxt/img/df5be1c.png", + "additionalOptions": {} + }, + "name": "uProc8", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 840, + 150 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "dcf2a843-5f5f-4f9f-ba27-1aaa9486dd58" + }, + { + "parameters": { + "group": "image", + "tool": "getImageWithText", + "text": "n8n rocks!", + "url": "https://n8n.io/_nuxt/img/df5be1c.png", + "size": "72", + "additionalOptions": {} + }, + "name": "uProc9", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 970, + 150 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "5a42b133-730f-4288-aed9-8ef6ab9f9579" + }, + { + "parameters": { + "group": "image", + "tool": "getDomainLogo", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc10", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 580, + 150 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "5a1a3be9-b954-4cab-8adc-a82fa4156780" + }, + { + "parameters": { + "group": "image", + "tool": "getUrlScreenshot", + "url": "n8n.io", + "useragent": "n8n-agent", + "width": "160", + "fullpage": "no", + "additionalOptions": {} + }, + "name": "uProc11", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 710, + 150 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "65aa976a-1b8b-4ddf-bab6-f3308221ade0" + } + ], + "connections": { + "uProc1": { + "main": [ + [ + { + "node": "uProc2", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc2": { + "main": [ + [ + { + "node": "uProc3", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc3": { + "main": [ + [ + { + "node": "uProc4", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc4": { + "main": [ + [ + { + "node": "uProc5", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc": { + "main": [ + [ + { + "node": "uProc10", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc8": { + "main": [ + [ + { + "node": "uProc9", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc9": { + "main": [ + [] + ] + }, + "uProc10": { + "main": [ + [ + { + "node": "uProc11", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc11": { + "main": [ + [ + { + "node": "uProc8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "uProc", + "type": "main", + "index": 0 + }, + { + "node": "uProc1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/180.json b/test-workflows/workflows/180.json new file mode 100644 index 0000000000..0bdddaced5 --- /dev/null +++ b/test-workflows/workflows/180.json @@ -0,0 +1,1351 @@ +{ + "createdAt": "2021-04-21T08:02:44.895Z", + "updatedAt": "2021-04-21T08:23:47.669Z", + "id": "180", + "name": "uProc:Internet:*;", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "471ee767-0f84-4092-8848-b32bfa27c904" + }, + { + "parameters": { + "group": "internet", + "tool": "getDeviceByUa", + "useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36", + "additionalOptions": {} + }, + "name": "uProc1", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 420, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "225c9e0c-c8df-4a5c-99c1-ab87c07c5747" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlByDomain", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc2", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "d05ce8e6-52bc-4cdf-8ca9-8e736dab51e7" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainByIp", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc3", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 680, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "ec459164-9037-4974-86db-51572db34457" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainByUrl", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc4", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 810, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "de574cfe-b7b8-4d7e-bf9d-874994cd72a1" + }, + { + "parameters": { + "group": "internet", + "tool": "checkDomainCertificate", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc5", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 940, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "6a965548-4b41-4ec7-a171-b808fa56f874" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainCertificate", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc6", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1070, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "8c1aa668-7b5d-43cd-aa59-9c9fc7734514" + }, + { + "parameters": { + "group": "internet", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc7", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1200, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "221ef5e2-caf2-4454-b3e9-82f7741e1fe7" + }, + { + "parameters": { + "group": "internet", + "tool": "checkDomainFormat", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc8", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1330, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "3c2fbae3-b5d5-4a07-9d07-9dc12e18b96d" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainIsp", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc9", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1460, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "a05ff442-89be-4566-8ab4-a0a6be404b8c" + }, + { + "parameters": { + "group": "internet", + "tool": "checkDomainMx", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc10", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1590, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "28f8de7b-97db-4ba4-ae60-d7715a47b433" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlPdf", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc11", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1720, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "866ba0e4-3011-4c2a-aab6-dedd534b0ccf" + }, + { + "parameters": { + "group": "internet", + "tool": "checkDomainRecord", + "domain": "n8n.io", + "type": "NS", + "additionalOptions": {} + }, + "name": "uProc12", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1850, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "edd0634b-e73d-4b56-ac05-2ebc2986af7c" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainRecord", + "domain": "n8n.io", + "type": "NS", + "additionalOptions": {} + }, + "name": "uProc13", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1980, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "97d92f60-cf96-4f11-88c6-5f0c13466cc8" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainRecords", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc14", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2110, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "2b48dcec-a2bc-422f-bd74-60e237726f93" + }, + { + "parameters": { + "group": "internet", + "tool": "checkDomainReverse", + "ip": "104.21.37.3", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc15", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2240, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "25a7db94-89db-4c44-b5ea-610921ea78c5" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainReverseIp", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc16", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2370, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "4dcf45b3-9786-4c41-9b5a-be82a46927b1" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlShareableLinks", + "text": "n8n rocks!", + "url": "https://n8n.io/", + "additionalOptions": {} + }, + "name": "uProc17", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2500, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "bc8d869f-0f74-40aa-ad4f-a602e6703526" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainTechnologies", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc18", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2630, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "c19223f4-34f6-4fc0-8580-a706d079a0ff" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlTechnologies", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc19", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2760, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "cd0c931e-5ced-4300-8d38-4c6b13d7f9d7" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainVisits", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc20", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2890, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "e63b384c-db6c-4f60-867a-e0b1c185e13d" + }, + { + "parameters": { + "group": "internet", + "tool": "getDomainWhois", + "domain": "n8n.io", + "additionalOptions": {} + }, + "name": "uProc21", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 3020, + 300 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "111d4ba6-cdb8-4879-94db-b26f52a0a8fd" + }, + { + "parameters": { + "group": "internet", + "tool": "getIpWhois", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc22", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 420, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "33cd2d4d-710a-485f-a54d-db721b95be59" + }, + { + "parameters": { + "group": "internet", + "tool": "getFileCopiedBetweenUrls", + "source": "https://n8n.io/_nuxt/img/df5be1c.png", + "destination": "test", + "additionalOptions": {} + }, + "name": "uProc23", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 550, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "01eadfc0-0bc0-4630-b54a-a254917686d3" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlAnalysis", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc24", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 680, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "309d8b34-9d8f-4f04-8487-5849906b23fb" + }, + { + "parameters": { + "group": "internet", + "tool": "getNetAton", + "ip": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc25", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 810, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "8560b080-f140-4dec-9ab6-a7135c9a0ccc" + }, + { + "parameters": { + "group": "internet", + "tool": "checkUrlContains", + "url": "104.21.37.3", + "regex": "n8n", + "additionalOptions": {} + }, + "name": "uProc26", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 940, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "9d7ea1fd-7b6c-4023-8452-de501689d0e0" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlContents", + "url": "https://n8n.io", + "selector": "h1", + "additionalOptions": {} + }, + "name": "uProc27", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1070, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "61e3e8c3-619e-430a-99fb-dc0e30c85177" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlContentsParsed", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc28", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1200, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "cd18157f-d519-4700-a0f6-acb17688bf38" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlDecode", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc29", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1330, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "94bac370-001b-42bd-aab8-0a3265166e43" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlEncode", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc30", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1460, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "8af8cfea-c432-404f-83a1-0fb46c7a86e3" + }, + { + "parameters": { + "group": "internet", + "tool": "checkUrlExist", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc31", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1590, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "ec8594b3-8ae9-4a76-9f71-d1cec1508e00" + }, + { + "parameters": { + "group": "internet", + "tool": "getNetFixip", + "number": "104.21.37.3", + "additionalOptions": {} + }, + "name": "uProc32", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1720, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "7c981264-b095-4827-81a0-751991548cda" + }, + { + "parameters": { + "group": "internet", + "tool": "checkNetHostAlive", + "host": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc33", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1850, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "ad04ee24-86dc-4972-ac6a-c6f5dd731c72" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlListContentsParsed", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc34", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 1980, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "b7a838aa-9b5a-41a8-ad4e-078d5bae0386" + }, + { + "parameters": { + "group": "internet", + "tool": "getNetNtoa", + "number": "10421373", + "additionalOptions": {} + }, + "name": "uProc35", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2110, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "99b81130-900a-4eff-afe1-9f812071071f" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlParsed", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc36", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2240, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "02263618-4341-43a3-97ff-579b3ae5849b" + }, + { + "parameters": { + "group": "internet", + "tool": "getNetScan", + "host": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc37", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2370, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "f12e7ab7-f2eb-419f-8a7d-5e630849ac5c" + }, + { + "parameters": { + "group": "internet", + "tool": "checkNetServiceUp", + "host": "https://n8n.io", + "port": "80", + "additionalOptions": {} + }, + "name": "uProc38", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2500, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "30cdf3be-b9eb-4c91-8c8a-979ed1672bea" + }, + { + "parameters": { + "group": "internet", + "tool": "getUrlTables", + "url": "https://n8n.io", + "table": "3", + "additionalOptions": {} + }, + "name": "uProc39", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2630, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "ed5bf95c-cdd4-4eb8-810f-ac18703f3743" + }, + { + "parameters": { + "group": "internet", + "tool": "checkUrlValid", + "url": "https://n8n.io", + "additionalOptions": {} + }, + "name": "uProc40", + "type": "n8n-nodes-base.uproc", + "typeVersion": 1, + "position": [ + 2760, + 470 + ], + "credentials": { + "uprocApi": { + "id": "142", + "name": "uProc API creds" + } + }, + "id": "6f264af2-ffbe-44cc-9b31-2e64d2b83b9b" + } + ], + "connections": { + "uProc1": { + "main": [ + [ + { + "node": "uProc2", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc2": { + "main": [ + [ + { + "node": "uProc3", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc3": { + "main": [ + [ + { + "node": "uProc4", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc4": { + "main": [ + [ + { + "node": "uProc5", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc5": { + "main": [ + [ + { + "node": "uProc6", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc6": { + "main": [ + [ + { + "node": "uProc7", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc7": { + "main": [ + [ + { + "node": "uProc8", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc8": { + "main": [ + [ + { + "node": "uProc9", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc9": { + "main": [ + [ + { + "node": "uProc10", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc10": { + "main": [ + [ + { + "node": "uProc11", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc11": { + "main": [ + [ + { + "node": "uProc12", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc12": { + "main": [ + [ + { + "node": "uProc13", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc13": { + "main": [ + [ + { + "node": "uProc14", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc14": { + "main": [ + [ + { + "node": "uProc15", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc15": { + "main": [ + [ + { + "node": "uProc16", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc16": { + "main": [ + [ + { + "node": "uProc17", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc17": { + "main": [ + [ + { + "node": "uProc18", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc18": { + "main": [ + [ + { + "node": "uProc19", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc19": { + "main": [ + [ + { + "node": "uProc20", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc20": { + "main": [ + [ + { + "node": "uProc21", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc22": { + "main": [ + [ + { + "node": "uProc23", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc23": { + "main": [ + [ + { + "node": "uProc24", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc24": { + "main": [ + [ + { + "node": "uProc25", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc25": { + "main": [ + [ + { + "node": "uProc26", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc26": { + "main": [ + [ + { + "node": "uProc27", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc27": { + "main": [ + [ + { + "node": "uProc28", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc28": { + "main": [ + [ + { + "node": "uProc29", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc29": { + "main": [ + [ + { + "node": "uProc30", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc30": { + "main": [ + [ + { + "node": "uProc31", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc31": { + "main": [ + [ + { + "node": "uProc32", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc32": { + "main": [ + [ + { + "node": "uProc33", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc33": { + "main": [ + [ + { + "node": "uProc34", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc34": { + "main": [ + [ + { + "node": "uProc35", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc35": { + "main": [ + [ + { + "node": "uProc36", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc36": { + "main": [ + [ + { + "node": "uProc37", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc37": { + "main": [ + [ + { + "node": "uProc38", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc38": { + "main": [ + [ + { + "node": "uProc39", + "type": "main", + "index": 0 + } + ] + ] + }, + "uProc39": { + "main": [ + [ + { + "node": "uProc40", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "uProc1", + "type": "main", + "index": 0 + }, + { + "node": "uProc22", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/182.json b/test-workflows/workflows/182.json new file mode 100644 index 0000000000..fae2d5f988 --- /dev/null +++ b/test-workflows/workflows/182.json @@ -0,0 +1,232 @@ +{ + "createdAt": "2021-04-23T08:55:02.078Z", + "updatedAt": "2021-04-23T08:55:02.078Z", + "id": "182", + "name": "Webflow:Item:create get update delete getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "a462a0c7-cda9-4a9e-b447-99be5b8df6f2" + }, + { + "parameters": { + "operation": "create", + "siteId": "6082884ac940c371277833ae", + "collectionId": "608289f18593d40792d70d54", + "fieldsUi": { + "fieldValues": [ + { + "fieldId": "name", + "fieldValue": "=Item{{Date.now()}}" + }, + { + "fieldId": "slug", + "fieldValue": "=ItemSlug{{Date.now()}}" + }, + { + "fieldId": "_archived", + "fieldValue": "False" + }, + { + "fieldId": "_draft", + "fieldValue": "True" + } + ] + } + }, + "name": "Webflow", + "type": "n8n-nodes-base.webflow", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "webflowApi": { + "id": "147", + "name": "Webflow API creds" + } + }, + "id": "270ca4f8-df14-4629-95df-e5adb713d02d" + }, + { + "parameters": { + "siteId": "6082884ac940c371277833ae", + "collectionId": "608289f18593d40792d70d54", + "itemId": "={{$node[\"Webflow\"].json[\"_id\"]}}" + }, + "name": "Webflow1", + "type": "n8n-nodes-base.webflow", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "webflowApi": { + "id": "147", + "name": "Webflow API creds" + } + }, + "id": "fc5b71c8-e124-49aa-b15f-8fed15916ff1" + }, + { + "parameters": { + "operation": "update", + "siteId": "6082884ac940c371277833ae", + "collectionId": "608289f18593d40792d70d54", + "itemId": "={{$node[\"Webflow\"].json[\"_id\"]}}", + "fieldsUi": { + "fieldValues": [ + { + "fieldId": "_draft", + "fieldValue": "False" + }, + { + "fieldId": "_archived", + "fieldValue": "False" + }, + { + "fieldId": "slug", + "fieldValue": "=Updated{{$node[\"Webflow1\"].json[\"slug\"]}}" + }, + { + "fieldId": "name", + "fieldValue": "=Updated{{$node[\"Webflow1\"].json[\"name\"]}}" + } + ] + } + }, + "name": "Webflow2", + "type": "n8n-nodes-base.webflow", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "webflowApi": { + "id": "147", + "name": "Webflow API creds" + } + }, + "id": "07182187-0587-41b2-89e0-1a289070643d" + }, + { + "parameters": { + "operation": "delete", + "siteId": "6082884ac940c371277833ae", + "collectionId": "608289f18593d40792d70d54", + "itemId": "={{$node[\"Webflow\"].json[\"_id\"]}}" + }, + "name": "Webflow3", + "type": "n8n-nodes-base.webflow", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "webflowApi": { + "id": "147", + "name": "Webflow API creds" + } + }, + "id": "197f83d4-c767-4c4a-a776-6c28ec39c799" + }, + { + "parameters": { + "operation": "getAll", + "siteId": "6082884ac940c371277833ae", + "collectionId": "608289f18593d40792d70d54", + "limit": 1 + }, + "name": "Webflow4", + "type": "n8n-nodes-base.webflow", + "typeVersion": 1, + "position": [ + 1250, + 300 + ], + "credentials": { + "webflowApi": { + "id": "147", + "name": "Webflow API creds" + } + }, + "id": "acb4b42b-c8b1-4222-9227-10b8456505fb" + } + ], + "connections": { + "Webflow": { + "main": [ + [ + { + "node": "Webflow1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Webflow1": { + "main": [ + [ + { + "node": "Webflow2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Webflow2": { + "main": [ + [ + { + "node": "Webflow3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Webflow3": { + "main": [ + [ + { + "node": "Webflow4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Webflow", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/183.json b/test-workflows/workflows/183.json new file mode 100644 index 0000000000..efa087bd29 --- /dev/null +++ b/test-workflows/workflows/183.json @@ -0,0 +1,617 @@ +{ + "createdAt": "2021-04-23T11:00:16.427Z", + "updatedAt": "2021-04-23T16:04:29.271Z", + "id": "183", + "name": "Telegram:Chat:get setDescription setTitle member:Message: sendMessage editMessageText pinChatMessage unpinChatMessage sendPhoto sendSticker sendMediaGroup sendChatAction sendLocation sendDocument sendAudio sendAnimation sendVideo:File:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "2003127c-05c1-4e8d-a123-f50582b324d0" + }, + { + "parameters": { + "resource": "chat", + "chatId": "@FixedChannel123" + }, + "name": "Telegram", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 500, + 200 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "b74ed6ec-dd64-46f1-bbd2-968a02e248bc" + }, + { + "parameters": { + "resource": "chat", + "operation": "setDescription", + "chatId": "@FixedChannel123", + "description": "=UpdatedDescription{{Date.now()}}" + }, + "name": "Telegram1", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 650, + 200 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "b78da1c6-a208-490f-95a9-b359f8d9852c" + }, + { + "parameters": { + "resource": "chat", + "operation": "setTitle", + "chatId": "@FixedChannel123", + "title": "=Title{{Date.now()}}" + }, + "name": "Telegram2", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 800, + 200 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "50e2a9f1-5cf4-4009-8952-9d9a7f798cf6" + }, + { + "parameters": { + "resource": "chat", + "operation": "member", + "chatId": "@FixedChannel123", + "userId": "1757347499" + }, + "name": "Telegram3", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 950, + 200 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "26a5c251-d0c1-4cb4-83a8-b5722b6b086c" + }, + { + "parameters": { + "chatId": "@FixedChannel123", + "text": "=Test{{Date.now()}}", + "additionalFields": {} + }, + "name": "Telegram4", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 490, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "8b3c6634-82c9-433e-8492-8c670b0e0ffd" + }, + { + "parameters": { + "operation": "editMessageText", + "chatId": "@FixedChannel123", + "messageId": "={{$node[\"Telegram4\"].json[\"result\"][\"message_id\"]}}", + "text": "=UpdatedTest{{Date.now()}}", + "additionalFields": {} + }, + "name": "Telegram5", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 650, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "179251fc-335f-4f05-ab9c-9c712e11b778" + }, + { + "parameters": { + "operation": "pinChatMessage", + "chatId": "@FixedChannel123", + "messageId": "={{$node[\"Telegram4\"].json[\"result\"][\"message_id\"]}}", + "additionalFields": {} + }, + "name": "Telegram6", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 800, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "bb70b35e-a908-43d8-8f01-a9cb3d152d53" + }, + { + "parameters": { + "operation": "unpinChatMessage", + "chatId": "@FixedChannel123", + "messageId": "={{$node[\"Telegram4\"].json[\"result\"][\"message_id\"]}}" + }, + "name": "Telegram7", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 950, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "dce352dc-fdbe-49ee-bb47-7aa065d5c3e4" + }, + { + "parameters": { + "operation": "sendPhoto", + "chatId": "@FixedChannel123", + "file": "https://n8n.io/_nuxt/img/df5be1c.png", + "additionalFields": {} + }, + "name": "Telegram8", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 1100, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "bdb4221e-41ad-42ad-8725-6d93a326abe4" + }, + { + "parameters": { + "operation": "sendSticker", + "chatId": "@FixedChannel123", + "file": "https://tlgrm.eu/_/stickers/22c/b26/22cb267f-a2ab-41e4-8360-fe35ac048c3b/192/12.webp", + "additionalFields": {} + }, + "name": "Telegram9", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 1250, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "70f93d2c-1365-4a84-acb6-efe74de090a1" + }, + { + "parameters": { + "resource": "file", + "fileId": "={{$node[\"Telegram8\"].json[\"result\"][\"photo\"][0][\"file_id\"]}}" + }, + "name": "Telegram10", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 1250, + 600 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "53b7d1e7-462d-4843-b852-3491a1e69310" + }, + { + "parameters": { + "operation": "sendMediaGroup", + "chatId": "@FixedChannel123", + "media": { + "media": [ + { + "media": "https://n8n.io/_nuxt/img/df5be1c.png", + "additionalFields": {} + }, + { + "media": "https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-screenshot.png", + "additionalFields": {} + } + ] + }, + "additionalFields": {} + }, + "name": "Telegram11", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 1400, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "f8727e6e-c697-4b6b-be71-aaa451f4dabb" + }, + { + "parameters": { + "operation": "sendChatAction", + "chatId": "@FixedChannel123", + "action": "find_location" + }, + "name": "Telegram12", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 1550, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "045fd95c-e699-4568-b6a5-3e1289e686c1" + }, + { + "parameters": { + "operation": "sendLocation", + "chatId": "@FixedChannel123", + "latitude": 52.529776, + "longitude": 13.3893152845, + "additionalFields": {} + }, + "name": "Telegram13", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 1700, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "fa2ee6c4-f697-4e88-a952-dfbe3b5806d2" + }, + { + "parameters": { + "operation": "sendDocument", + "chatId": "@FixedChannel123", + "file": "https://nx10458.your-storageshare.de/s/4w7bEHjjGyEzoXq/download", + "additionalFields": {} + }, + "name": "Telegram14", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 1850, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "777d6bca-1444-4da2-bc76-454702bbbd33" + }, + { + "parameters": { + "operation": "sendAudio", + "chatId": "@FixedChannel123", + "file": "http://websrvr90va.audiovideoweb.com/va90web25003/companions/Foundations%20of%20Rock/13.07.mp3", + "additionalFields": {} + }, + "name": "Telegram15", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 2000, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "d6eced32-26b0-417f-832f-0521976847ec" + }, + { + "parameters": { + "operation": "sendAnimation", + "chatId": "@FixedChannel123", + "file": "https://media.giphy.com/media/1nR6fu93A17vWZbO9c/giphy.gif", + "additionalFields": {} + }, + "name": "Telegram16", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 2150, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "64ed5e7e-fa11-447c-b9e8-f8ee091bc447" + }, + { + "parameters": { + "operation": "sendVideo", + "chatId": "@FixedChannel123", + "file": "http://vod-progressive.akamaized.net/exp=1619203691~acl=%2Fvimeo-prod-skyfire-std-us%2F01%2F3610%2F13%2F343052045%2F1373111309.mp4~hmac=8ede5174dfb91845afeae538f8144fe5d6819b4a4713f700e1ff805261445369/vimeo-prod-skyfire-std-us/01/3610/13/343052045/1373111309.mp4?download=1&filename=Pexels Videos 2519660.mp4", + "additionalFields": {} + }, + "name": "Telegram17", + "type": "n8n-nodes-base.telegram", + "typeVersion": 1, + "position": [ + 2300, + 400 + ], + "credentials": { + "telegramApi": { + "id": "148", + "name": "Telegram API creds" + } + }, + "id": "735e6eeb-4dff-4a56-847f-ac2512d00a18" + } + ], + "connections": { + "Telegram": { + "main": [ + [ + { + "node": "Telegram1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram1": { + "main": [ + [ + { + "node": "Telegram2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram2": { + "main": [ + [ + { + "node": "Telegram3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram4": { + "main": [ + [ + { + "node": "Telegram5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram5": { + "main": [ + [ + { + "node": "Telegram6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram6": { + "main": [ + [ + { + "node": "Telegram7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram8": { + "main": [ + [ + { + "node": "Telegram10", + "type": "main", + "index": 0 + }, + { + "node": "Telegram9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram7": { + "main": [ + [ + { + "node": "Telegram8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram9": { + "main": [ + [ + { + "node": "Telegram11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Telegram", + "type": "main", + "index": 0 + }, + { + "node": "Telegram4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram11": { + "main": [ + [ + { + "node": "Telegram12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram12": { + "main": [ + [ + { + "node": "Telegram13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram13": { + "main": [ + [ + { + "node": "Telegram14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram14": { + "main": [ + [ + { + "node": "Telegram15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram15": { + "main": [ + [ + { + "node": "Telegram16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Telegram16": { + "main": [ + [ + { + "node": "Telegram17", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/184.json b/test-workflows/workflows/184.json new file mode 100644 index 0000000000..91b6137b2d --- /dev/null +++ b/test-workflows/workflows/184.json @@ -0,0 +1,930 @@ +{ + "createdAt": "2021-04-26T16:15:15.635Z", + "updatedAt": "2021-05-20T16:56:10.192Z", + "id": "184", + "name": "Salesforce:Account:create get addNote getAll getSummary update delete:Case:create get addComment getAll getSummary update delete:Attachment:create get getAll getSummary update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "66a1cb46-3115-4e3f-b986-589153ee056b" + }, + { + "parameters": { + "resource": "account", + "name": "=Account{{Date.now()}}", + "additionalFields": {} + }, + "name": "Salesforce", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 520, + 190 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "5b1a4927-ea99-4ad0-9166-87de446b39e2" + }, + { + "parameters": { + "resource": "account", + "operation": "get", + "accountId": "={{$node[\"Salesforce\"].json[\"id\"]}}" + }, + "name": "Salesforce1", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 770, + 190 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "78646575-42fb-4d9c-af75-f55fcac7a0e8" + }, + { + "parameters": { + "resource": "account", + "operation": "addNote", + "accountId": "={{$node[\"Salesforce\"].json[\"id\"]}}", + "title": "=Note{{Date.now()}}", + "options": {} + }, + "name": "Salesforce2", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 930, + 190 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "3036a0b8-1700-4cac-afd9-0679461bbeb3" + }, + { + "parameters": { + "resource": "account", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Salesforce3", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1210, + 190 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "3025fb7e-2d06-4174-b60b-e31ae414b56e" + }, + { + "parameters": { + "resource": "account", + "operation": "getSummary" + }, + "name": "Salesforce4", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1360, + 190 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "f9572f72-55e8-4e58-9aac-aebc4476a91b" + }, + { + "parameters": { + "resource": "account", + "operation": "update", + "accountId": "={{$node[\"Salesforce\"].json[\"id\"]}}", + "updateFields": { + "name": "=Updated{{$node[\"Salesforce1\"].json[\"Name\"]}}" + } + }, + "name": "Salesforce5", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1650, + 190 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "50385d4f-bfbf-49ba-a620-6372ce9eb7e2" + }, + { + "parameters": { + "resource": "account", + "operation": "delete", + "accountId": "={{$node[\"Salesforce\"].json[\"id\"]}}" + }, + "name": "Salesforce6", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1800, + 190 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "2baac145-ccd2-421a-8e57-0312264f64c6" + }, + { + "parameters": { + "resource": "case", + "type": "Other", + "additionalFields": { + "reason": "Installation", + "subject": "=Subject{{Date.now()}}" + } + }, + "name": "Salesforce7", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 530, + 350 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "6f52f121-1906-4583-9ab5-ace8a85c21f1" + }, + { + "parameters": { + "resource": "case", + "operation": "get", + "caseId": "={{$node[\"Salesforce7\"].json[\"id\"]}}" + }, + "name": "Salesforce8", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 690, + 350 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "5623e57f-6a90-46d4-b4b1-2a295c4a97be" + }, + { + "parameters": { + "resource": "case", + "operation": "addComment", + "caseId": "={{$node[\"Salesforce7\"].json[\"id\"]}}", + "options": { + "commentBody": "=Comment{{Date.now()}}" + } + }, + "name": "Salesforce9", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 2490, + 350 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "2fd4dca0-4bfa-41d2-971e-0bd469242d21" + }, + { + "parameters": { + "resource": "case", + "operation": "getSummary" + }, + "name": "Salesforce10", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 2750, + 350 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "93aa55e7-46e5-4576-a634-82ff1b94963b" + }, + { + "parameters": { + "resource": "case", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Salesforce11", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 2910, + 350 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "3e12fbf3-547f-4444-84c8-82339fa49485" + }, + { + "parameters": { + "resource": "case", + "operation": "update", + "caseId": "={{$node[\"Salesforce7\"].json[\"id\"]}}", + "updateFields": { + "subject": "=Updated{{$node[\"Salesforce8\"].json[\"Subject\"]}}" + } + }, + "name": "Salesforce12", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 3180, + 350 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "dc93d012-04c6-4b5b-85c8-6a6cdd2c37f1" + }, + { + "parameters": { + "resource": "case", + "operation": "delete", + "caseId": "={{$node[\"Salesforce7\"].json[\"id\"]}}" + }, + "name": "Salesforce13", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 3340, + 350 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "339d8458-fcf3-4717-8baf-33651e27e169" + }, + { + "parameters": { + "resource": "attachment", + "parentId": "={{$node[\"Salesforce8\"].json[\"Id\"]}}", + "name": "=Attachment{{Date.now()}}", + "additionalFields": {} + }, + "name": "Salesforce14", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1260, + 500 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "6cac533b-4965-4432-908e-5f9abf9d7e28" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "data", + "value": "=Attachment example" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 800, + 500 + ], + "id": "4e4a6a2b-ffb1-4ca1-93bd-39ace5d35c68" + }, + { + "parameters": { + "mode": "jsonToBinary", + "options": {} + }, + "name": "Move Binary Data", + "type": "n8n-nodes-base.moveBinaryData", + "typeVersion": 1, + "position": [ + 960, + 500 + ], + "id": "2436fc2e-c730-4cfc-aeb9-0fbeda60b653" + }, + { + "parameters": { + "resource": "attachment", + "operation": "get", + "attachmentId": "={{$node[\"Salesforce14\"].json[\"id\"]}}" + }, + "name": "Salesforce15", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1410, + 500 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "044ebdfa-a4ba-4c6f-a6b8-73e557b01f5a" + }, + { + "parameters": { + "resource": "attachment", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Salesforce16", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1710, + 500 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "11d43928-769d-49b0-b0df-540b98dbb94e" + }, + { + "parameters": { + "resource": "attachment", + "operation": "getSummary" + }, + "name": "Salesforce17", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1860, + 500 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "677c0167-c2c3-43cd-87c8-6281f3bdbced" + }, + { + "parameters": { + "resource": "attachment", + "operation": "update", + "attachmentId": "={{$node[\"Salesforce14\"].json[\"id\"]}}", + "updateFields": { + "isPrivate": true + } + }, + "name": "Salesforce18", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 2140, + 500 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "0f9a0337-0b8e-4839-8507-4da0ae9cce8f" + }, + { + "parameters": { + "resource": "attachment", + "operation": "delete", + "attachmentId": "={{$node[\"Salesforce14\"].json[\"id\"]}}" + }, + "name": "Salesforce19", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 2290, + 500 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "d3dee2a4-4a49-42c8-9965-8d3a4614dab7" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 650, + 190 + ], + "typeVersion": 1, + "id": "82031d82-409d-4921-8fd7-bdb9f5b30e44" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second1", + "type": "n8n-nodes-base.function", + "position": [ + 1070, + 190 + ], + "typeVersion": 1, + "id": "ca22ae1e-464b-4c60-9411-d953f6274def" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second2", + "type": "n8n-nodes-base.function", + "position": [ + 1510, + 190 + ], + "typeVersion": 1, + "id": "b51888e4-e156-45dc-b04a-de238a40d59b" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second3", + "type": "n8n-nodes-base.function", + "position": [ + 3050, + 350 + ], + "typeVersion": 1, + "id": "52d4818a-c5fa-4172-9a9d-754095a21f3b" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second4", + "type": "n8n-nodes-base.function", + "position": [ + 2620, + 350 + ], + "typeVersion": 1, + "id": "8fdcf0f4-d8be-41dd-94c1-4c3802500701" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second5", + "type": "n8n-nodes-base.function", + "position": [ + 1990, + 500 + ], + "typeVersion": 1, + "id": "98e604e1-ee39-43a5-8aad-53b423f88033" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second6", + "type": "n8n-nodes-base.function", + "position": [ + 1580, + 500 + ], + "typeVersion": 1, + "id": "04e6ad3e-5031-4945-ac5e-84baaf8db3be" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second7", + "type": "n8n-nodes-base.function", + "position": [ + 1120, + 500 + ], + "typeVersion": 1, + "id": "a61fabaa-a79e-4714-8910-4300cdb6c0b5" + } + ], + "connections": { + "Salesforce": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce1": { + "main": [ + [ + { + "node": "Salesforce2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce2": { + "main": [ + [ + { + "node": "Sleep 0.5 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce3": { + "main": [ + [ + { + "node": "Salesforce4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce4": { + "main": [ + [ + { + "node": "Sleep 0.5 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce5": { + "main": [ + [ + { + "node": "Salesforce6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce7": { + "main": [ + [ + { + "node": "Salesforce8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce8": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce9": { + "main": [ + [ + { + "node": "Sleep 0.5 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce10": { + "main": [ + [ + { + "node": "Salesforce11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce11": { + "main": [ + [ + { + "node": "Sleep 0.5 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce12": { + "main": [ + [ + { + "node": "Salesforce13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Move Binary Data", + "type": "main", + "index": 0 + } + ] + ] + }, + "Move Binary Data": { + "main": [ + [ + { + "node": "Sleep 0.5 second7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce14": { + "main": [ + [ + { + "node": "Salesforce15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce15": { + "main": [ + [ + { + "node": "Sleep 0.5 second6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce16": { + "main": [ + [ + { + "node": "Salesforce17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce17": { + "main": [ + [ + { + "node": "Sleep 0.5 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce18": { + "main": [ + [ + { + "node": "Salesforce19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce19": { + "main": [ + [ + { + "node": "Salesforce9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Salesforce7", + "type": "main", + "index": 0 + }, + { + "node": "Salesforce", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "Salesforce1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second1": { + "main": [ + [ + { + "node": "Salesforce3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second2": { + "main": [ + [ + { + "node": "Salesforce5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second3": { + "main": [ + [ + { + "node": "Salesforce12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second4": { + "main": [ + [ + { + "node": "Salesforce10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second5": { + "main": [ + [ + { + "node": "Salesforce18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second6": { + "main": [ + [ + { + "node": "Salesforce16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second7": { + "main": [ + [ + { + "node": "Salesforce14", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/185.json b/test-workflows/workflows/185.json new file mode 100644 index 0000000000..8edbab332a --- /dev/null +++ b/test-workflows/workflows/185.json @@ -0,0 +1,966 @@ +{ + "createdAt": "2021-04-26T16:57:16.077Z", + "updatedAt": "2021-05-20T16:55:37.548Z", + "id": "185", + "name": "Salesforce:Lead:create get addNote addToCampaign getAll getSummary update delete:Contact:create get addNote addToCampaign getAll getSummary update delete:CustomObject:create get getAll update delete:Flow:getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "3e759fa8-73f9-4851-968b-65c1843c646c" + }, + { + "parameters": { + "resource": "contact", + "lastname": "=Contact{{Date.now()}}", + "additionalFields": {} + }, + "name": "Salesforce", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 450, + 230 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "0ae37230-15ba-4ff3-a4af-373fa3a1b0b4" + }, + { + "parameters": { + "resource": "contact", + "operation": "get", + "contactId": "={{$node[\"Salesforce\"].json[\"id\"]}}" + }, + "name": "Salesforce1", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 600, + 230 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "a2dc5829-0aee-495e-a7e2-a8db3b8eacc5" + }, + { + "parameters": { + "resource": "contact", + "operation": "addNote", + "contactId": "={{$node[\"Salesforce\"].json[\"id\"]}}", + "title": "=Note{{Date.now()}}", + "options": {} + }, + "name": "Salesforce2", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 940, + 230 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "75d1b33c-cb4d-429e-835d-06e3b59cecff" + }, + { + "parameters": { + "resource": "contact", + "operation": "getSummary" + }, + "name": "Salesforce3", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1090, + 230 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "6a0bda2d-3ba5-409f-b5c2-d1cce8e13206" + }, + { + "parameters": { + "resource": "contact", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Salesforce4", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1400, + 230 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "bf879abe-b86e-44f9-819a-96dcde8ed019" + }, + { + "parameters": { + "resource": "contact", + "operation": "addToCampaign", + "contactId": "={{$node[\"Salesforce\"].json[\"id\"]}}", + "campaignId": "70109000000TU12AAG", + "options": {} + }, + "name": "Salesforce5", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1550, + 230 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "a00bc642-9a77-4109-9de3-be96c3d9c615" + }, + { + "parameters": { + "resource": "contact", + "operation": "update", + "contactId": "={{$node[\"Salesforce\"].json[\"id\"]}}", + "updateFields": { + "title": "=UpdatedTitle{{Date.now()}}" + } + }, + "name": "Salesforce6", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1910, + 230 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "f7354012-b9c7-4a0b-9ca6-d627443b24c5" + }, + { + "parameters": { + "resource": "contact", + "operation": "delete", + "contactId": "={{$node[\"Salesforce\"].json[\"id\"]}}" + }, + "name": "Salesforce7", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 2060, + 230 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "d1552ed3-73d6-4f8d-801c-d24e594044b7" + }, + { + "parameters": { + "resource": "customObject", + "customObject": "CustomObjectFixed__c", + "customFieldsUi": { + "customFieldsValues": [ + { + "fieldId": "Name", + "value": "TestCustomObjectFixed" + } + ] + } + }, + "name": "Salesforce8", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 460, + 400 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "1ca8c1bc-5e2b-45c5-ab7a-33b766fa906b" + }, + { + "parameters": { + "resource": "customObject", + "operation": "get", + "customObject": "CustomObjectFixed__c", + "recordId": "={{$node[\"Salesforce8\"].json[\"id\"]}}" + }, + "name": "Salesforce9", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 810, + 400 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "7ec96ddd-97b2-48c1-ba74-f0219d9f8df6" + }, + { + "parameters": { + "resource": "customObject", + "operation": "getAll", + "customObject": "CustomObjectFixed__c", + "limit": 1, + "options": {} + }, + "name": "Salesforce10", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 950, + 400 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "655e131b-ce30-4408-90c4-33c2bbf2509d" + }, + { + "parameters": { + "resource": "customObject", + "operation": "update", + "customObject": "CustomObjectFixed__c", + "recordId": "={{$node[\"Salesforce8\"].json[\"id\"]}}", + "customFieldsUi": { + "customFieldsValues": [ + { + "fieldId": "Name", + "value": "UpdatedCustomObjectFixed" + } + ] + } + }, + "name": "Salesforce11", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1320, + 400 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "a8bbc9dc-095e-4977-8e7e-ab51105e067e" + }, + { + "parameters": { + "resource": "customObject", + "operation": "delete", + "customObject": "CustomObjectFixed__c", + "recordId": "={{$node[\"Salesforce8\"].json[\"id\"]}}" + }, + "name": "Salesforce12", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1470, + 400 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "079ed153-25b5-459d-8fa9-09ed6b6839a4" + }, + { + "parameters": { + "resource": "flow", + "operation": "getAll", + "limit": 1 + }, + "name": "Salesforce13", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 460, + 560 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "f869a8a4-f0ac-4ad6-a594-2d51099aa226" + }, + { + "parameters": { + "resource": "flow", + "apiName": "={{$node[\"Salesforce13\"].json[\"name\"]}}" + }, + "name": "Salesforce14", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 600, + 560 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "disabled": true, + "id": "f476766b-2817-4b3a-9220-21b5852609e2" + }, + { + "parameters": { + "company": "n8n", + "lastname": "=LastName{{Date.now()}}", + "additionalFields": {} + }, + "name": "Salesforce15", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 450, + 50 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "2881bb5a-12ff-41b6-9624-82bbadf392e2" + }, + { + "parameters": { + "operation": "get", + "leadId": "={{$node[\"Salesforce15\"].json[\"id\"]}}" + }, + "name": "Salesforce16", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 600, + 50 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "79861ab0-f376-48df-aeba-08c297c7070f" + }, + { + "parameters": { + "operation": "addNote", + "leadId": "={{$node[\"Salesforce15\"].json[\"id\"]}}", + "title": "LeadNote", + "options": {} + }, + "name": "Salesforce17", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 940, + 50 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "19fd1281-ef46-4aa2-9b21-0c767bf2e050" + }, + { + "parameters": { + "operation": "getSummary" + }, + "name": "Salesforce18", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1090, + 50 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "f1b56cfe-41c8-4f8b-9ce5-ba48744907fd" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Salesforce19", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1400, + 50 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "b80c3c9c-9f27-459c-b4c7-8d581923dced" + }, + { + "parameters": { + "operation": "addToCampaign", + "leadId": "={{$node[\"Salesforce15\"].json[\"id\"]}}", + "campaignId": "70109000000TU12AAG", + "options": {} + }, + "name": "Salesforce20", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1550, + 50 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "b7fa794c-495a-4d41-9416-9b318522e236" + }, + { + "parameters": { + "operation": "update", + "leadId": "={{$node[\"Salesforce15\"].json[\"id\"]}}", + "updateFields": { + "description": "Updated Description" + } + }, + "name": "Salesforce21", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1910, + 50 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "c26d4856-782a-47e9-aa17-aecb7705610a" + }, + { + "parameters": { + "operation": "delete", + "leadId": "={{$node[\"Salesforce15\"].json[\"id\"]}}" + }, + "name": "Salesforce22", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 2060, + 50 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "02fc2ba8-33ae-4ffe-9e18-ed113a5b75e6" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 770, + 50 + ], + "typeVersion": 1, + "id": "c004a09e-09fd-4ac2-8d5c-270a15b204b1" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second1", + "type": "n8n-nodes-base.function", + "position": [ + 770, + 230 + ], + "typeVersion": 1, + "id": "4939f605-622d-4f84-8da2-6565fc63b42f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second2", + "type": "n8n-nodes-base.function", + "position": [ + 1240, + 50 + ], + "typeVersion": 1, + "id": "e44a9ad5-a103-49da-956c-53ff4993450c" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second3", + "type": "n8n-nodes-base.function", + "position": [ + 1250, + 230 + ], + "typeVersion": 1, + "id": "75c555b9-1b6f-426a-9dab-b691918843a2" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second4", + "type": "n8n-nodes-base.function", + "position": [ + 1730, + 50 + ], + "typeVersion": 1, + "id": "523558db-379a-4eac-8ce0-03e3ce08ff6a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second5", + "type": "n8n-nodes-base.function", + "position": [ + 1730, + 230 + ], + "typeVersion": 1, + "id": "077e1d54-864f-47f9-b248-a5b482946e13" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second6", + "type": "n8n-nodes-base.function", + "position": [ + 1150, + 400 + ], + "typeVersion": 1, + "id": "d6328f6e-5944-4f30-8911-1f691fbfbd4c" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second7", + "type": "n8n-nodes-base.function", + "position": [ + 620, + 400 + ], + "typeVersion": 1, + "id": "feb9fe8d-176e-442e-85e5-f58a42603a35" + } + ], + "connections": { + "Salesforce": { + "main": [ + [ + { + "node": "Salesforce1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce1": { + "main": [ + [ + { + "node": "Sleep 0.5 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce2": { + "main": [ + [ + { + "node": "Salesforce3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce3": { + "main": [ + [ + { + "node": "Sleep 0.5 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce4": { + "main": [ + [ + { + "node": "Salesforce5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce5": { + "main": [ + [ + { + "node": "Sleep 0.5 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce6": { + "main": [ + [ + { + "node": "Salesforce7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Salesforce", + "type": "main", + "index": 0 + }, + { + "node": "Salesforce8", + "type": "main", + "index": 0 + }, + { + "node": "Salesforce13", + "type": "main", + "index": 0 + }, + { + "node": "Salesforce15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce8": { + "main": [ + [ + { + "node": "Sleep 0.5 second7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce9": { + "main": [ + [ + { + "node": "Salesforce10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce10": { + "main": [ + [ + { + "node": "Sleep 0.5 second6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce11": { + "main": [ + [ + { + "node": "Salesforce12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce13": { + "main": [ + [ + { + "node": "Salesforce14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce15": { + "main": [ + [ + { + "node": "Salesforce16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce16": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce17": { + "main": [ + [ + { + "node": "Salesforce18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce18": { + "main": [ + [ + { + "node": "Sleep 0.5 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce19": { + "main": [ + [ + { + "node": "Salesforce20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce20": { + "main": [ + [ + { + "node": "Sleep 0.5 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce21": { + "main": [ + [ + { + "node": "Salesforce22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second4": { + "main": [ + [ + { + "node": "Salesforce21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second5": { + "main": [ + [ + { + "node": "Salesforce6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second2": { + "main": [ + [ + { + "node": "Salesforce19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second3": { + "main": [ + [ + { + "node": "Salesforce4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "Salesforce17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second1": { + "main": [ + [ + { + "node": "Salesforce2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second6": { + "main": [ + [ + { + "node": "Salesforce11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second7": { + "main": [ + [ + { + "node": "Salesforce9", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/186.json b/test-workflows/workflows/186.json new file mode 100644 index 0000000000..bbdaf94514 --- /dev/null +++ b/test-workflows/workflows/186.json @@ -0,0 +1,618 @@ +{ + "createdAt": "2021-04-26T17:42:22.794Z", + "updatedAt": "2021-05-21T12:39:59.740Z", + "id": "186", + "name": "Salesforce:Opportunity:create get addNote getAll getSummary update delete:Task:create get getAll getSummary update delete:Query:search", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "0c8d4ebe-b490-4418-a240-32e15a25879c" + }, + { + "parameters": { + "resource": "opportunity", + "name": "=Opp{{Date.now()}}", + "closeDate": "2021-03-31T22:00:00.000Z", + "stageName": "Value Proposition", + "additionalFields": {} + }, + "name": "Salesforce", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 500, + 250 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "611612e2-cd0e-413c-a8c0-ca011830d3f3" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "get", + "opportunityId": "={{$node[\"Salesforce\"].json[\"id\"]}}" + }, + "name": "Salesforce1", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 780, + 250 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "76c5bb71-c7a5-41fe-bab8-8ab5a4e3bd02" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "addNote", + "opportunityId": "={{$node[\"Salesforce\"].json[\"id\"]}}", + "title": "OppNote", + "options": {} + }, + "name": "Salesforce2", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 910, + 250 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "863c2685-0e4a-45ae-a838-570cd2b328be" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "getSummary" + }, + "name": "Salesforce3", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1180, + 250 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "531dba66-59fa-4274-abd9-fa424c6068d2" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Salesforce4", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1330, + 250 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "95bef426-8b35-43d0-a0cb-274650ee2f64" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "update", + "opportunityId": "={{$node[\"Salesforce\"].json[\"id\"]}}", + "updateFields": { + "name": "UpdatedOpp" + } + }, + "name": "Salesforce5", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1580, + 250 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "9806aa1f-fe25-4e09-83c7-7412d6897d52" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "delete", + "opportunityId": "={{$node[\"Salesforce\"].json[\"id\"]}}" + }, + "name": "Salesforce6", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1730, + 250 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "7e5cf8e8-0935-4ea0-b58e-896cd0a1d7a2" + }, + { + "parameters": { + "resource": "search", + "query": "SELECT Id, Name, BillingCity FROM Account LIMIT 1" + }, + "name": "Salesforce7", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 500, + 400 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "b338d5c8-ce76-4faa-9764-f86e4b346b87" + }, + { + "parameters": { + "resource": "task", + "status": "In Progress", + "additionalFields": {} + }, + "name": "Salesforce8", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 600, + 550 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "2c2811e3-2dc0-42c1-ab13-0940503318fd" + }, + { + "parameters": { + "resource": "task", + "operation": "get", + "taskId": "={{$node[\"Salesforce8\"].json[\"id\"]}}" + }, + "name": "Salesforce9", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 750, + 550 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "0e61e836-069b-45f3-8ea7-298610c170b2" + }, + { + "parameters": { + "resource": "task", + "operation": "getSummary" + }, + "name": "Salesforce10", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1010, + 550 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "ff0c0a0f-16c9-44e5-9aef-531039f7985c" + }, + { + "parameters": { + "resource": "task", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Salesforce11", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1150, + 550 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "cbf534bd-9db5-4e10-abfa-8cae05cf147b" + }, + { + "parameters": { + "resource": "task", + "operation": "update", + "taskId": "={{$node[\"Salesforce8\"].json[\"id\"]}}", + "updateFields": { + "status": "Completed" + } + }, + "name": "Salesforce12", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1460, + 550 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "04afbeb0-d437-4060-8966-e35cef872f79" + }, + { + "parameters": { + "resource": "task", + "operation": "delete", + "taskId": "={{$node[\"Salesforce8\"].json[\"id\"]}}" + }, + "name": "Salesforce13", + "type": "n8n-nodes-base.salesforce", + "typeVersion": 1, + "position": [ + 1610, + 550 + ], + "credentials": { + "salesforceOAuth2Api": { + "id": "149", + "name": "Salesforce OAuth2 API creds" + } + }, + "id": "5f800e5f-7be2-483a-8633-70e258e9ce69" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 640, + 250 + ], + "typeVersion": 1, + "id": "74e93e34-a272-40a3-a976-98f7da373e49" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second1", + "type": "n8n-nodes-base.function", + "position": [ + 1050, + 250 + ], + "typeVersion": 1, + "id": "c4d53540-e46f-4e9f-b61a-cdfa72df1730" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second2", + "type": "n8n-nodes-base.function", + "position": [ + 1450, + 250 + ], + "typeVersion": 1, + "id": "1fc2b051-cd25-4fc4-8c6f-819c24ca1f49" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second3", + "type": "n8n-nodes-base.function", + "position": [ + 880, + 550 + ], + "typeVersion": 1, + "id": "a7794510-cd2c-4265-b7ce-505aceb813c8" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second4", + "type": "n8n-nodes-base.function", + "position": [ + 480, + 550 + ], + "typeVersion": 1, + "id": "f50da613-c2c9-4823-9ba8-2969ed4899c1" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second5", + "type": "n8n-nodes-base.function", + "position": [ + 1290, + 550 + ], + "typeVersion": 1, + "id": "3259acd2-fd46-4348-b7d0-48d4396041df" + } + ], + "connections": { + "Salesforce": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce1": { + "main": [ + [ + { + "node": "Salesforce2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce3": { + "main": [ + [ + { + "node": "Salesforce4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce4": { + "main": [ + [ + { + "node": "Sleep 0.5 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce5": { + "main": [ + [ + { + "node": "Salesforce6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Salesforce", + "type": "main", + "index": 0 + }, + { + "node": "Salesforce7", + "type": "main", + "index": 0 + }, + { + "node": "Sleep 0.5 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce8": { + "main": [ + [ + { + "node": "Salesforce9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce9": { + "main": [ + [ + { + "node": "Sleep 0.5 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce10": { + "main": [ + [ + { + "node": "Salesforce11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce11": { + "main": [ + [ + { + "node": "Sleep 0.5 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce12": { + "main": [ + [ + { + "node": "Salesforce13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second4": { + "main": [ + [ + { + "node": "Salesforce8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second1": { + "main": [ + [ + { + "node": "Salesforce3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "Salesforce1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second3": { + "main": [ + [ + { + "node": "Salesforce10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second2": { + "main": [ + [ + { + "node": "Salesforce5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second5": { + "main": [ + [ + { + "node": "Salesforce12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesforce2": { + "main": [ + [ + { + "node": "Sleep 0.5 second1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/187.json b/test-workflows/workflows/187.json new file mode 100644 index 0000000000..97ead5e567 --- /dev/null +++ b/test-workflows/workflows/187.json @@ -0,0 +1,266 @@ +{ + "createdAt": "2021-04-29T08:02:29.441Z", + "updatedAt": "2021-04-29T08:02:29.441Z", + "id": "187", + "name": "Strapi:Entry:create get getAll update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e4175f5f-af4e-4fe5-b5e4-c7a00de9330c" + }, + { + "parameters": { + "operation": "create", + "contentType": "Tests", + "columns": "test,random" + }, + "name": "Strapi", + "type": "n8n-nodes-base.strapi", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "strapiApi": { + "id": "150", + "name": "Strapi API creds" + } + }, + "id": "d3173ece-7c5a-42c5-95d8-cb11b4444741" + }, + { + "parameters": { + "values": { + "number": [ + { + "name": "random", + "value": "={{Math.round(Math.random()*1000)}}" + } + ], + "string": [ + { + "name": "test", + "value": "=Entry{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "f4431416-b2cf-49d9-b61f-8629fb40f97b" + }, + { + "parameters": { + "contentType": "Tests", + "entryId": "={{$node[\"Strapi\"].json[\"id\"]}}" + }, + "name": "Strapi1", + "type": "n8n-nodes-base.strapi", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "strapiApi": { + "id": "150", + "name": "Strapi API creds" + } + }, + "id": "2160d0d9-f5f3-45c5-9925-3e6449a71097" + }, + { + "parameters": { + "operation": "getAll", + "contentType": "Tests", + "limit": 1, + "options": {} + }, + "name": "Strapi2", + "type": "n8n-nodes-base.strapi", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "strapiApi": { + "id": "150", + "name": "Strapi API creds" + } + }, + "id": "bebbc112-21a2-48f8-9291-89f264057fff" + }, + { + "parameters": { + "operation": "update", + "contentType": "Tests", + "columns": "test" + }, + "name": "Strapi3", + "type": "n8n-nodes-base.strapi", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "credentials": { + "strapiApi": { + "id": "150", + "name": "Strapi API creds" + } + }, + "id": "275f4cc2-4ebb-42fe-9fee-ef709df4df6b" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "number": [ + { + "name": "id", + "value": "={{$node[\"Strapi1\"].json[\"id\"]}}" + } + ], + "string": [ + { + "name": "test", + "value": "=Updated{{$node[\"Set\"].json[\"test\"]}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "id": "bcff9dc4-914a-4494-b08f-321f541511d2" + }, + { + "parameters": { + "operation": "delete", + "contentType": "Tests", + "entryId": "={{$node[\"Strapi\"].json[\"id\"]}}" + }, + "name": "Strapi4", + "type": "n8n-nodes-base.strapi", + "typeVersion": 1, + "position": [ + 1290, + 300 + ], + "credentials": { + "strapiApi": { + "id": "150", + "name": "Strapi API creds" + } + }, + "id": "f60abebb-e54e-4bf6-805e-7a3c22769dbc" + } + ], + "connections": { + "Strapi": { + "main": [ + [ + { + "node": "Strapi1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Strapi", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Strapi1": { + "main": [ + [ + { + "node": "Strapi2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Strapi2": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Strapi3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Strapi3": { + "main": [ + [ + { + "node": "Strapi4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/188.json b/test-workflows/workflows/188.json new file mode 100644 index 0000000000..ac147d5dc1 --- /dev/null +++ b/test-workflows/workflows/188.json @@ -0,0 +1,86 @@ +{ + "createdAt": "2021-04-29T08:16:23.227Z", + "updatedAt": "2021-04-29T08:16:23.227Z", + "id": "188", + "name": "Uplead:Company:enrich:Person:enrich", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "1a29e4a7-f246-40dc-b79c-b786d4c806b1" + }, + { + "parameters": { + "company": "amazon" + }, + "name": "Uplead", + "type": "n8n-nodes-base.uplead", + "typeVersion": 1, + "position": [ + 550, + 200 + ], + "credentials": { + "upleadApi": { + "id": "151", + "name": "Uplead API creds" + } + }, + "id": "879b9140-4c58-4d4d-86ab-a483fd617922" + }, + { + "parameters": { + "resource": "person", + "firstname": "Werner ", + "lastname": "Vogels", + "domain": "amazon.com" + }, + "name": "Uplead1", + "type": "n8n-nodes-base.uplead", + "typeVersion": 1, + "position": [ + 550, + 350 + ], + "credentials": { + "upleadApi": { + "id": "151", + "name": "Uplead API creds" + } + }, + "id": "e97bccd6-c107-4099-9141-040cebe56ed8" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Uplead", + "type": "main", + "index": 0 + }, + { + "node": "Uplead1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/189.json b/test-workflows/workflows/189.json new file mode 100644 index 0000000000..6aeac6a6c4 --- /dev/null +++ b/test-workflows/workflows/189.json @@ -0,0 +1,534 @@ +{ + "createdAt": "2021-04-29T08:53:09.807Z", + "updatedAt": "2021-05-12T17:31:21.682Z", + "id": "189", + "name": "Affinity:Organization:create get update delete getAll:List:getAll get:ListEntry:create get getAll delete:Person:create get update getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "87d46406-85dc-49d6-bf83-b69e094d6873" + }, + { + "parameters": { + "name": "=TESTCOMPANY{{Date.now()}}", + "domain": "test.com", + "additionalFields": {} + }, + "name": "Affinity", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "1be8b362-0d29-48ef-8f70-f98b408ac154" + }, + { + "parameters": { + "operation": "get", + "organizationId": "={{$node[\"Affinity\"].json[\"id\"]}}", + "options": {} + }, + "name": "Affinity1", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "5797c0f2-ace5-41ef-aabf-1104f582ae02" + }, + { + "parameters": { + "operation": "update", + "organizationId": "={{$node[\"Affinity\"].json[\"id\"]}}", + "updateFields": { + "name": "={{$node[\"Affinity1\"].json[\"name\"]}}-UPDATED" + } + }, + "name": "Affinity2", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "1a74bdc8-4e0e-4d9c-9af0-4e80dba7a290" + }, + { + "parameters": { + "operation": "delete", + "organizationId": "={{$node[\"Affinity\"].json[\"id\"]}}" + }, + "name": "Affinity3", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 950, + 300 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "781cad97-11a9-47ba-8de2-0b1863513c0f" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Affinity4", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 500, + 450 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "d803cdfd-b2ea-4f74-9839-56c26276a9d4" + }, + { + "parameters": { + "resource": "list", + "operation": "getAll", + "limit": 1 + }, + "name": "Affinity5", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 500, + 150 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "d2f43144-3321-4b65-9aed-91ed98d8b26d" + }, + { + "parameters": { + "resource": "list", + "listId": "={{$node[\"Affinity5\"].json[\"id\"]}}" + }, + "name": "Affinity6", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 650, + 150 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "7f3f2a9b-d82c-451f-bf94-785afba42af9" + }, + { + "parameters": { + "resource": "person", + "firstName": "=Fname_{{(new Date).toISOString()}}", + "lastName": "=Lname_{{(new Date).toISOString()}}", + "additionalFields": {} + }, + "name": "Affinity7", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 500, + 600 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "a7a2a691-028c-4c01-a8ed-392e2c026f94" + }, + { + "parameters": { + "resource": "person", + "operation": "get", + "personId": "={{$node[\"Affinity7\"].json[\"id\"]}}", + "options": {} + }, + "name": "Affinity8", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 650, + 600 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "12399f87-e27c-443b-809e-812eaa0e41fb" + }, + { + "parameters": { + "resource": "person", + "operation": "update", + "personId": "={{$node[\"Affinity7\"].json[\"id\"]}}", + "updateFields": {}, + "emails": [ + "=email_{{Date.now()}}@test.com" + ] + }, + "name": "Affinity9", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 800, + 600 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "b28eb5fe-e6f9-487e-b947-469f21addca5" + }, + { + "parameters": { + "resource": "person", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Affinity10", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 950, + 600 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "aadcf4a8-89eb-49b6-a1cf-36df4aff4c3b" + }, + { + "parameters": { + "resource": "person", + "operation": "delete", + "personId": "={{$node[\"Affinity7\"].json[\"id\"]}}" + }, + "name": "Affinity11", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 1100, + 600 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "013b336c-1062-4f12-90f4-b3204fde09df" + }, + { + "parameters": { + "resource": "listEntry", + "listId": 51365, + "entityId": "={{$node[\"Affinity\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Affinity12", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 650, + 450 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "99544ad9-75e7-4927-9070-a1d88df5631a" + }, + { + "parameters": { + "resource": "listEntry", + "operation": "get", + "listId": 51365, + "listEntryId": "={{$node[\"Affinity12\"].json[\"id\"]}}" + }, + "name": "Affinity13", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 800, + 450 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "8a4abe86-e2d3-4bb5-9f1a-2dc77c0668fa" + }, + { + "parameters": { + "resource": "listEntry", + "operation": "getAll", + "listId": 51365, + "limit": 1 + }, + "name": "Affinity14", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 950, + 450 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "a1e54a4a-19a1-4705-bb5e-36a3074a987a" + }, + { + "parameters": { + "resource": "listEntry", + "operation": "delete", + "listId": 51365, + "listEntryId": "={{$node[\"Affinity12\"].json[\"id\"]}}" + }, + "name": "Affinity15", + "type": "n8n-nodes-base.affinity", + "typeVersion": 1, + "position": [ + 1100, + 450 + ], + "credentials": { + "affinityApi": { + "id": "152", + "name": "Affinity API creds" + } + }, + "id": "a1f2281d-3a7f-4632-9d76-8696703fda14" + } + ], + "connections": { + "Affinity": { + "main": [ + [ + { + "node": "Affinity12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity1": { + "main": [ + [ + { + "node": "Affinity2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity2": { + "main": [ + [ + { + "node": "Affinity3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Affinity", + "type": "main", + "index": 0 + }, + { + "node": "Affinity4", + "type": "main", + "index": 0 + }, + { + "node": "Affinity5", + "type": "main", + "index": 0 + }, + { + "node": "Affinity7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity5": { + "main": [ + [ + { + "node": "Affinity6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity7": { + "main": [ + [ + { + "node": "Affinity8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity8": { + "main": [ + [ + { + "node": "Affinity9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity9": { + "main": [ + [ + { + "node": "Affinity10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity10": { + "main": [ + [ + { + "node": "Affinity11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity12": { + "main": [ + [ + { + "node": "Affinity13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity13": { + "main": [ + [ + { + "node": "Affinity14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity14": { + "main": [ + [ + { + "node": "Affinity15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Affinity15": { + "main": [ + [ + { + "node": "Affinity1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/19.json b/test-workflows/workflows/19.json new file mode 100644 index 0000000000..18a8ffad4b --- /dev/null +++ b/test-workflows/workflows/19.json @@ -0,0 +1,794 @@ +{ + "createdAt": "2021-02-16T14:22:05.872Z", + "updatedAt": "2021-07-15T13:45:13.306Z", + "id": "19", + "name": "SentryIo:Organization:create get getAll update:Team:create get getAll update delete:Project:create getAll get update delete:Issue:getAll get update:Event:getAll get:Release:create get getAll update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 210, + 580 + ], + "id": "3ae6a472-ef2b-4e70-b1b8-34f11865656a" + }, + { + "parameters": { + "resource": "organization", + "operation": "create", + "name": "=Org{{Date.now()}}", + "agreeTerms": true, + "additionalFields": {} + }, + "name": "Sentry.io", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 420, + 300 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "3b9b06b9-024b-411b-b074-b5d26419c178" + }, + { + "parameters": { + "resource": "organization", + "organizationSlug": "={{$node[\"Sentry.io\"].json[\"slug\"]}}" + }, + "name": "Sentry.io1", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 610, + 300 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "214cd123-0b74-4e6b-b70b-fc715226309b" + }, + { + "parameters": { + "resource": "organization", + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Sentry.io2", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 980, + 300 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "b39920cd-5e8e-4cb7-a5f6-781665b22b53" + }, + { + "parameters": { + "resource": "team", + "operation": "create", + "organizationSlug": "n8n-iq", + "name": "=Team{{Date.now()}}", + "additionalFields": {} + }, + "name": "Sentry.io3", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 420, + 140 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "9f460480-4b55-4f2d-b0ab-7e1f1dc1e974" + }, + { + "parameters": { + "resource": "team", + "organizationSlug": "n8n-iq", + "teamSlug": "={{$node[\"Sentry.io3\"].json[\"slug\"]}}" + }, + "name": "Sentry.io4", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 580, + 140 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "c095b56c-c87b-41e4-9dd1-a529b963dd47" + }, + { + "parameters": { + "resource": "team", + "operation": "getAll", + "organizationSlug": "n8n-iq", + "limit": 1 + }, + "name": "Sentry.io5", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 930, + 140 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "83e5e140-a7fa-497a-9154-84b33f1f43a7" + }, + { + "parameters": { + "resource": "project", + "operation": "getAll", + "limit": 1 + }, + "name": "Sentry.io6", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 590, + 470 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "674a3f1a-9812-43b9-b95b-e3de0106df02" + }, + { + "parameters": { + "resource": "project", + "organizationSlug": "n8n-iq", + "projectSlug": "={{$node[\"Sentry.io22\"].json[\"slug\"]}}" + }, + "name": "Sentry.io7", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 780, + 470 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "78b758fd-29a0-4444-b8b6-128e942b1075" + }, + { + "parameters": { + "resource": "issue", + "issueId": "={{$json[\"id\"]}}" + }, + "name": "Sentry.io8", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 610, + 630 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "15c4106f-e73e-492f-8ea4-bfcfbd15ae6d" + }, + { + "parameters": { + "resource": "issue", + "operation": "getAll", + "organizationSlug": "n8n-iq", + "projectSlug": "javascript", + "limit": 1, + "additionalFields": {} + }, + "name": "Sentry.io9", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 430, + 630 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "ee504fe3-dec7-4225-8ba9-3e978f5186aa" + }, + { + "parameters": { + "resource": "issue", + "operation": "update", + "issueId": "={{$json[\"id\"]}}", + "additionalFields": { + "isBookmarked": "={{!$json[\"isBookmarked\"]}}" + } + }, + "name": "Sentry.io10", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 780, + 630 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "33d3a8d7-1f90-47ab-b890-f3689bb2c4c2" + }, + { + "parameters": { + "operation": "getAll", + "organizationSlug": "n8n-iq", + "projectSlug": "javascript", + "full": false, + "limit": 1 + }, + "name": "Sentry.io11", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 430, + 780 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "9bb47894-f507-49da-9b4e-5b69629bbfcf" + }, + { + "parameters": { + "organizationSlug": "n8n-iq", + "projectSlug": "javascript", + "eventId": "={{$json[\"id\"]}}" + }, + "name": "Sentry.io12", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 610, + 780 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "b99e1b5d-f5c9-448b-84fe-f14fadda556b" + }, + { + "parameters": { + "resource": "release", + "operation": "create", + "organizationSlug": "n8n-iq", + "version": "={{Date.now().toString()}}", + "url": "http://n8n.io", + "projects": "={{[$node[\"Sentry.io22\"].json[\"slug\"]]}}", + "additionalFields": {} + }, + "name": "Sentry.io13", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 1100, + 530 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "c20a70e0-852e-4e75-9ea5-52196890f619" + }, + { + "parameters": { + "resource": "release", + "organizationSlug": "n8n-iq", + "version": "={{$node[\"Sentry.io13\"].json[\"shortVersion\"]}}" + }, + "name": "Sentry.io14", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 1260, + 530 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "b962d75f-256b-4e10-9da0-750913bf4b21" + }, + { + "parameters": { + "resource": "release", + "operation": "getAll", + "organizationSlug": "n8n-iq", + "limit": 1, + "additionalFields": {} + }, + "name": "Sentry.io15", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 1440, + 530 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "253e52a4-18a3-4ce8-b3a9-f9ece3eb6230" + }, + { + "parameters": { + "resource": "team", + "operation": "update", + "organizationSlug": "n8n-iq", + "teamSlug": "={{$node[\"Sentry.io3\"].json[\"slug\"]}}", + "updateFields": {} + }, + "name": "Sentry.io16", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 750, + 140 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "8e6fe7c5-6475-4404-87e4-20441ddb887f" + }, + { + "parameters": { + "resource": "team", + "operation": "delete", + "organizationSlug": "n8n-iq", + "teamSlug": "={{$node[\"Sentry.io3\"].json[\"slug\"]}}" + }, + "name": "Sentry.io17", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 1100, + 140 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "860e3e1b-139d-487b-8cfc-cc141044c446" + }, + { + "parameters": { + "resource": "organization", + "operation": "update", + "organization_slug": "={{$node[\"Sentry.io\"].json[\"slug\"]}}", + "updateFields": {} + }, + "name": "Sentry.io18", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 790, + 300 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "9265dc47-fd2c-458e-991c-ff781cf7fbcd" + }, + { + "parameters": { + "resource": "project", + "operation": "update", + "organizationSlug": "n8n-iq", + "projectSlug": "={{$node[\"Sentry.io6\"].json[\"slug\"]}}", + "updateFields": {} + }, + "name": "Sentry.io19", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 950, + 470 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "60e51eaa-b5a3-4871-9514-462c11b9b640" + }, + { + "parameters": { + "resource": "release", + "operation": "update", + "organizationSlug": "n8n-iq", + "version": "={{$node[\"Sentry.io13\"].json[\"shortVersion\"]}}", + "updateFields": {} + }, + "name": "Sentry.io20", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 1600, + 530 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "0c4c5b23-1127-4dc4-be96-50ccca58c89e" + }, + { + "parameters": { + "resource": "release", + "operation": "delete", + "organizationSlug": "n8n-iq", + "version": "={{$node[\"Sentry.io13\"].json[\"shortVersion\"]}}" + }, + "name": "Sentry.io21", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 1750, + 530 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "61a5111f-5290-429a-9513-c26789af0bd6" + }, + { + "parameters": { + "resource": "project", + "operation": "create", + "organizationSlug": "n8n-iq", + "teamSlug": "n8nteam", + "name": "=ProjectTest{{Date.now()}}", + "additionalFields": {} + }, + "name": "Sentry.io22", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 430, + 470 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "dc68e4b1-7874-4f7a-b44f-5222ae7fe47e" + }, + { + "parameters": { + "resource": "project", + "operation": "delete", + "organizationSlug": "n8n-iq", + "projectSlug": "={{$node[\"Sentry.io22\"].json[\"slug\"]}}" + }, + "name": "Sentry.io23", + "type": "n8n-nodes-base.sentryIo", + "typeVersion": 1, + "position": [ + 1900, + 480 + ], + "credentials": { + "sentryIoApi": { + "id": "10", + "name": "sentry io token" + } + }, + "id": "8143174a-4e94-4e6b-a75f-080c71f08227" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Sentry.io", + "type": "main", + "index": 0 + }, + { + "node": "Sentry.io3", + "type": "main", + "index": 0 + }, + { + "node": "Sentry.io22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io": { + "main": [ + [ + { + "node": "Sentry.io1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io1": { + "main": [ + [ + { + "node": "Sentry.io18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io3": { + "main": [ + [ + { + "node": "Sentry.io4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io4": { + "main": [ + [ + { + "node": "Sentry.io16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io6": { + "main": [ + [ + { + "node": "Sentry.io7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io8": { + "main": [ + [ + { + "node": "Sentry.io10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io9": { + "main": [ + [ + { + "node": "Sentry.io8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io11": { + "main": [ + [ + { + "node": "Sentry.io12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io13": { + "main": [ + [ + { + "node": "Sentry.io14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io14": { + "main": [ + [ + { + "node": "Sentry.io15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io16": { + "main": [ + [ + { + "node": "Sentry.io5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io5": { + "main": [ + [ + { + "node": "Sentry.io17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io18": { + "main": [ + [ + { + "node": "Sentry.io2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io7": { + "main": [ + [ + { + "node": "Sentry.io19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io19": { + "main": [ + [ + { + "node": "Sentry.io13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io15": { + "main": [ + [ + { + "node": "Sentry.io20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io20": { + "main": [ + [ + { + "node": "Sentry.io21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io22": { + "main": [ + [ + { + "node": "Sentry.io6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sentry.io21": { + "main": [ + [ + { + "node": "Sentry.io23", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/190.json b/test-workflows/workflows/190.json new file mode 100644 index 0000000000..62871b2e24 --- /dev/null +++ b/test-workflows/workflows/190.json @@ -0,0 +1,561 @@ +{ + "createdAt": "2021-04-29T10:21:23.768Z", + "updatedAt": "2021-06-04T14:59:28.116Z", + "id": "190", + "name": "Discourse:User:create get getAll:Category:create update getAll:Group:create update get getAll:UserGroup:add remove:Post:create update get getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "84717a95-a963-4bf8-9398-1b47ae0ddea8" + }, + { + "parameters": { + "resource": "category", + "name": "=Category{{Date.now()}}", + "color": "FF6D5A" + }, + "name": "Discourse", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 500, + 250 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "1f50403d-2276-4adb-827d-b7c4259f4966" + }, + { + "parameters": { + "resource": "category", + "operation": "update", + "categoryId": "={{$node[\"Discourse\"].json[\"id\"]}}", + "name": "=Updated{{$node[\"Discourse\"].json[\"name\"]}}", + "updateFields": {} + }, + "name": "Discourse1", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 650, + 250 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "1719b47a-1de6-470f-a6f5-a92b8bc4c7d2" + }, + { + "parameters": { + "resource": "category", + "operation": "getAll", + "limit": 1 + }, + "name": "Discourse2", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 800, + 250 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "dcddf8d2-7e35-4075-9302-11c69187ac8a" + }, + { + "parameters": { + "resource": "group", + "name": "=Group{{Date.now()}}" + }, + "name": "Discourse3", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 500, + 410 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "a7c4475b-bf7c-4660-a402-0d8f28237caf" + }, + { + "parameters": { + "resource": "group", + "operation": "update", + "groupId": "={{$node[\"Discourse3\"].json[\"id\"]}}", + "name": "=Up{{$node[\"Discourse3\"].json[\"name\"]}}" + }, + "name": "Discourse4", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 650, + 410 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "c0f711d4-45e0-4f3e-add9-982e643294c9" + }, + { + "parameters": { + "resource": "group", + "operation": "get", + "name": "=Up{{$node[\"Discourse3\"].json[\"name\"]}}" + }, + "name": "Discourse5", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 800, + 410 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "4c795130-79c3-4f7d-982d-25b7c70b9e0e" + }, + { + "parameters": { + "resource": "group", + "operation": "getAll", + "limit": 1 + }, + "name": "Discourse6", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 950, + 410 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "f25ab7e3-e2fb-45e5-871f-d3770301b03f" + }, + { + "parameters": { + "title": "=Post {{Date.now()}}", + "content": "=Content {{(new Date()).toString()}}", + "additionalFields": {} + }, + "name": "Discourse7", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 500, + 710 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "854b71d1-dd7c-4d89-b9cf-4a583803907f" + }, + { + "parameters": { + "operation": "update", + "postId": "={{$node[\"Discourse7\"].json[\"id\"]}}", + "content": "=updated{{$node[\"Discourse7\"].json[\"cooked\"]}}", + "updateFields": {} + }, + "name": "Discourse8", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 650, + 710 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "747331c5-f73a-4ae4-888f-559d83aa03ca" + }, + { + "parameters": { + "operation": "get", + "postId": "={{$node[\"Discourse7\"].json[\"id\"]}}" + }, + "name": "Discourse9", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 800, + 710 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "3f9bb0d0-7a38-452c-a717-080fc9e75404" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Discourse10", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 950, + 710 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "29df1627-7bc8-4968-8df3-5cfb7566e626" + }, + { + "parameters": { + "resource": "user", + "name": "=User{{Math.round(Math.random()*1000)}}", + "email": "=fake{{Date.now()}}@test.com", + "username": "={{$node[\"Set\"].json[\"username\"]}}", + "password": "=A{{Date.now()}}Z", + "additionalFields": { + "active": true, + "approved": true + } + }, + "name": "Discourse11", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 500, + 100 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "notes": "IGNORED_PROPERTIES=errors,values,is_developer,active,user_id", + "id": "731fa606-fcdd-4920-ac0c-ba357877b20f" + }, + { + "parameters": { + "resource": "user", + "operation": "get", + "username": "={{$node[\"Set\"].json[\"username\"]}}" + }, + "name": "Discourse12", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 650, + 100 + ], + "alwaysOutputData": true, + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "continueOnFail": true, + "id": "33d82113-445b-4a03-ac01-c921318a1d6c" + }, + { + "parameters": { + "resource": "user", + "operation": "getAll", + "flag": "active", + "limit": 1 + }, + "name": "Discourse13", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 800, + 100 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "38e8bf81-979b-4b0d-bf78-c8347366e008" + }, + { + "parameters": { + "resource": "userGroup", + "usernames": "nodeqa,", + "groupId": "={{$node[\"Discourse3\"].json[\"id\"]}}" + }, + "name": "Discourse14", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 650, + 560 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "620970bb-377a-4ae5-9ad9-be380be5fbbd" + }, + { + "parameters": { + "resource": "userGroup", + "operation": "remove", + "usernames": "nodeqa,", + "groupId": "={{$node[\"Discourse3\"].json[\"id\"]}}" + }, + "name": "Discourse15", + "type": "n8n-nodes-base.discourse", + "typeVersion": 1, + "position": [ + 800, + 560 + ], + "credentials": { + "discourseApi": { + "id": "153", + "name": "Discourse API" + } + }, + "id": "54683239-ffe0-4360-a276-36cdd22aa272" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "username", + "value": "=Username{{Math.round(Math.random()*1000)}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 360, + 100 + ], + "id": "9be1116c-5e9e-491d-8ab1-038416cf9560" + } + ], + "connections": { + "Discourse": { + "main": [ + [ + { + "node": "Discourse1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse1": { + "main": [ + [ + { + "node": "Discourse2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Discourse", + "type": "main", + "index": 0 + }, + { + "node": "Discourse3", + "type": "main", + "index": 0 + }, + { + "node": "Discourse7", + "type": "main", + "index": 0 + }, + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse3": { + "main": [ + [ + { + "node": "Discourse4", + "type": "main", + "index": 0 + }, + { + "node": "Discourse14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse4": { + "main": [ + [ + { + "node": "Discourse5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse5": { + "main": [ + [ + { + "node": "Discourse6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse7": { + "main": [ + [ + { + "node": "Discourse8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse8": { + "main": [ + [ + { + "node": "Discourse9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse9": { + "main": [ + [ + { + "node": "Discourse10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse14": { + "main": [ + [ + { + "node": "Discourse15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse11": { + "main": [ + [ + { + "node": "Discourse12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Discourse12": { + "main": [ + [ + { + "node": "Discourse13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Discourse11", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/191.json b/test-workflows/workflows/191.json new file mode 100644 index 0000000000..0bebb1ffa2 --- /dev/null +++ b/test-workflows/workflows/191.json @@ -0,0 +1,157 @@ +{ + "createdAt": "2021-04-30T07:16:09.288Z", + "updatedAt": "2021-04-30T07:16:09.288Z", + "id": "191", + "name": "Mailerlite:Subscriber:create get update getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "c998f9cf-a589-4a12-8f24-c5ad324ba4ad" + }, + { + "parameters": { + "email": "=fake{{Date.now()}}@test.com", + "additionalFields": {} + }, + "name": "MailerLite", + "type": "n8n-nodes-base.mailerLite", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "mailerLiteApi": { + "id": "154", + "name": "Mailer Lite API creds" + } + }, + "id": "4de4bbd8-1214-4d0d-81fa-879332f6bca5" + }, + { + "parameters": { + "operation": "get", + "subscriberId": "={{$node[\"MailerLite\"].json[\"email\"]}}" + }, + "name": "MailerLite1", + "type": "n8n-nodes-base.mailerLite", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "mailerLiteApi": { + "id": "154", + "name": "Mailer Lite API creds" + } + }, + "id": "d539fbfb-0228-4101-9e31-493abab14049" + }, + { + "parameters": { + "operation": "update", + "subscriberId": "={{$node[\"MailerLite\"].json[\"email\"]}}", + "updateFields": { + "name": "=UpdatedName{{Date.now()}}" + } + }, + "name": "MailerLite2", + "type": "n8n-nodes-base.mailerLite", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "mailerLiteApi": { + "id": "154", + "name": "Mailer Lite API creds" + } + }, + "id": "a56e6d61-cab2-4556-8d6d-e2f1f549c9d0" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "MailerLite3", + "type": "n8n-nodes-base.mailerLite", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "mailerLiteApi": { + "id": "154", + "name": "Mailer Lite API creds" + } + }, + "id": "6083faa2-8837-49df-8eac-3515986418b2" + } + ], + "connections": { + "MailerLite": { + "main": [ + [ + { + "node": "MailerLite1", + "type": "main", + "index": 0 + } + ] + ] + }, + "MailerLite1": { + "main": [ + [ + { + "node": "MailerLite2", + "type": "main", + "index": 0 + } + ] + ] + }, + "MailerLite2": { + "main": [ + [ + { + "node": "MailerLite3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "MailerLite", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/192.json b/test-workflows/workflows/192.json new file mode 100644 index 0000000000..9803e2c818 --- /dev/null +++ b/test-workflows/workflows/192.json @@ -0,0 +1,650 @@ +{ + "createdAt": "2021-04-30T08:31:10.410Z", + "updatedAt": "2021-04-30T08:46:44.441Z", + "id": "192", + "name": "Mattermost:Channel:create addUser members statistics delete restore:Message:post postEphemeral delete:Reaction:create getAll delete:User:create getById getByEmail getAll invite deactive", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "f0a6807e-f707-401a-a50c-7ef643be9447" + }, + { + "parameters": { + "resource": "channel", + "teamId": "y1p853gfspdrxre5oextbii7wh", + "displayName": "=TestChannel{{Date.now()}}", + "channel": "=testchannel{{Date.now()}}" + }, + "name": "Mattermost", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 430, + 300 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "adeecdf6-f6ea-4065-b1ec-6273ed507467" + }, + { + "parameters": { + "resource": "channel", + "operation": "addUser", + "channelId": "={{$node[\"Mattermost\"].json[\"id\"]}}", + "userId": "4yp7tpa3sbgk9qrf38egttbioo" + }, + "name": "Mattermost1", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 580, + 300 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "85887926-1b04-4ed2-a6d5-0627fb9e408f" + }, + { + "parameters": { + "resource": "channel", + "operation": "members", + "teamId": "y1p853gfspdrxre5oextbii7wh", + "channelId": "={{$node[\"Mattermost\"].json[\"id\"]}}", + "returnAll": false, + "limit": 1 + }, + "name": "Mattermost2", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1650, + 300 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "ad9c7a0c-ff3c-4538-a243-81316472e888" + }, + { + "parameters": { + "resource": "channel", + "operation": "statistics", + "channelId": "={{$node[\"Mattermost\"].json[\"id\"]}}" + }, + "name": "Mattermost3", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1800, + 300 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "724755bb-157b-43cf-8153-d0ff0a00bb26" + }, + { + "parameters": { + "resource": "channel", + "operation": "delete", + "channelId": "={{$node[\"Mattermost\"].json[\"id\"]}}" + }, + "name": "Mattermost4", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1950, + 300 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "474eb599-04f2-4e43-a472-b6fd4e94d97e" + }, + { + "parameters": { + "resource": "channel", + "operation": "restore", + "channelId": "={{$node[\"Mattermost\"].json[\"id\"]}}" + }, + "name": "Mattermost5", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 2100, + 300 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "46fb131b-3338-4e49-a9f8-85130fe56e17" + }, + { + "parameters": { + "resource": "channel", + "operation": "delete", + "channelId": "={{$node[\"Mattermost\"].json[\"id\"]}}" + }, + "name": "Mattermost6", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 2240, + 190 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "10595228-5484-4c14-bbb2-429a52a5d2c9" + }, + { + "parameters": { + "channelId": "={{$node[\"Mattermost\"].json[\"id\"]}}", + "message": "=Message{{Date.now()}}", + "attachments": [], + "otherOptions": {} + }, + "name": "Mattermost7", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 730, + 450 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "a48c3b43-1402-40cd-ad28-dfa306c1e17c" + }, + { + "parameters": { + "operation": "postEphemeral", + "userId": "4yp7tpa3sbgk9qrf38egttbioo", + "channelId": "={{$node[\"Mattermost\"].json[\"id\"]}}", + "message": "=EpheMessage{{Date.now()}}" + }, + "name": "Mattermost8", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 900, + 450 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "84efb0d3-0dd2-4942-b188-3e4bf1e258b3" + }, + { + "parameters": { + "operation": "delete", + "postId": "={{$node[\"Mattermost7\"].json[\"id\"]}}" + }, + "name": "Mattermost9", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1500, + 450 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "d1a5ed6b-2eaf-434c-9bac-de823f6112c6" + }, + { + "parameters": { + "resource": "reaction", + "userId": "fo4frgcntiy6jfc63wor76kxpy", + "postId": "={{$node[\"Mattermost7\"].json[\"id\"]}}", + "emojiName": "rocket" + }, + "name": "Mattermost10", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1050, + 550 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "5b0cedd2-5bfd-4a46-ae99-7eecfb3ab70b" + }, + { + "parameters": { + "resource": "reaction", + "operation": "getAll", + "postId": "={{$node[\"Mattermost7\"].json[\"id\"]}}", + "returnAll": false, + "limit": 1 + }, + "name": "Mattermost11", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1200, + 550 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "345bbd7e-f443-45be-bec2-016b0aa64758" + }, + { + "parameters": { + "resource": "reaction", + "operation": "delete", + "userId": "fo4frgcntiy6jfc63wor76kxpy", + "postId": "={{$node[\"Mattermost7\"].json[\"id\"]}}", + "emojiName": "rocket" + }, + "name": "Mattermost12", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1350, + 550 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "e3e339f3-5aae-4b43-b227-aa1ee65700fb" + }, + { + "parameters": { + "resource": "user", + "operation": "create", + "username": "=Username{{Date.now()}}", + "authService": "email", + "email": "=fake{{Date.now()}}@test.com", + "password": "=a{{Math.round(Math.random()*1000000)}}z", + "additionalFields": {} + }, + "name": "Mattermost13", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 440, + 150 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "bd6fa681-3999-4bee-ab30-29ab39bc0a67" + }, + { + "parameters": { + "resource": "user", + "operation": "getById", + "userIds": "={{$node[\"Mattermost13\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Mattermost14", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 600, + 150 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "5cd54641-5d32-48a7-97c8-8bd5f7cdd22e" + }, + { + "parameters": { + "resource": "user", + "operation": "getByEmail", + "email": "={{$node[\"Mattermost13\"].json[\"email\"]}}" + }, + "name": "Mattermost15", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 750, + 150 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "239a7d42-4b04-401a-a4f2-8818d904e223" + }, + { + "parameters": { + "resource": "user", + "operation": "getAll", + "returnAll": false, + "limit": 1, + "additionalFields": {} + }, + "name": "Mattermost16", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 900, + 150 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "438a00e9-77fb-4d53-903f-3e67c5a3e8d8" + }, + { + "parameters": { + "resource": "user", + "operation": "invite", + "teamId": "y1p853gfspdrxre5oextbii7wh", + "emails": "={{$node[\"Mattermost13\"].json[\"email\"]}}" + }, + "name": "Mattermost17", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1050, + 150 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "59055891-8e15-4c74-8832-5a3a8db69b58" + }, + { + "parameters": { + "resource": "user", + "operation": "deactive", + "userId": "={{$node[\"Mattermost13\"].json[\"id\"]}}" + }, + "name": "Mattermost18", + "type": "n8n-nodes-base.mattermost", + "typeVersion": 1, + "position": [ + 1200, + 150 + ], + "credentials": { + "mattermostApi": { + "id": "155", + "name": "Mattermost API creds" + } + }, + "id": "0a74598f-31d7-4011-a447-72d092178f02" + } + ], + "connections": { + "Mattermost": { + "main": [ + [ + { + "node": "Mattermost1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost1": { + "main": [ + [ + { + "node": "Mattermost7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost2": { + "main": [ + [ + { + "node": "Mattermost3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost3": { + "main": [ + [ + { + "node": "Mattermost4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost4": { + "main": [ + [ + { + "node": "Mattermost5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost5": { + "main": [ + [ + { + "node": "Mattermost6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Mattermost", + "type": "main", + "index": 0 + }, + { + "node": "Mattermost13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost7": { + "main": [ + [ + { + "node": "Mattermost8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost9": { + "main": [ + [ + { + "node": "Mattermost2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost8": { + "main": [ + [ + { + "node": "Mattermost10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost10": { + "main": [ + [ + { + "node": "Mattermost11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost11": { + "main": [ + [ + { + "node": "Mattermost12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost12": { + "main": [ + [ + { + "node": "Mattermost9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost13": { + "main": [ + [ + { + "node": "Mattermost14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost14": { + "main": [ + [ + { + "node": "Mattermost15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost15": { + "main": [ + [ + { + "node": "Mattermost16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost16": { + "main": [ + [ + { + "node": "Mattermost17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Mattermost17": { + "main": [ + [ + { + "node": "Mattermost18", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/193.json b/test-workflows/workflows/193.json new file mode 100644 index 0000000000..dd812330a8 --- /dev/null +++ b/test-workflows/workflows/193.json @@ -0,0 +1,159 @@ +{ + "createdAt": "2021-04-30T10:29:23.378Z", + "updatedAt": "2021-04-30T10:29:23.378Z", + "id": "193", + "name": "ChargeBee:Customer:create:Invoice:list pdfUrl", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "0bd35ca2-b8f6-4357-9315-f2f1d91289ae" + }, + { + "parameters": { + "resource": "customer", + "properties": { + "id": "=Customer{{Date.now()}}", + "first_name": "=FirstName{{Date.now()}}" + } + }, + "name": "Chargebee", + "type": "n8n-nodes-base.chargebee", + "typeVersion": 1, + "position": [ + 510, + 270 + ], + "credentials": { + "chargebeeApi": { + "id": "156", + "name": "Chargebee API creds" + } + }, + "id": "5fe5d283-a430-4963-8fb1-1954889f2682" + }, + { + "parameters": { + "maxResults": 1 + }, + "name": "Chargebee1", + "type": "n8n-nodes-base.chargebee", + "typeVersion": 1, + "position": [ + 510, + 420 + ], + "credentials": { + "chargebeeApi": { + "id": "156", + "name": "Chargebee API creds" + } + }, + "id": "7a957a3b-449c-4b38-b9aa-ecc8f67dc431" + }, + { + "parameters": { + "operation": "pdfUrl", + "invoiceId": "={{$node[\"Chargebee1\"].json[\"id\"]}}" + }, + "name": "Chargebee2", + "type": "n8n-nodes-base.chargebee", + "typeVersion": 1, + "position": [ + 640, + 420 + ], + "credentials": { + "chargebeeApi": { + "id": "156", + "name": "Chargebee API creds" + } + }, + "id": "484868c1-c294-4998-83cc-7b698d7f77ab" + }, + { + "parameters": { + "resource": "subscription", + "operation": "cancel" + }, + "name": "Chargebee3", + "type": "n8n-nodes-base.chargebee", + "typeVersion": 1, + "position": [ + 520, + 120 + ], + "credentials": { + "chargebeeApi": { + "id": "156", + "name": "Chargebee API creds" + } + }, + "disabled": true, + "id": "1dd03d89-9883-46d6-923b-bff5c8f40af9" + }, + { + "parameters": { + "resource": "subscription" + }, + "name": "Chargebee4", + "type": "n8n-nodes-base.chargebee", + "typeVersion": 1, + "position": [ + 670, + 120 + ], + "credentials": { + "chargebeeApi": { + "id": "156", + "name": "Chargebee API creds" + } + }, + "disabled": true, + "id": "08be587e-e655-400a-b1d1-e0f637f7c415" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Chargebee", + "type": "main", + "index": 0 + }, + { + "node": "Chargebee1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Chargebee1": { + "main": [ + [ + { + "node": "Chargebee2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/194.json b/test-workflows/workflows/194.json new file mode 100644 index 0000000000..2b65e7a573 --- /dev/null +++ b/test-workflows/workflows/194.json @@ -0,0 +1,125 @@ +{ + "createdAt": "2021-04-30T10:58:10.188Z", + "updatedAt": "2021-04-30T10:58:10.188Z", + "id": "194", + "name": "Mailjet:Email:send sendTemplate", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "0a7bd7bf-38ad-4d4f-9e74-390a5a008663" + }, + { + "parameters": { + "operation": "sendTemplate", + "subject": "test", + "fromEmail": "node8qa@gmail.com", + "toEmail": "node8qa@gmail.com", + "templateId": "2850185", + "additionalFields": {} + }, + "name": "Mailjet", + "type": "n8n-nodes-base.mailjet", + "typeVersion": 1, + "position": [ + 480, + 240 + ], + "credentials": { + "mailjetEmailApi": { + "id": "157", + "name": "Mailjet Email API creds" + } + }, + "id": "ad66d136-3fcc-4173-871e-545e451c3fdb" + }, + { + "parameters": { + "fromEmail": "node8qa@gmail.com", + "toEmail": "node8qa@gmail.com", + "subject": "test", + "text": "test", + "additionalFields": {} + }, + "name": "Mailjet1", + "type": "n8n-nodes-base.mailjet", + "typeVersion": 1, + "position": [ + 620, + 240 + ], + "credentials": { + "mailjetEmailApi": { + "id": "157", + "name": "Mailjet Email API creds" + } + }, + "id": "9a786724-7be7-4cc8-bac6-f168b1afa8b7" + }, + { + "parameters": { + "resource": "sms", + "subject": "test", + "text": "test" + }, + "name": "Mailjet2", + "type": "n8n-nodes-base.mailjet", + "typeVersion": 1, + "position": [ + 480, + 390 + ], + "credentials": { + "mailjetSmsApi": { + "id": "158", + "name": "Mailjet SMS API creds" + } + }, + "disabled": true, + "id": "20d1d0dd-e801-41c9-a1b1-1aae62a2a1bf" + } + ], + "connections": { + "Mailjet": { + "main": [ + [ + { + "node": "Mailjet1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Mailjet", + "type": "main", + "index": 0 + }, + { + "node": "Mailjet2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/195.json b/test-workflows/workflows/195.json new file mode 100644 index 0000000000..8c5fcf1364 --- /dev/null +++ b/test-workflows/workflows/195.json @@ -0,0 +1,233 @@ +{ + "createdAt": "2021-05-03T07:34:19.371Z", + "updatedAt": "2021-05-03T07:34:19.371Z", + "id": "195", + "name": "Kitemaker:Organization:get:Space:getAll:User:getAll:WorkItem:create get getAll update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "ad2433c4-6d81-4195-a812-f036e3f63181" + }, + { + "parameters": { + "resource": "organization" + }, + "name": "Kitemaker", + "type": "n8n-nodes-base.kitemaker", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "kitemakerApi": { + "id": "159", + "name": "Kitemaker API creds" + } + }, + "id": "3714c961-e9eb-4c84-b712-8e30572a0b71" + }, + { + "parameters": { + "resource": "space", + "limit": 1 + }, + "name": "Kitemaker1", + "type": "n8n-nodes-base.kitemaker", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "kitemakerApi": { + "id": "159", + "name": "Kitemaker API creds" + } + }, + "id": "1e1fb5db-906c-4b93-a411-dfe137207a51" + }, + { + "parameters": { + "resource": "user", + "limit": 1 + }, + "name": "Kitemaker2", + "type": "n8n-nodes-base.kitemaker", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "kitemakerApi": { + "id": "159", + "name": "Kitemaker API creds" + } + }, + "id": "ab77571b-c9e8-478a-bb3d-e3cda0e7efee" + }, + { + "parameters": { + "operation": "create", + "title": "=WorkItem{{Date.now()}}", + "statusId": "0f42cd20f9617405", + "additionalFields": {} + }, + "name": "Kitemaker3", + "type": "n8n-nodes-base.kitemaker", + "typeVersion": 1, + "position": [ + 450, + 600 + ], + "credentials": { + "kitemakerApi": { + "id": "159", + "name": "Kitemaker API creds" + } + }, + "id": "67de6dc9-c5c6-464e-b92d-64e839f7ae57" + }, + { + "parameters": { + "workItemId": "={{$node[\"Kitemaker3\"].json[\"id\"]}}" + }, + "name": "Kitemaker4", + "type": "n8n-nodes-base.kitemaker", + "typeVersion": 1, + "position": [ + 600, + 600 + ], + "credentials": { + "kitemakerApi": { + "id": "159", + "name": "Kitemaker API creds" + } + }, + "id": "623c86bc-c0e6-4974-aede-669fd25b3e49" + }, + { + "parameters": { + "operation": "getAll", + "spaceId": "0f42cd20b0617400", + "limit": 1 + }, + "name": "Kitemaker5", + "type": "n8n-nodes-base.kitemaker", + "typeVersion": 1, + "position": [ + 750, + 600 + ], + "credentials": { + "kitemakerApi": { + "id": "159", + "name": "Kitemaker API creds" + } + }, + "id": "0282eaab-cfe7-46ab-b0b1-958789c39eb6" + }, + { + "parameters": { + "operation": "update", + "workItemId": "={{$node[\"Kitemaker3\"].json[\"id\"]}}", + "updateFields": { + "statusId": "0f42cd20f9617401", + "title": "=Updated{{$node[\"Kitemaker3\"].json[\"title\"]}}" + } + }, + "name": "Kitemaker6", + "type": "n8n-nodes-base.kitemaker", + "typeVersion": 1, + "position": [ + 900, + 600 + ], + "credentials": { + "kitemakerApi": { + "id": "159", + "name": "Kitemaker API creds" + } + }, + "id": "af8e0085-242b-4d5c-9efd-ded439b41aba" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Kitemaker1", + "type": "main", + "index": 0 + }, + { + "node": "Kitemaker", + "type": "main", + "index": 0 + }, + { + "node": "Kitemaker2", + "type": "main", + "index": 0 + }, + { + "node": "Kitemaker3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Kitemaker3": { + "main": [ + [ + { + "node": "Kitemaker4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Kitemaker4": { + "main": [ + [ + { + "node": "Kitemaker5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Kitemaker5": { + "main": [ + [ + { + "node": "Kitemaker6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/196.json b/test-workflows/workflows/196.json new file mode 100644 index 0000000000..256ddedda6 --- /dev/null +++ b/test-workflows/workflows/196.json @@ -0,0 +1,1222 @@ +{ + "createdAt": "2021-05-04T09:29:11.382Z", + "updatedAt": "2021-05-04T10:32:51.938Z", + "id": "196", + "name": "QuickBooks:Bill:create get update getAll delete:Item:getAll:get:Vendor:create get getAll update:Employee:create get update getAll:Customer:create get update getAll:Estimate:create get update getAll send delete:Invoice:create get update getAll send delete:Payment:create get update getAll send delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e0188874-3b1d-4dfb-881d-74e79e543722" + }, + { + "parameters": { + "operation": "create", + "displayName": "=Customer{{Date.now()}}", + "additionalFields": {} + }, + "name": "QuickBooks", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 450, + 390 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "689e8fe0-7b26-4a93-926e-221bd869ed8c" + }, + { + "parameters": { + "customerId": "={{$node[\"QuickBooks\"].json[\"Id\"]}}" + }, + "name": "QuickBooks1", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 600, + 390 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "39187a1b-c5f9-4a8e-a60c-ae87771be5eb" + }, + { + "parameters": { + "operation": "update", + "customerId": "={{$node[\"QuickBooks\"].json[\"Id\"]}}", + "updateFields": { + "Active": false + } + }, + "name": "QuickBooks2", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 750, + 390 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "4b0c15be-a7fa-440f-918a-3d197305640e" + }, + { + "parameters": { + "operation": "getAll", + "filters": {} + }, + "name": "QuickBooks3", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 900, + 390 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "9219c2cd-e3df-4afd-9a49-ca83c2b7b1ce" + }, + { + "parameters": { + "resource": "employee", + "operation": "create", + "FamilyName": "=Fname{{Date.now()}}", + "GivenName": "=Name{{Date.now()}}", + "additionalFields": {} + }, + "name": "QuickBooks4", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 450, + 240 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "e66647c5-fdd7-4d10-b029-033cd7a71076" + }, + { + "parameters": { + "resource": "employee", + "employeeId": "={{$node[\"QuickBooks4\"].json[\"Id\"]}}" + }, + "name": "QuickBooks5", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 600, + 240 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "6d100355-e163-43ab-affa-850a3e547f0e" + }, + { + "parameters": { + "resource": "employee", + "operation": "update", + "employeeId": "={{$node[\"QuickBooks4\"].json[\"Id\"]}}", + "updateFields": { + "Active": false + } + }, + "name": "QuickBooks6", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 750, + 240 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "f53f7640-f512-4beb-beb1-61edbf24e164" + }, + { + "parameters": { + "resource": "employee", + "operation": "getAll", + "filters": {} + }, + "name": "QuickBooks7", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 900, + 240 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "489b4d87-a2b1-4111-a165-b36762dc6de2" + }, + { + "parameters": { + "resource": "estimate", + "operation": "create", + "CustomerRef": "1", + "Line": [ + { + "itemId": "3", + "DetailType": "SalesItemLineDetail", + "Amount": 3, + "Description": "test" + } + ], + "additionalFields": {} + }, + "name": "QuickBooks8", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 450, + 540 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "f47dca6a-81eb-41ab-bf6f-34993f8333bc" + }, + { + "parameters": { + "resource": "estimate", + "estimateId": "={{$node[\"QuickBooks8\"].json[\"Id\"]}}" + }, + "name": "QuickBooks9", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 600, + 540 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "dc22140e-affa-4da1-9636-c0bd04987c39" + }, + { + "parameters": { + "resource": "estimate", + "operation": "update", + "estimateId": "={{$node[\"QuickBooks8\"].json[\"Id\"]}}", + "updateFields": { + "BillEmail": "fake@test.com" + } + }, + "name": "QuickBooks10", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 750, + 540 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "bf4a83d1-dfbb-4a38-8140-fefe9ee06195" + }, + { + "parameters": { + "resource": "estimate", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "QuickBooks11", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 900, + 540 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "8403016a-222f-4f05-80cf-2982bdeac426" + }, + { + "parameters": { + "resource": "estimate", + "operation": "send", + "estimateId": "={{$node[\"QuickBooks8\"].json[\"Id\"]}}", + "email": "fake@test.com" + }, + "name": "QuickBooks12", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 1050, + 540 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "c00d2656-596b-4a09-ae82-09d5c71dcaab" + }, + { + "parameters": { + "resource": "estimate", + "operation": "delete", + "estimateId": "={{$node[\"QuickBooks8\"].json[\"Id\"]}}" + }, + "name": "QuickBooks13", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 1200, + 540 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "0b7f754f-a7d9-49fe-b629-3c0cf1b1b7f5" + }, + { + "parameters": { + "resource": "invoice", + "operation": "create", + "CustomerRef": "5", + "Line": [ + { + "DetailType": "SalesItemLineDetail", + "itemId": "7", + "Amount": 0, + "Description": "test" + } + ], + "additionalFields": {} + }, + "name": "QuickBooks14", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 450, + 690 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "c5d80817-5c5a-4a78-bc72-4ca29b4757f4" + }, + { + "parameters": { + "resource": "invoice", + "invoiceId": "={{$node[\"QuickBooks14\"].json[\"Id\"]}}" + }, + "name": "QuickBooks15", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 600, + 690 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "6ad6231c-b645-4e00-b61f-ab4031b9f4f2" + }, + { + "parameters": { + "resource": "invoice", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "QuickBooks16", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 750, + 690 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "88333b7b-f905-4c83-960e-3eb650f17d00" + }, + { + "parameters": { + "resource": "invoice", + "operation": "update", + "invoiceId": "={{$node[\"QuickBooks14\"].json[\"Id\"]}}", + "updateFields": { + "CustomerMemo": "test" + } + }, + "name": "QuickBooks17", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 900, + 690 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "e625f0d1-a0bb-4f8d-83b2-9dc62d3a526d" + }, + { + "parameters": { + "resource": "invoice", + "operation": "send", + "invoiceId": "={{$node[\"QuickBooks14\"].json[\"Id\"]}}", + "email": "fake@test.com" + }, + "name": "QuickBooks18", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 1050, + 690 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "59851dc6-1aee-4c49-9cb1-3447df019be1" + }, + { + "parameters": { + "resource": "invoice", + "operation": "delete", + "invoiceId": "={{$node[\"QuickBooks14\"].json[\"Id\"]}}" + }, + "name": "QuickBooks19", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 1190, + 690 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "68dda52d-9455-491e-b7b9-8dc10d6e8460" + }, + { + "parameters": { + "resource": "item", + "itemId": "={{$node[\"QuickBooks21\"].json[\"Id\"]}}" + }, + "name": "QuickBooks22", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 600, + -60 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "98c8ad9c-5053-4376-9dc0-95545e6f3d23" + }, + { + "parameters": { + "resource": "item", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "QuickBooks21", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 450, + -60 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "e1b294da-dea1-4318-a487-390aa95c9287" + }, + { + "parameters": { + "resource": "payment", + "operation": "create", + "CustomerRef": "1", + "TotalAmt": 50, + "additionalFields": {} + }, + "name": "QuickBooks20", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 450, + 840 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "aa58f15e-a22b-402c-8af3-39aeea6de874" + }, + { + "parameters": { + "resource": "payment", + "paymentId": "={{$node[\"QuickBooks20\"].json[\"Id\"]}}" + }, + "name": "QuickBooks23", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 600, + 840 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "f0226998-0489-4b64-ba0e-c06e13e75a9d" + }, + { + "parameters": { + "resource": "payment", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "QuickBooks24", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 750, + 840 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "49554443-c484-4f7b-ad8f-8694e3163150" + }, + { + "parameters": { + "resource": "payment", + "operation": "update", + "paymentId": "={{$node[\"QuickBooks20\"].json[\"Id\"]}}", + "updateFields": { + "TxnDate": "2021-04-30T22:00:00.000Z" + } + }, + "name": "QuickBooks25", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 900, + 840 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "65fb3536-c40a-48a4-9e6a-ce4d4f24628a" + }, + { + "parameters": { + "resource": "payment", + "operation": "send", + "paymentId": "={{$node[\"QuickBooks20\"].json[\"Id\"]}}", + "email": "fake@test.com" + }, + "name": "QuickBooks26", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 1050, + 840 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "33f3a73e-799e-4dc0-a8fc-5c9aa492a953" + }, + { + "parameters": { + "resource": "payment", + "operation": "delete", + "paymentId": "={{$node[\"QuickBooks20\"].json[\"Id\"]}}" + }, + "name": "QuickBooks27", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 1200, + 840 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "fb87ee2d-7fad-4cbe-82a4-aede0b3462c1" + }, + { + "parameters": { + "resource": "vendor", + "operation": "create", + "displayName": "=Vendor{{Date.now()}}", + "additionalFields": {} + }, + "name": "QuickBooks28", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 450, + 90 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "09a16143-613f-4812-926a-acacbefb63d1" + }, + { + "parameters": { + "resource": "vendor", + "vendorId": "={{$node[\"QuickBooks28\"].json[\"Id\"]}}" + }, + "name": "QuickBooks29", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 600, + 90 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "ec53abeb-83ad-4cdb-b419-56eff8ed7de7" + }, + { + "parameters": { + "resource": "vendor", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "QuickBooks30", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 750, + 90 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "f3c16a5c-83c6-410c-b382-1b22dd7404e1" + }, + { + "parameters": { + "resource": "vendor", + "operation": "update", + "vendorId": "={{$node[\"QuickBooks28\"].json[\"Id\"]}}", + "updateFields": { + "Active": false + } + }, + "name": "QuickBooks31", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 900, + 90 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "0bf8d78c-d02e-4b3c-a1fc-98a7afe4f7b9" + }, + { + "parameters": { + "resource": "bill", + "operation": "create", + "VendorRef": "46", + "Line": [ + { + "DetailType": "AccountBasedExpenseLineDetail", + "Amount": 152, + "Description": "test", + "accountId": "78" + } + ], + "additionalFields": {} + }, + "name": "QuickBooks37", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 450, + -210 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "2f7af95b-cbb8-4272-bdaf-64cd9906ae47" + }, + { + "parameters": { + "resource": "bill", + "billId": "={{$node[\"QuickBooks37\"].json[\"Id\"]}}" + }, + "name": "QuickBooks38", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 600, + -210 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "28dbf9b4-288b-4726-8796-718e9b586cca" + }, + { + "parameters": { + "resource": "bill", + "operation": "update", + "billId": "={{$node[\"QuickBooks37\"].json[\"Id\"]}}", + "updateFields": { + "DueDate": "2021-04-30T22:00:00.000Z" + } + }, + "name": "QuickBooks39", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 750, + -210 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "2843f656-3ee4-4e51-a376-315d92f8d9fd" + }, + { + "parameters": { + "resource": "bill", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "QuickBooks40", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 900, + -210 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "624d0f96-d465-448b-b9a1-50483479e032" + }, + { + "parameters": { + "resource": "bill", + "operation": "delete", + "billId": "={{$node[\"QuickBooks37\"].json[\"Id\"]}}" + }, + "name": "QuickBooks41", + "type": "n8n-nodes-base.quickbooks", + "typeVersion": 1, + "position": [ + 1050, + -210 + ], + "credentials": { + "quickBooksOAuth2Api": { + "id": "160", + "name": "QuickBooks OAuth2 API creds" + } + }, + "id": "0c89671b-1312-46b7-92af-4b879dbd5ff0" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "QuickBooks28", + "type": "main", + "index": 0 + }, + { + "node": "QuickBooks21", + "type": "main", + "index": 0 + }, + { + "node": "QuickBooks4", + "type": "main", + "index": 0 + }, + { + "node": "QuickBooks", + "type": "main", + "index": 0 + }, + { + "node": "QuickBooks37", + "type": "main", + "index": 0 + }, + { + "node": "QuickBooks8", + "type": "main", + "index": 0 + }, + { + "node": "QuickBooks14", + "type": "main", + "index": 0 + }, + { + "node": "QuickBooks20", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks": { + "main": [ + [ + { + "node": "QuickBooks1", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks1": { + "main": [ + [ + { + "node": "QuickBooks2", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks2": { + "main": [ + [ + { + "node": "QuickBooks3", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks4": { + "main": [ + [ + { + "node": "QuickBooks5", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks5": { + "main": [ + [ + { + "node": "QuickBooks6", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks6": { + "main": [ + [ + { + "node": "QuickBooks7", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks8": { + "main": [ + [ + { + "node": "QuickBooks9", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks9": { + "main": [ + [ + { + "node": "QuickBooks10", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks10": { + "main": [ + [ + { + "node": "QuickBooks11", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks11": { + "main": [ + [ + { + "node": "QuickBooks12", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks12": { + "main": [ + [ + { + "node": "QuickBooks13", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks14": { + "main": [ + [ + { + "node": "QuickBooks15", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks15": { + "main": [ + [ + { + "node": "QuickBooks16", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks16": { + "main": [ + [ + { + "node": "QuickBooks17", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks17": { + "main": [ + [ + { + "node": "QuickBooks18", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks18": { + "main": [ + [ + { + "node": "QuickBooks19", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks21": { + "main": [ + [ + { + "node": "QuickBooks22", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks20": { + "main": [ + [ + { + "node": "QuickBooks23", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks23": { + "main": [ + [ + { + "node": "QuickBooks24", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks24": { + "main": [ + [ + { + "node": "QuickBooks25", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks25": { + "main": [ + [ + { + "node": "QuickBooks26", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks26": { + "main": [ + [ + { + "node": "QuickBooks27", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks28": { + "main": [ + [ + { + "node": "QuickBooks29", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks29": { + "main": [ + [ + { + "node": "QuickBooks30", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks30": { + "main": [ + [ + { + "node": "QuickBooks31", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks37": { + "main": [ + [ + { + "node": "QuickBooks38", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks38": { + "main": [ + [ + { + "node": "QuickBooks39", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks39": { + "main": [ + [ + { + "node": "QuickBooks40", + "type": "main", + "index": 0 + } + ] + ] + }, + "QuickBooks40": { + "main": [ + [ + { + "node": "QuickBooks41", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/197.json b/test-workflows/workflows/197.json new file mode 100644 index 0000000000..235aa97142 --- /dev/null +++ b/test-workflows/workflows/197.json @@ -0,0 +1,144 @@ +{ + "createdAt": "2021-05-06T09:34:45.652Z", + "updatedAt": "2021-05-06T09:39:48.494Z", + "id": "197", + "name": "MQTT:sendMessage", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "850eb506-8c40-4257-92f9-13b39588d01a" + }, + { + "parameters": { + "topic": "TestTopic", + "sendInputData": false, + "message": "=MQTT-message{{Date.now()}}", + "options": { + "qos": 0 + } + }, + "name": "MQTT qos:1", + "type": "n8n-nodes-base.mqtt", + "typeVersion": 1, + "position": [ + 450, + 160 + ], + "credentials": { + "mqtt": { + "id": "131", + "name": "MQTT creds" + } + }, + "id": "af2b9c5f-2b44-43d6-852f-436ebfc72c3c" + }, + { + "parameters": { + "topic": "TestTopic", + "sendInputData": false, + "message": "=MQTT-message{{Date.now()}}", + "options": { + "qos": 1 + } + }, + "name": "MQTT1 qos:0", + "type": "n8n-nodes-base.mqtt", + "typeVersion": 1, + "position": [ + 450, + 310 + ], + "credentials": { + "mqtt": { + "id": "131", + "name": "MQTT creds" + } + }, + "id": "37d6e4f3-b06b-4bb3-8f68-ca54de4e41a9" + }, + { + "parameters": { + "topic": "TestTopic", + "options": { + "qos": 2 + } + }, + "name": "MQTT2 qos:2", + "type": "n8n-nodes-base.mqtt", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "mqtt": { + "id": "131", + "name": "MQTT creds" + } + }, + "id": "6e4693bb-23e5-4622-aa4f-2e93ce916f86" + }, + { + "parameters": { + "functionCode": "items = [\n {\n json:{\n \"message\":`MQTT-item-message${Date.now()}`\n }\n }\n]\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "id": "37ef3107-c80c-4bad-a5d6-3d9a349ca76a" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "MQTT qos:1", + "type": "main", + "index": 0 + }, + { + "node": "MQTT1 qos:0", + "type": "main", + "index": 0 + }, + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "MQTT2 qos:2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/198.json b/test-workflows/workflows/198.json new file mode 100644 index 0000000000..a75b867785 --- /dev/null +++ b/test-workflows/workflows/198.json @@ -0,0 +1,329 @@ +{ + "createdAt": "2021-05-07T14:37:14.511Z", + "updatedAt": "2021-05-12T17:39:44.046Z", + "id": "198", + "name": "GoogleCloudFirestore:Document:create get upset getAll query delete:Collection:getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "68fcd431-1e94-4928-b19a-1749502c6ec5" + }, + { + "parameters": { + "operation": "create", + "projectId": "fixedtestproject", + "collection": "FixedCollection", + "columns": "number,boolean" + }, + "name": "Google Cloud Firestore", + "type": "n8n-nodes-base.googleFirebaseCloudFirestore", + "typeVersion": 1, + "position": [ + 600, + 250 + ], + "credentials": { + "googleFirebaseCloudFirestoreOAuth2Api": { + "id": "167", + "name": "Google Firebase Cloud Firestore OAuth2 API creds" + } + }, + "id": "d5788046-8872-44f7-83c4-4d1b66480b22" + }, + { + "parameters": { + "values": { + "number": [ + { + "name": "number", + "value": 3 + } + ], + "boolean": [ + { + "name": "boolean", + "value": true + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 250 + ], + "id": "b4b9cc8e-7496-40ed-ad8a-eb02421546e0" + }, + { + "parameters": { + "projectId": "fixedtestproject", + "collection": "FixedCollection", + "documentId": "={{$node[\"Google Cloud Firestore\"].json[\"_id\"]}}" + }, + "name": "Google Cloud Firestore1", + "type": "n8n-nodes-base.googleFirebaseCloudFirestore", + "typeVersion": 1, + "position": [ + 800, + 250 + ], + "credentials": { + "googleFirebaseCloudFirestoreOAuth2Api": { + "id": "167", + "name": "Google Firebase Cloud Firestore OAuth2 API creds" + } + }, + "id": "56bff4bf-504c-4dca-bcef-0dbd4f881303" + }, + { + "parameters": { + "operation": "upsert", + "projectId": "fixedtestproject", + "collection": "FixedCollection", + "updateKey": "={{$node[\"Google Cloud Firestore1\"].json[\"_id\"]}}", + "columns": "number" + }, + "name": "Google Cloud Firestore2", + "type": "n8n-nodes-base.googleFirebaseCloudFirestore", + "typeVersion": 1, + "position": [ + 1100, + 250 + ], + "credentials": { + "googleFirebaseCloudFirestoreOAuth2Api": { + "id": "167", + "name": "Google Firebase Cloud Firestore OAuth2 API creds" + } + }, + "id": "fe3abd23-d891-4bcf-aa5e-64e9a0961332" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "number": [ + { + "name": "number", + "value": 100 + } + ], + "boolean": [ + { + "name": "boolean", + "value": true + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 950, + 250 + ], + "id": "3bbbae32-f56a-4252-8e4b-4f0f4854fe22" + }, + { + "parameters": { + "operation": "getAll", + "projectId": "fixedtestproject", + "collection": "FixedCollection", + "limit": 1 + }, + "name": "Google Cloud Firestore3", + "type": "n8n-nodes-base.googleFirebaseCloudFirestore", + "typeVersion": 1, + "position": [ + 1250, + 250 + ], + "credentials": { + "googleFirebaseCloudFirestoreOAuth2Api": { + "id": "167", + "name": "Google Firebase Cloud Firestore OAuth2 API creds" + } + }, + "id": "77e69936-c4c5-4aee-918b-1246e25e0446" + }, + { + "parameters": { + "operation": "query", + "projectId": "fixedtestproject", + "query": "{\n \"structuredQuery\":{\n \"where\":{\n \"fieldFilter\":{\n \"field\":{\n \"fieldPath\": \"number\"\n },\n \"op\":\"EQUAL\",\n \"value\":{\n \"integerValue\": 100\n }\n }\n },\n \"from\":[\n {\n \"collectionId\":\"FixedCollection\"\n }\n ]\n }\n}" + }, + "name": "Google Cloud Firestore4", + "type": "n8n-nodes-base.googleFirebaseCloudFirestore", + "typeVersion": 1, + "position": [ + 1450, + 250 + ], + "credentials": { + "googleFirebaseCloudFirestoreOAuth2Api": { + "id": "167", + "name": "Google Firebase Cloud Firestore OAuth2 API creds" + } + }, + "id": "0f0d74da-fbc7-4078-9462-d8c40322b9e7" + }, + { + "parameters": { + "resource": "collection", + "projectId": "fixedtestproject", + "limit": 1 + }, + "name": "Google Cloud Firestore5", + "type": "n8n-nodes-base.googleFirebaseCloudFirestore", + "typeVersion": 1, + "position": [ + 450, + 400 + ], + "credentials": { + "googleFirebaseCloudFirestoreOAuth2Api": { + "id": "167", + "name": "Google Firebase Cloud Firestore OAuth2 API creds" + } + }, + "id": "bda9b450-d8d2-46a0-b3f2-d38fe8bfb6e8" + }, + { + "parameters": { + "operation": "delete", + "projectId": "fixedtestproject", + "collection": "FixedCollection", + "documentId": "={{$node[\"Google Cloud Firestore\"].json[\"_id\"]}}" + }, + "name": "Google Cloud Firestore6", + "type": "n8n-nodes-base.googleFirebaseCloudFirestore", + "typeVersion": 1, + "position": [ + 1650, + 250 + ], + "credentials": { + "googleFirebaseCloudFirestoreOAuth2Api": { + "id": "167", + "name": "Google Firebase Cloud Firestore OAuth2 API creds" + } + }, + "id": "62f8a14b-34de-48c6-87d9-6292203427e1" + } + ], + "connections": { + "Google Cloud Firestore": { + "main": [ + [ + { + "node": "Google Cloud Firestore1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Google Cloud Firestore", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Cloud Firestore1": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Google Cloud Firestore2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Cloud Firestore2": { + "main": [ + [ + { + "node": "Google Cloud Firestore3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Cloud Firestore3": { + "main": [ + [ + { + "node": "Google Cloud Firestore4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + }, + { + "node": "Google Cloud Firestore5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Cloud Firestore4": { + "main": [ + [ + { + "node": "Google Cloud Firestore6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/199.json b/test-workflows/workflows/199.json new file mode 100644 index 0000000000..d61c381d94 --- /dev/null +++ b/test-workflows/workflows/199.json @@ -0,0 +1,66 @@ +{ + "createdAt": "2021-05-10T11:24:19.202Z", + "updatedAt": "2021-05-10T13:18:56.388Z", + "id": "199", + "name": "MailCheck:Email:check", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "77ccc40b-307c-479e-882d-6f2700b67b8d" + }, + { + "parameters": { + "email": "jan@n8n.io" + }, + "name": "Mailcheck", + "type": "n8n-nodes-base.mailcheck", + "typeVersion": 1, + "position": [ + 470, + 300 + ], + "credentials": { + "mailcheckApi": { + "id": "169", + "name": "Mailcheck API creds" + } + }, + "id": "01a36e75-0cbd-4536-896e-1fe4cf9a8179" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Mailcheck", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "timezone": "Europe/Berlin" + }, + "staticData": { + "node:Clockify Trigger": { + "userId": "60335ad2f24e660123d7fdeb", + "lastTimeChecked": "2021-05-10T14:49:24Z" + } + }, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/20.json b/test-workflows/workflows/20.json new file mode 100644 index 0000000000..04bdb59e83 --- /dev/null +++ b/test-workflows/workflows/20.json @@ -0,0 +1,583 @@ +{ + "createdAt": "2021-02-16T15:33:11.177Z", + "updatedAt": "2021-06-04T17:17:22.109Z", + "id": "20", + "name": "Hubspot:Contact:upsert getall search getRecentlyCreatedUpdated get delete:Company:getall searchByDomain getRecentlyCreated update getRecentlyModified delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d8cbfb90-51ba-45b9-a701-1d278992b7d5" + }, + { + "parameters": { + "resource": "contact", + "email": "nodeqa@n8n.io", + "additionalFields": {} + }, + "name": "Hubspot", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 410, + 260 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "notes": "IGNORED_PROPERTIES=associated-company", + "id": "6b417cab-bf37-4b57-8fdf-24f011106618" + }, + { + "parameters": { + "resource": "contact", + "operation": "getRecentlyCreatedUpdated", + "limit": 1, + "filters": {} + }, + "name": "Hubspot1", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1320, + 260 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "0be3e59d-9094-4422-a834-bcc945725a75" + }, + { + "parameters": { + "resource": "contact", + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Hubspot2", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 710, + 260 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "5180a058-b5ff-481b-90aa-421f8609b091" + }, + { + "parameters": { + "resource": "contact", + "operation": "search", + "limit": 1, + "filterGroupsUi": { + "filterGroupsValues": [] + }, + "additionalFields": {} + }, + "name": "Hubspot3", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1000, + 260 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "2e18e4b1-d379-4fa4-b9ad-2da493c43a22" + }, + { + "parameters": { + "resource": "contact", + "operation": "delete", + "contactId": "={{$json[\"vid\"]}}" + }, + "name": "Hubspot4", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1880, + 260 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "573f1fdf-4d4e-44e4-a086-b1389dab7ff8" + }, + { + "parameters": { + "resource": "contact", + "operation": "get", + "contactId": "={{$json[\"vid\"]}}", + "additionalFields": {} + }, + "name": "Hubspot5", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1600, + 260 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "notes": "IGNORED_PROPERTIES=associated-company", + "id": "ae17da34-808d-4e19-81f1-42546ec64dbc" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(1500);\n\nreturn [items[0]];" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 1140, + 260 + ], + "notesInFlow": true, + "notes": "Limit Contacts to single one", + "id": "702edf3d-4e2e-4091-875f-b477c842802c" + }, + { + "parameters": { + "resource": "company", + "name": "n8n", + "additionalFields": { + "companyDomainName": "n8n.io" + } + }, + "name": "Hubspot6", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 410, + 430 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "30467fe0-8ba4-4b71-942e-0cfa7adde3c1" + }, + { + "parameters": { + "resource": "company", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Hubspot7", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 570, + 430 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "2d35a462-2a30-4297-a7df-1aca9be285c3" + }, + { + "parameters": { + "resource": "company", + "operation": "getRecentlyCreated", + "limit": 1 + }, + "name": "Hubspot8", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 910, + 430 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "98a71897-123f-4c6e-a0c7-ba79e5947823" + }, + { + "parameters": { + "resource": "company", + "operation": "searchByDomain", + "domain": "n8n.io", + "limit": 1, + "options": {} + }, + "name": "Hubspot9", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 740, + 430 + ], + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "46d6962d-f16a-4d89-92d6-bce6506f6e58" + }, + { + "parameters": { + "resource": "company", + "operation": "update", + "companyId": "={{$node[\"Hubspot6\"].json[\"companyId\"]}}", + "updateFields": { + "city": "berlin" + } + }, + "name": "Hubspot10", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1060, + 430 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "b69304b8-5093-4988-8304-89d3ee8e2c2e" + }, + { + "parameters": { + "resource": "company", + "operation": "getRecentlyModified", + "limit": 1, + "filters": {} + }, + "name": "Hubspot11", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1220, + 430 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "c0f52b10-af2e-41d2-a902-6892f14742e6" + }, + { + "parameters": { + "resource": "company", + "operation": "delete", + "companyId": "={{$node[\"Hubspot6\"].json[\"companyId\"]}}" + }, + "name": "Hubspot12", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1390, + 430 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "cc00b5ca-2611-472d-89da-4649e12afa89" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 550, + 260 + ], + "typeVersion": 1, + "notes": "IGNORED_PROPERTIES=associated-company", + "id": "d8a86813-0d02-4b5d-89f9-41818194c326" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second1", + "type": "n8n-nodes-base.function", + "position": [ + 850, + 260 + ], + "typeVersion": 1, + "id": "9276f38e-185a-4844-8764-ef4e91b0bd68" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second2", + "type": "n8n-nodes-base.function", + "position": [ + 1480, + 260 + ], + "typeVersion": 1, + "id": "ea72ad5a-b5b1-40f3-8f5f-9ac4fb5c37c4" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second3", + "type": "n8n-nodes-base.function", + "position": [ + 1730, + 260 + ], + "typeVersion": 1, + "notes": "IGNORED_PROPERTIES=associated-company", + "id": "0a60605e-e573-4386-9fe5-2198a3c838d8" + } + ], + "connections": { + "Hubspot": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot1": { + "main": [ + [ + { + "node": "Sleep 0.5 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot2": { + "main": [ + [ + { + "node": "Sleep 0.5 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot3": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Hubspot6", + "type": "main", + "index": 0 + }, + { + "node": "Hubspot", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot5": { + "main": [ + [ + { + "node": "Sleep 0.5 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "Hubspot1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot6": { + "main": [ + [ + { + "node": "Hubspot7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot7": { + "main": [ + [ + { + "node": "Hubspot9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot8": { + "main": [ + [ + { + "node": "Hubspot10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot9": { + "main": [ + [ + { + "node": "Hubspot8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot10": { + "main": [ + [ + { + "node": "Hubspot11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot11": { + "main": [ + [ + { + "node": "Hubspot12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "Hubspot2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second1": { + "main": [ + [ + { + "node": "Hubspot3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second2": { + "main": [ + [ + { + "node": "Hubspot5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second3": { + "main": [ + [ + { + "node": "Hubspot4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/200.json b/test-workflows/workflows/200.json new file mode 100644 index 0000000000..7bbf7a85db --- /dev/null +++ b/test-workflows/workflows/200.json @@ -0,0 +1,1121 @@ +{ + "createdAt": "2021-05-11T07:41:09.199Z", + "updatedAt": "2021-05-11T08:09:44.364Z", + "id": "200", + "name": "Pipedrive:Activity:create get update getAll delete:Deal:create get update duplicate getAll delete:Person:create get update getAll search delete:File:create get download delete:Organization:create get update getAll delete:Note:create get update getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "1424805b-9720-4fc3-99a3-96b39b1b2d4c" + }, + { + "parameters": { + "resource": "activity", + "subject": "=Activity{{(new Date).toISOString()}}", + "type": "meeting", + "additionalFields": {} + }, + "name": "Pipedrive", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 500, + 200 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "c137d42d-46da-4fea-aa3f-098b56e0828d" + }, + { + "parameters": { + "resource": "activity", + "operation": "get", + "activityId": "={{$node[\"Pipedrive\"].json[\"id\"]}}" + }, + "name": "Pipedrive1", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 650, + 200 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "3f597274-830b-4dcb-b0c6-0f1df94e6e9b" + }, + { + "parameters": { + "resource": "activity", + "operation": "update", + "activityId": "={{$node[\"Pipedrive\"].json[\"id\"]}}", + "updateFields": { + "done": "1", + "note": "Used for testing", + "subject": "=Updated{{$node[\"Pipedrive\"].json[\"subject\"]}}", + "type": "call" + } + }, + "name": "Pipedrive2", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 800, + 200 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "14248e74-036b-4817-92b9-c9f549cb9c4f" + }, + { + "parameters": { + "resource": "activity", + "operation": "getAll", + "limit": 1 + }, + "name": "Pipedrive3", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 950, + 200 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "a073500e-83c6-4d69-a205-b053396c213e" + }, + { + "parameters": { + "resource": "activity", + "operation": "delete", + "activityId": "={{$node[\"Pipedrive\"].json[\"id\"]}}" + }, + "name": "Pipedrive4", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1100, + 200 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "25501736-984e-47c8-890e-187307524392" + }, + { + "parameters": { + "title": "=Deal{{(new Date).toISOString()}}", + "additionalFields": { + "status": "open" + } + }, + "name": "Pipedrive5", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 500, + 350 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "dfa82f60-7728-4318-9125-229db86ce994" + }, + { + "parameters": { + "operation": "get", + "dealId": "={{$node[\"Pipedrive5\"].json[\"id\"]}}" + }, + "name": "Pipedrive6", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 650, + 350 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "ddc83c7e-1434-4f19-963b-08e52484dbb6" + }, + { + "parameters": { + "operation": "update", + "dealId": "={{$node[\"Pipedrive5\"].json[\"id\"]}}", + "updateFields": { + "status": "won", + "title": "=Updated{{$node[\"Pipedrive5\"].json[\"title\"]}}" + } + }, + "name": "Pipedrive7", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 800, + 350 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "00491412-62f0-45b4-ad3b-27cbac938293" + }, + { + "parameters": { + "operation": "duplicate", + "dealId": "={{$node[\"Pipedrive5\"].json[\"id\"]}}" + }, + "name": "Pipedrive8", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 950, + 350 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "b72444fe-3667-468a-89ef-9bbb6c05ff96" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Pipedrive9", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1100, + 350 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "4f5d8819-5573-4214-bdf4-711dd2426277" + }, + { + "parameters": { + "operation": "delete", + "dealId": "={{$node[\"Pipedrive5\"].json[\"id\"]}}" + }, + "name": "Pipedrive10", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1250, + 350 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "d9540101-e05b-4599-8e26-283e4da6a4bf" + }, + { + "parameters": { + "operation": "delete", + "dealId": "={{$node[\"Pipedrive8\"].json[\"id\"]}}" + }, + "name": "Pipedrive11", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1400, + 350 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "967d2d73-6ae2-46e5-9c9c-3325fd47a0f5" + }, + { + "parameters": { + "resource": "file", + "additionalFields": {} + }, + "name": "Pipedrive12", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 800, + 500 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "751fb956-96d4-4b31-92c7-34159e7c83d1" + }, + { + "parameters": { + "values": { + "number": [], + "string": [ + { + "name": "file", + "value": "=Testing file" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 500, + 500 + ], + "id": "aa58167e-6c9e-4be6-9049-f280204d8eba" + }, + { + "parameters": { + "mode": "jsonToBinary", + "convertAllData": false, + "sourceKey": "file", + "options": { + "fileName": "testFile", + "mimeType": "text" + } + }, + "name": "Move Binary Data", + "type": "n8n-nodes-base.moveBinaryData", + "typeVersion": 1, + "position": [ + 650, + 500 + ], + "id": "3ba06dd7-c49e-4b72-9785-2e5e3fc01f53" + }, + { + "parameters": { + "resource": "file", + "operation": "get", + "fileId": "={{$node[\"Pipedrive12\"].json[\"id\"]}}" + }, + "name": "Pipedrive13", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 950, + 500 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "e769e423-dcff-4d51-8200-3c5a3fbe01e2" + }, + { + "parameters": { + "resource": "file", + "operation": "download", + "fileId": "={{$node[\"Pipedrive12\"].json[\"id\"]}}" + }, + "name": "Pipedrive14", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1100, + 500 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "c973182a-5d43-4a12-92c2-1ece40b66f22" + }, + { + "parameters": { + "resource": "file", + "operation": "delete", + "fileId": "={{$node[\"Pipedrive12\"].json[\"id\"]}}" + }, + "name": "Pipedrive15", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1250, + 500 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "0d2cac69-6912-4156-8bb5-57c174a53e82" + }, + { + "parameters": { + "resource": "organization", + "name": "=Organization_{{(new Date).toISOString()}}", + "additionalFields": { + "label": 3 + } + }, + "name": "Pipedrive16", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 500, + 650 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "45b73830-24ac-486f-b1e1-cfa76d621624" + }, + { + "parameters": { + "resource": "organization", + "operation": "get", + "organizationId": "={{$node[\"Pipedrive16\"].json[\"id\"]}}" + }, + "name": "Pipedrive17", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 670, + 650 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "0fd8d1b6-4851-4c91-b3ea-cf7a2759286e" + }, + { + "parameters": { + "resource": "organization", + "operation": "update", + "organizationId": "={{$node[\"Pipedrive16\"].json[\"id\"]}}", + "updateFields": { + "label": 2, + "name": "=Updated{{$node[\"Pipedrive16\"].json[\"name\"]}}", + "visible_to": "3" + } + }, + "name": "Pipedrive18", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 820, + 650 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "00c38f10-591e-43b4-8e1e-875383f0846b" + }, + { + "parameters": { + "resource": "organization", + "operation": "getAll", + "limit": 1 + }, + "name": "Pipedrive19", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 970, + 650 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "c528c1e6-aee8-46ae-a573-b770d61a5462" + }, + { + "parameters": { + "resource": "organization", + "operation": "delete", + "organizationId": "={{$node[\"Pipedrive16\"].json[\"id\"]}}" + }, + "name": "Pipedrive20", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1120, + 650 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "95f50030-a435-470c-910d-990fd4bde80d" + }, + { + "parameters": { + "resource": "note", + "content": "=Note_{{(new Date).toISOString()}}", + "additionalFields": { + "org_id": "={{$node[\"Pipedrive16\"].json[\"id\"]}}" + } + }, + "name": "Pipedrive21", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 650, + 800 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "dcdc4d84-f8c2-4402-bfc9-1b38740bc70a" + }, + { + "parameters": { + "resource": "note", + "operation": "get", + "noteId": "={{$node[\"Pipedrive21\"].json[\"id\"]}}" + }, + "name": "Pipedrive22", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 800, + 800 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "4128895d-8656-49fb-a196-099f2ec336a3" + }, + { + "parameters": { + "resource": "note", + "operation": "update", + "noteId": "={{$node[\"Pipedrive21\"].json[\"id\"]}}", + "updateFields": { + "content": "=Updated{{$node[\"Pipedrive21\"].json[\"content\"]}}" + } + }, + "name": "Pipedrive23", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 950, + 800 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "d1900e79-4b29-4f56-9110-311ea321dc78" + }, + { + "parameters": { + "resource": "note", + "operation": "getAll", + "additionalFields": {}, + "limit": 1 + }, + "name": "Pipedrive24", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1100, + 800 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "64d156ea-828b-42da-88d5-170e48d1b11b" + }, + { + "parameters": { + "resource": "note", + "operation": "delete", + "noteId": "={{$node[\"Pipedrive21\"].json[\"id\"]}}" + }, + "name": "Pipedrive25", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1250, + 800 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "40e8dea1-279c-44d6-ae6a-cc79ab5e123b" + }, + { + "parameters": { + "resource": "person", + "name": "=Person_{{(new Date).toISOString()}}", + "additionalFields": { + "label": 1, + "visible_to": "3" + } + }, + "name": "Pipedrive26", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 500, + 50 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "c1b68ae7-37ac-42d5-9ff8-43c88223122a" + }, + { + "parameters": { + "resource": "person", + "operation": "get", + "personId": "={{$node[\"Pipedrive26\"].json[\"id\"]}}" + }, + "name": "Pipedrive27", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 650, + 50 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "c9dcd61f-c456-40e8-ace3-05c9e5f961c7" + }, + { + "parameters": { + "resource": "person", + "operation": "update", + "personId": "={{$node[\"Pipedrive26\"].json[\"id\"]}}", + "updateFields": { + "label": 2, + "name": "=Updated{{$node[\"Pipedrive31302926\"].json[\"first_name\"]}}" + } + }, + "name": "Pipedrive28", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 800, + 50 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "04f88fba-4196-400e-9147-760c9253b423" + }, + { + "parameters": { + "resource": "person", + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Pipedrive29", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 950, + 50 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "2e72dc73-d6f5-4641-bb17-15def44c8481" + }, + { + "parameters": { + "resource": "person", + "operation": "search", + "limit": 1, + "term": "updated", + "additionalFields": {} + }, + "name": "Pipedrive30", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1100, + 50 + ], + "alwaysOutputData": true, + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "3b2617a2-e33d-40fa-8e1b-5a7c402a2898" + }, + { + "parameters": { + "resource": "person", + "operation": "delete", + "personId": "={{$node[\"Pipedrive26\"].json[\"id\"]}}" + }, + "name": "Pipedrive31", + "type": "n8n-nodes-base.pipedrive", + "typeVersion": 1, + "position": [ + 1250, + 50 + ], + "credentials": { + "pipedriveApi": { + "id": "171", + "name": "Pipedrive API creds" + } + }, + "id": "094f29de-6d5b-4433-a673-3a5127f8438d" + } + ], + "connections": { + "Pipedrive": { + "main": [ + [ + { + "node": "Pipedrive1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive1": { + "main": [ + [ + { + "node": "Pipedrive2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive2": { + "main": [ + [ + { + "node": "Pipedrive3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive3": { + "main": [ + [ + { + "node": "Pipedrive4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Pipedrive", + "type": "main", + "index": 0 + }, + { + "node": "Pipedrive5", + "type": "main", + "index": 0 + }, + { + "node": "Set", + "type": "main", + "index": 0 + }, + { + "node": "Pipedrive16", + "type": "main", + "index": 0 + }, + { + "node": "Pipedrive26", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive5": { + "main": [ + [ + { + "node": "Pipedrive6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive6": { + "main": [ + [ + { + "node": "Pipedrive7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive7": { + "main": [ + [ + { + "node": "Pipedrive8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive8": { + "main": [ + [ + { + "node": "Pipedrive9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive9": { + "main": [ + [ + { + "node": "Pipedrive10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive10": { + "main": [ + [ + { + "node": "Pipedrive11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Move Binary Data", + "type": "main", + "index": 0 + } + ] + ] + }, + "Move Binary Data": { + "main": [ + [ + { + "node": "Pipedrive12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive12": { + "main": [ + [ + { + "node": "Pipedrive13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive13": { + "main": [ + [ + { + "node": "Pipedrive14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive14": { + "main": [ + [ + { + "node": "Pipedrive15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive16": { + "main": [ + [ + { + "node": "Pipedrive21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive17": { + "main": [ + [ + { + "node": "Pipedrive18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive18": { + "main": [ + [ + { + "node": "Pipedrive19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive19": { + "main": [ + [ + { + "node": "Pipedrive20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive21": { + "main": [ + [ + { + "node": "Pipedrive22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive22": { + "main": [ + [ + { + "node": "Pipedrive23", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive23": { + "main": [ + [ + { + "node": "Pipedrive24", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive24": { + "main": [ + [ + { + "node": "Pipedrive25", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive25": { + "main": [ + [ + { + "node": "Pipedrive17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive26": { + "main": [ + [ + { + "node": "Pipedrive27", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive27": { + "main": [ + [ + { + "node": "Pipedrive28", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive28": { + "main": [ + [ + { + "node": "Pipedrive29", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive29": { + "main": [ + [ + { + "node": "Pipedrive30", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pipedrive30": { + "main": [ + [ + { + "node": "Pipedrive31", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/201.json b/test-workflows/workflows/201.json new file mode 100644 index 0000000000..628f5511cd --- /dev/null +++ b/test-workflows/workflows/201.json @@ -0,0 +1,296 @@ +{ + "createdAt": "2021-05-12T07:38:44.391Z", + "updatedAt": "2021-06-04T17:24:19.887Z", + "id": "201", + "name": "Iterable:User:upsert get delete:UserList:add remove:Event:track", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "87df2205-aeb2-453f-920f-89f4d9da9608" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "userId", + "value": "=User_{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 430, + 220 + ], + "id": "5d51609e-46fa-4c57-b1ed-447eb36ff334" + }, + { + "parameters": { + "identifier": "userId", + "value": "={{$node[\"Set\"].json[\"userId\"]}}", + "additionalFields": { + "dataFieldsUi": { + "dataFieldValues": [] + } + } + }, + "name": "Iterable", + "type": "n8n-nodes-base.iterable", + "typeVersion": 1, + "position": [ + 590, + 220 + ], + "credentials": { + "iterableApi": { + "id": "174", + "name": "Iterable API creds" + } + }, + "id": "11659a29-db59-49ad-a74c-02702ce391d1" + }, + { + "parameters": { + "operation": "get", + "by": "userId", + "userId": "={{$node[\"Set\"].json[\"userId\"]}}" + }, + "name": "Iterable1", + "type": "n8n-nodes-base.iterable", + "typeVersion": 1, + "position": [ + 900, + 220 + ], + "credentials": { + "iterableApi": { + "id": "174", + "name": "Iterable API creds" + } + }, + "notes": "IGNORED_PROPERTIES=dataFields", + "id": "d8af6ed5-9797-4904-880d-d3a68abb7457" + }, + { + "parameters": { + "resource": "userList", + "listId": 798932, + "identifier": "userId", + "value": "={{$node[\"Set\"].json[\"userId\"]}}" + }, + "name": "Iterable2", + "type": "n8n-nodes-base.iterable", + "typeVersion": 1, + "position": [ + 1050, + 320 + ], + "credentials": { + "iterableApi": { + "id": "174", + "name": "Iterable API creds" + } + }, + "id": "d5799965-0693-4d2e-bfd7-450d0022e355" + }, + { + "parameters": { + "resource": "userList", + "operation": "remove", + "listId": 798932, + "identifier": "userId", + "value": "={{$node[\"Set\"].json[\"userId\"]}}", + "additionalFields": {} + }, + "name": "Iterable3", + "type": "n8n-nodes-base.iterable", + "typeVersion": 1, + "position": [ + 1200, + 320 + ], + "credentials": { + "iterableApi": { + "id": "174", + "name": "Iterable API creds" + } + }, + "id": "d66b3b48-e631-47e0-ade1-fe4b6137623b" + }, + { + "parameters": { + "resource": "event", + "name": "TestEvent", + "additionalFields": { + "id": "={{$node[\"Set\"].json[\"userId\"]}}", + "userId": "={{$node[\"Set\"].json[\"userId\"]}}" + } + }, + "name": "Iterable4", + "type": "n8n-nodes-base.iterable", + "typeVersion": 1, + "position": [ + 1350, + 390 + ], + "credentials": { + "iterableApi": { + "id": "174", + "name": "Iterable API creds" + } + }, + "id": "73e5dc94-d847-4ade-95ef-98ea69237245" + }, + { + "parameters": { + "operation": "delete", + "email": "={{$node[\"Iterable1\"].json[\"email\"]}}" + }, + "name": "Iterable5", + "type": "n8n-nodes-base.iterable", + "typeVersion": 1, + "position": [ + 1500, + 210 + ], + "credentials": { + "iterableApi": { + "id": "174", + "name": "Iterable API creds" + } + }, + "id": "650fa586-231c-4544-bb92-772ac561f0ee" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 740, + 220 + ], + "typeVersion": 1, + "id": "a4cdbbb5-a101-40f3-9f52-efe768d27e62" + } + ], + "connections": { + "Set": { + "main": [ + [ + { + "node": "Iterable", + "type": "main", + "index": 0 + } + ] + ] + }, + "Iterable": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Iterable1": { + "main": [ + [ + { + "node": "Iterable2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Iterable2": { + "main": [ + [ + { + "node": "Iterable3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Iterable3": { + "main": [ + [ + { + "node": "Iterable4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Iterable4": { + "main": [ + [ + { + "node": "Iterable5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "Iterable1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "timezone": "Europe/Berlin", + "saveExecutionProgress": "DEFAULT" + }, + "staticData": { + "node:Clockify Trigger": { + "userId": "60335ad2f24e660123d7fdeb", + "lastTimeChecked": "2021-05-12T10:25:03Z" + } + }, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/202.json b/test-workflows/workflows/202.json new file mode 100644 index 0000000000..36e65f24d6 --- /dev/null +++ b/test-workflows/workflows/202.json @@ -0,0 +1,192 @@ +{ + "createdAt": "2021-05-12T08:49:01.587Z", + "updatedAt": "2021-05-12T08:49:01.587Z", + "id": "202", + "name": "Beeminder:Datapoint:create getAll update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "b22f554d-032b-49a3-8d93-72bdf0e14c89" + }, + { + "parameters": { + "goalName": "testing", + "additionalFields": {} + }, + "name": "Beeminder", + "type": "n8n-nodes-base.beeminder", + "typeVersion": 1, + "position": [ + 490, + 300 + ], + "credentials": { + "beeminderApi": { + "id": "175", + "name": "Beeminder API creds" + } + }, + "id": "7a4b7543-ff45-418a-921c-ceec717d1350" + }, + { + "parameters": { + "operation": "getAll", + "goalName": "testing", + "limit": 1, + "options": {} + }, + "name": "Beeminder1", + "type": "n8n-nodes-base.beeminder", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "beeminderApi": { + "id": "175", + "name": "Beeminder API creds" + } + }, + "id": "625eea7d-b4cd-4f48-a939-379f20e92d88" + }, + { + "parameters": { + "operation": "update", + "goalName": "testing", + "datapointId": "={{$node[\"Beeminder\"].json[\"id\"]}}", + "updateFields": { + "value": 10 + } + }, + "name": "Beeminder2", + "type": "n8n-nodes-base.beeminder", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "beeminderApi": { + "id": "175", + "name": "Beeminder API creds" + } + }, + "id": "92817af4-a51b-49ee-a4d9-8839330b5f94" + }, + { + "parameters": { + "operation": "delete", + "goalName": "testing", + "datapointId": "={{$node[\"Beeminder4\"].json[\"id\"]}}" + }, + "name": "Beeminder3", + "type": "n8n-nodes-base.beeminder", + "typeVersion": 1, + "position": [ + 1100, + 350 + ], + "credentials": { + "beeminderApi": { + "id": "175", + "name": "Beeminder API creds" + } + }, + "id": "085ad031-f3d0-48d9-b1d0-f9bc3d5b9a1b" + }, + { + "parameters": { + "goalName": "testing", + "value": 3, + "additionalFields": {} + }, + "name": "Beeminder4", + "type": "n8n-nodes-base.beeminder", + "typeVersion": 1, + "position": [ + 950, + 350 + ], + "credentials": { + "beeminderApi": { + "id": "175", + "name": "Beeminder API creds" + } + }, + "id": "fbd1b086-506b-42cd-8b1c-cad5a3401fe7" + } + ], + "connections": { + "Beeminder": { + "main": [ + [ + { + "node": "Beeminder1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Beeminder1": { + "main": [ + [ + { + "node": "Beeminder2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Beeminder2": { + "main": [ + [ + { + "node": "Beeminder4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Beeminder4": { + "main": [ + [ + { + "node": "Beeminder3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Beeminder", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/203.json b/test-workflows/workflows/203.json new file mode 100644 index 0000000000..29f869269d --- /dev/null +++ b/test-workflows/workflows/203.json @@ -0,0 +1,340 @@ +{ + "createdAt": "2021-05-12T10:06:38.839Z", + "updatedAt": "2021-06-02T10:31:43.824Z", + "id": "203", + "name": "Paddle:Payment:getAll reschedule:Plan:getAll get:Product:getAll:Coupon:create update getAll:User:getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "6dca848e-e78f-4e1e-b637-c5b7a9b6d4cd" + }, + { + "parameters": { + "resource": "plan", + "operation": "getAll", + "limit": 1 + }, + "name": "Paddle", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 450, + 230 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "id": "552a93b0-4047-4ba5-8542-858e843045a5" + }, + { + "parameters": { + "resource": "plan", + "planId": "={{$node[\"Paddle\"].json[\"id\"]}}" + }, + "name": "Paddle1", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 600, + 230 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "id": "330027d9-fb24-4cd1-98bd-07b388ed3d0c" + }, + { + "parameters": { + "resource": "product", + "limit": 1 + }, + "name": "Paddle2", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 450, + 380 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "id": "a88765a6-f48f-428e-a13d-94e3c711e1eb" + }, + { + "parameters": { + "resource": "user", + "limit": 1, + "additionalFields": {} + }, + "name": "Paddle3", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 450, + 530 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "id": "a6911282-01de-4125-9479-b7ec3111edee" + }, + { + "parameters": { + "resource": "payment", + "limit": 1, + "additionalFields": {} + }, + "name": "Paddle4", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 450, + 80 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "id": "53405b18-8d3a-42b3-9c28-fa0416a1c240" + }, + { + "parameters": { + "couponType": "product", + "productIds": "={{$node[\"Paddle2\"].json[\"id\"]}}", + "discountAmount": 50, + "currency": "USD", + "additionalFields": {} + }, + "name": "Paddle5", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 600, + 430 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "id": "b2d6f9c0-6134-4723-b9b1-67b68e0cfb6f" + }, + { + "parameters": { + "operation": "update", + "couponCode": "={{$node[\"Paddle5\"].json[\"coupon\"]}}", + "additionalFields": { + "discount": { + "discountProperties": { + "currency": "USD", + "discountAmount": 5 + } + } + } + }, + "name": "Paddle6", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 750, + 430 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "id": "9f0c228c-f1c8-47ca-9702-2e373cc0b632" + }, + { + "parameters": { + "operation": "getAll", + "productId": "={{$node[\"Paddle2\"].json[\"id\"]}}", + "returnAll": true + }, + "name": "Paddle7", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 900, + 430 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "86d2cc5d-93f5-4aa5-803e-c5995c89be66" + }, + { + "parameters": { + "resource": "payment", + "operation": "reschedule", + "paymentId": "={{$node[\"Paddle4\"].json[\"id\"]}}", + "date": "={{$node[\"Date & Time\"].json[\"data\"]}}" + }, + "name": "Paddle8", + "type": "n8n-nodes-base.paddle", + "typeVersion": 1, + "position": [ + 760, + 80 + ], + "credentials": { + "paddleApi": { + "id": "173", + "name": "Paddle API sandbox creds" + } + }, + "id": "2b7076a8-2563-4808-970a-934e1389b517" + }, + { + "parameters": { + "action": "calculate", + "value": "={{Date.now()}}", + "duration": 5, + "options": {} + }, + "name": "Date & Time", + "type": "n8n-nodes-base.dateTime", + "typeVersion": 1, + "position": [ + 600, + 80 + ], + "id": "8282ff84-da5e-4da6-97d7-84c4d08e9947" + } + ], + "connections": { + "Paddle": { + "main": [ + [ + { + "node": "Paddle1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Paddle2": { + "main": [ + [ + { + "node": "Paddle5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Paddle4": { + "main": [ + [ + { + "node": "Date & Time", + "type": "main", + "index": 0 + } + ] + ] + }, + "Paddle5": { + "main": [ + [ + { + "node": "Paddle6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Paddle6": { + "main": [ + [ + { + "node": "Paddle7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Paddle", + "type": "main", + "index": 0 + }, + { + "node": "Paddle2", + "type": "main", + "index": 0 + }, + { + "node": "Paddle3", + "type": "main", + "index": 0 + }, + { + "node": "Paddle4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Date & Time": { + "main": [ + [ + { + "node": "Paddle8", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": { + "node:Clockify Trigger": { + "userId": "60335ad2f24e660123d7fdeb", + "lastTimeChecked": "2021-05-12T08:09:47Z" + } + }, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/204.json b/test-workflows/workflows/204.json new file mode 100644 index 0000000000..5295f97f5d --- /dev/null +++ b/test-workflows/workflows/204.json @@ -0,0 +1,459 @@ +{ + "createdAt": "2021-05-14T09:31:14.466Z", + "updatedAt": "2021-06-08T08:48:10.045Z", + "id": "204", + "name": "HelpScout:Mailbox:getAll get:Customer:create get update getAll properties:Conversation:create get getAll delete:Thread:create getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "134a1cd7-83e3-4237-b289-20302a26d111" + }, + { + "parameters": { + "resource": "customer", + "additionalFields": { + "firstName": "=Fname_{{(new Date).toISOString()}}" + } + }, + "name": "HelpScout", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "d338cf1d-360e-499d-8c97-f3256b62cde4" + }, + { + "parameters": { + "resource": "customer", + "operation": "get", + "customerId": "={{$node[\"HelpScout\"].json[\"id\"]}}" + }, + "name": "HelpScout1", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "aec33ae5-41da-476a-80b6-052bb06e6d13" + }, + { + "parameters": { + "resource": "customer", + "operation": "update", + "customerId": "={{$node[\"HelpScout\"].json[\"id\"]}}", + "updateFields": { + "jobTitle": "=UpdatedJobTitle" + } + }, + "name": "HelpScout2", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "895e41cb-bd06-454f-8c1f-68f632829c18" + }, + { + "parameters": { + "resource": "customer", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "HelpScout3", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "5b52d840-a8bd-4cb7-b1f8-f451a5be3d76" + }, + { + "parameters": { + "resource": "customer", + "operation": "properties" + }, + "name": "HelpScout4", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "31ebb207-80e5-417d-89ca-a1aeef540218" + }, + { + "parameters": { + "mailboxId": 224189, + "status": "active", + "subject": "=Subject_{{(new Date).toISOString()}}", + "type": "chat", + "additionalFields": { + "customerId": "={{$node[\"HelpScout\"].json[\"id\"]}}" + }, + "threadsUi": { + "threadsValues": [ + { + "type": "chat", + "text": "Initial Thread" + } + ] + } + }, + "name": "HelpScout5", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "notes": "IGNORED_PROPERTIES=preview", + "id": "dac34f58-aadc-4c27-bb53-797160518e38" + }, + { + "parameters": { + "operation": "get", + "conversationId": "={{$node[\"HelpScout5\"].json[\"id\"]}}" + }, + "name": "HelpScout6", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 750, + 450 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "notes": "IGNORED_PROPERTIES=preview", + "id": "54b304e7-e089-4b9e-ab0b-b8d768b2bb57" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "HelpScout7", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 900, + 450 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "fef75568-538b-4ce2-83c5-07d779e6393e" + }, + { + "parameters": { + "operation": "delete", + "conversationId": "={{$node[\"HelpScout5\"].json[\"id\"]}}" + }, + "name": "HelpScout8", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 1050, + 450 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "b082f9a9-352c-4624-a287-c167aa820875" + }, + { + "parameters": { + "resource": "mailbox", + "operation": "getAll", + "limit": 1 + }, + "name": "HelpScout9", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "4c07019c-6818-484d-8865-ef7bcef8ff39" + }, + { + "parameters": { + "resource": "mailbox", + "mailboxId": "={{$node[\"HelpScout9\"].json[\"id\"]}}" + }, + "name": "HelpScout10", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 600, + 150 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "89e6ba09-db18-444c-99da-91bf95d2353b" + }, + { + "parameters": { + "resource": "thread", + "conversationId": "={{$node[\"HelpScout5\"].json[\"id\"]}}", + "type": "chat", + "text": "=Thread_{{(new Date).toISOString()}}", + "additionalFields": { + "customerId": "={{$node[\"HelpScout\"].json[\"id\"]}}" + } + }, + "name": "HelpScout11", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 750, + 600 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "6bc6666d-dda1-485b-97de-a4b08407f22f" + }, + { + "parameters": { + "resource": "thread", + "operation": "getAll", + "conversationId": "={{$node[\"HelpScout5\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "HelpScout12", + "type": "n8n-nodes-base.helpScout", + "typeVersion": 1, + "position": [ + 900, + 600 + ], + "credentials": { + "helpScoutOAuth2Api": { + "id": "163", + "name": "HelpScout OAuth2 API creds" + } + }, + "id": "740d4be3-b1b7-4383-a2ce-716270774df7" + } + ], + "connections": { + "HelpScout": { + "main": [ + [ + { + "node": "HelpScout5", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout1": { + "main": [ + [ + { + "node": "HelpScout2", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout2": { + "main": [ + [ + { + "node": "HelpScout3", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout3": { + "main": [ + [ + { + "node": "HelpScout4", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout5": { + "main": [ + [ + { + "node": "HelpScout11", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout6": { + "main": [ + [ + { + "node": "HelpScout7", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout7": { + "main": [ + [ + { + "node": "HelpScout8", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout8": { + "main": [ + [ + { + "node": "HelpScout1", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout9": { + "main": [ + [ + { + "node": "HelpScout10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "HelpScout", + "type": "main", + "index": 0 + }, + { + "node": "HelpScout9", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout11": { + "main": [ + [ + { + "node": "HelpScout12", + "type": "main", + "index": 0 + } + ] + ] + }, + "HelpScout12": { + "main": [ + [ + { + "node": "HelpScout6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/205.json b/test-workflows/workflows/205.json new file mode 100644 index 0000000000..c041af3bd2 --- /dev/null +++ b/test-workflows/workflows/205.json @@ -0,0 +1,63 @@ +{ + "createdAt": "2021-05-14T09:46:06.853Z", + "updatedAt": "2021-05-14T09:46:06.853Z", + "id": "205", + "name": "Pushover:Message:push", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "b67fccde-5dac-406f-98f4-d5c58ac8aa37" + }, + { + "parameters": { + "userKey": "uwwjqj8g3kbj4mbsmcwi8ov7ocofrx", + "message": "=Message_{{(new Date).toISOString()}}", + "additionalFields": { + "title": "=NodeQa Test_{{(new Date).toISOString()}}" + } + }, + "name": "Pushover", + "type": "n8n-nodes-base.pushover", + "typeVersion": 1, + "position": [ + 510, + 300 + ], + "credentials": { + "pushoverApi": { + "id": "177", + "name": "Pushover API creds" + } + }, + "id": "1036f288-8058-48b9-9d2e-3a915bfadb12" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Pushover", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/206.json b/test-workflows/workflows/206.json new file mode 100644 index 0000000000..a75bd3080a --- /dev/null +++ b/test-workflows/workflows/206.json @@ -0,0 +1,490 @@ +{ + "createdAt": "2021-05-17T15:09:40.220Z", + "updatedAt": "2021-05-18T07:57:05.962Z", + "id": "206", + "name": "Keap:Company:create getAll:Contact:upsert get getAll delete:ContactNote:create get update getAll delete:ContactTag:create getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "9489a524-46de-44e4-b4f9-e5ff8202cc3e" + }, + { + "parameters": { + "companyName": "=Company_{{(new Date).toISOString()}}", + "additionalFields": {} + }, + "name": "Keap", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 600, + 200 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "690b0194-0a2a-41a3-a6bd-b67ce0345f42" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Keap1", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 750, + 200 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "07a5aca1-73a9-4812-9a35-0e62d814c540" + }, + { + "parameters": { + "resource": "contact", + "additionalFields": { + "companyId": "={{$node[\"Keap\"].json[\"id\"]}}" + }, + "addressesUi": { + "addressesValues": [] + }, + "emailsUi": { + "emailsValues": [ + { + "field": "EMAIL1", + "email": "=fakeemail{{Date.now()}}@test.com" + } + ] + } + }, + "name": "Keap2", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 750, + 350 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "44871399-7e52-4d49-9090-32a07fc55440" + }, + { + "parameters": { + "resource": "contact", + "operation": "get", + "contactId": "={{$node[\"Keap2\"].json[\"id\"]}}", + "options": {} + }, + "name": "Keap3", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 900, + 350 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "17a7232c-8cc9-448c-a2c0-bd1084fdd771" + }, + { + "parameters": { + "resource": "contact", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Keap4", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1040, + 350 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "7007df2b-c66a-4a7b-b690-9d0124e73357" + }, + { + "parameters": { + "resource": "contact", + "operation": "delete", + "contactId": "={{$node[\"Keap2\"].json[\"id\"]}}" + }, + "name": "Keap5", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1200, + 350 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "f61df6f5-ab1c-4344-8ab5-8f09ceddbe8b" + }, + { + "parameters": { + "resource": "contactNote", + "userId": 1, + "contactId": "={{$node[\"Keap2\"].json[\"id\"]}}", + "additionalFields": { + "body": "", + "title": "=Note{Date.now()}}" + } + }, + "name": "Keap6", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 900, + 510 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "1af7e3bf-9135-4ffe-a875-b6ae453a44b1" + }, + { + "parameters": { + "resource": "contactNote", + "operation": "get", + "noteId": "={{$node[\"Keap6\"].json[\"id\"]}}" + }, + "name": "Keap7", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1050, + 510 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "d8252291-bbf9-4ee1-a9d4-093ae967ef12" + }, + { + "parameters": { + "resource": "contactNote", + "operation": "update", + "noteId": "={{$node[\"Keap6\"].json[\"id\"]}}", + "additionalFields": { + "title": "Updated Title" + } + }, + "name": "Keap8", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1200, + 510 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "54756d28-a79f-4427-8d5d-5c2d80ac5b17" + }, + { + "parameters": { + "resource": "contactNote", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Keap9", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1360, + 510 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "81bdce10-1de6-4d11-8624-1a0516931e49" + }, + { + "parameters": { + "resource": "contactNote", + "operation": "delete", + "noteId": "={{$node[\"Keap6\"].json[\"id\"]}}" + }, + "name": "Keap10", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1500, + 510 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "a8cb848a-36d8-4fb6-b845-37674c6c7733" + }, + { + "parameters": { + "resource": "contactTag", + "contactId": "={{$node[\"Keap2\"].json[\"id\"]}}", + "tagIds": [ + 93 + ] + }, + "name": "Keap11", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 900, + 660 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "c81d1109-4fbb-4dde-afe4-386710f9f624" + }, + { + "parameters": { + "resource": "contactTag", + "operation": "getAll", + "contactId": "={{$node[\"Keap2\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Keap12", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1050, + 660 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "b0c03850-0004-4680-9da0-9ea9ded1a525" + }, + { + "parameters": { + "resource": "contactTag", + "operation": "delete", + "contactId": "={{$node[\"Keap2\"].json[\"id\"]}}", + "tagIds": "93," + }, + "name": "Keap13", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1190, + 660 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "311e758c-48f7-4738-862d-b34299ac6d08" + } + ], + "connections": { + "Keap": { + "main": [ + [ + { + "node": "Keap1", + "type": "main", + "index": 0 + }, + { + "node": "Keap2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap2": { + "main": [ + [ + { + "node": "Keap6", + "type": "main", + "index": 0 + }, + { + "node": "Keap11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap3": { + "main": [ + [ + { + "node": "Keap4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap4": { + "main": [ + [ + { + "node": "Keap5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap6": { + "main": [ + [ + { + "node": "Keap7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap7": { + "main": [ + [ + { + "node": "Keap8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap8": { + "main": [ + [ + { + "node": "Keap9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap9": { + "main": [ + [ + { + "node": "Keap10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap10": { + "main": [ + [ + { + "node": "Keap3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap11": { + "main": [ + [ + { + "node": "Keap12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap12": { + "main": [ + [ + { + "node": "Keap13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Keap", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/207.json b/test-workflows/workflows/207.json new file mode 100644 index 0000000000..4182a0297b --- /dev/null +++ b/test-workflows/workflows/207.json @@ -0,0 +1,531 @@ +{ + "createdAt": "2021-05-17T22:14:56.419Z", + "updatedAt": "2021-05-18T07:56:45.273Z", + "id": "207", + "name": "Keap:EcommerceOrder:create get getAll delete:EcommerceProduct:create get getAll delete:Email:createRecord getAll:File:upload getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "71dbf38c-e75d-48af-b045-fa5e0e30d2a5" + }, + { + "parameters": { + "resource": "ecommerceProduct", + "productName": "=Producct_{{(new Date).toISOString()}}", + "additionalFields": {} + }, + "name": "Keap", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 650, + 180 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "e5a3ddc7-1681-4d8e-b841-9a4d052519e3" + }, + { + "parameters": { + "resource": "ecommerceProduct", + "operation": "get", + "productId": "={{$node[\"Keap\"].json[\"id\"]}}" + }, + "name": "Keap1", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 810, + 180 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "ac092a34-c9c2-49fe-af12-9ba28a1274f2" + }, + { + "parameters": { + "resource": "ecommerceProduct", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Keap2", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 970, + 180 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "a54a5785-8586-4df5-91e6-24877ea0f1c5" + }, + { + "parameters": { + "resource": "ecommerceProduct", + "operation": "delete", + "productId": "={{$node[\"Keap\"].json[\"id\"]}}" + }, + "name": "Keap3", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1120, + 180 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "1afec710-031b-4a72-9164-4bb166d06000" + }, + { + "parameters": { + "resource": "email", + "sentToAddress": "test@gmail.com", + "sentFromAddress": "fromtest@gmail.com", + "additionalFields": {} + }, + "name": "Keap4", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 650, + 350 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "d2463a1b-c677-4d81-a69f-f6db3a72a1dc" + }, + { + "parameters": { + "resource": "email", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Keap5", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 800, + 350 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "b1f2a62a-5479-4f5c-a569-1d6140dad42c" + }, + { + "parameters": { + "resource": "email", + "operation": "send", + "userId": 1, + "contactIds": "={{$node[\"Keap7\"].json[\"id\"]}},", + "subject": "Test", + "additionalFields": { + "addressField": "node8qa@gmail.com,", + "plainContent": "Text content" + } + }, + "name": "Keap6", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 950, + 350 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "disabled": true, + "id": "90739296-0d0d-44db-8a7e-904d0d39018d" + }, + { + "parameters": { + "resource": "contact", + "additionalFields": {}, + "emailsUi": { + "emailsValues": [ + { + "field": "EMAIL1", + "email": "node8qa@gmail.com" + } + ] + } + }, + "name": "Keap7", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 490, + 280 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "9fc45e7d-9070-4517-99a2-c22d9ce3e5dd" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "contactId": "={{$node[\"Keap7\"].json[\"id\"]}}", + "orderDate": "2021-05-18T07:35:03.000Z", + "orderTitle": "=Title{{Date.now()}}", + "orderType": "offline", + "additionalFields": {}, + "orderItemsUi": { + "orderItemsValues": [ + { + "description": "testing", + "price": 6, + "product ID": "={{$node[\"Keap\"].json[\"id\"]}}", + "quantity": 3 + } + ] + } + }, + "name": "Keap8", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 810, + 30 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "17058118-db69-4fab-baa7-19aa39562b94" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "operation": "get", + "orderId": "={{$node[\"Keap8\"].json[\"id\"]}}" + }, + "name": "Keap9", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 970, + 30 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "6d4cf1c3-e89c-4fb9-8868-718c23734cd9" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Keap10", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1130, + 30 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "fc63b45d-7b7c-4ac1-bddc-7061065d607e" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "operation": "delete", + "orderId": "={{$node[\"Keap8\"].json[\"id\"]}}" + }, + "name": "Keap11", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 1290, + 30 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "4b41db09-652f-4f92-8dba-72c48d9f5403" + }, + { + "parameters": { + "resource": "file", + "operation": "upload", + "fileAssociation": "contact", + "contactId": "={{$node[\"Keap7\"].json[\"id\"]}}", + "fileName": "test.csv", + "fileData": "IyB0aGlzIGlzIGEgdGVzdCBmaWxl" + }, + "name": "Keap12", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 650, + 520 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "267fe3f8-4cee-46f5-b430-e925e491a838" + }, + { + "parameters": { + "resource": "file", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Keap13", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 810, + 520 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "810f3780-5787-4642-ab29-ede18374d118" + }, + { + "parameters": { + "resource": "file", + "fileId": "={{$node[\"Keap12\"].json[\"file_descriptor\"][\"id\"]}}" + }, + "name": "Keap14", + "type": "n8n-nodes-base.keap", + "typeVersion": 1, + "position": [ + 970, + 520 + ], + "credentials": { + "keapOAuth2Api": { + "id": "178", + "name": "Keap OAuth2 API creds" + } + }, + "id": "35001fb2-12f4-4fcb-91a3-87057ba15d4c" + } + ], + "connections": { + "Keap": { + "main": [ + [ + { + "node": "Keap8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap1": { + "main": [ + [ + { + "node": "Keap2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap2": { + "main": [ + [ + { + "node": "Keap3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap4": { + "main": [ + [ + { + "node": "Keap5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap5": { + "main": [ + [ + { + "node": "Keap6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap7": { + "main": [ + [ + { + "node": "Keap", + "type": "main", + "index": 0 + }, + { + "node": "Keap4", + "type": "main", + "index": 0 + }, + { + "node": "Keap12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap8": { + "main": [ + [ + { + "node": "Keap9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap9": { + "main": [ + [ + { + "node": "Keap10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap10": { + "main": [ + [ + { + "node": "Keap11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap11": { + "main": [ + [ + { + "node": "Keap1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Keap7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap12": { + "main": [ + [ + { + "node": "Keap13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Keap13": { + "main": [ + [ + { + "node": "Keap14", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/208.json b/test-workflows/workflows/208.json new file mode 100644 index 0000000000..34f42a9631 --- /dev/null +++ b/test-workflows/workflows/208.json @@ -0,0 +1,69 @@ +{ + "createdAt": "2021-05-25T13:01:33.223Z", + "updatedAt": "2021-05-26T13:12:05.308Z", + "id": "208", + "name": "RocketChat:Chat:postMessage", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "57c39841-256a-4e6a-b301-af2c97c0a0a8" + }, + { + "parameters": { + "channel": "general", + "text": "=Message {{(new Date).toISOString()}}", + "options": { + "emoji": ":smile:" + }, + "attachments": [ + { + "color": "#ff6d5a", + "title": "Attachment title" + } + ] + }, + "name": "RocketChat", + "type": "n8n-nodes-base.rocketchat", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "rocketchatApi": { + "id": "184", + "name": "Rocket API creds" + } + }, + "id": "c6b5e0b7-4ead-44e3-8ae4-42de8159dd99" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "RocketChat", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/209.json b/test-workflows/workflows/209.json new file mode 100644 index 0000000000..97f93349f7 --- /dev/null +++ b/test-workflows/workflows/209.json @@ -0,0 +1,212 @@ +{ + "createdAt": "2021-05-31T08:24:33.353Z", + "updatedAt": "2021-05-31T08:38:47.411Z", + "id": "209", + "name": "AWS Transcribe:TranscriptionJob:create get getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "cb687f80-1046-40f3-bddb-78a67623b70e" + }, + { + "parameters": { + "transcriptionJobName": "={{$node[\"Set job name\"].json[\"job_name\"]}}", + "mediaFileUri": "s3://fixedtestbucket/nodemation.wav", + "options": {} + }, + "name": "AWS Transcribe", + "type": "n8n-nodes-base.awsTranscribe", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "ccdefb6d-7aac-4360-9285-135ddf34449b" + }, + { + "parameters": { + "operation": "get", + "transcriptionJobName": "={{$node[\"Set job name\"].json[\"job_name\"]}}", + "simple": false + }, + "name": "AWS Transcribe1", + "type": "n8n-nodes-base.awsTranscribe", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "3840763a-16d3-4073-a008-9b5dae451d48" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "AWS Transcribe2", + "type": "n8n-nodes-base.awsTranscribe", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "b477493b-0688-47f4-ad5c-4a1f509e672e" + }, + { + "parameters": { + "operation": "delete", + "transcriptionJobName": "={{$node[\"Set job name\"].json[\"job_name\"]}}" + }, + "name": "AWS Transcribe3", + "type": "n8n-nodes-base.awsTranscribe", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + }, + "id": "f7c49172-c16a-4881-951b-c35927fe9ea4" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "job_name", + "value": "=nodemation_job_{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set job name", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "e96a125a-10fb-4d1a-869e-3e31467b1bb6" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(30000);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 30 seconds", + "type": "n8n-nodes-base.function", + "position": [ + 1000, + 300 + ], + "typeVersion": 1, + "id": "93a0b1db-6bda-4e6d-9797-6a3957cf05d0" + } + ], + "connections": { + "AWS Transcribe": { + "main": [ + [ + { + "node": "AWS Transcribe1", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS Transcribe1": { + "main": [ + [ + { + "node": "AWS Transcribe2", + "type": "main", + "index": 0 + } + ] + ] + }, + "AWS Transcribe2": { + "main": [ + [ + { + "node": "Sleep 30 seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set job name", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set job name": { + "main": [ + [ + { + "node": "AWS Transcribe", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 30 seconds": { + "main": [ + [ + { + "node": "AWS Transcribe3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/21.json b/test-workflows/workflows/21.json new file mode 100644 index 0000000000..19e2290e86 --- /dev/null +++ b/test-workflows/workflows/21.json @@ -0,0 +1,469 @@ +{ + "createdAt": "2021-02-16T16:12:15.992Z", + "updatedAt": "2021-11-12T12:09:08.000Z", + "id": "21", + "name": "Hubspot:Deal: create update getall search getRecentlyModified getRecentlyCreated get delete:Ticket: create update get All get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 180, + 300 + ], + "id": "50ba36ae-2d60-4030-8b52-19900aa73d75" + }, + { + "parameters": { + "stage": "appointmentscheduled", + "additionalFields": { + "dealName": "testDeal" + } + }, + "name": "Hubspot", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 370, + 230 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "45e9896b-745e-45ea-b1e9-56a18bb97280" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Hubspot1", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 650, + 230 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "635d61b8-0527-4800-baa6-1b17664fc2d4" + }, + { + "parameters": { + "operation": "get", + "dealId": "={{$json[\"dealId\"]}}", + "additionalFields": {} + }, + "name": "Hubspot2", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1250, + 230 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "d935d2bd-67be-4d9a-8acb-627cd9ef3523" + }, + { + "parameters": { + "operation": "search", + "limit": 1, + "filterGroupsUi": { + "filterGroupsValues": [] + }, + "additionalFields": {} + }, + "name": "Hubspot3", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 780, + 230 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "5d8cead1-67b6-45ad-96c1-99e8120b1073" + }, + { + "parameters": { + "operation": "update", + "dealId": "={{$json[\"dealId\"]}}", + "updateFields": { + "dealName": "dealTestUpdated" + } + }, + "name": "Hubspot4", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 500, + 230 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "52b97d30-6e05-44c6-a4bc-4cdbf14ed2e8" + }, + { + "parameters": { + "operation": "getRecentlyModified", + "limit": 1, + "filters": {} + }, + "name": "Hubspot5", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 930, + 230 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "d491514d-4b16-440a-ac45-b770499f9727" + }, + { + "parameters": { + "operation": "delete", + "dealId": "={{$json[\"dealId\"]}}" + }, + "name": "Hubspot6", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1380, + 230 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "ef41388b-da7e-4caf-8d28-fb23a8ec3b36" + }, + { + "parameters": { + "operation": "getRecentlyCreated", + "limit": 1, + "filters": {} + }, + "name": "Hubspot7", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1100, + 230 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "517e45f8-7554-4fa9-8cdb-77da84b51846" + }, + { + "parameters": { + "resource": "ticket", + "pipelineId": "0", + "stageId": "3", + "ticketName": "testTicket", + "additionalFields": {} + }, + "name": "Hubspot8", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 370, + 400 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "d6a94b35-974c-4683-8c46-41fbc28a96ff" + }, + { + "parameters": { + "resource": "ticket", + "operation": "update", + "ticketId": "={{$json[\"objectId\"]}}", + "updateFields": {} + }, + "name": "Hubspot9", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 530, + 400 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "d9f184a9-a4af-4657-963c-a6787997263d" + }, + { + "parameters": { + "resource": "ticket", + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Hubspot10", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 680, + 400 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "f70f062d-d0ef-421f-9c42-36209102d837" + }, + { + "parameters": { + "resource": "ticket", + "operation": "get", + "ticketId": "={{$json[\"objectId\"]}}", + "additionalFields": {} + }, + "name": "Hubspot11", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 830, + 400 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "489a9719-6fd8-4c48-8fbe-9acd0c1508f9" + }, + { + "parameters": { + "resource": "ticket", + "operation": "delete", + "ticketId": "={{$json[\"objectId\"]}}" + }, + "name": "Hubspot12", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 990, + 400 + ], + "notesInFlow": false, + "alwaysOutputData": true, + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "fcdd8b16-ab62-4093-aa90-043bf3b22554" + } + ], + "connections": { + "Hubspot": { + "main": [ + [ + { + "node": "Hubspot4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot1": { + "main": [ + [ + { + "node": "Hubspot3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot2": { + "main": [ + [ + { + "node": "Hubspot6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot3": { + "main": [ + [ + { + "node": "Hubspot5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Hubspot8", + "type": "main", + "index": 0 + }, + { + "node": "Hubspot", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot4": { + "main": [ + [ + { + "node": "Hubspot1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot5": { + "main": [ + [ + { + "node": "Hubspot7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot7": { + "main": [ + [ + { + "node": "Hubspot2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot8": { + "main": [ + [ + { + "node": "Hubspot9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot9": { + "main": [ + [ + { + "node": "Hubspot10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot10": { + "main": [ + [ + { + "node": "Hubspot11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot11": { + "main": [ + [ + { + "node": "Hubspot12", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/212.json b/test-workflows/workflows/212.json new file mode 100644 index 0000000000..c023e68994 --- /dev/null +++ b/test-workflows/workflows/212.json @@ -0,0 +1,456 @@ +{ + "createdAt": "2021-06-01T08:10:39.407Z", + "updatedAt": "2021-11-12T13:08:28.130Z", + "id": "212", + "name": "Git:*", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 260, + 300 + ], + "id": "f3928b9a-a76a-4b22-8c13-3eeb6ffc5dab" + }, + { + "parameters": { + "authentication": "gitPassword", + "operation": "clone", + "repositoryPath": "/tmp/nodeQA", + "sourceRepository": "https://github.com/nodemationqa/nodeQA" + }, + "name": "Git", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 550, + 250 + ], + "credentials": { + "gitPassword": { + "id": "193", + "name": "Git creds" + } + }, + "id": "73803968-9a2a-4408-9c35-cdb3fea58573" + }, + { + "parameters": { + "operation": "listConfig", + "repositoryPath": "/tmp/nodeQA" + }, + "name": "Git1", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 700, + 250 + ], + "notes": "CAP_RESULTS_LENGTH=1\nKEEP_ONLY_PROPERTIES=_file", + "id": "c8635d48-0bbd-496a-8cd0-5cf43795707d" + }, + { + "parameters": { + "operation": "addConfig", + "repositoryPath": "/tmp/nodeQA", + "key": "user.email", + "value": "nodeqa@n8n.io", + "options": { + "mode": "set" + } + }, + "name": "Git2", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 850, + 250 + ], + "id": "815b5424-cbc3-4f29-9f12-81e7538bb925" + }, + { + "parameters": { + "operation": "add", + "repositoryPath": "/tmp/nodeQA", + "pathsToAdd": "/tmp/nodeQA/gitnode_added_file.md" + }, + "name": "Git3", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 550, + 450 + ], + "id": "d2110a10-424a-48ef-9bfa-5b6eb541f96c" + }, + { + "parameters": { + "operation": "status", + "repositoryPath": "/tmp/nodeQA" + }, + "name": "Git4", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 700, + 450 + ], + "id": "317691ba-e08a-4fcb-bb2d-771d14a13eb4" + }, + { + "parameters": { + "operation": "commit", + "repositoryPath": "/tmp/nodeQA", + "message": "=GitNode commit {{(new Date).toUTCString()}}", + "options": {} + }, + "name": "Git5", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 850, + 450 + ], + "id": "4ab79985-9685-4c47-b4c4-2f859ce036c0" + }, + { + "parameters": { + "repositoryPath": "/tmp/nodeQA", + "limit": 1, + "options": {} + }, + "name": "Git6", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 1000, + 450 + ], + "id": "7ed13447-be70-41e3-b054-4107b175d5a8" + }, + { + "parameters": { + "operation": "addConfig", + "repositoryPath": "/tmp/nodeQA", + "key": "user.name", + "value": "nodemationqa", + "options": { + "mode": "set" + } + }, + "name": "Git7", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 1000, + 250 + ], + "id": "8dabf47e-ba7c-460d-a2de-a4f54f5211e1" + }, + { + "parameters": { + "operation": "tag", + "repositoryPath": "/tmp/nodeQA", + "name": "=GitNode-tag-{{Date.now()}}" + }, + "name": "Git8", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 1150, + 450 + ], + "id": "f4317e1d-694d-4d62-9b60-de9ef0e94418" + }, + { + "parameters": { + "operation": "pushTags", + "repositoryPath": "/tmp/nodeQA" + }, + "name": "Git9", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 550, + 650 + ], + "disabled": true, + "id": "8ac866c6-9938-4d0f-9f54-6e3d5b1dbf11" + }, + { + "parameters": { + "operation": "push", + "repositoryPath": "/tmp/nodeQA", + "options": {} + }, + "name": "Git10", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 700, + 650 + ], + "disabled": true, + "id": "880d7f5f-744a-496a-9064-0a09a1dfe5ce" + }, + { + "parameters": { + "operation": "pull", + "repositoryPath": "/tmp/nodeQA" + }, + "name": "Git11", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 850, + 650 + ], + "disabled": true, + "id": "5a5c9cd0-0e77-4ed9-960f-54f12d449683" + }, + { + "parameters": { + "operation": "fetch", + "repositoryPath": "/tmp/nodeQA" + }, + "name": "Git12", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 1000, + 650 + ], + "id": "e042e225-b5b6-4882-b879-d11d103c7004" + }, + { + "parameters": { + "operation": "userSetup", + "repositoryPath": "/tmp/nodeQA" + }, + "name": "Git13", + "type": "n8n-nodes-base.git", + "typeVersion": 1, + "position": [ + 1150, + 650 + ], + "disabled": true, + "id": "7b5a93b5-08bc-4449-a7ef-23232d6440a2" + }, + { + "parameters": { + "command": "if [ -d \"/tmp/nodeQA\" ]; then rm -Rf /tmp/nodeQA; fi" + }, + "name": "Delete existing dir", + "type": "n8n-nodes-base.executeCommand", + "typeVersion": 1, + "position": [ + 400, + 250 + ], + "id": "312b664a-f6b4-4419-aae4-455930d7ca05" + }, + { + "parameters": { + "command": "=echo \"File added to repo at {{(new Date).toUTCString()}} using Git node\" > /tmp/nodeQA/gitnode_added_file.md" + }, + "name": "Add file to dir", + "type": "n8n-nodes-base.executeCommand", + "typeVersion": 1, + "position": [ + 1150, + 250 + ], + "id": "a5ad152a-056e-4d4e-81f8-626209e7cfb8" + } + ], + "connections": { + "Git": { + "main": [ + [ + { + "node": "Git1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Delete existing dir", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git1": { + "main": [ + [ + { + "node": "Git2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git2": { + "main": [ + [ + { + "node": "Git7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git3": { + "main": [ + [ + { + "node": "Git4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git4": { + "main": [ + [ + { + "node": "Git5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git5": { + "main": [ + [ + { + "node": "Git6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git7": { + "main": [ + [ + { + "node": "Add file to dir", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git6": { + "main": [ + [ + { + "node": "Git8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git8": { + "main": [ + [ + { + "node": "Git9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git9": { + "main": [ + [ + { + "node": "Git10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git10": { + "main": [ + [ + { + "node": "Git11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git11": { + "main": [ + [ + { + "node": "Git12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Git12": { + "main": [ + [ + { + "node": "Git13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Delete existing dir": { + "main": [ + [ + { + "node": "Git", + "type": "main", + "index": 0 + } + ] + ] + }, + "Add file to dir": { + "main": [ + [ + { + "node": "Git3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/214.json b/test-workflows/workflows/214.json new file mode 100644 index 0000000000..19a6a1bd04 --- /dev/null +++ b/test-workflows/workflows/214.json @@ -0,0 +1,54 @@ +{ + "createdAt": "2021-06-03T11:22:25.194Z", + "updatedAt": "2021-07-15T14:18:39.385Z", + "id": "214", + "name": "Discord:sendMessage", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "51494395-ea61-4b02-9a5d-e9f3f97bddbe" + }, + { + "parameters": { + "webhookUri": "https://discord.com/api/webhooks/853902674536955924/2gqWRIwqBexuMwlQmTNLYFizoX6JMjz5acCKN-6NwaVxfw30qZfy0nguukpLPk0zvnaK", + "text": "=Posted At {{(new Date).toUTCString()}}" + }, + "name": "Discord", + "type": "n8n-nodes-base.discord", + "typeVersion": 1, + "position": [ + 490, + 300 + ], + "id": "ffb4c420-0c18-4cc9-a2fe-5898b93815aa" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Discord", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/215.json b/test-workflows/workflows/215.json new file mode 100644 index 0000000000..4d0b0a715b --- /dev/null +++ b/test-workflows/workflows/215.json @@ -0,0 +1,392 @@ +{ + "createdAt": "2021-06-04T11:16:11.926Z", + "updatedAt": "2021-07-16T09:34:37.952Z", + "id": "215", + "name": "EditImage:ALL", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "42877422-da89-4a28-a056-65fae3293498" + }, + { + "parameters": { + "operation": "blur", + "blur": 4, + "options": {} + }, + "name": "Edit Image", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "afe688e3-fa5c-4a6f-a998-06ac9feb4713" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "94cee769-2dd7-4066-a489-79d3efc8b699" + }, + { + "parameters": { + "options": {} + }, + "name": "Edit Image1", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "73af2807-4dbb-4653-9421-d43e18d6b3dd" + }, + { + "parameters": { + "operation": "composite", + "dataPropertyNameComposite": "data", + "positionX": 100, + "positionY": 50, + "options": {} + }, + "name": "Edit Image2", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 2400, + 280 + ], + "id": "9119f721-2eb0-4972-8c7d-d5b32022a340" + }, + { + "parameters": { + "operation": "create", + "width": 1000, + "height": 1000, + "options": {} + }, + "name": "Edit Image3", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 1050, + 450 + ], + "id": "db874150-8b35-4db7-9f04-8fd6a0da0edc" + }, + { + "parameters": { + "operation": "draw", + "options": {} + }, + "name": "Edit Image4", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 1250, + 450 + ], + "id": "ec763bc5-8acf-4a6c-8377-180f9d67337d" + }, + { + "parameters": { + "operation": "resize", + "options": {} + }, + "name": "Edit Image5", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 1450, + 450 + ], + "id": "b59007d8-29c5-4a08-a04f-76837cb041ba" + }, + { + "parameters": { + "operation": "information" + }, + "name": "Edit Image6", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 850, + 450 + ], + "notes": "CAP_RESULTS_LENGTH=1\nIGNORED_PROPERTIES=User Time", + "id": "b5e4bfc7-16e9-4793-a309-190df1e57444" + }, + { + "parameters": { + "operation": "rotate", + "rotate": 45, + "options": {} + }, + "name": "Edit Image7", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 1650, + 450 + ], + "id": "4e3d7eb5-33ae-4867-8130-ef928b61ecee" + }, + { + "parameters": { + "operation": "shear", + "degreesX": 15, + "degreesY": 30, + "options": {} + }, + "name": "Edit Image8", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 1850, + 450 + ], + "id": "a45b3d3f-95f0-4bbc-b1df-a5c42f8102c9" + }, + { + "parameters": { + "operation": "text", + "text": "Testing", + "options": {} + }, + "name": "Edit Image9", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 2050, + 450 + ], + "id": "d12a6f88-9b7a-4359-ae24-5f098cb438be" + }, + { + "parameters": { + "operation": "crop", + "options": {} + }, + "name": "Edit Image10", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 2250, + 450 + ], + "id": "0be43f04-569f-40f2-8f1c-c4cbfbb228d0" + }, + { + "parameters": { + "operation": "multiStep", + "operations": { + "operations": [ + { + "operation": "blur", + "blur": 3 + }, + { + "operation": "border", + "borderWidth": 3, + "borderHeight": 3, + "borderColor": "#FF7410" + }, + { + "operation": "draw", + "color": "#4b4b4b00", + "cornerRadius": 50 + }, + { + "operation": "rotate", + "rotate": 180 + }, + { + "operation": "text", + "text": "Reversed" + }, + { + "operation": "resize" + }, + { + "operation": "shear", + "degreesX": 5, + "degreesY": 10 + } + ] + }, + "options": {} + }, + "name": "Edit Image11", + "type": "n8n-nodes-base.editImage", + "typeVersion": 1, + "position": [ + 650, + 450 + ], + "notes": "IGNORED_PROPERTIES=User Time", + "id": "620d342b-8f65-492e-9caf-a77b9b037fa5" + } + ], + "connections": { + "Edit Image": { + "main": [ + [ + { + "node": "Edit Image1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Edit Image", + "type": "main", + "index": 0 + }, + { + "node": "Edit Image11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image1": { + "main": [ + [ + { + "node": "Edit Image3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image3": { + "main": [ + [ + { + "node": "Edit Image4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image4": { + "main": [ + [ + { + "node": "Edit Image5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image5": { + "main": [ + [ + { + "node": "Edit Image7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image7": { + "main": [ + [ + { + "node": "Edit Image8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image8": { + "main": [ + [ + { + "node": "Edit Image9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image9": { + "main": [ + [ + { + "node": "Edit Image10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image10": { + "main": [ + [ + { + "node": "Edit Image2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Image11": { + "main": [ + [ + { + "node": "Edit Image6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/216.json b/test-workflows/workflows/216.json new file mode 100644 index 0000000000..fb1cfe0610 --- /dev/null +++ b/test-workflows/workflows/216.json @@ -0,0 +1,101 @@ +{ + "createdAt": "2021-06-15T18:29:42.709Z", + "updatedAt": "2021-06-15T18:38:55.872Z", + "id": "216", + "name": "FunctionItem:JSON,Binary and Static data", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "83a507fd-bf96-45fd-8513-1c0ef484ec76" + }, + { + "parameters": { + "functionCode": "// interact with item JSON attributes\n\n// array\nitem.arr = [1,2,3,4,5,6,7,8,9,10]\n// string\nitem.str= \"Testing Function Item node\"\n// number\nitem.num = 1337 \n// object\nitem.obj = {\n attr1: \"Testing\",\n attr2: [1,2,3,4,5],\n attr3: 7331,\n attr4: {\n subattr1: \"Test\",\n subattr2: [1,2,3],\n subattr3: 8,\n subattr4: {\n }\n }\n};\n\nreturn item;" + }, + "name": "Handle JSON data", + "type": "n8n-nodes-base.functionItem", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "2f7fca94-f885-4f41-90e0-5455afe8266d" + }, + { + "parameters": { + "functionCode": "// interact with item Binary data\n\nitem.binaryData = getBinaryData() ?? 'NIL' ;\n\nbinaryData = {\n data: {\n\t\t\t\tdata: 'SGVsbG8gZnJvbSBuOG4gRnVuY3Rpb24gaXRlbSB0ZXN0aW5nIHdvcmtmbG93', // Base64 encoded binary data (required)\n\t\t\t\tmimeType: 'text', // Optional but should be set if possible (optional)\n\t\t\t\tfileExtension: 'text', // Optional but should be set if possible (optional)\n\t\t\t\tfileName: 'testfile', // Optional but should be set if possible (optional)\n\t\t\t}\n}\nsetBinaryData(binaryData);\n\n\nreturn item;" + }, + "name": "Handle Binary data", + "type": "n8n-nodes-base.functionItem", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "28f7d4f0-a2d7-46d5-8683-4f624588fc32" + }, + { + "parameters": { + "functionCode": "// interact with static data\n\n\n// Global\n\nconst GSD = getWorkflowStaticData('global');\n\nif ( GSD && GSD.message ){\n console.log(GSD);\n} else {\n GSD.message = \"Hello, Global Static Data\";\n}\n\n// Local (node)\n\nconst LSD = getWorkflowStaticData('node');\n\nif ( LSD && LSD.message ){\n console.log(LSD);\n} else {\n LSD.message = \"Hello, Node Static Data\";\n}\n\nitem.globalStaticMessage = GSD.message;\nitem.nodeStaticMessage = LSD.message;\n\n\nreturn item;" + }, + "name": "Handle Static data", + "type": "n8n-nodes-base.functionItem", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "8794c6b1-1149-4b6d-96cb-0e3d5fd0ffbd" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Handle JSON data", + "type": "main", + "index": 0 + } + ] + ] + }, + "Handle JSON data": { + "main": [ + [ + { + "node": "Handle Binary data", + "type": "main", + "index": 0 + } + ] + ] + }, + "Handle Binary data": { + "main": [ + [ + { + "node": "Handle Static data", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/217.json b/test-workflows/workflows/217.json new file mode 100644 index 0000000000..32ce289bce --- /dev/null +++ b/test-workflows/workflows/217.json @@ -0,0 +1,160 @@ +{ + "createdAt": "2021-06-15T18:44:19.942Z", + "updatedAt": "2021-06-15T19:09:29.328Z", + "id": "217", + "name": "ExecuteWorkflow: Database, URL, Local File, Parameter", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "f98e5ef3-5e54-4296-83c0-15abef56962d" + }, + { + "parameters": { + "source": "parameter", + "workflowJson": "{\n \"nodes\": [\n {\n \"parameters\": {},\n \"name\": \"Start\",\n \"type\": \"n8n-nodes-base.start\",\n \"typeVersion\": 1,\n \"position\": [\n 250,\n 300\n ]\n },\n {\n \"parameters\": {\n \"functionCode\": \"\\nitems = [\\n{\\n json:{\\n message: \\\"Hello from a sub workflow, passed as parameter\\\"\\n }\\n}\\n\\n]\\nreturn items;\"\n },\n \"name\": \"Generate items data\",\n \"type\": \"n8n-nodes-base.function\",\n \"typeVersion\": 1,\n \"position\": [\n 500,\n 300\n ]\n }\n ],\n \"connections\": {\n \"Start\": {\n \"main\": [\n [\n {\n \"node\": \"Generate items data\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n }\n }\n}" + }, + "name": "Execute parameter - workflow", + "type": "n8n-nodes-base.executeWorkflow", + "typeVersion": 1, + "position": [ + 500, + 250 + ], + "id": "2c2df62e-bed9-4633-aa3a-c1a80f643540" + }, + { + "parameters": { + "source": "url", + "workflowUrl": "https://raw.githubusercontent.com/n8n-io/test-workflows/main/workflows/95.json" + }, + "name": "Execute URL workflow", + "type": "n8n-nodes-base.executeWorkflow", + "typeVersion": 1, + "position": [ + 500, + 90 + ], + "id": "e5232923-8233-42c7-98bf-ba473a56a788" + }, + { + "parameters": { + "url": "https://raw.githubusercontent.com/n8n-io/test-workflows/main/workflows/93.json", + "responseFormat": "file", + "options": {} + }, + "name": "HTTP Request", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 1, + "position": [ + 500, + 550 + ], + "id": "d1e66066-2d60-48d5-bde2-003715d38e1b" + }, + { + "parameters": { + "fileName": "/tmp/testworkflowfile.json" + }, + "name": "Write Binary File", + "type": "n8n-nodes-base.writeBinaryFile", + "typeVersion": 1, + "position": [ + 700, + 550 + ], + "id": "f82165ff-9ce4-4f80-8b9d-043bb98252bb" + }, + { + "parameters": { + "source": "localFile", + "workflowPath": "/tmp/testworkflowfile.json" + }, + "name": "Execute local file workflow", + "type": "n8n-nodes-base.executeWorkflow", + "typeVersion": 1, + "position": [ + 900, + 550 + ], + "id": "af481068-77a8-4c83-8473-3f20d2fba53e" + }, + { + "parameters": { + "workflowId": "94" + }, + "name": "Execute Workflow ID 94", + "type": "n8n-nodes-base.executeWorkflow", + "typeVersion": 1, + "position": [ + 500, + 400 + ], + "id": "c65ee4ea-afc8-4674-90d1-12d6c1685209" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Execute Workflow ID 94", + "type": "main", + "index": 0 + }, + { + "node": "Execute parameter - workflow", + "type": "main", + "index": 0 + }, + { + "node": "Execute URL workflow", + "type": "main", + "index": 0 + }, + { + "node": "HTTP Request", + "type": "main", + "index": 0 + } + ] + ] + }, + "HTTP Request": { + "main": [ + [ + { + "node": "Write Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Write Binary File": { + "main": [ + [ + { + "node": "Execute local file workflow", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/218.json b/test-workflows/workflows/218.json new file mode 100644 index 0000000000..621d47f28a --- /dev/null +++ b/test-workflows/workflows/218.json @@ -0,0 +1,159 @@ +{ + "createdAt": "2021-07-08T14:10:14.879Z", + "updatedAt": "2021-07-08T14:14:36.514Z", + "id": "218", + "name": "Bannerbear:Image:create get:Template:get getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "f26a5bfe-df4f-4716-aa45-f2fe142d5845" + }, + { + "parameters": { + "templateId": "0MkzgpZ46zEDyVrmlP", + "additionalFields": { + "waitForImage": true + }, + "modificationsUi": { + "modificationsValues": [ + { + "name": "message", + "text": "Testing n8n qa", + "color": "#0911A0", + "background": "#EEEEEE" + } + ] + } + }, + "name": "Bannerbear", + "type": "n8n-nodes-base.bannerbear", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "bannerbearApi": { + "id": "211", + "name": "Bannerbear API creds" + } + }, + "id": "3f8c4976-b1c4-44b7-83ac-fcd90a1fea72" + }, + { + "parameters": { + "operation": "get", + "imageId": "={{$node[\"Bannerbear\"].json[\"uid\"]}}" + }, + "name": "Bannerbear1", + "type": "n8n-nodes-base.bannerbear", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "bannerbearApi": { + "id": "211", + "name": "Bannerbear API creds" + } + }, + "id": "cc376054-599f-42f9-8d13-aca26f93043f" + }, + { + "parameters": { + "resource": "template", + "operation": "getAll" + }, + "name": "Bannerbear2", + "type": "n8n-nodes-base.bannerbear", + "typeVersion": 1, + "position": [ + 900, + 400 + ], + "credentials": { + "bannerbearApi": { + "id": "211", + "name": "Bannerbear API creds" + } + }, + "id": "a76b8466-0c76-4eba-bd95-db664ee77b00" + }, + { + "parameters": { + "resource": "template", + "templateId": "0MkzgpZ46zEDyVrmlP" + }, + "name": "Bannerbear3", + "type": "n8n-nodes-base.bannerbear", + "typeVersion": 1, + "position": [ + 900, + 250 + ], + "credentials": { + "bannerbearApi": { + "id": "211", + "name": "Bannerbear API creds" + } + }, + "id": "cb9a1de6-9dd7-41c9-aa8b-d71e605ee8b9" + } + ], + "connections": { + "Bannerbear": { + "main": [ + [ + { + "node": "Bannerbear1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Bannerbear1": { + "main": [ + [ + { + "node": "Bannerbear2", + "type": "main", + "index": 0 + }, + { + "node": "Bannerbear3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Bannerbear", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/219.json b/test-workflows/workflows/219.json new file mode 100644 index 0000000000..25e580edb8 --- /dev/null +++ b/test-workflows/workflows/219.json @@ -0,0 +1,393 @@ +{ + "createdAt": "2021-06-25T06:08:38.364Z", + "updatedAt": "2021-07-08T15:34:23.744Z", + "id": "219", + "name": "Automizy:List:create get update getAll delete:Contact:create get update getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 270, + 380 + ], + "id": "b4a081a6-9a54-4e52-8e77-18d8d3df627c" + }, + { + "parameters": { + "resource": "list", + "name": "=List{{Date.now()}}" + }, + "name": "Automizy", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 440, + 380 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "b1dceb9d-e1b8-4b55-9e64-158a2b8729cb" + }, + { + "parameters": { + "resource": "list", + "operation": "get", + "listId": "={{$node[\"Automizy\"].json[\"id\"]}}" + }, + "name": "Automizy1", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 640, + 380 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "2c8e8668-1982-443f-8047-4291009cb7a9" + }, + { + "parameters": { + "resource": "list", + "operation": "update", + "listId": "={{$node[\"Automizy\"].json[\"id\"]}}", + "name": "=UpdatedList{{Date.now()}}" + }, + "name": "Automizy2", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 790, + 380 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "3fd15d30-4310-4556-86d8-d065af81e1f8" + }, + { + "parameters": { + "resource": "list", + "operation": "getAll", + "limit": 1, + "additionalFields": { + "direction": "desc", + "fields": "id,name", + "sortBy": "name" + } + }, + "name": "Automizy3", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 940, + 380 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "c1fbd84b-5857-4309-948e-514684bdeb9a" + }, + { + "parameters": { + "resource": "list", + "operation": "delete", + "listId": "={{$node[\"Automizy\"].json[\"id\"]}}" + }, + "name": "Automizy4", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 1090, + 380 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "35dd2b7a-d40d-4714-a689-b0c8983538df" + }, + { + "parameters": { + "email": "=fakeemail{{Date.now()}}@gmail.com", + "listId": "={{$node[\"Automizy\"].json[\"id\"]}}", + "additionalFields": { + "customFieldsUi": { + "customFieldsValues": [ + { + "key": 3, + "value": "=Company{{Date.now()}}" + }, + { + "key": 1, + "value": "=Firstname{{Date.now()}}" + }, + { + "key": 2, + "value": "=Second{{Date.now()}}" + }, + { + "key": 4, + "value": "=Position{{Date.now()}}" + } + ] + }, + "status": "ACTIVE", + "tags": [ + "test" + ] + } + }, + "name": "Automizy5", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 590, + 530 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "f5681b6a-76c6-464c-bdfe-778fc2ebdec3" + }, + { + "parameters": { + "operation": "get", + "contactId": "={{$node[\"Automizy5\"].json[\"id\"]}}" + }, + "name": "Automizy6", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 740, + 530 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "23c3ebef-deab-48bf-a0f6-bdbb172d3634" + }, + { + "parameters": { + "operation": "update", + "email": "={{$node[\"Automizy5\"].json[\"email\"]}}", + "updateFields": { + "customFieldsUi": { + "customFieldsValues": [ + { + "key": 3, + "value": "UpdatedCompany" + } + ] + }, + "removeTags": [ + "test" + ], + "status": "BANNED" + } + }, + "name": "Automizy7", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 890, + 530 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "2c376196-e422-411f-b84d-9a6e86898061" + }, + { + "parameters": { + "operation": "getAll", + "listId": "={{$node[\"Automizy\"].json[\"id\"]}}", + "limit": 1, + "additionalFields": { + "fields": "id,status" + } + }, + "name": "Automizy8", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 1040, + 530 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "dcef5e3c-3ae9-49c9-81cf-70197ae5cf9f" + }, + { + "parameters": { + "operation": "delete", + "contactId": "={{$node[\"Automizy5\"].json[\"id\"]}}" + }, + "name": "Automizy9", + "type": "n8n-nodes-base.automizy", + "typeVersion": 1, + "position": [ + 1190, + 530 + ], + "credentials": { + "automizyApi": { + "id": "212", + "name": "Automizy API creds" + } + }, + "id": "9e848425-9b56-497d-bc56-a934e80ec686" + } + ], + "connections": { + "Automizy": { + "main": [ + [ + { + "node": "Automizy5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Automizy1": { + "main": [ + [ + { + "node": "Automizy2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Automizy2": { + "main": [ + [ + { + "node": "Automizy3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Automizy3": { + "main": [ + [ + { + "node": "Automizy4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Automizy5": { + "main": [ + [ + { + "node": "Automizy6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Automizy6": { + "main": [ + [ + { + "node": "Automizy7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Automizy7": { + "main": [ + [ + { + "node": "Automizy8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Automizy8": { + "main": [ + [ + { + "node": "Automizy9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Automizy9": { + "main": [ + [ + { + "node": "Automizy1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Automizy", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/22.json b/test-workflows/workflows/22.json new file mode 100644 index 0000000000..ed51062e28 --- /dev/null +++ b/test-workflows/workflows/22.json @@ -0,0 +1,207 @@ +{ + "createdAt": "2021-02-16T16:30:25.114Z", + "updatedAt": "2021-02-16T19:02:02.611Z", + "id": "22", + "name": "Hubspot:ContactList:add remove:Form:getFields submit", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "89975e09-da30-4c6d-8d61-9650d57b9c3d" + }, + { + "parameters": { + "resource": "form", + "formId": "a3c94446-bea8-49be-80a7-c862efe7ceb6" + }, + "name": "Hubspot", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 490, + 210 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "3211fe29-82cf-4b3e-95a8-9a35f9daab8a" + }, + { + "parameters": { + "resource": "form", + "operation": "submit", + "formId": "a3c94446-bea8-49be-80a7-c862efe7ceb6", + "additionalFields": {}, + "lengalConsentUi": { + "lengalConsentValues": { + "consentToProcess": true, + "text": "test", + "communicationsUi": { + "communicationValues": [] + } + } + } + }, + "name": "Hubspot1", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 890, + 210 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "dfae8bbd-deb9-4584-b5d0-c054d7c68d45" + }, + { + "parameters": { + "resource": "contactList" + }, + "name": "Hubspot2", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 1220, + 290 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "disabled": true, + "id": "c05ef08b-1a37-4e96-a4ed-79d07375d395" + }, + { + "parameters": { + "resource": "contactList", + "email": "nodeqa@n8n.io", + "listId": "2" + }, + "name": "Hubspot3", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 500, + 410 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "d442252a-bb6c-455d-91c0-7e84b2acd2d0" + }, + { + "parameters": { + "resource": "contactList", + "operation": "remove", + "id": "={{$json[\"updated\"][0]}}", + "listId": "2" + }, + "name": "Hubspot4", + "type": "n8n-nodes-base.hubspot", + "typeVersion": 1, + "position": [ + 700, + 410 + ], + "credentials": { + "hubspotApi": { + "id": "11", + "name": "hubsport api key" + } + }, + "id": "80251cfe-7af7-4f16-a8c9-7d9a07ecf296" + }, + { + "parameters": { + "functionCode": "return [{json:{\n email:`test${Date.now().toString().substr(5)}@gmail.com`,\n firstname:'Test first',\n lastname:'Test last',\n message:'Message'\n}}];" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 690, + 210 + ], + "notesInFlow": true, + "notes": "Turn field into single json", + "id": "957f2262-d3e3-4f6f-894d-834aa2e12e31" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Hubspot", + "type": "main", + "index": 0 + }, + { + "node": "Hubspot3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hubspot3": { + "main": [ + [ + { + "node": "Hubspot4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "Hubspot1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/220.json b/test-workflows/workflows/220.json new file mode 100644 index 0000000000..3f28a5963e --- /dev/null +++ b/test-workflows/workflows/220.json @@ -0,0 +1,348 @@ +{ + "createdAt": "2021-06-25T06:40:20.761Z", + "updatedAt": "2021-07-16T09:01:07.467Z", + "id": "220", + "name": "Autopilot:List:create getAll:Contact:upsert get getAll delete:ContactList:add exist getAll remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "0615b7a0-0786-4868-b269-2a2b0cb2a2fc" + }, + { + "parameters": { + "email": "=Fakeemail{{Date.now()}}@gmail.com", + "additionalFields": {} + }, + "name": "Autopilot", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "1b66282f-b944-486c-ac84-e0947f8253db" + }, + { + "parameters": { + "operation": "get", + "contactId": "={{$node[\"Autopilot\"].json[\"contact_id\"]}}" + }, + "name": "Autopilot1", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "1575e003-c7f1-40af-831b-90fe1eaf7fba" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Autopilot2", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "09f19a0d-0839-4cbe-9c73-5a90ff409606" + }, + { + "parameters": { + "operation": "delete", + "contactId": "={{$node[\"Autopilot\"].json[\"contact_id\"]}}" + }, + "name": "Autopilot3", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "9a3fa0ff-117b-4515-bd5f-a573ee304885" + }, + { + "parameters": { + "resource": "list", + "name": "=List{{Date.now()}}" + }, + "name": "Autopilot4", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 500, + 100 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "notes": "IGNORED_PROPERTIES=list_id,name,message", + "id": "6b2022b3-cc2e-41a0-9420-83859ad48e64" + }, + { + "parameters": { + "resource": "list", + "operation": "getAll", + "limit": 1 + }, + "name": "Autopilot5", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 650, + 100 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "ed2a8101-9083-469f-81d1-5c92a530bb2d" + }, + { + "parameters": { + "resource": "contactList", + "listId": "={{$node[\"Autopilot5\"].json[\"list_id\"]}}", + "contactId": "={{$node[\"Autopilot\"].json[\"contact_id\"]}}" + }, + "name": "Autopilot6", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 950, + 450 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "018aaf92-3c41-4a82-92a6-d67c7681a9de" + }, + { + "parameters": { + "resource": "contactList", + "operation": "exist", + "listId": "={{$node[\"Autopilot4\"].json[\"list_id\"]}}", + "contactId": "={{$node[\"Autopilot\"].json[\"contact_id\"]}}" + }, + "name": "Autopilot7", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 1100, + 450 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "9942b084-4991-4d0c-bb43-4a1417c5353c" + }, + { + "parameters": { + "resource": "contactList", + "operation": "getAll", + "listId": "={{$node[\"Autopilot5\"].json[\"list_id\"]}}", + "limit": 1 + }, + "name": "Autopilot8", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 1250, + 450 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "a130470d-1b45-4077-b7a1-3814443d93a8" + }, + { + "parameters": { + "resource": "contactList", + "operation": "remove", + "listId": "={{$node[\"Autopilot5\"].json[\"list_id\"]}}", + "contactId": "={{$node[\"Autopilot\"].json[\"contact_id\"]}}" + }, + "name": "Autopilot9", + "type": "n8n-nodes-base.autopilot", + "typeVersion": 1, + "position": [ + 1400, + 450 + ], + "credentials": { + "autopilotApi": { + "id": "213", + "name": "Autopilot API creds" + } + }, + "id": "76538b0d-f96e-4bbf-83dd-fafb0f1e3edf" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Autopilot4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot": { + "main": [ + [ + { + "node": "Autopilot1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot1": { + "main": [ + [ + { + "node": "Autopilot2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot2": { + "main": [ + [ + { + "node": "Autopilot6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot4": { + "main": [ + [ + { + "node": "Autopilot5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot5": { + "main": [ + [ + { + "node": "Autopilot", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot6": { + "main": [ + [ + { + "node": "Autopilot7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot7": { + "main": [ + [ + { + "node": "Autopilot8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot8": { + "main": [ + [ + { + "node": "Autopilot9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Autopilot9": { + "main": [ + [ + { + "node": "Autopilot3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/221.json b/test-workflows/workflows/221.json new file mode 100644 index 0000000000..63c049d397 --- /dev/null +++ b/test-workflows/workflows/221.json @@ -0,0 +1,930 @@ +{ + "createdAt": "2021-06-25T10:58:54.559Z", + "updatedAt": "2021-07-09T10:01:28.338Z", + "id": "221", + "name": "Copper:Company:*:Person:*:Opportunity:*:Project:*:Task:*:CustomerSource:getAll:User:getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "3524ea35-2975-49aa-8a25-0980af2d16ff" + }, + { + "parameters": { + "name": "=Company{{Date.now()}}", + "additionalFields": { + "address": { + "addressFields": { + "street": "street", + "city": "city", + "state": "state", + "postal_code": "1001", + "country": "country" + } + }, + "details": "Description ", + "email_domain": "=Test{{Date.now()}}", + "phone_numbers": { + "phoneFields": [ + { + "number": "42424242", + "category": "mobile" + } + ] + } + } + }, + "name": "Copper", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 500, + 130 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "c7d44454-2d3f-446a-a21f-ba97dee874c2" + }, + { + "parameters": { + "operation": "get", + "companyId": "={{$node[\"Copper\"].json[\"id\"]}}" + }, + "name": "Copper1", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 650, + 130 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "80a08b49-e665-4b05-93b3-f4354d107800" + }, + { + "parameters": { + "operation": "update", + "companyId": "={{$node[\"Copper\"].json[\"id\"]}}", + "updateFields": { + "address": { + "addressFields": { + "street": "UpdateStreet", + "city": "UpdatedCity", + "state": "UpdateState", + "postal_code": "1002", + "country": "UpdateCountry" + } + }, + "name": "=Updated{{$node[\"Copper1\"].json[\"name\"]}}" + } + }, + "name": "Copper2", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 800, + 130 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "c3ada9b0-26af-4531-b932-e2f0a4c672d9" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filterFields": { + "name": "={{$node[\"Copper2\"].json[\"name\"]}}" + } + }, + "name": "Copper3", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 950, + 130 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "ee32ed20-d5f4-40e3-8288-a678df7c9c98" + }, + { + "parameters": { + "operation": "delete", + "companyId": "={{$node[\"Copper\"].json[\"id\"]}}" + }, + "name": "Copper4", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 1100, + 130 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "b4c3643c-e8d5-41ce-87fd-9edd54201956" + }, + { + "parameters": { + "resource": "customerSource", + "limit": 1 + }, + "name": "Copper5", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 650, + 440 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "ec0a392e-77a5-4c30-a1f1-31554e924160" + }, + { + "parameters": { + "resource": "person", + "name": "=Person{{Date.now()}}", + "additionalFields": { + "details": "Person description - Test" + } + }, + "name": "Copper6", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 500, + 290 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "de249aff-db75-4937-a878-25ad37c5b160" + }, + { + "parameters": { + "resource": "person", + "operation": "get", + "personId": "={{$node[\"Copper6\"].json[\"id\"]}}" + }, + "name": "Copper7", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 750, + 290 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "2ab13b8a-2012-4b79-8b66-c01e2e539168" + }, + { + "parameters": { + "resource": "person", + "operation": "update", + "personId": "={{$node[\"Copper6\"].json[\"id\"]}}", + "updateFields": { + "name": "=Updated{{$node[\"Copper7\"].json[\"name\"]}}" + } + }, + "name": "Copper8", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 900, + 290 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "036bce7e-3450-4dc5-a8d9-09031be7b283" + }, + { + "parameters": { + "resource": "person", + "operation": "getAll", + "limit": 1, + "filterFields": {} + }, + "name": "Copper9", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 1050, + 290 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "0ee23c1e-c3fc-44d2-ab7f-962fcb519d5f" + }, + { + "parameters": { + "resource": "person", + "operation": "delete", + "personId": "={{$node[\"Copper6\"].json[\"id\"]}}" + }, + "name": "Copper10", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 1200, + 290 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "23ceb77e-bc3d-4e38-8d9c-339149e82555" + }, + { + "parameters": { + "resource": "project", + "name": "=Project{{Date.now()}}", + "additionalFields": { + "details": "Detail projects - Test", + "status": "Open" + } + }, + "name": "Copper11", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 500, + 590 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "987fcbb0-1be5-49b7-88cc-706e091200c4" + }, + { + "parameters": { + "resource": "project", + "operation": "get", + "projectId": "={{$node[\"Copper11\"].json[\"id\"]}}" + }, + "name": "Copper12", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 650, + 590 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "8c6eab76-1955-46f8-99c0-f6e7cba6d089" + }, + { + "parameters": { + "resource": "project", + "operation": "update", + "projectId": "={{$node[\"Copper11\"].json[\"id\"]}}", + "updateFields": { + "details": "Completed Update", + "name": "=Upated{{$node[\"Copper12\"].json[\"name\"]}}", + "status": "Completed" + } + }, + "name": "Copper13", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 800, + 590 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "bb59c271-79e0-48f1-8f7c-2495fa913b16" + }, + { + "parameters": { + "resource": "project", + "operation": "getAll", + "limit": 1, + "filterFields": {} + }, + "name": "Copper14", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 950, + 590 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "322d58e4-799a-43f4-893a-93ef541e1250" + }, + { + "parameters": { + "resource": "project", + "operation": "delete", + "projectId": "={{$node[\"Copper11\"].json[\"id\"]}}" + }, + "name": "Copper15", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 1100, + 590 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "3319110f-6cee-48da-a712-02e462c6eb63" + }, + { + "parameters": { + "resource": "task", + "name": "=Task{{Date.now()}}", + "additionalFields": { + "details": "Task description", + "priority": "High", + "status": "Open" + } + }, + "name": "Copper16", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 500, + 740 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "cf53821f-74de-44c4-9e18-da30dbebba9e" + }, + { + "parameters": { + "resource": "task", + "operation": "get", + "taskId": "={{$node[\"Copper16\"].json[\"id\"]}}" + }, + "name": "Copper17", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 650, + 740 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "564d21cd-fc4c-4b55-8068-bd4c559aa73d" + }, + { + "parameters": { + "resource": "task", + "operation": "update", + "taskId": "={{$node[\"Copper16\"].json[\"id\"]}}", + "updateFields": { + "details": "Update task description", + "name": "=Updated{{$node[\"Copper17\"].json[\"name\"]}}", + "priority": "None", + "status": "Completed" + } + }, + "name": "Copper18", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 800, + 740 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "1e015bc3-f684-42da-80ff-d523ba36fa5d" + }, + { + "parameters": { + "resource": "task", + "operation": "getAll", + "limit": 1, + "filterFields": { + "project_ids": "={{$node[\"Copper18\"].json[\"id\"]}}," + } + }, + "name": "Copper19", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 950, + 740 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "e8986a4b-02b9-4596-9512-078f88be2431" + }, + { + "parameters": { + "resource": "task", + "operation": "delete", + "taskId": "={{$node[\"Copper16\"].json[\"id\"]}}" + }, + "name": "Copper20", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 1100, + 740 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "b5cd7438-3115-4146-8607-34b67476f5b3" + }, + { + "parameters": { + "resource": "user", + "limit": 1 + }, + "name": "Copper21", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 500, + -10 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "94cdc07a-0c7e-4f25-a1c0-e1385358a455" + }, + { + "parameters": { + "resource": "opportunity", + "name": "=Opportunity{{Date.now()}}", + "customerSourceId": "={{$node[\"Copper5\"].json[\"id\"]}}", + "primaryContactId": "={{$node[\"Copper6\"].json[\"id\"]}}" + }, + "name": "Copper22", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 800, + 440 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "c8d1ed81-1892-4687-9506-4df121ba7b53" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "get", + "opportunityId": "={{$node[\"Copper22\"].json[\"id\"]}}" + }, + "name": "Copper23", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 950, + 440 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "8aa793b5-49d9-4329-9f59-95d265d9df92" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "update", + "opportunityId": "={{$node[\"Copper22\"].json[\"id\"]}}", + "updateFields": { + "name": "=Updated{{$node[\"Copper23\"].json[\"name\"]}}" + } + }, + "name": "Copper24", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 1100, + 440 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "64ded247-0c6f-4256-9689-dbc4738df63a" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "getAll", + "limit": 1, + "filterFields": {} + }, + "name": "Copper25", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 1250, + 440 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "3834c3ed-308c-46c7-9aa6-3bc441d11897" + }, + { + "parameters": { + "resource": "opportunity", + "operation": "delete", + "opportunityId": "={{$node[\"Copper22\"].json[\"id\"]}}" + }, + "name": "Copper26", + "type": "n8n-nodes-base.copper", + "typeVersion": 1, + "position": [ + 1400, + 440 + ], + "credentials": { + "copperApi": { + "id": "214", + "name": "Copper API creds" + } + }, + "id": "6c2b484c-d78f-412a-ac33-eb5637fd30fa" + } + ], + "connections": { + "Copper": { + "main": [ + [ + { + "node": "Copper1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper1": { + "main": [ + [ + { + "node": "Copper2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper2": { + "main": [ + [ + { + "node": "Copper3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper3": { + "main": [ + [ + { + "node": "Copper4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper6": { + "main": [ + [ + { + "node": "Copper5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper7": { + "main": [ + [ + { + "node": "Copper8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper8": { + "main": [ + [ + { + "node": "Copper9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper9": { + "main": [ + [ + { + "node": "Copper10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper11": { + "main": [ + [ + { + "node": "Copper12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper12": { + "main": [ + [ + { + "node": "Copper13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper13": { + "main": [ + [ + { + "node": "Copper14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper14": { + "main": [ + [ + { + "node": "Copper15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper16": { + "main": [ + [ + { + "node": "Copper17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper17": { + "main": [ + [ + { + "node": "Copper18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper18": { + "main": [ + [ + { + "node": "Copper19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper19": { + "main": [ + [ + { + "node": "Copper20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Copper", + "type": "main", + "index": 0 + }, + { + "node": "Copper6", + "type": "main", + "index": 0 + }, + { + "node": "Copper11", + "type": "main", + "index": 0 + }, + { + "node": "Copper16", + "type": "main", + "index": 0 + }, + { + "node": "Copper21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper5": { + "main": [ + [ + { + "node": "Copper22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper22": { + "main": [ + [ + { + "node": "Copper23", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper23": { + "main": [ + [ + { + "node": "Copper24", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper24": { + "main": [ + [ + { + "node": "Copper25", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper25": { + "main": [ + [ + { + "node": "Copper26", + "type": "main", + "index": 0 + } + ] + ] + }, + "Copper26": { + "main": [ + [ + { + "node": "Copper7", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/222.json b/test-workflows/workflows/222.json new file mode 100644 index 0000000000..35b31e505b --- /dev/null +++ b/test-workflows/workflows/222.json @@ -0,0 +1,336 @@ +{ + "createdAt": "2021-07-02T07:59:24.159Z", + "updatedAt": "2021-07-09T10:56:03.728Z", + "id": "222", + "name": "Lemlist:Lead:create get unsubscribe delete:Campaign:getAll:Activity:getAll:Team:get:Unsubscribe:add getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "3fd92007-e246-4af4-a0bd-af520944645a" + }, + { + "parameters": { + "limit": 1, + "filters": { + "campaignId": "={{$node[\"Lemlist1\"].json[\"_id\"]}}" + } + }, + "name": "Lemlist", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 590, + 300 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "487b4ba3-99b4-468f-b462-d0c7afb9c13f" + }, + { + "parameters": { + "resource": "campaign", + "limit": 1 + }, + "name": "Lemlist1", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "7d261b8d-cff1-4d87-b356-7a4f3be78428" + }, + { + "parameters": { + "resource": "team" + }, + "name": "Lemlist2", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "df32604f-1d9a-4a7f-9add-1b154962f7ac" + }, + { + "parameters": { + "resource": "lead", + "campaignId": "={{$node[\"Lemlist1\"].json[\"_id\"]}}", + "email": "=fake{{Date.now()}}@gmail.com", + "additionalFields": {} + }, + "name": "Lemlist3", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 600, + 150 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "1432df44-c5b6-4637-a3f2-379e34f75fae" + }, + { + "parameters": { + "resource": "lead", + "operation": "get", + "email": "={{$node[\"Lemlist3\"].json[\"email\"]}}" + }, + "name": "Lemlist4", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 750, + 150 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "ded2cabd-92e8-4881-ab92-a469efccaef1" + }, + { + "parameters": { + "resource": "lead", + "operation": "unsubscribe", + "campaignId": "={{$node[\"Lemlist1\"].json[\"_id\"]}}", + "email": "={{$node[\"Lemlist3\"].json[\"email\"]}}" + }, + "name": "Lemlist5", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 900, + 150 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "de9bdf0c-0f64-4d90-bd11-4f11fb1e7184" + }, + { + "parameters": { + "resource": "lead", + "operation": "delete", + "campaignId": "={{$node[\"Lemlist1\"].json[\"_id\"]}}", + "email": "={{$node[\"Lemlist3\"].json[\"email\"]}}" + }, + "name": "Lemlist6", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 1050, + 150 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "364bf6ff-2417-46b0-a0ee-5a4727cf7228" + }, + { + "parameters": { + "resource": "unsubscribe", + "email": "=fakeemail{{Date.now()}}@mail.test" + }, + "name": "Lemlist7", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "2d0091c7-b0d9-43ff-b523-7e31bd14c872" + }, + { + "parameters": { + "resource": "unsubscribe", + "operation": "getAll", + "limit": 1 + }, + "name": "Lemlist9", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "a9b87222-01ce-42d8-9d58-21c82f3fd2eb" + }, + { + "parameters": { + "resource": "unsubscribe", + "operation": "delete", + "email": "={{$node[\"Lemlist7\"].json[\"email\"]}}" + }, + "name": "Lemlist10", + "type": "n8n-nodes-base.lemlist", + "typeVersion": 1, + "position": [ + 750, + 450 + ], + "credentials": { + "lemlistApi": { + "id": "215", + "name": "Lemlist API creds" + } + }, + "id": "d967d1a8-66ac-46f7-9930-10509859fe1c" + } + ], + "connections": { + "Lemlist": { + "main": [ + [] + ] + }, + "Lemlist1": { + "main": [ + [ + { + "node": "Lemlist", + "type": "main", + "index": 0 + }, + { + "node": "Lemlist3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Lemlist3": { + "main": [ + [ + { + "node": "Lemlist4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Lemlist4": { + "main": [ + [ + { + "node": "Lemlist5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Lemlist5": { + "main": [ + [ + { + "node": "Lemlist6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Lemlist1", + "type": "main", + "index": 0 + }, + { + "node": "Lemlist2", + "type": "main", + "index": 0 + }, + { + "node": "Lemlist7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Lemlist7": { + "main": [ + [ + { + "node": "Lemlist9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Lemlist9": { + "main": [ + [ + { + "node": "Lemlist10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/223.json b/test-workflows/workflows/223.json new file mode 100644 index 0000000000..f5dd403bb6 --- /dev/null +++ b/test-workflows/workflows/223.json @@ -0,0 +1,63 @@ +{ + "createdAt": "2021-07-02T10:27:33.975Z", + "updatedAt": "2021-07-09T11:10:22.318Z", + "id": "223", + "name": "LingvaNex:Translate", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "61781654-9992-4dd9-8224-943ecf740806" + }, + { + "parameters": { + "text": "automation", + "translateTo": "de_DE", + "options": { + "from": "en_US" + } + }, + "name": "LingvaNex", + "type": "n8n-nodes-base.lingvaNex", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "lingvaNexApi": { + "id": "216", + "name": "LingvaNex API creds" + } + }, + "id": "68e11f02-34e0-47d6-a175-81abf5002b28" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "LingvaNex", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/224.json b/test-workflows/workflows/224.json new file mode 100644 index 0000000000..55f9eb0066 --- /dev/null +++ b/test-workflows/workflows/224.json @@ -0,0 +1,404 @@ +{ + "createdAt": "2021-07-05T14:32:19.990Z", + "updatedAt": "2021-07-09T12:39:46.228Z", + "id": "224", + "name": "QuickBase:Record:create update getAll upsert:Report:run get:Field:getAll:File:download", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 250 + ], + "id": "bf5f914e-83a9-4ad6-a539-d2eda48cf8ea" + }, + { + "parameters": { + "resource": "field", + "tableId": "brkf6p68v", + "limit": 1, + "options": {} + }, + "name": "Quick Base", + "type": "n8n-nodes-base.quickbase", + "typeVersion": 1, + "position": [ + 450, + 90 + ], + "credentials": { + "quickbaseApi": { + "id": "217", + "name": "Quick Base API creds" + } + }, + "id": "f5a894fe-fd72-43d9-8d19-a3913ad04c56" + }, + { + "parameters": { + "tableId": "brkf6p68v", + "columns": "name", + "simple": false, + "options": { + "fields": [ + 2, + 1, + 6, + 3 + ] + } + }, + "name": "Quick Base1", + "type": "n8n-nodes-base.quickbase", + "typeVersion": 1, + "position": [ + 590, + 240 + ], + "credentials": { + "quickbaseApi": { + "id": "217", + "name": "Quick Base API creds" + } + }, + "id": "873001c3-3c1f-4311-9b5a-a04d3bdf5321" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=TestRecordName{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 450, + 240 + ], + "id": "c4613406-ddd6-4f8e-bef9-cf65f1250840" + }, + { + "parameters": { + "operation": "update", + "tableId": "brkf6p68v", + "columns": "name", + "updateKey": "=name", + "simple": false, + "options": { + "fields": [ + 2, + 1, + 6, + 3 + ] + } + }, + "name": "Quick Base2", + "type": "n8n-nodes-base.quickbase", + "typeVersion": 1, + "position": [ + 890, + 240 + ], + "credentials": { + "quickbaseApi": { + "id": "217", + "name": "Quick Base API creds" + } + }, + "id": "0a93b666-c58c-4b85-950b-1abb94fe66d8" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=UpdatedTestRecordName{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 740, + 240 + ], + "id": "72a5922b-dbb9-4e44-85d1-6bb89eef35b0" + }, + { + "parameters": { + "operation": "getAll", + "tableId": "brkf6p68v", + "limit": 1, + "options": { + "select": [ + 6, + 3 + ] + } + }, + "name": "Quick Base3", + "type": "n8n-nodes-base.quickbase", + "typeVersion": 1, + "position": [ + 1040, + 240 + ], + "credentials": { + "quickbaseApi": { + "id": "217", + "name": "Quick Base API creds" + } + }, + "id": "8529e62b-8274-46d2-be2f-bdba8dae2765" + }, + { + "parameters": { + "operation": "upsert", + "tableId": "brkf6p68v", + "columns": "name", + "updateKey": "name", + "options": { + "fields": [ + 6, + 3 + ] + } + }, + "name": "Quick Base4", + "type": "n8n-nodes-base.quickbase", + "typeVersion": 1, + "position": [ + 1340, + 240 + ], + "credentials": { + "quickbaseApi": { + "id": "217", + "name": "Quick Base API creds" + } + }, + "id": "ff322a95-9fe6-4432-98fe-e655c69c212a" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "=TestUpsertRecordName{{Date.now()}}" + } + ] + }, + "options": {} + }, + "name": "Set2", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1190, + 240 + ], + "id": "7df37b96-5357-4f1b-ae79-deaa537b7a79" + }, + { + "parameters": { + "resource": "report", + "operation": "run", + "tableId": "brkf6p68v", + "reportId": "1", + "returnAll": false, + "limit": 1 + }, + "name": "Quick Base5", + "type": "n8n-nodes-base.quickbase", + "typeVersion": 1, + "position": [ + 450, + 390 + ], + "credentials": { + "quickbaseApi": { + "id": "217", + "name": "Quick Base API creds" + } + }, + "id": "2b8bbaa2-0983-4074-932e-4ba02d74448b" + }, + { + "parameters": { + "resource": "report", + "tableId": "brkf6p68v", + "reportId": "1" + }, + "name": "Quick Base6", + "type": "n8n-nodes-base.quickbase", + "typeVersion": 1, + "position": [ + 600, + 390 + ], + "credentials": { + "quickbaseApi": { + "id": "217", + "name": "Quick Base API creds" + } + }, + "id": "4b2c54e4-17c3-4648-aa4a-6bd9052a8364" + }, + { + "parameters": { + "resource": "file", + "tableId": "brkf6p68v", + "recordId": "1", + "fieldId": "9" + }, + "name": "Quick Base7", + "type": "n8n-nodes-base.quickbase", + "typeVersion": 1, + "position": [ + 450, + 540 + ], + "credentials": { + "quickbaseApi": { + "id": "217", + "name": "Quick Base API creds" + } + }, + "id": "70bd2916-790b-4791-8bd3-964ecca4d109" + } + ], + "connections": { + "Set": { + "main": [ + [ + { + "node": "Quick Base1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Quick Base1": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Quick Base2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Quick Base2": { + "main": [ + [ + { + "node": "Quick Base3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Quick Base3": { + "main": [ + [ + { + "node": "Set2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set2": { + "main": [ + [ + { + "node": "Quick Base4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + }, + { + "node": "Quick Base", + "type": "main", + "index": 0 + }, + { + "node": "Quick Base5", + "type": "main", + "index": 0 + }, + { + "node": "Quick Base7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Quick Base5": { + "main": [ + [ + { + "node": "Quick Base6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Quick Base7": { + "main": [ + [] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/225.json b/test-workflows/workflows/225.json new file mode 100644 index 0000000000..e3eadfe61a --- /dev/null +++ b/test-workflows/workflows/225.json @@ -0,0 +1,546 @@ +{ + "createdAt": "2021-07-06T12:49:19.325Z", + "updatedAt": "2021-07-09T13:11:16.807Z", + "id": "225", + "name": "Salesmate:Company:*:Deal:*:Activity:*", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d47537bc-67a1-47ac-9410-957dda70e3f4" + }, + { + "parameters": { + "resource": "company", + "name": "=Company{{Date.now()}}", + "owner": 1, + "additionalFields": { + "description": "descrip company" + } + }, + "name": "Salesmate", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 450, + 150 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "9e381841-e89b-4231-a1ca-b58c2b894dfc" + }, + { + "parameters": { + "resource": "company", + "operation": "get", + "id": "={{$node[\"Salesmate\"].json[\"id\"]}}" + }, + "name": "Salesmate1", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 600, + 150 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "da6626ca-4b9e-4cec-bf60-103a042ac6f3" + }, + { + "parameters": { + "resource": "company", + "operation": "update", + "id": "={{$node[\"Salesmate\"].json[\"id\"]}}", + "updateFields": { + "name": "=Updated{{$node[\"Salesmate\"].json[\"name\"]}}", + "description": "=Updated - {{$node[\"Salesmate\"].json[\"description\"]}}" + } + }, + "name": "Salesmate2", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 750, + 150 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "9aed3a7e-ec9c-4ff0-81b7-feec1f0ecb19" + }, + { + "parameters": { + "resource": "company", + "operation": "getAll", + "limit": 1, + "options": { + "fields": "id,name,description", + "sortBy": "" + }, + "filters": { + "filtersUi": { + "conditions": { + "conditionsUi": [ + { + "condition": "STARTS_WITH", + "value": "Updated" + } + ] + } + } + } + }, + "name": "Salesmate3", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 900, + 150 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "1473e087-a4e1-42da-8ef9-a3bbd86727ce" + }, + { + "parameters": { + "resource": "company", + "operation": "delete", + "id": "={{$node[\"Salesmate\"].json[\"id\"]}}" + }, + "name": "Salesmate4", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 1050, + 150 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "85405bf3-34f5-495b-9f56-3cc5c6825b89" + }, + { + "parameters": { + "resource": "deal", + "title": "=Deal{{Date.now()}}", + "owner": 1, + "primaryContact": 2, + "pipeline": "Sales", + "stage": "New (Untouched)", + "currency": "USD", + "additionalFields": { + "description": "description", + "dealValue": 100 + } + }, + "name": "Salesmate5", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "30c81868-cea1-44bd-bacf-a08b131e4a42" + }, + { + "parameters": { + "resource": "deal", + "operation": "get", + "id": "={{$node[\"Salesmate5\"].json[\"id\"]}}" + }, + "name": "Salesmate6", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "4959dbb6-bc71-4b26-87f6-9bb86829dc53" + }, + { + "parameters": { + "resource": "deal", + "operation": "update", + "id": "={{$node[\"Salesmate5\"].json[\"id\"]}}", + "updateFields": { + "title": "=Updated{{$node[\"Salesmate6\"].json[\"title\"]}}", + "status": "Lost", + "stage": "Contacted" + } + }, + "name": "Salesmate7", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "0af25087-9407-4327-bb19-85a7c468ae19" + }, + { + "parameters": { + "resource": "deal", + "operation": "getAll", + "limit": 1, + "options": { + "sortBy": "createdAt", + "sortOrder": "desc" + } + }, + "name": "Salesmate8", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "9ec365f7-9638-42dd-9aa6-9342a4dacd46" + }, + { + "parameters": { + "resource": "deal", + "operation": "delete", + "id": "={{$node[\"Salesmate5\"].json[\"id\"]}}" + }, + "name": "Salesmate9", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "97f624b7-65f4-4192-8e9d-3801ea3ca34c" + }, + { + "parameters": { + "title": "=Activity{{Date.now()}}", + "owner": 1, + "type": "meeting", + "additionalFields": { + "description": "act descrp", + "duration": 30 + } + }, + "name": "Salesmate10", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "766fead2-c755-41cc-b43d-394a57791d74" + }, + { + "parameters": { + "operation": "get", + "id": "={{$node[\"Salesmate10\"].json[\"id\"]}}" + }, + "name": "Salesmate11", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "7df4f89c-f88d-49d4-b22c-9c5caf9bef69" + }, + { + "parameters": { + "operation": "update", + "id": "={{$node[\"Salesmate10\"].json[\"id\"]}}", + "updateFields": { + "title": "=Updated{{$node[\"Salesmate11\"].json[\"title\"]}}", + "description": "Updated description", + "isCompleted": true + } + }, + "name": "Salesmate12", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 750, + 450 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "f4498a03-3082-4bba-9531-ff896042b330" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": { + "sortBy": "createdAt", + "sortOrder": "desc" + } + }, + "name": "Salesmate13", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 900, + 450 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "c2f0236f-1e0f-47bd-b53a-daf3f468e3ba" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"Salesmate10\"].json[\"id\"]}}" + }, + "name": "Salesmate14", + "type": "n8n-nodes-base.salesmate", + "typeVersion": 1, + "position": [ + 1050, + 450 + ], + "credentials": { + "salesmateApi": { + "id": "218", + "name": "Salesmate API creds" + } + }, + "id": "d602aba4-2d19-42cd-9e1c-735f2ffae4c4" + } + ], + "connections": { + "Salesmate": { + "main": [ + [ + { + "node": "Salesmate1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate1": { + "main": [ + [ + { + "node": "Salesmate2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate2": { + "main": [ + [ + { + "node": "Salesmate3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate3": { + "main": [ + [ + { + "node": "Salesmate4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate5": { + "main": [ + [ + { + "node": "Salesmate6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate6": { + "main": [ + [ + { + "node": "Salesmate7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate7": { + "main": [ + [ + { + "node": "Salesmate8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate8": { + "main": [ + [ + { + "node": "Salesmate9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate10": { + "main": [ + [ + { + "node": "Salesmate11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate11": { + "main": [ + [ + { + "node": "Salesmate12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate12": { + "main": [ + [ + { + "node": "Salesmate13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Salesmate13": { + "main": [ + [ + { + "node": "Salesmate14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Salesmate", + "type": "main", + "index": 0 + }, + { + "node": "Salesmate5", + "type": "main", + "index": 0 + }, + { + "node": "Salesmate10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/226.json b/test-workflows/workflows/226.json new file mode 100644 index 0000000000..9fae96f322 --- /dev/null +++ b/test-workflows/workflows/226.json @@ -0,0 +1,118 @@ +{ + "createdAt": "2021-07-07T14:29:45.509Z", + "updatedAt": "2021-07-09T13:40:17.209Z", + "id": "226", + "name": "UnleashedSoftware:SakesOrder:getAll:StockOnHand:getAll get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e60708c7-7fc5-4b69-9181-7dd94ce4c511" + }, + { + "parameters": { + "limit": 1, + "filters": {} + }, + "name": "Unleashed Software", + "type": "n8n-nodes-base.unleashedSoftware", + "typeVersion": 1, + "position": [ + 500, + 230 + ], + "credentials": { + "unleashedSoftwareApi": { + "id": "219", + "name": "Unleashed API creds" + } + }, + "id": "76856236-9d00-497b-a162-71621943085d" + }, + { + "parameters": { + "resource": "stockOnHand", + "limit": 1, + "filters": {} + }, + "name": "Unleashed Software1", + "type": "n8n-nodes-base.unleashedSoftware", + "typeVersion": 1, + "position": [ + 500, + 380 + ], + "credentials": { + "unleashedSoftwareApi": { + "id": "219", + "name": "Unleashed API creds" + } + }, + "id": "f5f1e555-171a-4a6c-a2c0-52c2cd763a9a" + }, + { + "parameters": { + "resource": "stockOnHand", + "operation": "get", + "productId": "={{$node[\"Unleashed Software1\"].json[\"Guid\"]}}" + }, + "name": "Unleashed Software2", + "type": "n8n-nodes-base.unleashedSoftware", + "typeVersion": 1, + "position": [ + 650, + 380 + ], + "credentials": { + "unleashedSoftwareApi": { + "id": "219", + "name": "Unleashed API creds" + } + }, + "id": "f0e49947-de25-46b8-8e00-0cc1967832a1" + } + ], + "connections": { + "Unleashed Software1": { + "main": [ + [ + { + "node": "Unleashed Software2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Unleashed Software", + "type": "main", + "index": 0 + }, + { + "node": "Unleashed Software1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/227.json b/test-workflows/workflows/227.json new file mode 100644 index 0000000000..103556acd5 --- /dev/null +++ b/test-workflows/workflows/227.json @@ -0,0 +1,165 @@ +{ + "createdAt": "2021-07-08T14:10:14.879Z", + "updatedAt": "2021-07-09T14:05:22.996Z", + "id": "227", + "name": "Flow:Task:create get getAll update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "077a12f0-e2c8-4990-bf0c-3705208c8ada" + }, + { + "parameters": { + "workspaceId": "473181", + "name": "=Task{{Date.now()}}", + "additionalFields": { + "noteContent": "Task content", + "noteMimeType": "text/plain", + "position": 1 + } + }, + "name": "Flow", + "type": "n8n-nodes-base.flow", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "flowApi": { + "id": "220", + "name": "Flow API creds" + } + }, + "id": "2a76f52f-0b77-4c76-bbca-c54e6581d13e" + }, + { + "parameters": { + "operation": "get", + "taskId": "={{$node[\"Flow\"].json[\"id\"]}}", + "filters": {} + }, + "name": "Flow1", + "type": "n8n-nodes-base.flow", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "flowApi": { + "id": "220", + "name": "Flow API creds" + } + }, + "id": "c1f80e78-bad4-457f-8b00-a239a070ca09" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Flow2", + "type": "n8n-nodes-base.flow", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "flowApi": { + "id": "220", + "name": "Flow API creds" + } + }, + "id": "5ea201ba-164f-4ed0-be1d-d893930d6568" + }, + { + "parameters": { + "operation": "update", + "workspaceId": "473181", + "taskId": "={{$node[\"Flow\"].json[\"id\"]}}", + "updateFields": { + "name": "=Updated{{$node[\"Flow1\"].json[\"task\"][\"name\"]}}", + "completed": true + } + }, + "name": "Flow3", + "type": "n8n-nodes-base.flow", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "flowApi": { + "id": "220", + "name": "Flow API creds" + } + }, + "id": "df48712d-b64d-43b8-8493-f053d5b52804" + } + ], + "connections": { + "Flow": { + "main": [ + [ + { + "node": "Flow1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Flow1": { + "main": [ + [ + { + "node": "Flow2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Flow2": { + "main": [ + [ + { + "node": "Flow3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Flow", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/229.json b/test-workflows/workflows/229.json new file mode 100644 index 0000000000..a5697ea2ab --- /dev/null +++ b/test-workflows/workflows/229.json @@ -0,0 +1,731 @@ +{ + "createdAt": "2022-09-23T13:17:35.393Z", + "updatedAt": "2022-09-23T13:17:42.056Z", + "id": "229", + "name": "GoogleDrive:Folder:create share delete:File:upload share list download copy delete copy (RL)", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 450 + ], + "id": "af503bcd-fa8c-4eaa-9c50-632c7692c6e8" + }, + { + "parameters": { + "resource": "folder", + "name": "testFolder", + "options": {} + }, + "name": "Google Drive", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 500, + 290 + ], + "id": "8b134518-c868-4ea9-8811-0a687f2485af", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "resource": "folder", + "operation": "share", + "fileId": "={{$node[\"Google Drive\"].json[\"id\"]}}", + "permissionsUi": { + "permissionsValues": { + "role": "reader", + "type": "anyone" + } + }, + "options": {} + }, + "name": "Google Drive1", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 670, + 290 + ], + "id": "b31303e6-a55d-4844-b829-35ec7b5ecfef", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "fileId": "={{$node[\"Google Drive\"].json[\"id\"]}}" + }, + "name": "Google Drive2", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 830, + 290 + ], + "id": "6868f66e-f772-4219-b633-774b1c2b621f", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "fileContent": "Test File Content", + "name": "testFile", + "options": {} + }, + "name": "Google Drive3", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 500, + 460 + ], + "id": "5a748249-c5e0-4d69-93dc-175b9f8d6416", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "share", + "fileId": "={{$node[\"Google Drive3\"].json[\"id\"]}}", + "permissionsUi": { + "permissionsValues": { + "role": "reader", + "type": "anyone" + } + }, + "options": {} + }, + "name": "Google Drive4", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 660, + 460 + ], + "id": "de39ddca-a217-4c46-b4d9-52a7eba74223", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "list", + "limit": 1, + "options": {} + }, + "name": "Google Drive5", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 820, + 460 + ], + "id": "46ef5f25-0096-4ee9-9930-ad476fcd0cb3", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "download", + "fileId": "={{$node[\"Google Drive3\"].json[\"id\"]}}", + "options": {} + }, + "name": "Google Drive6", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 960, + 460 + ], + "id": "a169ecfe-389b-41a3-8e27-e1f8e85afbc9", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "copy", + "fileId": "={{$node[\"Google Drive3\"].json[\"id\"]}}", + "options": {} + }, + "name": "Google Drive7", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1100, + 460 + ], + "id": "f4a9acb4-c943-4e96-b830-6081a55ef14b", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "delete", + "fileId": "={{$node[\"Google Drive3\"].json[\"id\"]}}" + }, + "name": "Google Drive8", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1240, + 460 + ], + "id": "b8dcbf39-f49f-4a58-8101-8effab64eb3e", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "delete", + "fileId": "={{$node[\"Google Drive7\"].json[\"id\"]}}" + }, + "name": "Google Drive9", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1380, + 460 + ], + "id": "bea4ea40-6bd8-4378-a0b0-ad17b9bd237f", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "content": "## Legacy mode", + "height": 494.0510948905113, + "width": 1240.9160583941607 + }, + "id": "4a46fffc-779d-4d3e-865c-dd165caf1b0e", + "name": "Note", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 340, + 160 + ] + }, + { + "parameters": { + "operation": "delete", + "fileId": { + "__rl": true, + "value": "={{$node[\"Google Drive18\"].json[\"id\"]}}", + "mode": "id" + } + }, + "name": "Google Drive10", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1400, + 980 + ], + "id": "b93f0486-16e4-4d59-9894-7e57cabb3a29", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "resource": "folder", + "name": "testFolder", + "options": {} + }, + "name": "Google Drive11", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 520, + 820 + ], + "id": "9785352c-2a2d-4ca1-baa7-0a310fd04413", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "resource": "folder", + "operation": "share", + "fileId": { + "__rl": true, + "value": "={{$node[\"Google Drive11\"].json[\"id\"]}}", + "mode": "id" + }, + "permissionsUi": { + "permissionsValues": { + "role": "reader", + "type": "anyone" + } + }, + "options": {} + }, + "name": "Google Drive12", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 680, + 820 + ], + "id": "a3fba084-d9c2-4311-a893-f2280313a784", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "fileId": { + "__rl": true, + "value": "={{$node[\"Google Drive11\"].json[\"id\"]}}", + "mode": "id" + } + }, + "name": "Google Drive13", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 840, + 820 + ], + "id": "2f78286f-efd2-4284-b5d4-7f58abebf896", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "fileContent": "Test File Content", + "name": "testFile", + "options": {} + }, + "name": "Google Drive14", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 520, + 980 + ], + "id": "c85b7694-685b-4fb3-bd63-46c2d5099c2e", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "share", + "fileId": { + "__rl": true, + "value": "={{$node[\"Google Drive14\"].json[\"id\"]}}", + "mode": "id" + }, + "permissionsUi": { + "permissionsValues": { + "role": "reader", + "type": "anyone" + } + }, + "options": {} + }, + "name": "Google Drive15", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 680, + 980 + ], + "id": "be2a8cd4-1e04-47cf-8073-109b7f7af275", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "list", + "limit": 1, + "options": {} + }, + "name": "Google Drive16", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 840, + 980 + ], + "id": "47d4441f-8694-46fa-8100-8b9119782ec1", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "download", + "fileId": { + "__rl": true, + "value": "={{$node[\"Google Drive14\"].json[\"id\"]}}", + "mode": "id" + }, + "options": {} + }, + "name": "Google Drive17", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 980, + 980 + ], + "id": "e4717e9d-3336-4654-9a1c-9839d6e52f92", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "copy", + "fileId": { + "__rl": true, + "value": "={{$node[\"Google Drive14\"].json[\"id\"]}}", + "mode": "id" + }, + "options": {} + }, + "name": "Google Drive18", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1120, + 980 + ], + "id": "91da5b53-a560-49dd-aac0-fe16f6c5fc09", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "operation": "delete", + "fileId": { + "__rl": true, + "value": "={{$node[\"Google Drive14\"].json[\"id\"]}}", + "mode": "id" + } + }, + "name": "Google Drive19", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1260, + 980 + ], + "id": "560163a2-ece9-48c4-a3c2-bdc8387626c1", + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + } + }, + { + "parameters": { + "content": "## With new RL mode", + "height": 494.0510948905113, + "width": 1240.9160583941607 + }, + "id": "3c49a1f7-7b5a-42fd-9b27-0b80f853e879", + "name": "Note1", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 340, + 680 + ] + } + ], + "connections": { + "Google Drive": { + "main": [ + [ + { + "node": "Google Drive1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive1": { + "main": [ + [ + { + "node": "Google Drive2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Google Drive11", + "type": "main", + "index": 0 + }, + { + "node": "Google Drive14", + "type": "main", + "index": 0 + }, + { + "node": "Google Drive3", + "type": "main", + "index": 0 + }, + { + "node": "Google Drive", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive3": { + "main": [ + [ + { + "node": "Google Drive4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive4": { + "main": [ + [ + { + "node": "Google Drive5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive5": { + "main": [ + [ + { + "node": "Google Drive6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive6": { + "main": [ + [ + { + "node": "Google Drive7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive7": { + "main": [ + [ + { + "node": "Google Drive8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive8": { + "main": [ + [ + { + "node": "Google Drive9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive11": { + "main": [ + [ + { + "node": "Google Drive12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive12": { + "main": [ + [ + { + "node": "Google Drive13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive14": { + "main": [ + [ + { + "node": "Google Drive15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive15": { + "main": [ + [ + { + "node": "Google Drive16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive16": { + "main": [ + [ + { + "node": "Google Drive17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive17": { + "main": [ + [ + { + "node": "Google Drive18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive18": { + "main": [ + [ + { + "node": "Google Drive19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive19": { + "main": [ + [ + { + "node": "Google Drive10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": {}, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/230.json b/test-workflows/workflows/230.json new file mode 100644 index 0000000000..47baf59937 --- /dev/null +++ b/test-workflows/workflows/230.json @@ -0,0 +1,73 @@ +{ + "createdAt": "2023-11-14T13:58:21.079Z", + "updatedAt": "2023-11-14T14:13:25.000Z", + "id": "230", + "name": "CredentialOnlyNodes", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "d4c2fa93-d956-4b90-86ab-e8d7e1f89057", + "name": "When clicking \"Execute Workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 1360, + 720 + ] + }, + { + "parameters": { + "curlImport": "", + "httpVariantWarning": "", + "method": "GET", + "url": "https://www.virustotal.com/api/v3/popular_threat_categories", + "": "", + "authentication": "predefinedCredentialType", + "nodeCredentialType": "virusTotalApi", + "sendQuery": false, + "sendHeaders": false, + "sendBody": false, + "options": {}, + "infoMessage": "" + }, + "id": "11ba670f-87d9-4d4a-ae47-da3fe5bb7715", + "name": "VirusTotal HTTP Request", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [ + 1580, + 720 + ], + "extendsCredential": "virusTotalApi", + "credentials": { + "virusTotalApi": { + "id": "q80wx3kiggmjWdY9", + "name": "VirusTotal account" + } + } + } + ], + "connections": { + "When clicking \"Execute Workflow\"": { + "main": [ + [ + { + "node": "VirusTotal HTTP Request", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": null, + "pinData": {}, + "versionId": "0a529bae-c8b3-416a-95fe-933383d51e59", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/231.json b/test-workflows/workflows/231.json new file mode 100644 index 0000000000..6ab26a1fb8 --- /dev/null +++ b/test-workflows/workflows/231.json @@ -0,0 +1,171 @@ +{ + "createdAt": "2024-02-14T09:47:52.177Z", + "updatedAt": "2024-02-14T09:47:52.177Z", + "id": "231", + "name": "HTTP:InvalidHostHeader HTTP:CrossDomainRedirect", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "3d7ec041-6d7c-4516-b7a0-b89dd41aca5a", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [-180, 660] + }, + { + "parameters": {}, + "id": "15c4faaf-6241-4215-8919-b66cc80f90aa", + "name": "Success", + "type": "n8n-nodes-base.noOp", + "typeVersion": 1, + "position": [720, 680] + }, + { + "parameters": { + "errorMessage": "Request was not sent, internal SSL error!" + }, + "id": "a98994f5-ad55-4a43-8121-78286e7a85b3", + "name": "Stop and Error", + "type": "n8n-nodes-base.stopAndError", + "typeVersion": 1, + "position": [680, 460] + }, + { + "parameters": { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "e4bed74d-e103-4029-ab3c-77d5ff464b36", + "leftValue": "={{ $json.error.status }}", + "rightValue": 403, + "operator": { + "type": "number", + "operation": "notExists", + "singleValue": true + } + }, + { + "id": "be1eb71b-cccc-4433-95d2-4d4e7c19a2e8", + "leftValue": "={{ $json.error.message }}", + "rightValue": "ssl", + "operator": { + "type": "string", + "operation": "contains" + } + } + ], + "combinator": "and" + }, + "options": {} + }, + "id": "acea7bc3-c611-432e-aa30-74b3a550db5f", + "name": "Internal SSL Error?", + "type": "n8n-nodes-base.if", + "typeVersion": 2, + "position": [480, 660] + }, + { + "parameters": { + "url": "https://n8n.io", + "sendHeaders": true, + "headerParameters": { + "parameters": [ + { + "name": "Host", + "value": "internal.domain" + } + ] + }, + "options": {} + }, + "id": "e3c40b1d-1d18-4dd9-9168-35a801057836", + "name": "Invalid Host header", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [260, 660], + "onError": "continueRegularOutput" + }, + { + "parameters": { + "url": "https://httpbin.org/redirect-to", + "sendQuery": true, + "queryParameters": { + "parameters": [ + { + "name": "url", + "value": "https://n8n.io" + } + ] + }, + "options": {} + }, + "id": "69d69a4d-2786-4f74-bb92-6109814eb56e", + "name": "Cross Domain Redirect", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [260, 860] + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Invalid Host header", + "type": "main", + "index": 0 + }, + { + "node": "Cross Domain Redirect", + "type": "main", + "index": 0 + } + ] + ] + }, + "Internal SSL Error?": { + "main": [ + [ + { + "node": "Stop and Error", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Success", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invalid Host header": { + "main": [ + [ + { + "node": "Internal SSL Error?", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": null, + "pinData": {}, + "versionId": "0a529bae-c8b3-416a-95fe-933383d51e59", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/233.json b/test-workflows/workflows/233.json new file mode 100644 index 0000000000..6a19eb7a96 --- /dev/null +++ b/test-workflows/workflows/233.json @@ -0,0 +1,586 @@ +{ + "createdAt": "2024-03-04T16:50:04.477Z", + "updatedAt": "2024-03-04T17:07:18.000Z", + "id": "233", + "name": "QdrantVectorStore:*", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "ec7323e1-1c71-4115-8791-dd8c572756da", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + -300, + 1080 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9`\n}" + }, + "id": "8d9f25e2-7e5a-48bb-88a9-094b3b6c4496", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + -80, + 1080 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "83756a50-a3cc-4cf7-ba40-7aa1d7636280", + "name": "Embeddings OpenAI4", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 300, + 1260 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "some-meta", + "value": "test" + }, + { + "name": "other-meta", + "value": "test2" + } + ] + } + } + }, + "id": "f6f7ddd4-5c9c-43dc-934d-960cb7f7b9bf", + "name": "Default Data Loader1", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 280, + 1460 + ] + }, + { + "parameters": { + "chunkSize": 500, + "chunkOverlap": 100 + }, + "id": "408bcff8-96bb-4801-bed1-9fcee602f6ba", + "name": "Token Splitter1", + "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter", + "typeVersion": 1, + "position": [ + 280, + 1620 + ] + }, + { + "parameters": { + "method": "DELETE", + "url": "=https://568ce518-4756-4bdf-92f8-4a35b1113346.us-east4-0.gcp.cloud.qdrant.io:6333/collections/bitcoin_wf_test_{{ $execution.id }}", + "authentication": "predefinedCredentialType", + "nodeCredentialType": "qdrantApi", + "options": {} + }, + "id": "57467b4f-9dc5-4d58-8e0d-d336b39c554b", + "name": "Delete Collection", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.1, + "position": [ + 2200, + 1080 + ], + "credentials": { + "qdrantApi": { + "id": "Ohl5AdteUC94gDYj", + "name": "QdrantApi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5f9a8751-2eb2-4ab6-8f12-b7856d9baa8a", + "name": "output_length_matches", + "value": "={{ $items().length === 12 }}", + "type": "boolean" + }, + { + "id": "a5a61e4e-ff4d-4da5-a174-9788c22cddfd", + "name": "has_content", + "value": "={{ $json.pageContent.length > 100 }}", + "type": "boolean" + }, + { + "id": "bceaea49-b29f-47d7-8a5a-14d4e02477ec", + "name": "has_meta", + "value": "={{ $items().every(i => i.json.metadata['some-meta'] === 'test' && i.json.metadata['other-meta'] === 'test2') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "f4e0bc37-c969-4df0-8e03-954143c4198f", + "name": "Check Vector Store Populated1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 680, + 1080 + ], + "executeOnce": true + }, + { + "parameters": { + "amount": 20, + "unit": "seconds" + }, + "id": "076664b6-978a-4ac9-bb9d-46a9edbf5f1a", + "name": "Wait1", + "type": "n8n-nodes-base.wait", + "typeVersion": 1, + "position": [ + 920, + 1080 + ], + "webhookId": "c3d05369-6071-4592-87eb-36d57c60851b" + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5f9a8751-2eb2-4ab6-8f12-b7856d9baa8a", + "name": "output_length_matches", + "value": "={{ $items().length === 4 }}", + "type": "boolean" + }, + { + "id": "a5a61e4e-ff4d-4da5-a174-9788c22cddfd", + "name": "has_content", + "value": "={{ $json.document.pageContent.length > 100 }}", + "type": "boolean" + }, + { + "id": "bceaea49-b29f-47d7-8a5a-14d4e02477ec", + "name": "has_meta", + "value": "={{ $items().every(i => i.json.document.metadata['some-meta'] === 'test' && i.json.document.metadata['other-meta'] === 'test2') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "bf2e6350-6d64-41cc-bcc4-8b07d6f02d63", + "name": "Check Vector Store Retrieval1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1500, + 1080 + ], + "executeOnce": true + }, + { + "parameters": { + "promptType": "define", + "text": "What is the size of a block header with no transactions? Respond only with number of bytes." + }, + "id": "5dbcc385-e3e9-4208-9bef-72fdfee4eb3e", + "name": "Question and Answer Chain1", + "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa", + "typeVersion": 1.5, + "position": [ + 1700, + 1080 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "2ff4fe0e-e9f5-4250-a36f-5290dd5c7940", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1700, + 1280 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "id": "b192d5f4-0d57-4dac-99c8-bef2b3b4d20a", + "name": "Vector Store Retriever1", + "type": "@n8n/n8n-nodes-langchain.retrieverVectorStore", + "typeVersion": 1, + "position": [ + 1780, + 1280 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "a97eac02-2008-46a4-a21c-3f4ddb473f21", + "name": "Embeddings OpenAI3", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1720, + 1580 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "d998ae3e-192c-45ff-a3ff-ad3ed3a20304", + "name": "output_matches", + "value": "={{ $json.response.includes('80') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "969f8ee8-b3be-4a66-8088-8d9629867c22", + "name": "Edit Fields1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 2040, + 1080 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "a8fce256-50b2-4d70-b3a3-ee5aa9fa2c9b", + "name": "Embeddings OpenAI5", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1140, + 1300 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "mode": "insert", + "qdrantCollection": { + "__rl": true, + "value": "=bitcoin_wf_test_{{ $execution.id }}", + "mode": "id" + }, + "options": {} + }, + "id": "69a471a7-969f-47ef-9e52-4667c943a69f", + "name": "Qdrant Vector Store", + "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant", + "typeVersion": 1, + "position": [ + 280, + 1080 + ], + "credentials": { + "qdrantApi": { + "id": "Ohl5AdteUC94gDYj", + "name": "QdrantApi account" + } + } + }, + { + "parameters": { + "qdrantCollection": { + "__rl": true, + "value": "=bitcoin_wf_test_{{ $execution.id }}", + "mode": "id" + } + }, + "id": "43ac7a37-abd1-4b7c-bfdc-e096bda87de6", + "name": "Qdrant Vector Store2", + "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant", + "typeVersion": 1, + "position": [ + 1720, + 1440 + ], + "credentials": { + "qdrantApi": { + "id": "Ohl5AdteUC94gDYj", + "name": "QdrantApi account" + } + } + }, + { + "parameters": { + "mode": "load", + "qdrantCollection": { + "__rl": true, + "value": "=bitcoin_wf_test_{{ $execution.id }}", + "mode": "id" + }, + "prompt": "Security risks" + }, + "id": "f1a6871e-cc9f-4f36-93f8-15dba0d4687f", + "name": "Qdrant Vector Store1", + "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant", + "typeVersion": 1, + "position": [ + 1140, + 1080 + ], + "credentials": { + "qdrantApi": { + "id": "Ohl5AdteUC94gDYj", + "name": "QdrantApi account" + } + } + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI4": { + "ai_embedding": [ + [ + { + "node": "Qdrant Vector Store", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Default Data Loader1": { + "ai_document": [ + [ + { + "node": "Qdrant Vector Store", + "type": "ai_document", + "index": 0 + } + ] + ] + }, + "Token Splitter1": { + "ai_textSplitter": [ + [ + { + "node": "Default Data Loader1", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "Check Vector Store Populated1": { + "main": [ + [ + { + "node": "Wait1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wait1": { + "main": [ + [ + { + "node": "Qdrant Vector Store1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Check Vector Store Retrieval1": { + "main": [ + [ + { + "node": "Question and Answer Chain1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Question and Answer Chain1": { + "main": [ + [ + { + "node": "Edit Fields1", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Question and Answer Chain1", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Vector Store Retriever1": { + "ai_retriever": [ + [ + { + "node": "Question and Answer Chain1", + "type": "ai_retriever", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI3": { + "ai_embedding": [ + [ + { + "node": "Qdrant Vector Store2", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Edit Fields1": { + "main": [ + [ + { + "node": "Delete Collection", + "type": "main", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI5": { + "ai_embedding": [ + [ + { + "node": "Qdrant Vector Store1", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Qdrant Vector Store": { + "main": [ + [ + { + "node": "Check Vector Store Populated1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Qdrant Vector Store2": { + "ai_vectorStore": [ + [ + { + "node": "Vector Store Retriever1", + "type": "ai_vectorStore", + "index": 0 + } + ] + ] + }, + "Qdrant Vector Store1": { + "main": [ + [ + { + "node": "Check Vector Store Retrieval1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [ + { + "node": "Qdrant Vector Store", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "163d5463-a0ba-476b-bdf1-75ff7d306534", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/234.json b/test-workflows/workflows/234.json new file mode 100644 index 0000000000..cc59cf691c --- /dev/null +++ b/test-workflows/workflows/234.json @@ -0,0 +1,91 @@ +{ + "createdAt": "2024-03-04T20:43:54.193Z", + "updatedAt": "2024-03-04T20:43:57.000Z", + "id": "234", + "name": "BasicLLMChain:MistralChat", + "active": false, + "nodes": [ + { + "parameters": { + "model": "mistral-tiny", + "options": { + "temperature": 0 + } + }, + "id": "e825ced6-f1d5-47ab-8aa7-b6c6959732f9", + "name": "Mistral Cloud Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud", + "typeVersion": 1, + "position": [ + 1180, + 720 + ], + "credentials": { + "mistralCloudApi": { + "id": "Rl7R5orXMm9FvxZS", + "name": "Mistral Cloud account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "How much is 1+1? Only provide the numerical answer without any other text.\n" + }, + "id": "32c781c6-ce33-4ab5-bbd8-14651968daab", + "name": "Mistral Cloud Chat", + "type": "@n8n/n8n-nodes-langchain.chainLlm", + "typeVersion": 1.5, + "position": [ + 1160, + 560 + ] + }, + { + "parameters": {}, + "id": "72dd7380-7254-4934-9562-f278a776dedd", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 980, + 560 + ] + } + ], + "connections": { + "Mistral Cloud Chat Model": { + "ai_languageModel": [ + [ + { + "node": "Mistral Cloud Chat", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Mistral Cloud Chat", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "4bd59e87-bd2e-42ad-976d-6bf03535cf86", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/235.json b/test-workflows/workflows/235.json new file mode 100644 index 0000000000..0da017bd99 --- /dev/null +++ b/test-workflows/workflows/235.json @@ -0,0 +1,231 @@ +{ + "createdAt": "2024-03-04T20:39:24.374Z", + "updatedAt": "2024-03-04T20:39:59.000Z", + "id": "235", + "name": "SummarizationChain:Simple:Map", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "7040b003-e694-4251-9dad-f4245966cfdf", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 1120, + 600 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".`\n}" + }, + "id": "97eb5104-6741-4330-ac11-4c5776aedd79", + "name": "Set Article", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 1540, + 600 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "42de18cf-1320-4f45-bb11-d28523c88a43", + "name": "OpenAI Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1760, + 760 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "6fa592a3-1cfe-42d7-8d45-a7ec80871e52", + "name": "baseline_summary", + "value": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "b7f4e65c-2f5b-41eb-bffd-aeb1ec9919b4", + "name": "Set Baseline", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1340, + 600 + ] + }, + { + "parameters": { + "chunkSize": 4000, + "options": {} + }, + "id": "584d9374-ce54-42df-9c88-b996754e8967", + "name": "Summary - Simple - Map", + "type": "@n8n/n8n-nodes-langchain.chainSummarization", + "typeVersion": 2, + "position": [ + 1740, + 600 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "beaf320b-b14d-44a9-b7f3-1d4379875531", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 2080, + 760 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "code": { + "execute": { + "code": "const { loadEvaluator } = require(\"langchain/evaluation\");\n\nconst llm = await this.getInputConnectionData('ai_languageModel', 0);\nconst inputData = this.getInputData();\nconst inputSummary = inputData[0].json.response.text;\nconst baselineSummary = $('Set Baseline').item.json.baseline_summary\n\nconst evaluator = await loadEvaluator(\"labeled_criteria\", { criteria: 'helpfulness', llm });\n\nconst result = await evaluator.evaluateStrings({\n input: \"Summarize Wikipedia article about the dancing plague of 1518\",\n prediction: inputSummary,\n reference: baselineSummary,\n});\n\n\nreturn [ {json: { ...result } } ];" + } + }, + "inputs": { + "input": [ + { + "type": "main", + "maxConnections": 1, + "required": true + }, + { + "type": "ai_languageModel", + "maxConnections": 1, + "required": true + } + ] + }, + "outputs": { + "output": [ + { + "type": "main" + } + ] + } + }, + "id": "b3f8e974-8f56-4cfe-ae9d-dd0906bb87c4", + "name": "Evaluate to Baseline", + "type": "@n8n/n8n-nodes-langchain.code", + "typeVersion": 1, + "position": [ + 2060, + 600 + ] + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Set Baseline", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set Article": { + "main": [ + [ + { + "node": "Summary - Simple - Map", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "Summary - Simple - Map", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Set Baseline": { + "main": [ + [ + { + "node": "Set Article", + "type": "main", + "index": 0 + } + ] + ] + }, + "Summary - Simple - Map": { + "main": [ + [ + { + "node": "Evaluate to Baseline", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Evaluate to Baseline", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "1a8926d6-06a6-4c15-8384-bd74ae4bd8df", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/236.json b/test-workflows/workflows/236.json new file mode 100644 index 0000000000..3099e44a9e --- /dev/null +++ b/test-workflows/workflows/236.json @@ -0,0 +1,258 @@ +{ + "createdAt": "2024-03-04T20:41:16.554Z", + "updatedAt": "2024-03-04T20:41:34.000Z", + "id": "236", + "name": "SummarizationChain:Simple:Map:Binary", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "a7c6c0bc-acbc-49bd-8ec8-5075e638d0b9", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 280, + 880 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".`\n}" + }, + "id": "6b758d00-fd86-465e-abc6-9a4d97a611a9", + "name": "Set Article", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 700, + 880 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "d3f2e53d-c5dd-42b8-b10f-2b2fa2f37ef6", + "name": "OpenAI Chat Model4", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1140, + 1020 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "418a75ed-c4aa-46a1-96d9-f2a3f9c55ab9", + "name": "OpenAI Chat Model5", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1500, + 1020 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "operation": "toJson", + "options": {} + }, + "id": "99c931ba-5d76-443a-bd26-1115b4e59474", + "name": "Convert to File", + "type": "n8n-nodes-base.convertToFile", + "typeVersion": 1.1, + "position": [ + 900, + 880 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "6fa592a3-1cfe-42d7-8d45-a7ec80871e52", + "name": "baseline_summary", + "value": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "1c363506-92cd-40d2-b7bd-8245a532cd27", + "name": "Set Baseline", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 500, + 880 + ] + }, + { + "parameters": { + "operationMode": "nodeInputBinary", + "chunkSize": 4000, + "chunkOverlap": 100, + "options": {} + }, + "id": "9d6d0cac-034e-42ed-90fb-d9c2cfe0166f", + "name": "Summary - Simple - Map - Binary", + "type": "@n8n/n8n-nodes-langchain.chainSummarization", + "typeVersion": 2, + "position": [ + 1120, + 880 + ] + }, + { + "parameters": { + "code": { + "execute": { + "code": "const { loadEvaluator } = require(\"langchain/evaluation\");\n\nconst llm = await this.getInputConnectionData('ai_languageModel', 0);\nconst inputData = this.getInputData();\nconst inputSummary = inputData[0].json.response.text;\nconst baselineSummary = $('Set Baseline').item.json.baseline_summary\n\n\nconst evaluator = await loadEvaluator(\"labeled_criteria\", { criteria: 'helpfulness', llm });\n\nconst result = await evaluator.evaluateStrings({\n input: \"Summarize Wikipedia article about the dancing plague of 1518\",\n prediction: inputSummary,\n reference: baselineSummary,\n});\n\n\nreturn [ {json: { ...result } } ];" + } + }, + "inputs": { + "input": [ + { + "type": "main", + "maxConnections": 1, + "required": true + }, + { + "type": "ai_languageModel", + "maxConnections": 1, + "required": true + } + ] + }, + "outputs": { + "output": [ + { + "type": "main" + } + ] + } + }, + "id": "f7e12c5f-6445-4924-8fc7-c426d21549ed", + "name": "Evaluate to Baseline", + "type": "@n8n/n8n-nodes-langchain.code", + "typeVersion": 1, + "position": [ + 1480, + 880 + ] + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Set Baseline", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set Article": { + "main": [ + [ + { + "node": "Convert to File", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model4": { + "ai_languageModel": [ + [ + { + "node": "Summary - Simple - Map - Binary", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model5": { + "ai_languageModel": [ + [ + { + "node": "Evaluate to Baseline", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Convert to File": { + "main": [ + [ + { + "node": "Summary - Simple - Map - Binary", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set Baseline": { + "main": [ + [ + { + "node": "Set Article", + "type": "main", + "index": 0 + } + ] + ] + }, + "Summary - Simple - Map - Binary": { + "main": [ + [ + { + "node": "Evaluate to Baseline", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "240bf55b-10e5-451c-9b81-3567130e2ef1", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/237.json b/test-workflows/workflows/237.json new file mode 100644 index 0000000000..5471aac0d6 --- /dev/null +++ b/test-workflows/workflows/237.json @@ -0,0 +1,91 @@ +{ + "createdAt": "2024-03-04T20:43:01.452Z", + "updatedAt": "2024-03-04T20:43:03.000Z", + "id": "237", + "name": "BasicLLMChain:AzureChat", + "active": false, + "nodes": [ + { + "parameters": { + "model": "gpt4", + "options": { + "temperature": 0 + } + }, + "id": "982999e9-1191-4c74-8292-9f43d19a602b", + "name": "Azure OpenAI Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi", + "typeVersion": 1, + "position": [ + 700, + 600 + ], + "credentials": { + "azureOpenAiApi": { + "id": "RNAgogiex4JxTr44", + "name": "Azure Open AI account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "How much is 1+1? Only provide the numerical answer without any other text.\n" + }, + "id": "6684c985-3943-4099-a7b1-c8cc51f3d9f8", + "name": "Azure OpenAI Chat", + "type": "@n8n/n8n-nodes-langchain.chainLlm", + "typeVersion": 1.5, + "position": [ + 680, + 460 + ] + }, + { + "parameters": {}, + "id": "fa8334bf-da22-4d69-b3f4-97b62c278158", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 460, + 460 + ] + } + ], + "connections": { + "Azure OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "Azure OpenAI Chat", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Azure OpenAI Chat", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "3272c26f-5a33-4f48-99ac-bfef95f28dcf", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/238.json b/test-workflows/workflows/238.json new file mode 100644 index 0000000000..836849eb10 --- /dev/null +++ b/test-workflows/workflows/238.json @@ -0,0 +1,95 @@ +{ + "createdAt": "2024-03-04T20:44:21.362Z", + "updatedAt": "2024-03-04T20:44:21.362Z", + "id": "238", + "name": "BasicLLMChain:OpenAIInstruct", + "active": false, + "nodes": [ + { + "parameters": { + "model": { + "__rl": true, + "mode": "list", + "value": "gpt-3.5-turbo-instruct" + }, + "options": { + "temperature": 0 + } + }, + "id": "086e03aa-f941-4dbc-9794-d418893efd48", + "name": "OpenAI Model", + "type": "@n8n/n8n-nodes-langchain.lmOpenAi", + "typeVersion": 1, + "position": [ + 660, + 600 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "How much is 1+1? Only provide the numerical answer without any other text.\n\n" + }, + "id": "3d36ca4b-ca52-4c76-8729-2d1416b97254", + "name": "Open AI Instruct", + "type": "@n8n/n8n-nodes-langchain.chainLlm", + "typeVersion": 1.5, + "position": [ + 640, + 460 + ] + }, + { + "parameters": {}, + "id": "6b6a91f3-cb8a-474b-8db8-e4309bd25d92", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 460, + 460 + ] + } + ], + "connections": { + "OpenAI Model": { + "ai_languageModel": [ + [ + { + "node": "Open AI Instruct", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Open AI Instruct", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "c923851b-a7a2-4c7f-895c-d90f994d3e3a", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/239.json b/test-workflows/workflows/239.json new file mode 100644 index 0000000000..0b976e1741 --- /dev/null +++ b/test-workflows/workflows/239.json @@ -0,0 +1,116 @@ +{ + "createdAt": "2024-03-04T20:32:15.867Z", + "updatedAt": "2024-03-13T13:43:09.000Z", + "id": "239", + "name": "Agent:PlanAndExecute", + "active": false, + "nodes": [ + { + "parameters": { + "model": "gpt-4-turbo-preview", + "options": { + "temperature": 0 + } + }, + "id": "9ecb9fc6-c634-4915-ae30-f4a40679200c", + "name": "OpenAI Chat Model3", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1020, + 760 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + }, + "notes": "IGNORED_PROPERTIES=messages" + }, + { + "parameters": {}, + "id": "28f13be4-fc17-4e04-8518-bf98272ea7b7", + "name": "Calculator3", + "type": "@n8n/n8n-nodes-langchain.toolCalculator", + "typeVersion": 1, + "position": [ + 1180, + 780 + ] + }, + { + "parameters": {}, + "id": "ebd19bad-5412-4e5b-9cbc-92d85e98f517", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 760, + 620 + ] + }, + { + "parameters": { + "agent": "planAndExecuteAgent", + "promptType": "define", + "text": "What is the result of 30 + (10002200 / 100)? Only respond with a number.", + "options": {} + }, + "id": "1b397e30-5061-44dd-b6fc-c7100c8c791d", + "name": "AI Agent3", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.4, + "position": [ + 1000, + 620 + ] + } + ], + "connections": { + "OpenAI Chat Model3": { + "ai_languageModel": [ + [ + { + "node": "AI Agent3", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Calculator3": { + "ai_tool": [ + [ + { + "node": "AI Agent3", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "d420104e-1ac2-45a5-b173-e97a7726178f", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/240.json b/test-workflows/workflows/240.json new file mode 100644 index 0000000000..e9b6a22352 --- /dev/null +++ b/test-workflows/workflows/240.json @@ -0,0 +1,237 @@ +{ + "createdAt": "2024-03-04T20:38:02.224Z", + "updatedAt": "2024-03-04T20:38:20.000Z", + "id": "240", + "name": "SummarizationChain:Simpe:Refine", + "active": false, + "nodes": [ + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "45a1f508-8bdc-4a59-8245-b910beddac70", + "name": "OpenAI Chat Model2", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1440, + 640 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "id": "b1cb6eaf-16f0-4f57-b09d-6893e5c52570", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 620, + 500 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".`\n}" + }, + "id": "33936a84-0d38-4fee-9811-7dc020970e73", + "name": "Set Article", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 1040, + 500 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "6fa592a3-1cfe-42d7-8d45-a7ec80871e52", + "name": "baseline_summary", + "value": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "0b869175-1a99-4a50-a29b-79aefb30159f", + "name": "Set Baseline", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 840, + 500 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "57d75d06-da61-4a0a-a917-b076cd1e291e", + "name": "OpenAI Chat Model9", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1760, + 660 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "chunkSize": 4000, + "options": { + "summarizationMethodAndPrompts": { + "values": { + "summarizationMethod": "refine" + } + } + } + }, + "id": "eec9288f-1e8e-4331-9ee6-e57fa207be5b", + "name": "Summary - Simple - Refine", + "type": "@n8n/n8n-nodes-langchain.chainSummarization", + "typeVersion": 2, + "position": [ + 1420, + 500 + ] + }, + { + "parameters": { + "code": { + "execute": { + "code": "const { loadEvaluator } = require(\"langchain/evaluation\");\n\nconst llm = await this.getInputConnectionData('ai_languageModel', 0);\nconst inputData = this.getInputData();\nconst inputSummary = inputData[0].json.response.text;\nconst baselineSummary = $('Set Baseline').item.json.baseline_summary;\n\nconst evaluator = await loadEvaluator(\"labeled_criteria\", { criteria: 'helpfulness', llm });\n\nconst result = await evaluator.evaluateStrings({\n input: \"Summarize Wikipedia article about the dancing plague of 1518\",\n prediction: inputSummary,\n reference: baselineSummary,\n});\n\n\nreturn [ {json: { ...result } } ];" + } + }, + "inputs": { + "input": [ + { + "type": "main", + "maxConnections": 1, + "required": true + }, + { + "type": "ai_languageModel", + "maxConnections": 1, + "required": true + } + ] + }, + "outputs": { + "output": [ + { + "type": "main" + } + ] + } + }, + "id": "2102e067-5b8a-44aa-9362-4db63fac06c2", + "name": "Evaluate to Baseline4", + "type": "@n8n/n8n-nodes-langchain.code", + "typeVersion": 1, + "position": [ + 1740, + 500 + ] + } + ], + "connections": { + "OpenAI Chat Model2": { + "ai_languageModel": [ + [ + { + "node": "Summary - Simple - Refine", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Set Baseline", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set Article": { + "main": [ + [ + { + "node": "Summary - Simple - Refine", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set Baseline": { + "main": [ + [ + { + "node": "Set Article", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model9": { + "ai_languageModel": [ + [ + { + "node": "Evaluate to Baseline4", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Summary - Simple - Refine": { + "main": [ + [ + { + "node": "Evaluate to Baseline4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "f5380d94-5641-4fce-857c-f5903700382c", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/241.json b/test-workflows/workflows/241.json new file mode 100644 index 0000000000..141ceef3f1 --- /dev/null +++ b/test-workflows/workflows/241.json @@ -0,0 +1,157 @@ +{ + "createdAt": "2024-03-04T20:33:51.500Z", + "updatedAt": "2024-03-13T13:41:47.000Z", + "id": "241", + "name": "Agent:OpenAiFunctions", + "active": false, + "nodes": [ + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "a2807ad9-7402-47a8-baf8-3ba8feea2494", + "name": "calculator_called", + "value": "={{ $json.intermediateSteps.filter(a => a.action.tool === 'calculator').length >= 1 }}", + "type": "boolean" + }, + { + "id": "29ca8b14-ce95-4497-85eb-687db33ecd06", + "name": "has_correct_output", + "value": "={{ $json.output.includes('100052') }}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "19c7f30c-1234-4dac-8635-59f3101a9dd5", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1240, + 760 + ] + }, + { + "parameters": { + "options": { + "temperature": 0 + } + }, + "id": "704163e9-dee9-4d4f-97b8-9681b050af21", + "name": "OpenAI Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 920, + 900 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + }, + "notes": "IGNORED_PROPERTIES=messages" + }, + { + "parameters": {}, + "id": "44f670cc-c4e9-44fc-8870-18955f727be1", + "name": "Calculator", + "type": "@n8n/n8n-nodes-langchain.toolCalculator", + "typeVersion": 1, + "position": [ + 1080, + 920 + ] + }, + { + "parameters": {}, + "id": "f036de64-49fa-4854-89b7-2679f6e3cf59", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 700, + 760 + ] + }, + { + "parameters": { + "agent": "openAiFunctionsAgent", + "promptType": "define", + "text": "What is the result of 30 + (10002200 / 100)? Only respond with a number.", + "options": { + "returnIntermediateSteps": true + } + }, + "id": "f0129970-11c7-45c6-9665-28498c9c87dd", + "name": "AI Agent", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.7, + "position": [ + 900, + 760 + ] + } + ], + "connections": { + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "AI Agent", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Calculator": { + "ai_tool": [ + [ + { + "node": "AI Agent", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent", + "type": "main", + "index": 0 + } + ] + ] + }, + "AI Agent": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "92205881-151a-4e66-acd1-31f2d4e3a58c", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/242.json b/test-workflows/workflows/242.json new file mode 100644 index 0000000000..11254c5ce4 --- /dev/null +++ b/test-workflows/workflows/242.json @@ -0,0 +1,115 @@ +{ + "createdAt": "2024-03-04T20:50:20.300Z", + "updatedAt": "2024-03-04T20:55:07.000Z", + "id": "242", + "name": "BasicLLMChain:OutputParser", + "active": false, + "nodes": [ + { + "parameters": { + "options": { + "temperature": 0 + } + }, + "id": "e130434b-6283-473c-a61d-fbbe26b63acb", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1380, + 720 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "id": "b712a9c6-575e-4026-a6a0-83590c959267", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 1180, + 560 + ] + }, + { + "parameters": { + "jsonSchema": "{\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"state_name\": \"string\",\n \"capital\": \"string\",\n \"electoral_college_votes\": \"number\"\n }\n }\n}" + }, + "id": "6db310a2-11ca-4097-92cb-ec9a6a6da51e", + "name": "Structured Output Parser1", + "type": "@n8n/n8n-nodes-langchain.outputParserStructured", + "typeVersion": 1.2, + "position": [ + 1540, + 720 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "What are the top 5 states of US by population?", + "hasOutputParser": true + }, + "id": "2a8ca922-5da0-4065-b999-640fd678b0d3", + "name": "Open AI Chat - Output Parsing", + "type": "@n8n/n8n-nodes-langchain.chainLlm", + "typeVersion": 1.5, + "position": [ + 1360, + 560 + ] + } + ], + "connections": { + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Open AI Chat - Output Parsing", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Open AI Chat - Output Parsing", + "type": "main", + "index": 0 + } + ] + ] + }, + "Structured Output Parser1": { + "ai_outputParser": [ + [ + { + "node": "Open AI Chat - Output Parsing", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "e3bbc2b0-e9cd-431d-89b4-c39db2989e8f", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/243.json b/test-workflows/workflows/243.json new file mode 100644 index 0000000000..193f871ac7 --- /dev/null +++ b/test-workflows/workflows/243.json @@ -0,0 +1,157 @@ +{ + "createdAt": "2024-03-04T20:32:40.367Z", + "updatedAt": "2024-03-13T13:41:09.000Z", + "id": "243", + "name": "Agent:ReAct", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "35b58a63-6835-4724-807f-47e24215f4c2", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 840, + 900 + ] + }, + { + "parameters": { + "options": { + "temperature": 0 + } + }, + "id": "9dd9723f-2e8f-463b-b88e-20ba4298f538", + "name": "OpenAI Chat Model2", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1060, + 1040 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + }, + "notes": "IGNORED_PROPERTIES=messages" + }, + { + "parameters": {}, + "id": "223ed022-94bd-4b31-bf12-5c79d9b635a9", + "name": "Calculator2", + "type": "@n8n/n8n-nodes-langchain.toolCalculator", + "typeVersion": 1, + "position": [ + 1220, + 1060 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "a2807ad9-7402-47a8-baf8-3ba8feea2494", + "name": "calculator_called", + "value": "={{ $json.intermediateSteps.filter(a => a.action.tool === 'calculator').length >= 1 }}", + "type": "boolean" + }, + { + "id": "29ca8b14-ce95-4497-85eb-687db33ecd06", + "name": "has_correct_output", + "value": "={{ $json.output.includes('100052') }}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "473e1db4-8d90-49e3-99ae-444d7c5d8cf0", + "name": "Edit Fields2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1380, + 900 + ] + }, + { + "parameters": { + "agent": "reActAgent", + "promptType": "define", + "text": "What is the result of 30 + (10002200 / 100)? Only respond with a number.", + "options": { + "returnIntermediateSteps": true + } + }, + "id": "3fa65db7-000e-427f-aab9-14af134d0d78", + "name": "AI Agent2", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.4, + "position": [ + 1040, + 900 + ] + } + ], + "connections": { + "OpenAI Chat Model2": { + "ai_languageModel": [ + [ + { + "node": "AI Agent2", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Calculator2": { + "ai_tool": [ + [ + { + "node": "AI Agent2", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent2", + "type": "main", + "index": 0 + } + ] + ] + }, + "AI Agent2": { + "main": [ + [ + { + "node": "Edit Fields2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "aeb32e87-d821-4885-ab26-58321ad2d0a4", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/244.json b/test-workflows/workflows/244.json new file mode 100644 index 0000000000..d1d44e1f05 --- /dev/null +++ b/test-workflows/workflows/244.json @@ -0,0 +1,351 @@ +{ + "createdAt": "2024-03-04T20:35:31.373Z", + "updatedAt": "2024-03-04T20:36:25.000Z", + "id": "244", + "name": "Agent:WorkflowTool", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "e01e31b1-1114-4384-b88d-522337a0010b", + "name": "Execute Workflow Trigger", + "type": "n8n-nodes-base.executeWorkflowTrigger", + "typeVersion": 1, + "position": [ + 200, + 800 + ] + }, + { + "parameters": { + "rules": { + "values": [ + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "leftValue": "={{ $json.tool }}", + "rightValue": "get_weather", + "operator": { + "type": "string", + "operation": "equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Weather" + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "a164188f-3b5b-4c24-b1bb-e589f4f9219f", + "leftValue": "={{ $json.tool }}", + "rightValue": "get_events", + "operator": { + "type": "string", + "operation": "equals", + "name": "filter.operator.equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Events" + } + ] + }, + "options": {} + }, + "id": "a8741e96-bff4-463c-9dd0-ffba5b9877b3", + "name": "Switch", + "type": "n8n-nodes-base.switch", + "typeVersion": 3, + "position": [ + 420, + 800 + ] + }, + { + "parameters": { + "name": "get_weather_data", + "description": "Call this tool to get weather information for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".", + "workflowId": "={{ $workflow.id }}", + "fields": { + "values": [ + { + "name": "tool", + "stringValue": "get_weather" + } + ] + } + }, + "id": "d35195a4-f609-467d-9cca-b659e5f76c2b", + "name": "Get Weather", + "type": "@n8n/n8n-nodes-langchain.toolWorkflow", + "typeVersion": 1, + "position": [ + 620, + 620 + ] + }, + { + "parameters": { + "name": "get_evens", + "description": "Call this tool to get upcoming events for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".", + "workflowId": "={{ $workflow.id }}", + "fields": { + "values": [ + { + "name": "tool", + "stringValue": "get_events" + } + ] + } + }, + "id": "8214ad91-530b-49a1-874b-42d31d1d9e87", + "name": "Get Events", + "type": "@n8n/n8n-nodes-langchain.toolWorkflow", + "typeVersion": 1, + "position": [ + 720, + 620 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "fc61cf88-967d-4433-9cfd-7cdad1a43e75", + "name": "response", + "value": "={\n \"created\": \"2024-03-04T09:26:23+01:00\",\n \"symbolCode\": {\n \"next1Hour\": \"fog\"\n },\n \"temperature\": {\n \"value\": 5.1,\n \"feelsLike\": 4\n },\n \"precipitation\": {\n \"value\": 0.0\n },\n \"wind\": {\n \"direction\": 275,\n \"speed\": 1.7\n },\n \"status\": {\n \"code\": \"Ok\"\n }\n}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "cdb19b9d-9665-4b66-bda7-1b4f8191dad0", + "name": "Edit Fields4", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 700, + 760 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "0434695d-b245-4947-8b6e-7676a5c92904", + "name": "response", + "value": "=[\n {\n \"description\": \"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\n\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\",\n \"name\": \"Movie Barf: Dune – Part Two\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\",\n \"name\": \"Luboš Pospíšil & 5P\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\",\n \"name\": \"Fight Club\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\",\n \"name\": \"Poor Things\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\",\n \"name\": \"Tribute to World Legends: Michael Jackson\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n }\n]", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "44e58855-7ff7-4f80-9092-f6ed72274874", + "name": "Edit Fields5", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 700, + 920 + ] + }, + { + "parameters": { + "model": "gpt-4-turbo-preview", + "options": { + "temperature": 0 + } + }, + "id": "2fecb46d-8bff-4884-9e73-bd787a6b1ece", + "name": "OpenAI Chat Model4", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 480, + 620 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + }, + "notes": "IGNORED_PROPERTIES=messages" + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "has_weather", + "value": "={{ $json.output.includes('5.1') }}", + "type": "boolean" + }, + { + "id": "4f055fa4-10eb-4b7e-b1dc-37a7ef7185fc", + "name": "has_movie", + "value": "={{ $json.output.includes('Dune') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "32628916-d991-459a-8ad6-07396f0c629e", + "name": "Edit Fields6", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 840, + 460 + ] + }, + { + "parameters": { + "agent": "reActAgent", + "promptType": "define", + "text": "Help me plan my day in Berlin, Germany\n1. Check current the weather \n2. Get the upcoming events\n3. Respond with weather and details about the upcoming events\n\nEach tool should only be called once.", + "options": {} + }, + "id": "367e796c-9c91-42a6-9585-bb9f19c2969a", + "name": "AI Agent4", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.5, + "position": [ + 460, + 460 + ] + }, + { + "parameters": {}, + "id": "84833733-c87b-442c-9be1-26315056a205", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 200, + 460 + ] + } + ], + "connections": { + "Execute Workflow Trigger": { + "main": [ + [ + { + "node": "Switch", + "type": "main", + "index": 0 + } + ] + ] + }, + "Switch": { + "main": [ + [ + { + "node": "Edit Fields4", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Edit Fields5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Get Weather": { + "ai_tool": [ + [ + { + "node": "AI Agent4", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "Get Events": { + "ai_tool": [ + [ + { + "node": "AI Agent4", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model4": { + "ai_languageModel": [ + [ + { + "node": "AI Agent4", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "AI Agent4": { + "main": [ + [ + { + "node": "Edit Fields6", + "type": "main", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "058fe472-fd5e-4fab-8f4d-1363d4adbbdb", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/245.json b/test-workflows/workflows/245.json new file mode 100644 index 0000000000..cd6325f735 --- /dev/null +++ b/test-workflows/workflows/245.json @@ -0,0 +1,91 @@ +{ + "createdAt": "2024-03-04T20:43:29.800Z", + "updatedAt": "2024-03-04T20:43:37.000Z", + "id": "245", + "name": "BasicLLMChain:AwsBedrockChat", + "active": false, + "nodes": [ + { + "parameters": { + "model": "amazon.titan-text-lite-v1", + "options": { + "temperature": 0 + } + }, + "id": "6610aac2-0d86-4d20-a625-072403cc1d15", + "name": "AWS Bedrock Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatAwsBedrock", + "typeVersion": 1, + "position": [ + 680, + 600 + ], + "credentials": { + "aws": { + "id": "124", + "name": "AWS creds" + } + } + }, + { + "parameters": {}, + "id": "9e52b4d5-5e83-4d6a-a31e-e9408728bb77", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 460, + 460 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "How much is 1+1? Only provide the numerical answer without any other text.\n" + }, + "id": "8899ab4b-9fab-4c92-8e17-7601117fc3fc", + "name": "AWS Bedrock Chat", + "type": "@n8n/n8n-nodes-langchain.chainLlm", + "typeVersion": 1.5, + "position": [ + 660, + 460 + ] + } + ], + "connections": { + "AWS Bedrock Chat Model": { + "ai_languageModel": [ + [ + { + "node": "AWS Bedrock Chat", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AWS Bedrock Chat", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "ed68041a-90c9-4900-8307-74bede290f62", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/246.json b/test-workflows/workflows/246.json new file mode 100644 index 0000000000..8783a14996 --- /dev/null +++ b/test-workflows/workflows/246.json @@ -0,0 +1,91 @@ +{ + "createdAt": "2024-03-04T20:44:38.763Z", + "updatedAt": "2024-03-04T20:44:44.000Z", + "id": "246", + "name": "BasicLLMChain:OpenAIChat", + "active": false, + "nodes": [ + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "7b0bb72a-9a3e-4dbf-a875-cdc429bf333a", + "name": "OpenAI Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 640, + 600 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "id": "4832e182-9823-45c4-9289-51299debbe4c", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 460, + 460 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "How much is 1+1? Only provide the numerical answer without any other text.\n" + }, + "id": "6f978929-e85a-44cc-999b-8e670bd65314", + "name": "Open AI Chat", + "type": "@n8n/n8n-nodes-langchain.chainLlm", + "typeVersion": 1.5, + "position": [ + 620, + 460 + ] + } + ], + "connections": { + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "Open AI Chat", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Open AI Chat", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "76b6f624-b785-4b06-9cb0-57deed8b47a0", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/247.json b/test-workflows/workflows/247.json new file mode 100644 index 0000000000..42d542d5da --- /dev/null +++ b/test-workflows/workflows/247.json @@ -0,0 +1,256 @@ +{ + "createdAt": "2024-03-04T20:38:50.212Z", + "updatedAt": "2024-03-04T20:39:11.000Z", + "id": "247", + "name": "SummarizationChain:Advanced:Map", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "0d9a3d32-b54b-4353-8886-50390461f967", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 660, + 380 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".`\n}" + }, + "id": "a5c7a7c0-442c-4ffd-bbf2-1ee98bab0a23", + "name": "Set Article", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 1080, + 380 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "3b01b603-8e9e-4f91-bd86-04820f2234dc", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1480, + 520 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "chunkSize": 300, + "chunkOverlap": 50 + }, + "id": "b4c73920-090e-4668-9fa7-7ea124373409", + "name": "Token Splitter", + "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter", + "typeVersion": 1, + "position": [ + 1620, + 520 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "6fa592a3-1cfe-42d7-8d45-a7ec80871e52", + "name": "baseline_summary", + "value": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "ca8694fd-7788-41f1-8aa7-11c9c1682358", + "name": "Set Baseline", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 880, + 380 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "57a4de1c-f385-439b-8809-8a1172bab713", + "name": "OpenAI Chat Model8", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1800, + 520 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "chunkingMode": "advanced", + "options": {} + }, + "id": "5ad67153-eef9-4d4a-94af-4974d33c2076", + "name": "Summary - Advanced", + "type": "@n8n/n8n-nodes-langchain.chainSummarization", + "typeVersion": 2, + "position": [ + 1460, + 380 + ] + }, + { + "parameters": { + "code": { + "execute": { + "code": "const { loadEvaluator } = require(\"langchain/evaluation\");\n\nconst llm = await this.getInputConnectionData('ai_languageModel', 0);\nconst inputData = this.getInputData();\nconst inputSummary = inputData[0].json.response.text;\nconst baselineSummary = $('Set Baseline').item.json.baseline_summary\n\nconst evaluator = await loadEvaluator(\"labeled_criteria\", { criteria: 'helpfulness', llm });\n\nconst result = await evaluator.evaluateStrings({\n input: \"Summarize Wikipedia article about the dancing plague of 1518\",\n prediction: inputSummary,\n reference: baselineSummary,\n});\n\n\nreturn [ {json: { ...result } } ];" + } + }, + "inputs": { + "input": [ + { + "type": "main", + "maxConnections": 1, + "required": true + }, + { + "type": "ai_languageModel", + "maxConnections": 1, + "required": true + } + ] + }, + "outputs": { + "output": [ + { + "type": "main" + } + ] + } + }, + "id": "cdad3056-57aa-4d84-98b2-5077793b883f", + "name": "Evaluate to Baseline3", + "type": "@n8n/n8n-nodes-langchain.code", + "typeVersion": 1, + "position": [ + 1780, + 380 + ] + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Set Baseline", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set Article": { + "main": [ + [ + { + "node": "Summary - Advanced", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Summary - Advanced", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Token Splitter": { + "ai_textSplitter": [ + [ + { + "node": "Summary - Advanced", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "Set Baseline": { + "main": [ + [ + { + "node": "Set Article", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model8": { + "ai_languageModel": [ + [ + { + "node": "Evaluate to Baseline3", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Summary - Advanced": { + "main": [ + [ + { + "node": "Evaluate to Baseline3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "0397921a-1101-44f9-a4ad-19377cd11aa8", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/248.json b/test-workflows/workflows/248.json new file mode 100644 index 0000000000..579bf79f7b --- /dev/null +++ b/test-workflows/workflows/248.json @@ -0,0 +1,521 @@ +{ + "createdAt": "2024-03-04T17:02:06.139Z", + "updatedAt": "2024-03-04T17:07:12.000Z", + "id": "248", + "name": "InMemoryVectorStore:*", + "active": false, + "nodes": [ + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "79cfd86e-b657-49de-bc61-13415ffa725b", + "name": "Embeddings OpenAI6", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 660, + 1480 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "some-meta", + "value": "test" + }, + { + "name": "other-meta", + "value": "test2" + } + ] + } + } + }, + "id": "76ee3d77-836c-417d-8d8e-9822cddfe936", + "name": "Default Data Loader2", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 640, + 1620 + ] + }, + { + "parameters": { + "chunkSize": 500, + "chunkOverlap": 100 + }, + "id": "1edacf5b-b7e4-4486-b98f-c78b338ac38e", + "name": "Token Splitter2", + "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter", + "typeVersion": 1, + "position": [ + 640, + 1780 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5f9a8751-2eb2-4ab6-8f12-b7856d9baa8a", + "name": "output_length_matches", + "value": "={{ $items().length === 12 }}", + "type": "boolean" + }, + { + "id": "a5a61e4e-ff4d-4da5-a174-9788c22cddfd", + "name": "has_content", + "value": "={{ $json.pageContent.length > 100 }}", + "type": "boolean" + }, + { + "id": "bceaea49-b29f-47d7-8a5a-14d4e02477ec", + "name": "has_meta", + "value": "={{ $items().every(i => i.json.metadata['some-meta'] === 'test' && i.json.metadata['other-meta'] === 'test2') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "e49fd92f-0a97-44a4-bbf5-c9aa94496ce1", + "name": "Check Vector Store Populated2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1020, + 1340 + ], + "executeOnce": true + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5f9a8751-2eb2-4ab6-8f12-b7856d9baa8a", + "name": "output_length_matches", + "value": "={{ $items().length === 4 }}", + "type": "boolean" + }, + { + "id": "a5a61e4e-ff4d-4da5-a174-9788c22cddfd", + "name": "has_content", + "value": "={{ $json.document.pageContent.length > 100 }}", + "type": "boolean" + }, + { + "id": "bceaea49-b29f-47d7-8a5a-14d4e02477ec", + "name": "has_meta", + "value": "={{ $items().every(i => i.json.document.metadata['some-meta'] === 'test' && i.json.document.metadata['other-meta'] === 'test2') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "b32d000c-ed3b-48c4-99b8-98cf72cc0a88", + "name": "Check Vector Store Retrieval2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1880, + 1340 + ], + "executeOnce": true + }, + { + "parameters": { + "promptType": "define", + "text": "What is the size of a block header with no transactions? Respond only with number of bytes." + }, + "id": "fe162de8-6021-4ae6-a874-01c831f79724", + "name": "Question and Answer Chain2", + "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa", + "typeVersion": 1.5, + "position": [ + 2100, + 1340 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "93ff6597-cac9-4847-8efd-e1d03520b4b9", + "name": "OpenAI Chat Model2", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 2120, + 1500 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "id": "8985b238-8814-4aab-bbf3-801fb52c7757", + "name": "Vector Store Retriever2", + "type": "@n8n/n8n-nodes-langchain.retrieverVectorStore", + "typeVersion": 1, + "position": [ + 2100, + 1620 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "b2ef63c3-2e18-49dc-8241-ee71eabdd6cb", + "name": "Embeddings OpenAI7", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 2040, + 1880 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "d998ae3e-192c-45ff-a3ff-ad3ed3a20304", + "name": "output_matches", + "value": "={{ $json.response.includes('80') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "046edb77-d0cd-4e8b-9db3-706c249e557f", + "name": "Edit Fields2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 2440, + 1340 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "2f1e6e26-d43e-4254-acef-ea69cd628a9a", + "name": "Embeddings OpenAI8", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1520, + 1540 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "memoryKey": "bitcoin_wf_test" + }, + "id": "11262bc3-f1db-4162-94c8-5f2d5b279900", + "name": "In-Memory Vector Store2", + "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory", + "typeVersion": 1, + "position": [ + 2040, + 1760 + ] + }, + { + "parameters": {}, + "id": "f4ff0f49-ac8b-4f7c-9cd4-90f0f9534772", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 180, + 1340 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9`\n}" + }, + "id": "06c12027-e965-441d-b1d8-b711eabbeb02", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 400, + 1340 + ] + }, + { + "parameters": { + "amount": 10 + }, + "id": "a2510c9b-bdaa-4fa0-85e6-aa7adef9194b", + "name": "Wait", + "type": "n8n-nodes-base.wait", + "typeVersion": 1.1, + "position": [ + 1240, + 1340 + ], + "webhookId": "a5bb0b0d-1527-414f-9abd-46e7f2be4f7f" + }, + { + "parameters": { + "mode": "insert", + "memoryKey": "bitcoin_wf_test", + "clearStore": true + }, + "id": "569a716b-c369-461e-b522-4f890af4fa34", + "name": "In-Memory Vector Store", + "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory", + "typeVersion": 1, + "position": [ + 660, + 1340 + ] + }, + { + "parameters": { + "mode": "load", + "memoryKey": "bitcoin_wf_test", + "prompt": "Security risks" + }, + "id": "8e51401b-9cd7-4d53-9c34-99b6e82a7b06", + "name": "In-Memory Vector Store1", + "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory", + "typeVersion": 1, + "position": [ + 1500, + 1340 + ] + } + ], + "connections": { + "Embeddings OpenAI6": { + "ai_embedding": [ + [ + { + "node": "In-Memory Vector Store", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Default Data Loader2": { + "ai_document": [ + [ + { + "node": "In-Memory Vector Store", + "type": "ai_document", + "index": 0 + } + ] + ] + }, + "Token Splitter2": { + "ai_textSplitter": [ + [ + { + "node": "Default Data Loader2", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "Check Vector Store Populated2": { + "main": [ + [ + { + "node": "Wait", + "type": "main", + "index": 0 + } + ] + ] + }, + "Check Vector Store Retrieval2": { + "main": [ + [ + { + "node": "Question and Answer Chain2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Question and Answer Chain2": { + "main": [ + [ + { + "node": "Edit Fields2", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model2": { + "ai_languageModel": [ + [ + { + "node": "Question and Answer Chain2", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Vector Store Retriever2": { + "ai_retriever": [ + [ + { + "node": "Question and Answer Chain2", + "type": "ai_retriever", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI7": { + "ai_embedding": [ + [ + { + "node": "In-Memory Vector Store2", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI8": { + "ai_embedding": [ + [ + { + "node": "In-Memory Vector Store1", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "In-Memory Vector Store2": { + "ai_vectorStore": [ + [ + { + "node": "Vector Store Retriever2", + "type": "ai_vectorStore", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [ + { + "node": "In-Memory Vector Store", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wait": { + "main": [ + [ + { + "node": "In-Memory Vector Store1", + "type": "main", + "index": 0 + } + ] + ] + }, + "In-Memory Vector Store": { + "main": [ + [ + { + "node": "Check Vector Store Populated2", + "type": "main", + "index": 0 + } + ] + ] + }, + "In-Memory Vector Store1": { + "main": [ + [ + { + "node": "Check Vector Store Retrieval2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "88e46c9d-ed01-4d44-909c-6bd94f1ec42a", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/249.json b/test-workflows/workflows/249.json new file mode 100644 index 0000000000..170972efe0 --- /dev/null +++ b/test-workflows/workflows/249.json @@ -0,0 +1,236 @@ +{ + "createdAt": "2024-03-04T20:40:09.997Z", + "updatedAt": "2024-03-04T20:40:57.000Z", + "id": "249", + "name": "SummarizationChain:Simple:Stuff", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "3adce5bb-a3e6-4d62-ba40-ff2835b7c4fe", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 1260, + 480 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `The dancing plague of 1518, or dance epidemic of 1518 (French: Épidémie dansante de 1518), was a case of dancing mania that occurred in Strasbourg, Alsace (modern-day France), in the Holy Roman Empire from July 1518 to September 1518. Somewhere between 50 and 400 people took to dancing for weeks. There are many theories behind the phenomenon, the most popular being stress-induced mass hysteria, suggested by John Waller. Other theories include ergot and religious explanations. There is controversy concerning the number of deaths.\n\nHistory\nEvents\nThe outbreak began in July 1518 when a woman called Frau Troffea began to dance fervently and uncontrollably in a street in Strasbourg. Troffea kept up the constant dancing for a week. Soon, three dozen others joined in. By August, the \"dancing plague\" had claimed 400 victims. Dancers were beginning to collapse. It is said some even died from a stroke or heart attack. No one knew what caused this reaction, which meant no one understood how to remedy it. By early September, the outbreak began to subside, when the dancers were sent to a mountain shrine to pray for absolution.\n\nHistorical documents, including \"physician notes, cathedral sermons, local and regional chronicles, and even notes issued by the Strasbourg city council\" are clear that the victims danced; it is not known why. Historical sources agree that there was an outbreak of dancing after a single woman started dancing, and the dancing did not seem to die down. It lasted for such a long time that it even attracted the attention of the authorities; until the council gave up authority to the physicians, who prescribed the afflicted to \"dance themselves free of it.\" There are claims that guild halls were refurbished to accommodate the dancing, as well as musicians and strong people to help keep those dealing with the dancing mania to stay upright. This backfired, and the council was forced to ban public dancing as people danced in fear it was a punishment from Saint Vitus; and to be \"free of sin\" many joined in on the dancing epidemic. The council went as far as to ban music, as well. Those who danced were then ordered to go to the shrine of Saint Vitus, wore red shoes that were sprinkled with holy water and had painted crosses on the tops and soles. They also had to hold small crosses in their hands; and incense and Latin incantations were part of this \"ritual.\" Apparently \"forgiven by Vitus,\" word was spread of a successful ritual and the Dancing Plague had ended.\n\nEvents similar to this are said to have occurred throughout the medieval age including 11th century in Kölbigk, Saxony, where it was believed to be the result of divine judgment . In 15th century Apulia, Italy, a woman was bitten by a tarantula, the venom making her dance convulsively. The only way to cure the bite was to \"shimmy\" and to have the right sort of music available, which was an accepted remedy by scholars like Athanasius Kircher.\n\nContemporaneous explanations included demonic possession and overheated blood.\n\nVeracity of deaths\nControversy exists over whether people ultimately danced to their deaths. Some sources claim that for a period the plague killed around fifteen people per day, but the sources of the city of Strasbourg at the time of the events did not mention the number of deaths, or even if there were fatalities. There do not appear to be any sources related to the events that make note of any fatalities. Ned Pennant-Rea also claims that the final death toll is not known, but if the claims of fifteen people dying per day were true then the toll could be \"into the hundreds.\"\n\nThe main source for the claim is John Waller, who has written several journal articles on the subject and the book A Time to Dance, a Time to Die: The Extraordinary Story of the Dancing Plague of 1518. The sources cited by Waller that mention deaths were all from later accounts of the events. There is also uncertainty around the identity of the initial dancer (either an unnamed woman or \"Frau Troffea\") and the number of dancers involved (somewhere between 50 and 400). Of the six chronicle accounts, four support Lady Troffea as the first dancer.\n\nModern theories\nFood poisoning\nSome believe the dancing could have been brought on by food poisoning caused by the toxic and psychoactive chemical products of ergot fungi (ergotism), which grows commonly on grains (such as rye) used for baking bread. Ergotamine is the main psychoactive product of ergot fungi; it is structurally related to the drug lysergic acid diethylamide (LSD-25) and is the substance from which LSD-25 was originally synthesized. The same fungus has also been implicated in other major historical anomalies, including the Salem witch trials.\n\nIn The Lancet, John Waller argues that \"this theory does not seem tenable, since it is unlikely that those poisoned by ergot could have danced for days at a time. Nor would so many people have reacted to its psychotropic chemicals in the same way. The ergotism theory also fails to explain why almost every outbreak occurred somewhere along the Rhine and Moselle rivers, areas linked by water but with quite different climates and crops\".\n\nStress-induced mass hysteria\nThis could have been an example of fully developed cases of psychogenic movement disorder happening in mass hysteria or mass psychogenic illness, which involves many individuals suddenly exhibiting the same bizarre behavior. The behavior spreads rapidly and broadly in an epidemic pattern. This kind of comportment could have been caused by elevated levels of psychological stress, caused by the ruthless years (even by the rough standards of the early modern period) the people of Alsace were suffering.\n\nWaller speculates that the dancing was \"stress-induced psychosis\" on a mass level, since the region where the people danced was riddled with starvation and disease, and the inhabitants tended to be superstitious. Seven other cases of dancing plague were reported in the same region during the medieval era.\n\nThis psychogenic illness could have created a chorea (from the Greek khoreia meaning \"to dance\"), a situation comprising random and intricate unintentional movements that flit from body part to body part. Diverse choreas (St. Vitus' dance, St. John's dance, and tarantism) were labeled in the Middle Ages referring to the independent epidemics of \"dancing mania\" that happened in central Europe, particularly at the time of the plague.\n\nPop culture and media\nThe event inspired Jonathan Glazer's 2020 short film Strasbourg 1518.\n\nIt was also the inspiration behind the 2022 choral song \"Choreomania\" by Florence and the Machine. It was the third track on the album Dance Fever, which took its title from the song.\n\nThe book series \"A Collection of Utter Speculation\" released a title \"The Dancing Plague: A Collection of Utter Speculation\" in 2022. It is a fictional account about the events that happened in Strasbourg.\n\nThe 2023 novel, The Dance Tree, by Kiran Millwood Hargrave is a fictionalized version of the summer of 1518 in Strasbourg.\n\nThe event is featured as part of the first season of Watcher Entertainment's \"Puppet History\" in the episode \"The Dancing Plague\".`\n}" + }, + "id": "2af3f215-852e-44d1-a16b-1122861abc2c", + "name": "Set Article", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 1640, + 480 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "6fa592a3-1cfe-42d7-8d45-a7ec80871e52", + "name": "baseline_summary", + "value": "The dancing plague of 1518 in Strasbourg, Alsace involved between 50 and 400 people dancing uncontrollably for weeks. The cause is unknown, with theories including stress-induced mass hysteria and ergot poisoning. The outbreak ended when the dancers prayed for absolution at a shrine. There is controversy over the number of deaths, with some sources claiming up to fifteen deaths per day, but historical documents do not confirm any fatalities. Similar events have been reported throughout history, inspiring various works of pop culture.", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "835cd65e-5233-43cf-9e56-f938bbf90ccf", + "name": "Set Baseline", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1440, + 480 + ] + }, + { + "parameters": { + "options": { + "summarizationMethodAndPrompts": { + "values": { + "summarizationMethod": "stuff" + } + } + } + }, + "id": "d81d65f9-3152-435a-be81-e1f68a75eb6f", + "name": "Summary - Simple - Stuff", + "type": "@n8n/n8n-nodes-langchain.chainSummarization", + "typeVersion": 2, + "position": [ + 1820, + 480 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "54a03de0-5c56-4ee7-a72a-2d3fe7ca3659", + "name": "OpenAI Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1840, + 620 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "314362b4-e5b1-4372-9edb-432857a9039c", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 2160, + 620 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "code": { + "execute": { + "code": "const { loadEvaluator } = require(\"langchain/evaluation\");\n\nconst llm = await this.getInputConnectionData('ai_languageModel', 0);\nconst inputData = this.getInputData();\nconst inputSummary = inputData[0].json.response.text;\nconst baselineSummary = $('Set Baseline').item.json.baseline_summary\n\nconst evaluator = await loadEvaluator(\"labeled_criteria\", { criteria: 'helpfulness', llm });\n\nconst result = await evaluator.evaluateStrings({\n input: \"Summarize Wikipedia article about the dancing plague of 1518\",\n prediction: inputSummary,\n reference: baselineSummary,\n});\n\n\nreturn [ {json: { ...result } } ];" + } + }, + "inputs": { + "input": [ + { + "type": "main", + "maxConnections": 1, + "required": true + }, + { + "type": "ai_languageModel", + "maxConnections": 1, + "required": true + } + ] + }, + "outputs": { + "output": [ + { + "type": "main" + } + ] + } + }, + "id": "6e3eafab-40d3-4329-a500-0a2e4d81a308", + "name": "Evaluate to Baseline", + "type": "@n8n/n8n-nodes-langchain.code", + "typeVersion": 1, + "position": [ + 2140, + 480 + ] + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Set Baseline", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set Article": { + "main": [ + [ + { + "node": "Summary - Simple - Stuff", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set Baseline": { + "main": [ + [ + { + "node": "Set Article", + "type": "main", + "index": 0 + } + ] + ] + }, + "Summary - Simple - Stuff": { + "main": [ + [ + { + "node": "Evaluate to Baseline", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "Summary - Simple - Stuff", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Evaluate to Baseline", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "7b286328-f8b2-4225-8f25-072239ac0731", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/250.json b/test-workflows/workflows/250.json new file mode 100644 index 0000000000..edb3171cf1 --- /dev/null +++ b/test-workflows/workflows/250.json @@ -0,0 +1,564 @@ +{ + "createdAt": "2024-03-04T17:01:47.077Z", + "updatedAt": "2024-03-04T17:07:23.000Z", + "id": "250", + "name": "PineconeVectorStore:*", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "94fcb304-1724-46e1-91cf-039ac12ff094", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 380, + 1180 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9`\n}" + }, + "id": "72553fda-2372-4f50-a71c-43d99ff9bc81", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 600, + 1180 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "86dbd078-2724-4acc-ad29-182603ab8fbb", + "name": "Embeddings OpenAI", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 860, + 1360 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "some-meta", + "value": "test" + }, + { + "name": "other-meta", + "value": "test2" + } + ] + } + } + }, + "id": "5402877d-e03d-49d5-aa3a-ca5f911811c7", + "name": "Default Data Loader", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 840, + 1560 + ] + }, + { + "parameters": { + "chunkSize": 500, + "chunkOverlap": 100 + }, + "id": "554a499c-04d1-4644-a05a-93c9fb4a6fa6", + "name": "Token Splitter", + "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter", + "typeVersion": 1, + "position": [ + 840, + 1720 + ] + }, + { + "parameters": { + "amount": 15, + "unit": "seconds" + }, + "id": "4953b654-157e-4048-8c8c-e9cdc0112bba", + "name": "Wait", + "type": "n8n-nodes-base.wait", + "typeVersion": 1, + "position": [ + 1480, + 1180 + ], + "webhookId": "c3d05369-6071-4592-87eb-36d57c60851b" + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5f9a8751-2eb2-4ab6-8f12-b7856d9baa8a", + "name": "output_length_matches", + "value": "={{ $items().length === 4 }}", + "type": "boolean" + }, + { + "id": "a5a61e4e-ff4d-4da5-a174-9788c22cddfd", + "name": "has_content", + "value": "={{ $json.document.pageContent.length > 100 }}", + "type": "boolean" + }, + { + "id": "bceaea49-b29f-47d7-8a5a-14d4e02477ec", + "name": "has_meta", + "value": "={{ $items().every(i => i.json.document.metadata['some-meta'] === 'test' && i.json.document.metadata['other-meta'] === 'test2') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "b7f64fff-c9e7-42c4-80a2-9eec4ab86d75", + "name": "Check Vector Store Retrieval", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 2060, + 1180 + ], + "executeOnce": true + }, + { + "parameters": { + "promptType": "define", + "text": "What is the size of a block header with no transactions? Respond only with number of bytes." + }, + "id": "a18395f0-240d-40c4-84c2-6aaee560aab0", + "name": "Question and Answer Chain", + "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa", + "typeVersion": 1.5, + "position": [ + 2260, + 1180 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "7c6ba271-7628-4f90-8c09-53764c4d18d4", + "name": "OpenAI Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 2260, + 1380 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "id": "25862b21-175a-4126-97e9-69c5b2623937", + "name": "Vector Store Retriever", + "type": "@n8n/n8n-nodes-langchain.retrieverVectorStore", + "typeVersion": 1, + "position": [ + 2340, + 1380 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "21a318d1-8d44-43c1-85b9-102cf320e0ed", + "name": "Embeddings OpenAI9", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 2280, + 1680 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "d998ae3e-192c-45ff-a3ff-ad3ed3a20304", + "name": "output_matches", + "value": "={{ $json.response.includes('80') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "abfc59fb-d887-407d-aca4-da476b92619a", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 2600, + 1180 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "c784fb20-7fa0-496c-87ee-512f83276fd0", + "name": "Embeddings OpenAI10", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1700, + 1400 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "mode": "insert", + "pineconeIndex": { + "__rl": true, + "value": "n8n", + "mode": "list", + "cachedResultName": "n8n" + }, + "options": { + "clearNamespace": true, + "pineconeNamespace": "bitcoin_wf_test" + } + }, + "id": "ba43d67a-0573-4452-bb9e-e73d58ef75e2", + "name": "Pinecone Vector Store", + "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone", + "typeVersion": 1, + "position": [ + 840, + 1180 + ], + "credentials": { + "pineconeApi": { + "id": "IoeAsZR3eD1OS0oY", + "name": "PineconeApi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5f9a8751-2eb2-4ab6-8f12-b7856d9baa8a", + "name": "output_length_matches", + "value": "={{ $items().length === 12 }}", + "type": "boolean" + }, + { + "id": "a5a61e4e-ff4d-4da5-a174-9788c22cddfd", + "name": "has_content", + "value": "={{ $json.pageContent.length > 100 }}", + "type": "boolean" + }, + { + "id": "bceaea49-b29f-47d7-8a5a-14d4e02477ec", + "name": "has_meta", + "value": "={{ $items().every(i => i.json.metadata['some-meta'] === 'test' && i.json.metadata['other-meta'] === 'test2') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "92b37ec8-a093-48d3-be9b-21ecc1de7e30", + "name": "Check Vector Store Populated", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1220, + 1180 + ], + "executeOnce": true + }, + { + "parameters": { + "pineconeIndex": { + "__rl": true, + "value": "n8n", + "mode": "list", + "cachedResultName": "n8n" + }, + "options": { + "pineconeNamespace": "bitcoin_wf_test" + } + }, + "id": "db229cc9-ccf7-405d-8549-5a82e4137103", + "name": "Pinecone Vector Store2", + "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone", + "typeVersion": 1, + "position": [ + 2280, + 1560 + ], + "credentials": { + "pineconeApi": { + "id": "IoeAsZR3eD1OS0oY", + "name": "PineconeApi account" + } + } + }, + { + "parameters": { + "mode": "load", + "pineconeIndex": { + "__rl": true, + "value": "n8n", + "mode": "list", + "cachedResultName": "n8n" + }, + "prompt": "What is bitcoin?", + "options": { + "pineconeNamespace": "bitcoin_wf_test" + } + }, + "id": "387518ca-2c63-40b5-bd96-8b5958a2a0d8", + "name": "Pinecone Vector Store1", + "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone", + "typeVersion": 1, + "position": [ + 1680, + 1180 + ], + "credentials": { + "pineconeApi": { + "id": "IoeAsZR3eD1OS0oY", + "name": "PineconeApi account" + } + } + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [ + { + "node": "Pinecone Vector Store", + "type": "main", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI": { + "ai_embedding": [ + [ + { + "node": "Pinecone Vector Store", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Default Data Loader": { + "ai_document": [ + [ + { + "node": "Pinecone Vector Store", + "type": "ai_document", + "index": 0 + } + ] + ] + }, + "Token Splitter": { + "ai_textSplitter": [ + [ + { + "node": "Default Data Loader", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "Wait": { + "main": [ + [ + { + "node": "Pinecone Vector Store1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Check Vector Store Retrieval": { + "main": [ + [ + { + "node": "Question and Answer Chain", + "type": "main", + "index": 0 + } + ] + ] + }, + "Question and Answer Chain": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "Question and Answer Chain", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Vector Store Retriever": { + "ai_retriever": [ + [ + { + "node": "Question and Answer Chain", + "type": "ai_retriever", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI9": { + "ai_embedding": [ + [ + { + "node": "Pinecone Vector Store2", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI10": { + "ai_embedding": [ + [ + { + "node": "Pinecone Vector Store1", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Pinecone Vector Store": { + "main": [ + [ + { + "node": "Check Vector Store Populated", + "type": "main", + "index": 0 + } + ] + ] + }, + "Check Vector Store Populated": { + "main": [ + [ + { + "node": "Wait", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pinecone Vector Store2": { + "ai_vectorStore": [ + [ + { + "node": "Vector Store Retriever", + "type": "ai_vectorStore", + "index": 0 + } + ] + ] + }, + "Pinecone Vector Store1": { + "main": [ + [ + { + "node": "Check Vector Store Retrieval", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "deeaa4bb-3780-4150-8eea-291722411f08", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/251.json b/test-workflows/workflows/251.json new file mode 100644 index 0000000000..312cc57827 --- /dev/null +++ b/test-workflows/workflows/251.json @@ -0,0 +1,116 @@ +{ + "createdAt": "2024-03-04T20:33:10.367Z", + "updatedAt": "2024-03-13T13:40:25.000Z", + "id": "251", + "name": "Agent:Conversational", + "active": false, + "nodes": [ + { + "parameters": { + "options": { + "temperature": 0 + } + }, + "id": "b8fb087e-fb91-4b67-b1fe-7c8f94db59bc", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1000, + 580 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + }, + "notes": "IGNORED_PROPERTIES=messages" + }, + { + "parameters": {}, + "id": "0ccb184e-0fd7-4da4-a25c-2b95e0793e8b", + "name": "Calculator1", + "type": "@n8n/n8n-nodes-langchain.toolCalculator", + "typeVersion": 1, + "position": [ + 1160, + 580 + ] + }, + { + "parameters": {}, + "id": "e0db9899-2439-4662-a212-738d48cd08d8", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 800, + 420 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "What is the result of 30 + (10002200 / 100)? Only respond with a number.", + "options": { + "returnIntermediateSteps": true + } + }, + "id": "5f23aaf0-0649-4e26-926d-9bdf59e89aa7", + "name": "AI Agent1", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.4, + "position": [ + 980, + 420 + ] + } + ], + "connections": { + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "AI Agent1", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Calculator1": { + "ai_tool": [ + [ + { + "node": "AI Agent1", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "da23ae8e-c1e2-4f3c-a585-8e89696633b2", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/252.json b/test-workflows/workflows/252.json new file mode 100644 index 0000000000..43cc10b26c --- /dev/null +++ b/test-workflows/workflows/252.json @@ -0,0 +1,899 @@ +{ + "createdAt": "2024-10-03T09:40:13.616Z", + "updatedAt": "2024-10-03T10:45:47.000Z", + "id": "252", + "name": "vectorStorePGVector:*", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "e2e07751-023d-46b8-8538-3da9cb4a4d56", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 180, + 600 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9`\n}" + }, + "id": "b9ece201-2b70-4cae-8191-278ed54fbf75", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 640, + 600 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "802fa1b1-e696-4def-94a3-95fbd779c730", + "name": "Embeddings OpenAI4", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1180, + 720 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "purpose", + "value": "qa_chain" + } + ] + } + } + }, + "id": "b22de442-b45d-4684-9329-7c63999501ad", + "name": "Default Data Loader1", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 1300, + 760 + ] + }, + { + "parameters": { + "chunkSize": 500, + "chunkOverlap": 100 + }, + "id": "dd5b5ba1-ce62-47ae-9fdc-a5b75389a434", + "name": "Token Splitter1", + "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter", + "typeVersion": 1, + "position": [ + 1320, + 860 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "options": {} + }, + "id": "31e9699d-1959-46db-8745-a107f83986c5", + "name": "Question and Answer Chain1", + "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa", + "typeVersion": 1.5, + "position": [ + 1140, + 2420 + ] + }, + { + "parameters": { + "model": "gpt-4o-mini", + "options": { + "temperature": 0 + } + }, + "id": "300e7bb4-18a4-4208-8b82-b6533fe0f980", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 1140, + 2620 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "topK": 40 + }, + "id": "1c5a4e2d-0220-4647-9cd9-10bcf2e59ee2", + "name": "Vector Store Retriever1", + "type": "@n8n/n8n-nodes-langchain.retrieverVectorStore", + "typeVersion": 1, + "position": [ + 1220, + 2620 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "81cb4196-e753-426f-bae5-2f1b963b16b8", + "name": "Embeddings OpenAI3", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1140, + 2920 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "d998ae3e-192c-45ff-a3ff-ad3ed3a20304", + "name": "output_matches", + "value": "={{ $json.response.includes('80') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "c6fc002c-592e-481c-90fe-19ee523a8336", + "name": "Edit Fields1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1480, + 2420 + ] + }, + { + "parameters": { + "operation": "deleteTable", + "schema": { + "__rl": true, + "mode": "list", + "value": "public" + }, + "table": { + "__rl": true, + "value": "n8n_vectors", + "mode": "name" + }, + "deleteCommand": "drop", + "options": {} + }, + "id": "73de13c8-9b83-450d-afd3-c409720b0843", + "name": "Postgres", + "type": "n8n-nodes-base.postgres", + "typeVersion": 2.5, + "position": [ + 1120, + 3460 + ], + "credentials": { + "postgres": { + "id": "pHGfJmTMIpWliDSS", + "name": "PGVector account" + } + } + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "01711e02-6d7c-4afa-9d61-d3f7c7ba4466", + "name": "Embeddings OpenAI", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1120, + 2160 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "63ae1d1c-adb1-4b88-9885-704d3d31ebda", + "name": "Embeddings OpenAI8", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1160, + 1160 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "purpose", + "value": "retriever" + } + ] + } + } + }, + "id": "c9631a79-8fb8-4e78-8f91-cac5040c23f7", + "name": "Default Data Loader3", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 1260, + 1160 + ] + }, + { + "parameters": { + "chunkSize": 500, + "chunkOverlap": 100 + }, + "id": "00345fc9-0c4f-4db8-82e5-e809c69980cd", + "name": "Token Splitter3", + "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter", + "typeVersion": 1, + "position": [ + 1260, + 1300 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "6f64e063-03a0-451b-a93a-377a5f49b1ef", + "name": "Embeddings OpenAI9", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1120, + 1540 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "purpose", + "value": "get_all" + } + ] + } + } + }, + "id": "b39c08af-2700-4c7a-9a43-b8842307ea32", + "name": "Default Data Loader4", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 1220, + 1540 + ] + }, + { + "parameters": { + "chunkSize": 500, + "chunkOverlap": 100 + }, + "id": "c02b660b-4301-4a82-986e-d29f12257243", + "name": "Token Splitter4", + "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter", + "typeVersion": 1, + "position": [ + 1220, + 1660 + ] + }, + { + "parameters": { + "mode": "insert", + "options": {} + }, + "id": "ef5cb549-6c57-475f-a574-6969ba51626e", + "name": "Postgres PGVector Store", + "type": "@n8n/n8n-nodes-langchain.vectorStorePGVector", + "typeVersion": 1, + "position": [ + 1200, + 600 + ], + "credentials": { + "postgres": { + "id": "pHGfJmTMIpWliDSS", + "name": "PGVector account" + } + } + }, + { + "parameters": { + "mode": "insert", + "options": {} + }, + "id": "93302c27-5e2f-4497-8b2b-a544f71f0b4c", + "name": "Postgres PGVector Store6", + "type": "@n8n/n8n-nodes-langchain.vectorStorePGVector", + "typeVersion": 1, + "position": [ + 1200, + 1040 + ], + "credentials": { + "postgres": { + "id": "pHGfJmTMIpWliDSS", + "name": "PGVector account" + } + } + }, + { + "parameters": { + "code": { + "execute": { + "code": "const { PromptTemplate } = require('@langchain/core/prompts');\n\nconst vectorStore = await this.getInputConnectionData('ai_vectorStore', 0);\nconst retriever = vectorStore.asRetriever(40);\n\nconst documents = await retriever.invoke('Some query');\nreturn [ {json: { documents } } ];" + } + }, + "inputs": { + "input": [ + { + "type": "main", + "maxConnections": 1, + "required": true + }, + { + "type": "ai_vectorStore", + "maxConnections": 1, + "required": true + } + ] + }, + "outputs": { + "output": [ + { + "type": "main" + } + ] + } + }, + "id": "547331e8-808f-4015-854c-06cf8a876e12", + "name": "LangChain Code", + "type": "@n8n/n8n-nodes-langchain.code", + "typeVersion": 1, + "position": [ + 1160, + 1840 + ], + "executeOnce": true + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5a9bd52c-f383-4f1c-9a6c-dc1f326775ce", + "name": "has_correct_length", + "value": "={{ $json.documents.length === 12 }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "e0771a3b-5765-481a-a05c-a56331078797", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 1540, + 1840 + ] + }, + { + "parameters": { + "mode": "insert", + "options": {} + }, + "id": "8d013334-cfba-4e04-bac8-ae282500366d", + "name": "Postgres PGVector Store7", + "type": "@n8n/n8n-nodes-langchain.vectorStorePGVector", + "typeVersion": 1, + "position": [ + 1180, + 1420 + ], + "executeOnce": true, + "credentials": { + "postgres": { + "id": "pHGfJmTMIpWliDSS", + "name": "PGVector account" + } + } + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "22fdcb8c-e4d6-457b-8635-cb8d4f84189b", + "name": "Embeddings OpenAI5", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1120, + 3280 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5a9bd52c-f383-4f1c-9a6c-dc1f326775ce", + "name": "has_correct_length", + "value": "={{ $json.documents.length === 12 }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "be8de136-11c8-4656-b94f-132286f7a84c", + "name": "Edit Fields2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 1700, + 3120 + ] + }, + { + "parameters": { + "aggregate": "aggregateAllItemData", + "destinationFieldName": "documents", + "options": {} + }, + "id": "c3625b63-5e97-4a1c-b0f2-40abcccdcf68", + "name": "Aggregate", + "type": "n8n-nodes-base.aggregate", + "typeVersion": 1, + "position": [ + 1500, + 3120 + ] + }, + { + "parameters": { + "mode": "load", + "prompt": "n8n_vectors", + "topK": 40, + "options": { + "metadata": { + "metadataValues": [ + { + "name": "purpose", + "value": "get_all" + } + ] + } + } + }, + "id": "da78ec78-5970-495c-a597-33b4f1ec8fc4", + "name": "Postgres PGVector Store1", + "type": "@n8n/n8n-nodes-langchain.vectorStorePGVector", + "typeVersion": 1, + "position": [ + 1120, + 3120 + ], + "credentials": { + "postgres": { + "id": "pHGfJmTMIpWliDSS", + "name": "PGVector account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "purpose", + "value": "retriever" + } + ] + } + } + }, + "id": "a90f2fe9-e51b-43cc-a345-fd581a67b204", + "name": "Postgres PGVector Store2", + "type": "@n8n/n8n-nodes-langchain.vectorStorePGVector", + "typeVersion": 1, + "position": [ + 1140, + 2800 + ], + "credentials": { + "postgres": { + "id": "pHGfJmTMIpWliDSS", + "name": "PGVector account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "purpose", + "value": "retriever" + } + ] + } + } + }, + "id": "7111c549-0a33-4662-b574-10eac290bc2e", + "name": "Postgres PGVector Store3", + "type": "@n8n/n8n-nodes-langchain.vectorStorePGVector", + "typeVersion": 1, + "position": [ + 1120, + 2040 + ], + "credentials": { + "postgres": { + "id": "pHGfJmTMIpWliDSS", + "name": "PGVector account" + } + } + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + } + ] + ] + }, + "Token Splitter1": { + "ai_textSplitter": [ + [ + { + "node": "Default Data Loader1", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "Question and Answer Chain1": { + "main": [ + [ + { + "node": "Edit Fields1", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Question and Answer Chain1", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Vector Store Retriever1": { + "ai_retriever": [ + [ + { + "node": "Question and Answer Chain1", + "type": "ai_retriever", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [ + { + "node": "Postgres PGVector Store", + "type": "main", + "index": 0 + }, + { + "node": "Postgres PGVector Store6", + "type": "main", + "index": 0 + }, + { + "node": "Postgres PGVector Store7", + "type": "main", + "index": 0 + }, + { + "node": "LangChain Code", + "type": "main", + "index": 0 + }, + { + "node": "Question and Answer Chain1", + "type": "main", + "index": 0 + }, + { + "node": "Postgres PGVector Store1", + "type": "main", + "index": 0 + }, + { + "node": "Postgres", + "type": "main", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI4": { + "ai_embedding": [ + [ + { + "node": "Postgres PGVector Store", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Default Data Loader1": { + "ai_document": [ + [ + { + "node": "Postgres PGVector Store", + "type": "ai_document", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI3": { + "ai_embedding": [ + [ + { + "node": "Postgres PGVector Store2", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI": { + "ai_embedding": [ + [ + { + "node": "Postgres PGVector Store3", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI8": { + "ai_embedding": [ + [ + { + "node": "Postgres PGVector Store6", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Default Data Loader3": { + "ai_document": [ + [ + { + "node": "Postgres PGVector Store6", + "type": "ai_document", + "index": 0 + } + ] + ] + }, + "Token Splitter3": { + "ai_textSplitter": [ + [ + { + "node": "Default Data Loader3", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI9": { + "ai_embedding": [ + [ + { + "node": "Postgres PGVector Store7", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Default Data Loader4": { + "ai_document": [ + [ + { + "node": "Postgres PGVector Store7", + "type": "ai_document", + "index": 0 + } + ] + ] + }, + "Token Splitter4": { + "ai_textSplitter": [ + [ + { + "node": "Default Data Loader4", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "LangChain Code": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI5": { + "ai_embedding": [ + [ + { + "node": "Postgres PGVector Store1", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Aggregate": { + "main": [ + [ + { + "node": "Edit Fields2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Postgres PGVector Store1": { + "main": [ + [ + { + "node": "Aggregate", + "type": "main", + "index": 0 + } + ] + ] + }, + "Postgres PGVector Store2": { + "ai_vectorStore": [ + [ + { + "node": "Vector Store Retriever1", + "type": "ai_vectorStore", + "index": 0 + } + ] + ] + }, + "Postgres PGVector Store3": { + "ai_vectorStore": [ + [ + { + "node": "LangChain Code", + "type": "ai_vectorStore", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "pinData": {}, + "versionId": "85e0e2ac-b253-4c25-8cdb-2cfc2d1b87f7", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/253.json b/test-workflows/workflows/253.json new file mode 100644 index 0000000000..d3bac12651 --- /dev/null +++ b/test-workflows/workflows/253.json @@ -0,0 +1,1074 @@ +{ + "createdAt": "2024-09-25T08:48:42.324Z", + "updatedAt": "2024-09-25T11:23:25.000Z", + "id": "253", + "name": "Agent:Tools:OpenAI", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "a731e388-a711-44c4-a03a-acfd0667e10f", + "name": "Execute Workflow Trigger", + "type": "n8n-nodes-base.executeWorkflowTrigger", + "typeVersion": 1, + "position": [ + 240, + 980 + ] + }, + { + "parameters": { + "name": "get_weather_data", + "description": "Call this tool to get weather information for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".", + "workflowId": "={{ $workflow.id }}", + "fields": { + "values": [ + { + "name": "tool", + "stringValue": "get_weather" + } + ] + } + }, + "id": "e082d1ac-db5e-4122-bb0e-4dbb08296463", + "name": "Get Weather", + "type": "@n8n/n8n-nodes-langchain.toolWorkflow", + "typeVersion": 1, + "position": [ + 640, + 700 + ] + }, + { + "parameters": { + "name": "get_evens", + "description": "Call this tool to get upcoming events for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".", + "workflowId": "={{ $workflow.id }}", + "fields": { + "values": [ + { + "name": "tool", + "stringValue": "get_events" + } + ] + } + }, + "id": "ff4cae49-b5d5-4825-a59b-875375933c59", + "name": "Get Events", + "type": "@n8n/n8n-nodes-langchain.toolWorkflow", + "typeVersion": 1, + "position": [ + 760, + 700 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "fc61cf88-967d-4433-9cfd-7cdad1a43e75", + "name": "response", + "value": "={\n \"created\": \"2024-03-04T09:26:23+01:00\",\n \"symbolCode\": {\n \"next1Hour\": \"fog\"\n },\n \"temperature\": {\n \"value\": 5.1,\n \"feelsLike\": 4\n },\n \"precipitation\": {\n \"value\": 0.0\n },\n \"wind\": {\n \"direction\": 275,\n \"speed\": 1.7\n },\n \"status\": {\n \"code\": \"Ok\"\n }\n}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "8f707bcc-0635-43b8-aa29-0ecd9ceecbbb", + "name": "Edit Fields4", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 740, + 920 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "0434695d-b245-4947-8b6e-7676a5c92904", + "name": "response", + "value": "=[\n {\n \"description\": \"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\n\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\",\n \"name\": \"Movie Barf: Dune – Part Two\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\",\n \"name\": \"Luboš Pospíšil & 5P\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\",\n \"name\": \"Fight Club\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\",\n \"name\": \"Poor Things\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\",\n \"name\": \"Tribute to World Legends: Michael Jackson\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n }\n]", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "0086c025-54ad-41c2-bc7b-ce12fbe05fb2", + "name": "Edit Fields5", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 740, + 1100 + ] + }, + { + "parameters": { + "model": "gpt-4o-mini", + "options": { + "temperature": 0 + } + }, + "id": "956d7763-aa7a-4089-8ba6-4ea55d9f7daf", + "name": "OpenAI Chat Model4", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 540, + 540 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + }, + "notes": "IGNORED_PROPERTIES=messages" + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "has_weather", + "value": "={{ $json.output.includes('5.1') }}", + "type": "boolean" + }, + { + "id": "4f055fa4-10eb-4b7e-b1dc-37a7ef7185fc", + "name": "has_movie", + "value": "={{ $json.output.includes('Dune') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "653e99b2-80c8-4b15-8b3b-818940e28365", + "name": "Edit Fields6", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 900, + 380 + ] + }, + { + "parameters": {}, + "id": "5f16c9cf-cab4-45ba-8974-5a366ef64677", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + -40, + -180 + ] + }, + { + "parameters": { + "content": "## Multiple Tools Calling", + "height": 80, + "width": 335 + }, + "id": "32ebc991-eb8a-48de-a8e4-5aef5c6ba7ae", + "name": "Sticky Note", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 500, + 320 + ] + }, + { + "parameters": { + "content": "## Output Parsing\n", + "height": 88, + "width": 386 + }, + "id": "00ffa66d-4359-4b9b-9cd2-f53e64b5f9d2", + "name": "Sticky Note1", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 500, + -240 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "0434695d-b245-4947-8b6e-7676a5c92904", + "name": "response", + "value": "=Maurits Cornelis Escher (Dutch pronunciation: [ˈmʌurɪts kɔrˈneːlɪs ˈɛɕər]; 17 June 1898 – 27 March 1972) was a Dutch graphic artist who made woodcuts, lithographs, and mezzotints, many of which were inspired by mathematics. Despite wide popular interest, for most of his life Escher was neglected in the art world, even in his native Netherlands. He was 70 before a retrospective exhibition was held. In the late twentieth century, he became more widely appreciated, and in the twenty-first century he has been celebrated in exhibitions around the world.\n\nHis work features mathematical objects and operations including impossible objects, explorations of infinity, reflection, symmetry, perspective, truncated and stellated polyhedra, hyperbolic geometry, and tessellations. Although Escher believed he had no mathematical ability, he interacted with the mathematicians George Pólya, Roger Penrose, and Donald Coxeter, and the crystallographer Friedrich Haag, and conducted his own research into tessellation.\n\nEarly in his career, he drew inspiration from nature, making studies of insects, landscapes, and plants such as lichens, all of which he used as details in his artworks. He traveled in Italy and Spain, sketching buildings, townscapes, architecture and the tilings of the Alhambra and the Mezquita of Cordoba, and became steadily more interested in their mathematical structure.\n\nEscher's art became well known among scientists and mathematicians, and in popular culture, especially after it was featured by Martin Gardner in his April 1966 Mathematical Games column in Scientific American. Apart from being used in a variety of technical papers, his work has appeared on the covers of many books and albums. He was one of the major inspirations for Douglas Hofstadter's Pulitzer Prize-winning 1979 book Gödel, Escher, Bach.\n\nExhibitions\n\nPoster advertising the first major exhibition of Escher's work in Britain (Dulwich Picture Gallery, 14 October 2015 – 17 January 2016). The image, which shows Escher and his interest in geometric distortion and multiple levels of distance from reality, is based on his Hand with Reflecting Sphere, 1935.[62][22]\nDespite wide popular interest, Escher was for a long time somewhat neglected in the art world; even in his native Netherlands, he was 70 before a retrospective exhibition was held.[43][k] In the twenty-first century, major exhibitions have been held in cities around the world.[63][64][65] An exhibition of his work in Rio de Janeiro attracted more than 573,000 visitors in 2011;[63] its daily visitor count of 9,677 made it the most visited museum exhibition of the year, anywhere in the world.[66] No major exhibition of Escher's work was held in Britain until 2015, when the Scottish National Gallery of Modern Art ran one in Edinburgh from June to September 2015,[64] moving in October 2015 to the Dulwich Picture Gallery, London. The exhibition poster is based on Hand with Reflecting Sphere, 1935, which shows Escher in his house reflected in a handheld sphere, thus illustrating the artist, his interest in levels of reality in art (e.g., is the hand in the foreground more real than the reflected one?), perspective, and spherical geometry.[22][62][67] The exhibition moved to Italy in 2015–2016, attracting over 500,000 visitors in Rome and Bologna,[65] and then Milan.[68][69][70]", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "d827a4a6-dbaa-4af9-a3c2-123c3b37b81a", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 740, + 1280 + ] + }, + { + "parameters": { + "rules": { + "values": [ + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "leftValue": "={{ $json.tool }}", + "rightValue": "get_weather", + "operator": { + "type": "string", + "operation": "equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Weather" + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "a164188f-3b5b-4c24-b1bb-e589f4f9219f", + "leftValue": "={{ $json.tool }}", + "rightValue": "get_events", + "operator": { + "type": "string", + "operation": "equals", + "name": "filter.operator.equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Events" + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "64f3dd1b-57e3-4183-a1d6-6b9b58fd1d81", + "leftValue": "={{ $json.tool }}", + "rightValue": "search_wiki", + "operator": { + "type": "string", + "operation": "equals", + "name": "filter.operator.equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "search_wiki" + } + ] + }, + "options": {} + }, + "id": "46387d9e-d93f-443c-93b6-6f61013839ae", + "name": "Switch", + "type": "n8n-nodes-base.switch", + "typeVersion": 3, + "position": [ + 460, + 980 + ] + }, + { + "parameters": { + "name": "get_evens", + "description": "Call this tool to search Wikipedia.", + "workflowId": "={{ $workflow.id }}", + "fields": { + "values": [ + { + "name": "tool", + "stringValue": "search_wiki" + } + ] + } + }, + "id": "7a52053b-bcdd-4c55-badb-9cf4739f1804", + "name": "Search Wiki", + "type": "@n8n/n8n-nodes-langchain.toolWorkflow", + "typeVersion": 1, + "position": [ + 660, + 60 + ] + }, + { + "parameters": { + "model": "gpt-4o-mini", + "options": { + "temperature": 0.1 + } + }, + "id": "fb451b3f-1c18-4f58-953a-5787d7dc27a5", + "name": "OpenAI Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 540, + 0 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "schemaType": "manual", + "inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Full name of the artist\"\n },\n \"birthDate\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"Date of birth\"\n },\n \"deathDate\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"Date of death\"\n },\n \"nationality\": {\n \"type\": \"string\",\n \"description\": \"Artist's nationality\"\n },\n \"profession\": {\n \"type\": \"string\",\n \"description\": \"Artist's primary profession\"\n },\n \"notableWorks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Notable works created by the artist\"\n }\n },\n \"required\": [\"name\", \"birthDate\", \"deathDate\", \"nationality\", \"profession\", \"notableWorks\"]\n}" + }, + "id": "bba3dd1d-82f1-4bf2-80ba-2b64e6748abb", + "name": "Structured Output Parser", + "type": "@n8n/n8n-nodes-langchain.outputParserStructured", + "typeVersion": 1.2, + "position": [ + 800, + 0 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "Tell me about M.C. Escher", + "hasOutputParser": true, + "options": {} + }, + "id": "7b8eee2b-6677-4935-a102-8a40405b968b", + "name": "AI Agent", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 540, + -180 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "has_birth_date", + "value": "={{ $json.output.birthDate === '1898-06-17' }}", + "type": "boolean" + }, + { + "id": "57513cf6-1ee7-40b7-95fc-316066c62153", + "name": "has_death_date", + "value": "={{ $json.output.deathDate === '1972-03-27' }}", + "type": "string" + }, + { + "id": "357953da-7578-4c7e-b8f8-aa25bd9187a4", + "name": "has_name", + "value": "={{ $json.output.name === 'Maurits Cornelis Escher' }}", + "type": "string" + }, + { + "id": "7cf215ea-f65a-467c-b158-9a80d8de7511", + "name": "has_works", + "value": "={{ $json.output.notableWorks.includes('Hand with Reflecting Sphere') }}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "857bab38-39a5-4d53-800f-4fe3bd96f666", + "name": "Edit Fields7", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 900, + -180 + ] + }, + { + "parameters": { + "content": "## Code Tool with Schema\n", + "height": 88, + "width": 386 + }, + "id": "cca57c6d-f08e-4032-83b9-3a9a6caf0334", + "name": "Sticky Note2", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 500, + -620 + ] + }, + { + "parameters": { + "name": "array_merge", + "description": "Call this tool to merge array of strings to a single string", + "jsCode": "// Example: convert the incoming query to uppercase and return it\nreturn query.strings_array.join(', ');", + "specifyInputSchema": true, + "jsonSchemaExample": "{\n\t\"strings_array\": [\"some_value\", \"some_other_value\"]\n}" + }, + "id": "66abd2b8-45ab-455e-b3e1-d6a4d5f083de", + "name": "Code Tool", + "type": "@n8n/n8n-nodes-langchain.toolCode", + "typeVersion": 1.1, + "position": [ + 740, + -400 + ] + }, + { + "parameters": { + "model": "gpt-4o-mini", + "options": { + "temperature": 0.3 + } + }, + "id": "899ed8b5-2805-4647-870c-ffa80828d195", + "name": "OpenAI Chat Model1", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 540, + -420 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "Help me plan my day in Berlin, Germany. Check current the weather and get the upcoming events and respond with weather and details about the upcoming events.\n\nEach tool should only be called only once.", + "options": { + "returnIntermediateSteps": false + } + }, + "id": "ab2d9ecf-f338-4e45-b327-667604b21a10", + "name": "AI Agent4", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 520, + 380 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "Convert this JSON array to a single string: ['This', 'Is', 'An', 'Array!'].", + "options": { + "returnIntermediateSteps": true + } + }, + "id": "02408929-ec1f-45ab-bd1f-1b9964814281", + "name": "AI Agent1", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 540, + -560 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "passed_array_parameter", + "value": "={{ Array.isArray($json.intermediateSteps[0].action.messageLog[0].kwargs.tool_calls[0].args.strings_array) }}", + "type": "boolean" + }, + { + "id": "069c2fe9-f0f8-4938-9552-1dac5c720add", + "name": "has_correct_length", + "value": "={{ $json.intermediateSteps[0].action.messageLog[0].kwargs.tool_calls[0].args.strings_array.length === 4 }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "dcae231c-5b1c-49f9-b8e4-c9df4e6fa855", + "name": "Edit Fields8", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 900, + -560 + ] + }, + { + "parameters": { + "content": "## Tool without parameters\n", + "height": 88, + "width": 386 + }, + "id": "b29f9a3d-db79-4d7c-8b2c-0044b56b5a6e", + "name": "Sticky Note3", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 560, + -1020 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "empty_args", + "value": "={{ $ifEmpty($json.intermediateSteps[0].action.messageLog[0].kwargs.tool_calls[0].args, true) }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "ca926d8b-86d5-4dcd-b23f-aadc5f43d35c", + "name": "Edit Fields9", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 960, + -960 + ] + }, + { + "parameters": { + "toolDescription": "Fetch Example website", + "url": "https://example.com" + }, + "id": "a237cbf1-dab1-4ea9-bb6c-aff17b33e0d3", + "name": "HTTP Request", + "type": "@n8n/n8n-nodes-langchain.toolHttpRequest", + "typeVersion": 1.1, + "position": [ + 800, + -800 + ] + }, + { + "parameters": { + "model": "gpt-4o-mini", + "options": { + "temperature": 0.3 + } + }, + "id": "6aadda49-1d19-4038-90e6-5f7adecc5a1f", + "name": "OpenAI Chat Model2", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 600, + -800 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "Fetch example website", + "options": { + "returnIntermediateSteps": true + } + }, + "id": "bdcc5d54-9532-4bf3-a2b7-da03c196cb15", + "name": "AI Agent2", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 600, + -960 + ] + }, + { + "parameters": { + "sessionIdType": "customKey", + "sessionKey": "memory3", + "contextWindowLength": 10 + }, + "id": "e49bafe2-725a-4146-8023-ecd86952569f", + "name": "Window Buffer Memory1", + "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", + "typeVersion": 1.3, + "position": [ + 580, + -1220 + ] + }, + { + "parameters": { + "jsonSchemaExample": "{\n\t\"english_answer\": \"California\",\n\t\"czech_answer\": \"California\"\n}" + }, + "id": "ca8a3ac2-9055-4f3f-8ccc-897718885cd4", + "name": "Structured Output Parser1", + "type": "@n8n/n8n-nodes-langchain.outputParserStructured", + "typeVersion": 1.2, + "position": [ + 720, + -1220 + ] + }, + { + "parameters": { + "model": "gpt-4o-mini", + "options": { + "temperature": 0.1 + } + }, + "id": "bc913d5b-c00f-44da-a07c-2dceda473199", + "name": "OpenAI Chat Model3", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 440, + -1220 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "Can you still remember my name?", + "hasOutputParser": true, + "options": { + "systemMessage": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise." + } + }, + "id": "c255ee66-3a23-4051-9bc3-09eccdf4a4e8", + "name": "AI Agent3", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 960, + -1380 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "492acf62-f7d5-4798-a93c-6a291421ecfb", + "name": "contain_both_answers", + "value": "={{ $json.output.english_answer.length > 0 && $json.output.czech_answer.length > 0 }}", + "type": "boolean" + }, + { + "id": "5c56b6d3-1d59-45c4-bcb8-3d4722493c62", + "name": "recalled_name", + "value": "={{ $json.output.english_answer.includes('Oleg') }}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "92534d51-0e5b-481d-9e57-165b77ee9f9d", + "name": "Edit Fields1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 1300, + -1380 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "hasOutputParser": true, + "options": { + "systemMessage": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise." + } + }, + "id": "8fbc4e41-29c5-442d-8661-441a7e9f348a", + "name": "AI Agent5", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 600, + -1380 + ] + }, + { + "parameters": { + "content": "## Output Parser + Memory\n", + "height": 88, + "width": 386 + }, + "id": "be054b49-a62a-4caa-88b3-6b9d44386431", + "name": "Sticky Note4", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 580, + -1440 + ] + } + ], + "connections": { + "Execute Workflow Trigger": { + "main": [ + [ + { + "node": "Switch", + "type": "main", + "index": 0 + } + ] + ] + }, + "Get Weather": { + "ai_tool": [ + [ + { + "node": "AI Agent4", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "Get Events": { + "ai_tool": [ + [ + { + "node": "AI Agent4", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model4": { + "ai_languageModel": [ + [ + { + "node": "AI Agent4", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Switch": { + "main": [ + [ + { + "node": "Edit Fields4", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Edit Fields5", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + }, + "Search Wiki": { + "ai_tool": [ + [ + { + "node": "AI Agent", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "AI Agent", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Structured Output Parser": { + "ai_outputParser": [ + [ + { + "node": "AI Agent", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + }, + "AI Agent": { + "main": [ + [ + { + "node": "Edit Fields7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code Tool": { + "ai_tool": [ + [ + { + "node": "AI Agent1", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "AI Agent1", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent1", + "type": "main", + "index": 0 + }, + { + "node": "AI Agent4", + "type": "main", + "index": 0 + }, + { + "node": "AI Agent", + "type": "main", + "index": 0 + }, + { + "node": "AI Agent2", + "type": "main", + "index": 0 + }, + { + "node": "AI Agent5", + "type": "main", + "index": 0 + } + ] + ] + }, + "AI Agent4": { + "main": [ + [ + { + "node": "Edit Fields6", + "type": "main", + "index": 0 + } + ] + ] + }, + "AI Agent1": { + "main": [ + [ + { + "node": "Edit Fields8", + "type": "main", + "index": 0 + } + ] + ] + }, + "HTTP Request": { + "ai_tool": [ + [ + { + "node": "AI Agent2", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model2": { + "ai_languageModel": [ + [ + { + "node": "AI Agent2", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "AI Agent2": { + "main": [ + [ + { + "node": "Edit Fields9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Window Buffer Memory1": { + "ai_memory": [ + [ + { + "node": "AI Agent5", + "type": "ai_memory", + "index": 0 + }, + { + "node": "AI Agent3", + "type": "ai_memory", + "index": 0 + } + ] + ] + }, + "Structured Output Parser1": { + "ai_outputParser": [ + [ + { + "node": "AI Agent5", + "type": "ai_outputParser", + "index": 0 + }, + { + "node": "AI Agent3", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model3": { + "ai_languageModel": [ + [ + { + "node": "AI Agent5", + "type": "ai_languageModel", + "index": 0 + }, + { + "node": "AI Agent3", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "AI Agent3": { + "main": [ + [ + { + "node": "Edit Fields1", + "type": "main", + "index": 0 + } + ] + ] + }, + "AI Agent5": { + "main": [ + [ + { + "node": "AI Agent3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "pinData": {}, + "versionId": "efad4233-0bf7-47f0-9da9-20b335b6b999", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/254.json b/test-workflows/workflows/254.json new file mode 100644 index 0000000000..fe477db5db --- /dev/null +++ b/test-workflows/workflows/254.json @@ -0,0 +1,1131 @@ +{ + "createdAt": "2024-09-25T09:14:35.108Z", + "updatedAt": "2024-09-25T11:27:58.000Z", + "id": "254", + "name": "Agent:Tools:Anthropic", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "f9b7ea03-1809-4fef-80dd-521e9d60f3bc", + "name": "Execute Workflow Trigger", + "type": "n8n-nodes-base.executeWorkflowTrigger", + "typeVersion": 1, + "position": [ + 240, + 1100 + ] + }, + { + "parameters": { + "name": "get_weather_data", + "description": "Call this tool to get weather information for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".", + "workflowId": "={{ $workflow.id }}", + "fields": { + "values": [ + { + "name": "tool", + "stringValue": "get_weather" + } + ] + } + }, + "id": "4275e044-2ce3-4942-a0ed-406bed90debc", + "name": "Get Weather", + "type": "@n8n/n8n-nodes-langchain.toolWorkflow", + "typeVersion": 1, + "position": [ + 640, + 580 + ] + }, + { + "parameters": { + "name": "get_evens", + "description": "Call this tool to get upcoming events for a specific city. Input should be a single string in format: \"$CITY, $COUNTRY\". So for example to get data about Prague, \"Prague, Czechia\".", + "workflowId": "={{ $workflow.id }}", + "fields": { + "values": [ + { + "name": "tool", + "stringValue": "get_events" + } + ] + } + }, + "id": "c28a61c8-be38-4031-a456-76f936ba6721", + "name": "Get Events", + "type": "@n8n/n8n-nodes-langchain.toolWorkflow", + "typeVersion": 1, + "position": [ + 760, + 580 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "fc61cf88-967d-4433-9cfd-7cdad1a43e75", + "name": "response", + "value": "={\n \"created\": \"2024-03-04T09:26:23+01:00\",\n \"symbolCode\": {\n \"next1Hour\": \"fog\"\n },\n \"temperature\": {\n \"value\": 5.1,\n \"feelsLike\": 4\n },\n \"precipitation\": {\n \"value\": 0.0\n },\n \"wind\": {\n \"direction\": 275,\n \"speed\": 1.7\n },\n \"status\": {\n \"code\": \"Ok\"\n }\n}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "141f2081-39eb-48f4-9ade-924187116c58", + "name": "Edit Fields4", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1140, + 900 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "0434695d-b245-4947-8b6e-7676a5c92904", + "name": "response", + "value": "=[\n {\n \"description\": \"***Movie Barf* is a new English friendly film night presented by film journalist and blogger Ryan Keating-Lambert, dedicated to screening a diverse variety of award-winning films both contemporary and classic. Ryan’s late night shows includes intriguing chats with various guests (in person or over Skype in the case of the international ones) and special drink offers at the bar.**\\n\\n*Dune: Part Two* / Denis Villeneuve / Canada, USA 2024 / 166 min – Paul Atreides unites with Chani and the Fremen while seeking revenge against the conspirators who destroyed his family.\",\n \"name\": \"Movie Barf: Dune – Part Two\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Luboš Pospíšil will perform with the renewed band 5P on March 14 at the cultural house of Barikadník.\",\n \"name\": \"Luboš Pospíšil & 5P\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"An insomniac office worker looking for a way to change his life crosses paths with a devil-may-care soap maker and they form an underground fight club that evolves into something much, much more...\",\n \"name\": \"Fight Club\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"From filmmaker Yorgos Lanthimos and producer Emma Stone comes the incredible tale and fantastical evolution of Bella Baxter (Stone), a young woman brought back to life by the brilliant and unorthodox scientist Dr. Godwin Baxter (Willem Dafoe). Under Baxter's protection, Bella is eager to learn. Hungry for the worldliness she is lacking, she runs off with Duncan Wedderburn (Mark Ruffalo), a slick and debauched lawyer, on a whirlwind adventure across the continents. Free from the prejudices of her times, Bella grows steadfast in her purpose to stand for equality and liberation.\",\n \"name\": \"Poor Things\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n },\n {\n \"description\": \"Concert of Bharata Rajnošek, who decided to do something very brave - pay tribute to king of the pop, Michael Jackson in jazz.\",\n \"name\": \"Tribute to World Legends: Michael Jackson\",\n \"endDate\": \"Mon Mar 04 2024 23:59:59 GMT+0100 (Central European Standard Time)\"\n }\n]", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "ce0ba26a-5149-436f-aaf6-dc2b64ca02b1", + "name": "Edit Fields5", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1140, + 1080 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "has_weather", + "value": "={{ $json.output.includes('weather') }}", + "type": "boolean" + }, + { + "id": "4f055fa4-10eb-4b7e-b1dc-37a7ef7185fc", + "name": "has_movie", + "value": "={{ $json.output.includes('Dune') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "4ec6d24d-353c-4534-a9e7-5a19f62f8fde", + "name": "Edit Fields6", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 900, + 260 + ] + }, + { + "parameters": {}, + "id": "e14fcffe-bbf8-429c-b84e-aa749017fb8c", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + -40, + -180 + ] + }, + { + "parameters": { + "content": "## Multiple Tools Calling", + "height": 80, + "width": 335 + }, + "id": "62fb5440-b07d-4279-9c0a-722a65fa5322", + "name": "Sticky Note", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 500, + 200 + ] + }, + { + "parameters": { + "content": "## Output Parsing\n", + "height": 88, + "width": 386 + }, + "id": "8020da6e-2ab4-4613-8527-b78705f72114", + "name": "Sticky Note1", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 480, + -240 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "0434695d-b245-4947-8b6e-7676a5c92904", + "name": "response", + "value": "=Maurits Cornelis Escher (Dutch pronunciation: [ˈmʌurɪts kɔrˈneːlɪs ˈɛɕər]; 17 June 1898 – 27 March 1972) was a Dutch graphic artist who made woodcuts, lithographs, and mezzotints, many of which were inspired by mathematics. Despite wide popular interest, for most of his life Escher was neglected in the art world, even in his native Netherlands. He was 70 before a retrospective exhibition was held. In the late twentieth century, he became more widely appreciated, and in the twenty-first century he has been celebrated in exhibitions around the world.\n\nHis work features mathematical objects and operations including impossible objects, explorations of infinity, reflection, symmetry, perspective, truncated and stellated polyhedra, hyperbolic geometry, and tessellations. Although Escher believed he had no mathematical ability, he interacted with the mathematicians George Pólya, Roger Penrose, and Donald Coxeter, and the crystallographer Friedrich Haag, and conducted his own research into tessellation.\n\nEarly in his career, he drew inspiration from nature, making studies of insects, landscapes, and plants such as lichens, all of which he used as details in his artworks. He traveled in Italy and Spain, sketching buildings, townscapes, architecture and the tilings of the Alhambra and the Mezquita of Cordoba, and became steadily more interested in their mathematical structure.\n\nEscher's art became well known among scientists and mathematicians, and in popular culture, especially after it was featured by Martin Gardner in his April 1966 Mathematical Games column in Scientific American. Apart from being used in a variety of technical papers, his work has appeared on the covers of many books and albums. He was one of the major inspirations for Douglas Hofstadter's Pulitzer Prize-winning 1979 book Gödel, Escher, Bach.\n\nExhibitions\n\nPoster advertising the first major exhibition of Escher's work in Britain (Dulwich Picture Gallery, 14 October 2015 – 17 January 2016). The image, which shows Escher and his interest in geometric distortion and multiple levels of distance from reality, is based on his Hand with Reflecting Sphere, 1935.[62][22]\nDespite wide popular interest, Escher was for a long time somewhat neglected in the art world; even in his native Netherlands, he was 70 before a retrospective exhibition was held.[43][k] In the twenty-first century, major exhibitions have been held in cities around the world.[63][64][65] An exhibition of his work in Rio de Janeiro attracted more than 573,000 visitors in 2011;[63] its daily visitor count of 9,677 made it the most visited museum exhibition of the year, anywhere in the world.[66] No major exhibition of Escher's work was held in Britain until 2015, when the Scottish National Gallery of Modern Art ran one in Edinburgh from June to September 2015,[64] moving in October 2015 to the Dulwich Picture Gallery, London. The exhibition poster is based on Hand with Reflecting Sphere, 1935, which shows Escher in his house reflected in a handheld sphere, thus illustrating the artist, his interest in levels of reality in art (e.g., is the hand in the foreground more real than the reflected one?), perspective, and spherical geometry.[22][62][67] The exhibition moved to Italy in 2015–2016, attracting over 500,000 visitors in Rome and Bologna,[65] and then Milan.[68][69][70]", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "2a0cdc4d-2ed8-4efe-973f-a633469c8001", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1140, + 1260 + ] + }, + { + "parameters": { + "name": "get_evens", + "description": "Call this tool to search Wikipedia.", + "workflowId": "={{ $workflow.id }}", + "fields": { + "values": [ + { + "name": "tool", + "stringValue": "search_wiki" + } + ] + } + }, + "id": "e4d9f9bc-45b0-41ce-8f52-539144736ed5", + "name": "Search Wiki", + "type": "@n8n/n8n-nodes-langchain.toolWorkflow", + "typeVersion": 1, + "position": [ + 640, + 60 + ] + }, + { + "parameters": { + "schemaType": "manual", + "inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Full name of the artist\"\n },\n \"birthDate\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"Date of birth\"\n },\n \"deathDate\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"Date of death\"\n },\n \"nationality\": {\n \"type\": \"string\",\n \"description\": \"Artist's nationality\"\n },\n \"profession\": {\n \"type\": \"string\",\n \"description\": \"Artist's primary profession\"\n },\n \"notableWorks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Notable works created by the artist\"\n }\n },\n \"required\": [\"name\", \"birthDate\", \"deathDate\", \"nationality\", \"profession\", \"notableWorks\"]\n}" + }, + "id": "466a8e57-8eb7-47a9-b0f0-f16c52b18c8f", + "name": "Structured Output Parser", + "type": "@n8n/n8n-nodes-langchain.outputParserStructured", + "typeVersion": 1.2, + "position": [ + 780, + 0 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "Tell me about M.C. Escher", + "hasOutputParser": true, + "options": {} + }, + "id": "75babac0-cb8c-401a-a027-49b850166bf3", + "name": "AI Agent", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 520, + -180 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "has_birth_date", + "value": "={{ $json.output.birthDate === '1898-06-17' }}", + "type": "boolean" + }, + { + "id": "57513cf6-1ee7-40b7-95fc-316066c62153", + "name": "has_death_date", + "value": "={{ $json.output.deathDate === '1972-03-27' }}", + "type": "string" + }, + { + "id": "357953da-7578-4c7e-b8f8-aa25bd9187a4", + "name": "has_name", + "value": "={{ $json.output.name.includes('Escher') }}", + "type": "string" + }, + { + "id": "7cf215ea-f65a-467c-b158-9a80d8de7511", + "name": "has_works", + "value": "={{ $json.output.notableWorks.length > 0 }}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "31344c44-bbfc-4774-92d9-b61762b43238", + "name": "Edit Fields7", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 880, + -180 + ] + }, + { + "parameters": { + "content": "## Code Tool with Schema\n", + "height": 88, + "width": 386 + }, + "id": "54533ef5-039b-4243-a81c-9ac1265ae3ec", + "name": "Sticky Note2", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 500, + -620 + ] + }, + { + "parameters": { + "name": "array_merge", + "description": "Call this tool to merge array of strings to a single string", + "jsCode": "// Example: convert the incoming query to uppercase and return it\nreturn query.strings_array.join(', ');", + "specifyInputSchema": true, + "jsonSchemaExample": "{\n\t\"strings_array\": [\"some_value\", \"some_other_value\"]\n}" + }, + "id": "35be87b4-b947-4b05-9380-23570dac701d", + "name": "Code Tool", + "type": "@n8n/n8n-nodes-langchain.toolCode", + "typeVersion": 1.1, + "position": [ + 740, + -400 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "passed_array_parameter", + "value": "={{ Array.isArray($json.intermediateSteps[0].action.messageLog[0].kwargs.tool_calls[0].args.strings_array) }}", + "type": "boolean" + }, + { + "id": "069c2fe9-f0f8-4938-9552-1dac5c720add", + "name": "has_correct_length", + "value": "={{ $json.intermediateSteps[0].action.messageLog[0].kwargs.tool_calls[0].args.strings_array.length === 4 }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "33afa806-84d4-4c2e-a004-22e4d4808d47", + "name": "Edit Fields8", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 900, + -560 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "66c36215-8924-4534-8e7b-845d8de29f4a", + "name": "response", + "value": "success", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "b35ef011-376c-4982-b7d9-8ad29eb65cd0", + "name": "Edit Fields1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 1140, + 1460 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "Convert this JSON array to a single string: ['This', 'Is', 'An', 'Array!'].", + "options": { + "returnIntermediateSteps": true + } + }, + "id": "ed050ae2-eb67-4b1f-a87b-28bf5952e5da", + "name": "AI Agent1", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 540, + -560 + ] + }, + { + "parameters": { + "model": "claude-3-haiku-20240307", + "options": { + "temperature": 0.1 + } + }, + "id": "5aa82a01-8d32-4ede-a7f3-9ea2f24432d2", + "name": "Anthropic Chat Model2", + "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic", + "typeVersion": 1.2, + "position": [ + 520, + 460 + ], + "credentials": { + "anthropicApi": { + "id": "1Dr1Xbrd2xeq7gaq", + "name": "Anthropic account" + } + } + }, + { + "parameters": { + "model": "claude-3-haiku-20240307", + "options": { + "temperature": 0.1 + } + }, + "id": "2bfdb0c4-6bc9-481d-ad3c-51bed0925a78", + "name": "Anthropic Chat Model", + "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic", + "typeVersion": 1.2, + "position": [ + 520, + 20 + ], + "credentials": { + "anthropicApi": { + "id": "1Dr1Xbrd2xeq7gaq", + "name": "Anthropic account" + } + } + }, + { + "parameters": { + "model": "claude-3-haiku-20240307", + "options": { + "temperature": 0.1 + } + }, + "id": "11d7b586-bf4b-42aa-81c1-55aa0e17a3fc", + "name": "Anthropic Chat Model3", + "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic", + "typeVersion": 1.2, + "position": [ + 540, + -400 + ], + "credentials": { + "anthropicApi": { + "id": "1Dr1Xbrd2xeq7gaq", + "name": "Anthropic account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "Help me plan my day in Berlin, Germany. Check current the weather and get the upcoming events and respond with weather and details about the upcoming events.\n\nEach tool should only be called only once.", + "options": { + "returnIntermediateSteps": true + } + }, + "id": "59f6625d-fbb2-47f8-ab09-31a6e0f3e527", + "name": "AI Agent4", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 520, + 260 + ] + }, + { + "parameters": { + "rules": { + "values": [ + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict", + "version": 1 + }, + "conditions": [ + { + "leftValue": "={{ $json.tool }}", + "rightValue": "get_weather", + "operator": { + "type": "string", + "operation": "equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Weather" + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict", + "version": 1 + }, + "conditions": [ + { + "id": "a164188f-3b5b-4c24-b1bb-e589f4f9219f", + "leftValue": "={{ $json.tool }}", + "rightValue": "get_events", + "operator": { + "type": "string", + "operation": "equals", + "name": "filter.operator.equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "Events" + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict", + "version": 1 + }, + "conditions": [ + { + "id": "64f3dd1b-57e3-4183-a1d6-6b9b58fd1d81", + "leftValue": "={{ $json.tool }}", + "rightValue": "search_wiki", + "operator": { + "type": "string", + "operation": "equals", + "name": "filter.operator.equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "search_wiki" + }, + { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict", + "version": 1 + }, + "conditions": [ + { + "id": "85f031f4-123f-4407-b5d0-fdd90a26667c", + "leftValue": "={{ $json.tool }}", + "rightValue": "no_query", + "operator": { + "type": "string", + "operation": "equals", + "name": "filter.operator.equals" + } + } + ], + "combinator": "and" + }, + "renameOutput": true, + "outputKey": "empty_query" + } + ] + }, + "options": {} + }, + "id": "f4dde342-7945-49a1-8e98-cb967ada7afe", + "name": "Switch", + "type": "n8n-nodes-base.switch", + "typeVersion": 3, + "position": [ + 460, + 1100 + ] + }, + { + "parameters": { + "content": "## Tool without parameters\n", + "height": 88, + "width": 386 + }, + "id": "b5dca644-99e9-4493-9e6a-1fbc03502d5a", + "name": "Sticky Note3", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 520, + -1040 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "414caf45-02aa-4c0a-9cdb-e6da9ec03d80", + "name": "empty_args", + "value": "={{ $ifEmpty($json.intermediateSteps[0].action.messageLog[0].kwargs.tool_calls[0].args, true) }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "2336c95b-f98a-4c4a-89df-d02c7ad00d42", + "name": "Edit Fields9", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 920, + -980 + ] + }, + { + "parameters": { + "model": "claude-3-haiku-20240307", + "options": { + "temperature": 0.1 + } + }, + "id": "7646d5c7-3717-483f-85b5-da0f8eadf609", + "name": "Anthropic Chat Model4", + "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic", + "typeVersion": 1.2, + "position": [ + 560, + -820 + ], + "credentials": { + "anthropicApi": { + "id": "1Dr1Xbrd2xeq7gaq", + "name": "Anthropic account" + } + } + }, + { + "parameters": { + "toolDescription": "Fetch Example website", + "url": "https://example.com" + }, + "id": "1e1f51e8-7668-4efd-95d6-9c8e7cd5dfbc", + "name": "HTTP Request", + "type": "@n8n/n8n-nodes-langchain.toolHttpRequest", + "typeVersion": 1.1, + "position": [ + 740, + -820 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "Fetch example website", + "options": { + "returnIntermediateSteps": true + } + }, + "id": "36e3e45c-8167-4382-87fa-fed3eccc7dff", + "name": "AI Agent2", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 560, + -980 + ] + }, + { + "parameters": { + "sessionIdType": "customKey", + "sessionKey": "memory3", + "contextWindowLength": 10 + }, + "id": "7eace01a-7ea1-4175-a989-297a885d6f54", + "name": "Window Buffer Memory1", + "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", + "typeVersion": 1.3, + "position": [ + 500, + -1240 + ] + }, + { + "parameters": { + "jsonSchemaExample": "{\n\t\"english_answer\": \"California\",\n\t\"czech_answer\": \"California\"\n}" + }, + "id": "58269208-5599-4e2f-b9fe-f63ce1bd73d3", + "name": "Structured Output Parser1", + "type": "@n8n/n8n-nodes-langchain.outputParserStructured", + "typeVersion": 1.2, + "position": [ + 660, + -1240 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "Hi, my name is Oleg. Tell me about magnets like I'm 5.", + "hasOutputParser": true, + "options": { + "systemMessage": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise." + } + }, + "id": "66af25fe-deed-4aa1-b597-a2b8ec2aa9be", + "name": "AI Agent5", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 540, + -1400 + ] + }, + { + "parameters": { + "content": "## Output Parser + Memory\n", + "height": 88, + "width": 386 + }, + "id": "9dbe76ab-c191-404b-a3e6-bd81910923bc", + "name": "Sticky Note4", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 520, + -1460 + ] + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "492acf62-f7d5-4798-a93c-6a291421ecfb", + "name": "contain_both_answers", + "value": "={{ $json.output.english_answer.length > 0 && $json.output.czech_answer.length > 0 }}", + "type": "boolean" + }, + { + "id": "5c56b6d3-1d59-45c4-bcb8-3d4722493c62", + "name": "recalled_name", + "value": "={{ $json.output.english_answer.includes('Oleg') }}", + "type": "string" + } + ] + }, + "options": {} + }, + "id": "02cd9756-bc75-4467-a587-e9b063219b94", + "name": "Edit Fields2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.4, + "position": [ + 1240, + -1400 + ] + }, + { + "parameters": { + "model": "claude-3-haiku-20240307", + "options": { + "temperature": 0.1 + } + }, + "id": "acd4aefe-5deb-465c-81c3-28647e4a62c6", + "name": "Anthropic Chat Model5", + "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic", + "typeVersion": 1.2, + "position": [ + 360, + -1240 + ], + "credentials": { + "anthropicApi": { + "id": "1Dr1Xbrd2xeq7gaq", + "name": "Anthropic account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "Can you still remember my name?", + "hasOutputParser": true, + "options": { + "systemMessage": "You are a helpful assistant. Always provide both `english_answer` and `czech_answer` in the final output and be very concise." + } + }, + "id": "cd67dbc8-d756-4e0c-8f75-f753e61a4280", + "name": "AI Agent3", + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.6, + "position": [ + 900, + -1400 + ] + } + ], + "connections": { + "Execute Workflow Trigger": { + "main": [ + [ + { + "node": "Switch", + "type": "main", + "index": 0 + } + ] + ] + }, + "Get Weather": { + "ai_tool": [ + [ + { + "node": "AI Agent4", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "Get Events": { + "ai_tool": [ + [ + { + "node": "AI Agent4", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "Search Wiki": { + "ai_tool": [ + [ + { + "node": "AI Agent", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "Structured Output Parser": { + "ai_outputParser": [ + [ + { + "node": "AI Agent", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + }, + "AI Agent": { + "main": [ + [ + { + "node": "Edit Fields7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code Tool": { + "ai_tool": [ + [ + { + "node": "AI Agent1", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent1", + "type": "main", + "index": 0 + }, + { + "node": "AI Agent4", + "type": "main", + "index": 0 + }, + { + "node": "AI Agent", + "type": "main", + "index": 0 + }, + { + "node": "AI Agent2", + "type": "main", + "index": 0 + }, + { + "node": "AI Agent5", + "type": "main", + "index": 0 + } + ] + ] + }, + "AI Agent1": { + "main": [ + [ + { + "node": "Edit Fields8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Anthropic Chat Model2": { + "ai_languageModel": [ + [ + { + "node": "AI Agent4", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Anthropic Chat Model": { + "ai_languageModel": [ + [ + { + "node": "AI Agent", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Anthropic Chat Model3": { + "ai_languageModel": [ + [ + { + "node": "AI Agent1", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "AI Agent4": { + "main": [ + [ + { + "node": "Edit Fields6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Switch": { + "main": [ + [ + { + "node": "Edit Fields4", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Edit Fields5", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Edit Fields1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Anthropic Chat Model4": { + "ai_languageModel": [ + [ + { + "node": "AI Agent2", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "HTTP Request": { + "ai_tool": [ + [ + { + "node": "AI Agent2", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "AI Agent2": { + "main": [ + [ + { + "node": "Edit Fields9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Window Buffer Memory1": { + "ai_memory": [ + [ + { + "node": "AI Agent5", + "type": "ai_memory", + "index": 0 + }, + { + "node": "AI Agent3", + "type": "ai_memory", + "index": 0 + } + ] + ] + }, + "Structured Output Parser1": { + "ai_outputParser": [ + [ + { + "node": "AI Agent5", + "type": "ai_outputParser", + "index": 0 + }, + { + "node": "AI Agent3", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + }, + "AI Agent5": { + "main": [ + [ + { + "node": "AI Agent3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Anthropic Chat Model5": { + "ai_languageModel": [ + [ + { + "node": "AI Agent5", + "type": "ai_languageModel", + "index": 0 + }, + { + "node": "AI Agent3", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "AI Agent3": { + "main": [ + [ + { + "node": "Edit Fields2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "pinData": {}, + "versionId": "40faa4fb-40b3-4081-8f60-1b226a6294dc", + "triggerCount": 0, + "tags": [] +} diff --git a/test-workflows/workflows/255.json b/test-workflows/workflows/255.json new file mode 100644 index 0000000000..caaee18185 --- /dev/null +++ b/test-workflows/workflows/255.json @@ -0,0 +1,86 @@ +{ + "name": "Sub-node errors:model", + "nodes": [ + { + "parameters": {}, + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 0, + 0 + ], + "id": "077f1a05-32d1-4a9e-abd9-9ef4a1bcfe02", + "name": "When clicking ‘Test workflow’" + }, + { + "parameters": { + "promptType": "define", + "text": "Hey" + }, + "type": "@n8n/n8n-nodes-langchain.chainLlm", + "typeVersion": 1.5, + "position": [ + 200, + 0 + ], + "id": "5c3f329d-6481-41c5-9747-e9fd53815ca6", + "name": "Basic LLM Chain", + "onError": "continueErrorOutput" + }, + { + "parameters": { + "model": "=gpt-4o-mini123", + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 280, + 220 + ], + "id": "00cb1410-f04f-4b2b-b42e-f2c275ba0b4a", + "name": "OpenAI Chat Model", + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + } + ], + "pinData": {}, + "connections": { + "When clicking ‘Test workflow’": { + "main": [ + [ + { + "node": "Basic LLM Chain", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "Basic LLM Chain", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "56e5e220-edbd-4d7a-97f3-96b8cf952202", + "meta": { + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "id": "255", + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/256.json b/test-workflows/workflows/256.json new file mode 100644 index 0000000000..dcbe9b2951 --- /dev/null +++ b/test-workflows/workflows/256.json @@ -0,0 +1,193 @@ +{ + "name": "Nested sub-node errors:model", + "nodes": [ + { + "parameters": { + "promptType": "define", + "text": "What happened yesterday?", + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.7, + "position": [ + 140, + -60 + ], + "id": "17f481ed-343f-4e0f-ace0-ec1a6937f57d", + "name": "AI Agent" + }, + { + "parameters": { + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 100, + 180 + ], + "id": "af60b8a2-f065-46e5-92c6-2b3f54e8b48d", + "name": "OpenAI Chat Model", + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "name": "search_vector_store", + "description": "Retrieves data about past events" + }, + "type": "@n8n/n8n-nodes-langchain.toolVectorStore", + "typeVersion": 1, + "position": [ + 400, + 160 + ], + "id": "3d2dc985-7dc5-4996-90c5-85e777070315", + "name": "Vector Store Tool" + }, + { + "parameters": { + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1.1, + "position": [ + 360, + 520 + ], + "id": "55cfa84c-b2f6-40aa-9eef-43fec740ba6c", + "name": "Embeddings OpenAI", + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "model": "=gpt-4o-mini123", + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 620, + 360 + ], + "id": "46468ea7-318b-4893-b387-b8cc1cca1355", + "name": "OpenAI Chat Model1", + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory", + "typeVersion": 1, + "position": [ + 300, + 320 + ], + "id": "e3a35d71-b47d-46fc-976e-eb671cc9c3fc", + "name": "In-Memory Vector Store" + }, + { + "parameters": {}, + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + -60, + -60 + ], + "id": "b42f6a79-4b29-4e17-95ab-5c4fbeda3683", + "name": "When clicking ‘Test workflow’" + } + ], + "pinData": {}, + "connections": { + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "AI Agent", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Vector Store Tool": { + "ai_tool": [ + [ + { + "node": "AI Agent", + "type": "ai_tool", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI": { + "ai_embedding": [ + [ + { + "node": "In-Memory Vector Store", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Vector Store Tool", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "In-Memory Vector Store": { + "ai_vectorStore": [ + [ + { + "node": "Vector Store Tool", + "type": "ai_vectorStore", + "index": 0 + } + ] + ] + }, + "When clicking ‘Test workflow’": { + "main": [ + [ + { + "node": "AI Agent", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "5b6e4b0f-73c8-4254-8b3e-aa36f3e5ae4e", + "meta": { + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "id": "256", + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/257.json b/test-workflows/workflows/257.json new file mode 100644 index 0000000000..205f93c58f --- /dev/null +++ b/test-workflows/workflows/257.json @@ -0,0 +1,262 @@ +{ + "createdAt": "2025-03-11T17:56:22.329Z", + "updatedAt": "2025-03-11T17:57:14.000Z", + "id": "257", + "name": "Agent:auto-fix:anthropic", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "f53b691d-beaa-4d60-a9da-d7380bc4c69a", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + -460, + 80 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "What time is my check-in?", + "hasOutputParser": true, + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.8, + "position": [ + -140, + 80 + ], + "id": "2ae90e1d-1333-4988-ac49-5e7e8f3026ff", + "name": "AI Agent" + }, + { + "parameters": { + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing", + "typeVersion": 1, + "position": [ + 100, + 360 + ], + "id": "7e2efbb9-41b2-4c6a-a811-3a4d62181ff5", + "name": "Auto-fixing Output Parser" + }, + { + "parameters": { + "schemaType": "manual", + "inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"resolution\": {\n \"type\": \"string\",\n \"description\": \"The customer-facing resolution or response that should be communicated to the customer\"\n },\n \"reasoning\": {\n \"type\": \"string\",\n \"description\": \"Detailed explanation of the solution and reasoning for internal use\"\n }\n },\n \"additionalProperties\": true,\n \"required\": [\"resolution\", \"reasoning\"]\n}" + }, + "type": "@n8n/n8n-nodes-langchain.outputParserStructured", + "typeVersion": 1.2, + "position": [ + 240, + 500 + ], + "id": "6405c53c-46c2-4c64-84c7-a7db2b127ca6", + "name": "Structured Output Parser" + }, + { + "parameters": { + "sessionIdType": "customKey", + "sessionKey": "memory7" + }, + "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", + "typeVersion": 1.3, + "position": [ + -120, + 360 + ], + "id": "0b93b732-9529-45c6-a914-83c500ee3a36", + "name": "Simple Memory" + }, + { + "parameters": { + "model": { + "__rl": true, + "mode": "list", + "value": "gpt-4o-mini" + }, + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1.2, + "position": [ + 40, + 500 + ], + "id": "3ebb149d-a83d-4ec1-8e79-e67f87fc5091", + "name": "OpenAI Chat Model1", + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "What time is my check-in?", + "hasOutputParser": true, + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.8, + "position": [ + 260, + 80 + ], + "id": "8237c156-5ec1-4bf9-84a1-ad408d3b6152", + "name": "AI Agent1" + }, + { + "parameters": { + "content": "## Auto-fixing Output Parser + Memory\n", + "height": 88, + "width": 386 + }, + "id": "fb77496b-6d07-4a3c-90a8-bb8788a5f588", + "name": "Sticky Note4", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -300, + -40 + ] + }, + { + "parameters": { + "model": { + "__rl": true, + "value": "claude-3-7-sonnet-20250219", + "mode": "list", + "cachedResultName": "Claude 3.7 Sonnet" + }, + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic", + "typeVersion": 1.3, + "position": [ + -340, + 360 + ], + "id": "b32382ad-d5c6-4b80-b315-5ba9ce48c994", + "name": "Anthropic Chat Model", + "credentials": { + "anthropicApi": { + "id": "1Dr1Xbrd2xeq7gaq", + "name": "Anthropic account" + } + } + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent", + "type": "main", + "index": 0 + } + ] + ] + }, + "AI Agent": { + "main": [ + [ + { + "node": "AI Agent1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Auto-fixing Output Parser": { + "ai_outputParser": [ + [ + { + "node": "AI Agent", + "type": "ai_outputParser", + "index": 0 + }, + { + "node": "AI Agent1", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + }, + "Structured Output Parser": { + "ai_outputParser": [ + [ + { + "node": "Auto-fixing Output Parser", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + }, + "Simple Memory": { + "ai_memory": [ + [ + { + "node": "AI Agent", + "type": "ai_memory", + "index": 0 + }, + { + "node": "AI Agent1", + "type": "ai_memory", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Auto-fixing Output Parser", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Anthropic Chat Model": { + "ai_languageModel": [ + [ + { + "node": "AI Agent", + "type": "ai_languageModel", + "index": 0 + }, + { + "node": "AI Agent1", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "4ab225eb-8c26-476c-a12f-d2cc00836ca5", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/258.json b/test-workflows/workflows/258.json new file mode 100644 index 0000000000..ffbc318fd6 --- /dev/null +++ b/test-workflows/workflows/258.json @@ -0,0 +1,263 @@ +{ + "createdAt": "2025-03-11T17:52:12.078Z", + "updatedAt": "2025-03-11T17:56:05.000Z", + "id": "258", + "name": "Agent:auto-fix:openai", + "active": false, + "nodes": [ + { + "parameters": {}, + "id": "9152fa2f-1cf1-4745-bf52-3d3374e501c5", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 160, + 820 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "What time is my check-in?", + "hasOutputParser": true, + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.8, + "position": [ + 480, + 820 + ], + "id": "1c390448-79da-4a49-b7f2-3a7a99a23167", + "name": "AI Agent" + }, + { + "parameters": { + "model": { + "__rl": true, + "value": "gpt-4o-2024-05-13", + "mode": "list", + "cachedResultName": "gpt-4o-2024-05-13" + }, + "options": { + "temperature": 0, + "maxRetries": 3 + } + }, + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1.2, + "position": [ + 240, + 1100 + ], + "id": "71ffd19c-f0eb-4735-bdd5-4c8e9511fcc2", + "name": "OpenAI Chat Model", + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing", + "typeVersion": 1, + "position": [ + 720, + 1100 + ], + "id": "72cafb7e-889c-46cf-bfe1-ac71e9803037", + "name": "Auto-fixing Output Parser" + }, + { + "parameters": { + "schemaType": "manual", + "inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"resolution\": {\n \"type\": \"string\",\n \"description\": \"The customer-facing resolution or response that should be communicated to the customer\"\n },\n \"reasoning\": {\n \"type\": \"string\",\n \"description\": \"Detailed explanation of the solution and reasoning for internal use\"\n }\n },\n \"additionalProperties\": true,\n \"required\": [\"resolution\", \"reasoning\"]\n}" + }, + "type": "@n8n/n8n-nodes-langchain.outputParserStructured", + "typeVersion": 1.2, + "position": [ + 860, + 1240 + ], + "id": "58ab5ac8-9f75-4448-a4c9-55a8d2afa8fd", + "name": "Structured Output Parser" + }, + { + "parameters": { + "sessionIdType": "customKey", + "sessionKey": "memory6" + }, + "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", + "typeVersion": 1.3, + "position": [ + 500, + 1100 + ], + "id": "af4542a6-23e2-4baf-8544-b01aa16d22aa", + "name": "Simple Memory" + }, + { + "parameters": { + "model": { + "__rl": true, + "mode": "list", + "value": "gpt-4o-mini" + }, + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1.2, + "position": [ + 660, + 1240 + ], + "id": "84ebbc2c-ed7f-418b-b4b0-e0f273912d79", + "name": "OpenAI Chat Model1", + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "promptType": "define", + "text": "What time is my check-in?", + "hasOutputParser": true, + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.agent", + "typeVersion": 1.8, + "position": [ + 880, + 820 + ], + "id": "92c04ad7-f491-4f0f-86de-c32fe82c2148", + "name": "AI Agent1" + }, + { + "parameters": { + "content": "## Auto-fixing Output Parser + Memory\n", + "height": 88, + "width": 386 + }, + "id": "38f59837-adec-49dc-b848-0b97561c3842", + "name": "Sticky Note4", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 320, + 700 + ] + } + ], + "connections": { + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "AI Agent", + "type": "main", + "index": 0 + } + ] + ] + }, + "Auto-fixing Output Parser": { + "ai_outputParser": [ + [ + { + "node": "AI Agent", + "type": "ai_outputParser", + "index": 0 + }, + { + "node": "AI Agent1", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + }, + "Structured Output Parser": { + "ai_outputParser": [ + [ + { + "node": "Auto-fixing Output Parser", + "type": "ai_outputParser", + "index": 0 + } + ] + ] + }, + "Simple Memory": { + "ai_memory": [ + [ + { + "node": "AI Agent", + "type": "ai_memory", + "index": 0 + }, + { + "node": "AI Agent1", + "type": "ai_memory", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model1": { + "ai_languageModel": [ + [ + { + "node": "Auto-fixing Output Parser", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "AI Agent": { + "main": [ + [ + { + "node": "AI Agent1", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model": { + "ai_languageModel": [ + [ + { + "node": "AI Agent", + "type": "ai_languageModel", + "index": 0 + }, + { + "node": "AI Agent1", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": null, + "pinData": {}, + "versionId": "e00984a3-c69b-42b6-afb9-91b44c6a0e37", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/259.json b/test-workflows/workflows/259.json new file mode 100644 index 0000000000..3d6d4cecbe --- /dev/null +++ b/test-workflows/workflows/259.json @@ -0,0 +1,499 @@ +{ + "createdAt": "2024-03-04T17:02:06.139Z", + "updatedAt": "2025-03-12T13:18:57.000Z", + "id": "259", + "name": "ChainQA", + "active": false, + "nodes": [ + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "79cfd86e-b657-49de-bc61-13415ffa725b", + "name": "Embeddings OpenAI6", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 1420, + 1580 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "options": { + "metadata": { + "metadataValues": [ + { + "name": "some-meta", + "value": "test" + }, + { + "name": "other-meta", + "value": "test2" + } + ] + } + } + }, + "id": "76ee3d77-836c-417d-8d8e-9822cddfe936", + "name": "Default Data Loader2", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 1560, + 1580 + ] + }, + { + "parameters": { + "chunkSize": 500, + "chunkOverlap": 100 + }, + "id": "1edacf5b-b7e4-4486-b98f-c78b338ac38e", + "name": "Token Splitter2", + "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter", + "typeVersion": 1, + "position": [ + 1560, + 1760 + ] + }, + { + "parameters": { + "model": "gpt-3.5-turbo-0125", + "options": { + "temperature": 0 + } + }, + "id": "93ff6597-cac9-4847-8efd-e1d03520b4b9", + "name": "OpenAI Chat Model2", + "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", + "typeVersion": 1, + "position": [ + 2100, + 1660 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": {}, + "id": "8985b238-8814-4aab-bbf3-801fb52c7757", + "name": "Vector Store Retriever2", + "type": "@n8n/n8n-nodes-langchain.retrieverVectorStore", + "typeVersion": 1, + "position": [ + 2380, + 1720 + ] + }, + { + "parameters": { + "model": "text-embedding-3-small", + "options": {} + }, + "id": "b2ef63c3-2e18-49dc-8241-ee71eabdd6cb", + "name": "Embeddings OpenAI7", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 2320, + 1980 + ], + "credentials": { + "openAiApi": { + "id": "Zak03cqeLUOsgkFI", + "name": "OpenAi account" + } + } + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "d998ae3e-192c-45ff-a3ff-ad3ed3a20304", + "name": "output_matches", + "value": "={{ $json.response.text?.includes('80') ?? $json.response.includes('80') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "046edb77-d0cd-4e8b-9db3-706c249e557f", + "name": "Edit Fields2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 3500, + 1360 + ] + }, + { + "parameters": { + "memoryKey": "bitcoin_wf_test" + }, + "id": "11262bc3-f1db-4162-94c8-5f2d5b279900", + "name": "In-Memory Vector Store2", + "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory", + "typeVersion": 1, + "position": [ + 2320, + 1860 + ] + }, + { + "parameters": {}, + "id": "f4ff0f49-ac8b-4f7c-9cd4-90f0f9534772", + "name": "When clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 1000, + 1340 + ] + }, + { + "parameters": { + "jsCode": "return {\n text: `Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. 2 Block Item Item ... Hash Block Item Item ... Hash Transaction Owner 1's Public Key Owner 0's Signature Hash Transaction Owner 2's Public Key Owner 1's Signature Hash Verify Transaction Owner 3's Public Key Owner 2's Signature Hash Verify Owner 2's Private Key Owner 1's Private Key SignSign Owner 3's Private Key 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Prev Hash Nonce Tx Tx ... Block Prev Hash Nonce Tx Tx ... New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 BlockBlock Block Header (Block Hash) Prev Hash Nonce Hash01 Hash0 Hash1 Hash2 Hash3 Hash23 Root Hash Hash01 Hash2 Tx3 Hash23 Block Header (Block Hash) Root Hash Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block Prev Hash Nonce Hash3 Tx0 Tx1 Tx2 Tx3 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In ... In Out ... Hash01 Hash2 Hash3 Hash23 Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Block Header Merkle Root Prev Hash Nonce Merkle Branch for Tx3 Longest Proof-of-Work Chain Tx3 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the \"tape\", is made public, but without telling who the parties were. As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block q z = probability the attacker will ever catch up from z blocks behind q z = { 1 if p≤q q / p z if pq } 6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: =z q p To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∑ k =0 ∞  k e − k ! ⋅ { q / p  z−k  if k ≤ z 1 if k  z } Rearranging to avoid summing the infinite tail of the distribution... 1− ∑ k =0 z  k e − k!  1−q / p  z− k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, \"b-money,\" http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, \"Design of a secure timestamping service with minimal trust requirements,\" In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, \"How to time-stamp a digital document,\" In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, \"Improving the efficiency and reliability of digital time-stamping,\" In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, \"Secure names for bit-strings,\" In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, \"Hashcash - a denial of service counter-measure,\" http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, \"Protocols for public key cryptosystems,\" In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, \"An introduction to probability theory and its applications,\" 1957. 9`\n}" + }, + "id": "06c12027-e965-441d-b1d8-b711eabbeb02", + "name": "Code", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 1220, + 1340 + ] + }, + { + "parameters": { + "mode": "insert", + "memoryKey": "bitcoin_wf_test", + "clearStore": true + }, + "id": "569a716b-c369-461e-b522-4f890af4fa34", + "name": "In-Memory Vector Store", + "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory", + "typeVersion": 1, + "position": [ + 1480, + 1340 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "options": {} + }, + "id": "031906b6-9157-4ec4-93ab-55486e5a32f2", + "name": "Question and Answer Chain 1.3", + "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa", + "typeVersion": 1.3, + "position": [ + 2400, + 1080 + ] + }, + { + "parameters": { + "promptType": "define", + "text": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa", + "typeVersion": 1.4, + "position": [ + 2660, + 1340 + ], + "id": "412a579e-3531-4270-983a-c938d66362e3", + "name": "Question and Answer Chain 1.4" + }, + { + "parameters": { + "promptType": "define", + "text": "What is the size of a block header with no transactions? Respond only with number of bytes.", + "options": {} + }, + "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa", + "typeVersion": 1.5, + "position": [ + 2800, + 1560 + ], + "id": "e3f4a4e8-ef8e-4204-ac46-f0896126fcbe", + "name": "Question and Answer Chain 1.5" + }, + { + "parameters": { + "numberInputs": 3 + }, + "type": "n8n-nodes-base.merge", + "typeVersion": 3, + "position": [ + 3280, + 1360 + ], + "id": "619f459a-d2a5-41ce-9b92-85f54d3f4017", + "name": "Merge" + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "5f9a8751-2eb2-4ab6-8f12-b7856d9baa8a", + "name": "output_length_matches", + "value": "={{ $items().length === 12 }}", + "type": "boolean" + }, + { + "id": "a5a61e4e-ff4d-4da5-a174-9788c22cddfd", + "name": "has_content", + "value": "={{ $json.pageContent.length > 100 }}", + "type": "boolean" + }, + { + "id": "bceaea49-b29f-47d7-8a5a-14d4e02477ec", + "name": "has_meta", + "value": "={{ $items().every(i => i.json.metadata['some-meta'] === 'test' && i.json.metadata['other-meta'] === 'test2') }}", + "type": "boolean" + } + ] + }, + "options": {} + }, + "id": "e49fd92f-0a97-44a4-bbf5-c9aa94496ce1", + "name": "Check Vector Store Populated2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1940, + 1340 + ], + "executeOnce": true + } + ], + "connections": { + "Embeddings OpenAI6": { + "ai_embedding": [ + [ + { + "node": "In-Memory Vector Store", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Default Data Loader2": { + "ai_document": [ + [ + { + "node": "In-Memory Vector Store", + "type": "ai_document", + "index": 0 + } + ] + ] + }, + "Token Splitter2": { + "ai_textSplitter": [ + [ + { + "node": "Default Data Loader2", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "OpenAI Chat Model2": { + "ai_languageModel": [ + [ + { + "node": "Question and Answer Chain 1.3", + "type": "ai_languageModel", + "index": 0 + }, + { + "node": "Question and Answer Chain 1.4", + "type": "ai_languageModel", + "index": 0 + }, + { + "node": "Question and Answer Chain 1.5", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Vector Store Retriever2": { + "ai_retriever": [ + [ + { + "node": "Question and Answer Chain 1.5", + "type": "ai_retriever", + "index": 0 + }, + { + "node": "Question and Answer Chain 1.4", + "type": "ai_retriever", + "index": 0 + }, + { + "node": "Question and Answer Chain 1.3", + "type": "ai_retriever", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI7": { + "ai_embedding": [ + [ + { + "node": "In-Memory Vector Store2", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "In-Memory Vector Store2": { + "ai_vectorStore": [ + [ + { + "node": "Vector Store Retriever2", + "type": "ai_vectorStore", + "index": 0 + } + ] + ] + }, + "When clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Code", + "type": "main", + "index": 0 + } + ] + ] + }, + "Code": { + "main": [ + [ + { + "node": "In-Memory Vector Store", + "type": "main", + "index": 0 + } + ] + ] + }, + "In-Memory Vector Store": { + "main": [ + [ + { + "node": "Check Vector Store Populated2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Question and Answer Chain 1.3": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + } + ] + ] + }, + "Question and Answer Chain 1.4": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Question and Answer Chain 1.5": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 2 + } + ] + ] + }, + "Merge": { + "main": [ + [ + { + "node": "Edit Fields2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Check Vector Store Populated2": { + "main": [ + [ + { + "node": "Question and Answer Chain 1.5", + "type": "main", + "index": 0 + }, + { + "node": "Question and Answer Chain 1.3", + "type": "main", + "index": 0 + }, + { + "node": "Question and Answer Chain 1.4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": { + "executionOrder": "v1" + }, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true + }, + "pinData": {}, + "versionId": "3669c4ec-780d-4c3d-88a9-d470593b5ed9", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/26.json b/test-workflows/workflows/26.json new file mode 100644 index 0000000000..cffbc875ae --- /dev/null +++ b/test-workflows/workflows/26.json @@ -0,0 +1,729 @@ +{ + "createdAt": "2021-02-17T09:14:09.452Z", + "updatedAt": "2021-05-21T11:16:43.023Z", + "id": "26", + "name": "ClickUp:Folder:create update getAll get delete:Goal:create update getAll get delete:GoalKeyResult:create update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "c237659f-9d24-4aa2-9869-8965d9a1591b" + }, + { + "parameters": { + "resource": "folder", + "team": "4651110", + "space": "8716115", + "name": "=testFolder{{Date.now()}}" + }, + "name": "ClickUp", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 460, + 220 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "5034da19-bed1-4282-a8e9-6cf18d227daf" + }, + { + "parameters": { + "resource": "folder", + "operation": "update", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "updateFields": { + "name": "=testFolderUpdated{{Date.now()}}" + } + }, + "name": "ClickUp1", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 740, + 220 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "f16090cd-67d3-41bc-b1f5-9449d3334323" + }, + { + "parameters": { + "resource": "folder", + "operation": "getAll", + "team": "4651110", + "space": "8716115", + "limit": 1, + "filters": {} + }, + "name": "ClickUp2", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1050, + 220 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "5ecdc66a-43f2-4ee6-9139-32d43694f4b2" + }, + { + "parameters": { + "resource": "folder", + "operation": "get", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}" + }, + "name": "ClickUp3", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1330, + 220 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "fb668fdb-e839-4b50-a683-1583474a2e0a" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}" + }, + "name": "ClickUp4", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1610, + 220 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "0c7006d8-7a50-47a1-aa3d-b7d55041a95e" + }, + { + "parameters": { + "resource": "goal", + "team": "4651110", + "name": "=testGoal{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp5", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 450, + 400 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "disabled": true, + "id": "bf9c004a-aec4-44fe-93c3-502b994deb5e" + }, + { + "parameters": { + "resource": "goal", + "operation": "update", + "goal": "={{$node[\"ClickUp5\"].json[\"id\"]}}", + "updateFields": { + "name": "=testGoalUpdated{{Date.now()}}" + } + }, + "name": "ClickUp6", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1630, + 390 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "disabled": true, + "id": "1612db26-06b6-4311-823a-7f333867704c" + }, + { + "parameters": { + "resource": "goal", + "operation": "getAll", + "team": "4651110", + "limit": 1 + }, + "name": "ClickUp7", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1950, + 390 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "disabled": true, + "id": "52f593da-feb7-44e3-b4b1-480a6b3c7b80" + }, + { + "parameters": { + "resource": "goal", + "operation": "get", + "goal": "={{$node[\"ClickUp5\"].json[\"id\"]}}" + }, + "name": "ClickUp8", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2230, + 390 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "disabled": true, + "id": "e634fee5-7272-483b-81af-2f2edb2a1568" + }, + { + "parameters": { + "resource": "goal", + "operation": "delete", + "goal": "={{$node[\"ClickUp5\"].json[\"id\"]}}" + }, + "name": "ClickUp9", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2510, + 390 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "disabled": true, + "id": "fa8e6453-a83e-41cf-a447-25dded6c83cd" + }, + { + "parameters": { + "resource": "goalKeyResult", + "goal": "={{$node[\"ClickUp5\"].json[\"id\"]}}", + "name": "=testGoalResult{{Date.now()}}", + "type": "boolean", + "additionalFields": {} + }, + "name": "ClickUp10", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 730, + 510 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "disabled": true, + "id": "f5eca6a5-4ab4-462b-941f-5daafe6950b2" + }, + { + "parameters": { + "resource": "goalKeyResult", + "operation": "update", + "keyResult": "={{$node[\"ClickUp10\"].json[\"id\"]}}", + "updateFields": { + "name": "=Updated Key result{{Date.now()}}" + } + }, + "name": "ClickUp11", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1060, + 510 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "disabled": true, + "id": "6c66b452-6837-4db7-bc40-407dad872c28" + }, + { + "parameters": { + "resource": "goalKeyResult", + "operation": "delete", + "keyResult": "={{$node[\"ClickUp10\"].json[\"id\"]}}" + }, + "name": "ClickUp12", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1340, + 510 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "disabled": true, + "id": "27caaec0-7dd1-4af8-bc0a-61425c6e212f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 590, + 220 + ], + "typeVersion": 1, + "id": "4617b9ef-c630-4c2f-9e38-bc8beb444063" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 890, + 220 + ], + "typeVersion": 1, + "id": "bd5ba78b-2492-4f5e-8c96-4cf38d7de98f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 1180, + 220 + ], + "typeVersion": 1, + "id": "370f5b9c-91d0-4473-b6d2-75c3b5e22d4d" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds3", + "type": "n8n-nodes-base.function", + "position": [ + 1470, + 220 + ], + "typeVersion": 1, + "id": "10594b96-9cfd-47a8-8195-27c04b33295c" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds4", + "type": "n8n-nodes-base.function", + "position": [ + 580, + 400 + ], + "typeVersion": 1, + "id": "57f1facf-1e6b-45a2-9163-bcf5f35cd956" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds5", + "type": "n8n-nodes-base.function", + "position": [ + 890, + 510 + ], + "typeVersion": 1, + "id": "abad8d7c-4ace-444f-8dd1-3d6f1d1ddc7c" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds6", + "type": "n8n-nodes-base.function", + "position": [ + 1200, + 510 + ], + "typeVersion": 1, + "id": "f5b4c39b-e920-4abb-8b3b-3f2b1fe6725e" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds7", + "type": "n8n-nodes-base.function", + "position": [ + 1500, + 390 + ], + "typeVersion": 1, + "id": "56e8b458-e6e0-4926-a5a3-62945de38f3b" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds8", + "type": "n8n-nodes-base.function", + "position": [ + 1790, + 390 + ], + "typeVersion": 1, + "id": "e0177c72-6a50-499d-a271-4b1a1ea60bd3" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds9", + "type": "n8n-nodes-base.function", + "position": [ + 2090, + 390 + ], + "typeVersion": 1, + "id": "3127e2cf-5e3b-47d7-ad5f-79ad1a1ae8e7" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds10", + "type": "n8n-nodes-base.function", + "position": [ + 2380, + 390 + ], + "typeVersion": 1, + "id": "e6f31f9c-ef3a-49f8-a207-c16085088c71" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "ClickUp", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp": { + "main": [ + [ + { + "node": "Sleep 8 Seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp1": { + "main": [ + [ + { + "node": "Sleep 8 Seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp2": { + "main": [ + [ + { + "node": "Sleep 8 Seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp3": { + "main": [ + [ + { + "node": "Sleep 8 Seconds3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp5": { + "main": [ + [ + { + "node": "Sleep 8 Seconds4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp6": { + "main": [ + [ + { + "node": "Sleep 8 Seconds8", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp7": { + "main": [ + [ + { + "node": "Sleep 8 Seconds9", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp8": { + "main": [ + [ + { + "node": "Sleep 8 Seconds10", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp10": { + "main": [ + [ + { + "node": "Sleep 8 Seconds5", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp11": { + "main": [ + [ + { + "node": "Sleep 8 Seconds6", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp12": { + "main": [ + [ + { + "node": "Sleep 8 Seconds7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds": { + "main": [ + [ + { + "node": "ClickUp1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds1": { + "main": [ + [ + { + "node": "ClickUp2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds2": { + "main": [ + [ + { + "node": "ClickUp3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds3": { + "main": [ + [ + { + "node": "ClickUp4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds4": { + "main": [ + [ + { + "node": "ClickUp10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds5": { + "main": [ + [ + { + "node": "ClickUp11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds6": { + "main": [ + [ + { + "node": "ClickUp12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds7": { + "main": [ + [ + { + "node": "ClickUp6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds8": { + "main": [ + [ + { + "node": "ClickUp7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds9": { + "main": [ + [ + { + "node": "ClickUp8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds10": { + "main": [ + [ + { + "node": "ClickUp9", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/27.json b/test-workflows/workflows/27.json new file mode 100644 index 0000000000..07b4c75199 --- /dev/null +++ b/test-workflows/workflows/27.json @@ -0,0 +1,892 @@ +{ + "createdAt": "2021-02-17T09:32:18.514Z", + "updatedAt": "2021-05-21T11:18:41.858Z", + "id": "27", + "name": "ClickUp:Task:create update member getAll get delete:List:create update customFields member getAll get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 160, + 420 + ], + "id": "98e4c4b0-c5a3-465e-b621-662cd30ba485" + }, + { + "parameters": { + "resource": "folder", + "team": "4651110", + "space": "8716115", + "name": "=TestFolder{{Date.now()}}" + }, + "name": "ClickUp", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 310, + 310 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "5e4c4ffe-c474-4ee1-a0b7-ca7023c3308d" + }, + { + "parameters": { + "resource": "list", + "operation": "create", + "team": "4651110", + "space": "8716115", + "folder": "={{$json[\"id\"]}}", + "name": "=TestList{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp1", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 580, + 340 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "84597659-cbe6-468b-9229-7eb3e7fc4481" + }, + { + "parameters": { + "resource": "list", + "operation": "update", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "updateFields": { + "name": "=UpdateTestList{{Date.now()}}" + } + }, + "name": "ClickUp2", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 860, + 660 + ], + "retryOnFail": true, + "waitBetweenTries": 500, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "37ede561-0fc6-4a18-8909-fd7815004a6c" + }, + { + "parameters": { + "resource": "list", + "team": "4651110", + "space": "8716115", + "folder": "={{$json[\"folder\"][\"id\"]}}", + "list": "={{$json[\"id\"]}}" + }, + "name": "ClickUp3", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1100, + 660 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "7653a4d3-5046-4174-a2a2-651003ef4a11" + }, + { + "parameters": { + "resource": "list", + "operation": "member", + "id": "={{$node[\"ClickUp2\"].json[\"id\"]}}", + "returnAll": false, + "limit": 1 + }, + "name": "ClickUp4", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1400, + 660 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "b4f551cc-edc7-4fb5-93d2-f2923b43e773" + }, + { + "parameters": { + "resource": "list", + "operation": "getAll", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "limit": 1, + "filters": {} + }, + "name": "ClickUp5", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1730, + 660 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "2aaf834a-4856-4851-a723-30e92aef06da" + }, + { + "parameters": { + "resource": "list", + "operation": "get", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}" + }, + "name": "ClickUp6", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2050, + 660 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "8f3cd1df-88e8-490e-956e-fa526e9efc06" + }, + { + "parameters": { + "resource": "list", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}" + }, + "name": "ClickUp7", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2380, + 660 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "6927c6fa-e5ff-4645-9a41-323ea0f4e0f3" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}" + }, + "name": "ClickUp8", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2670, + 660 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "30e40940-f242-4989-b107-6c570b7383b4" + }, + { + "parameters": { + "team": "4651110", + "space": "8716115", + "folder": "={{$json[\"folder\"][\"id\"]}}", + "list": "={{$json[\"id\"]}}", + "name": "=testTask{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp9", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 850, + 460 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "eaa614eb-b42a-4e87-8778-72f56553f57d" + }, + { + "parameters": { + "operation": "update", + "id": "={{$json[\"id\"]}}", + "updateFields": { + "name": "={{$json[\"name\"]}}Updated{{Date.now()}}" + } + }, + "name": "ClickUp10", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1100, + 460 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "5958b2ae-0eab-4b4d-ad0a-8eb925b6948c" + }, + { + "parameters": { + "operation": "member", + "id": "={{$json[\"id\"]}}", + "returnAll": false, + "limit": 1 + }, + "name": "ClickUp11", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1400, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "9e30c9e7-cf31-4520-a08e-a90990cecd9e" + }, + { + "parameters": { + "operation": "getAll", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "returnAll": false, + "limit": 1, + "filters": {} + }, + "name": "ClickUp12", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1740, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "75a7b4ee-7d37-4384-8d6b-1f0785d73575" + }, + { + "parameters": { + "operation": "get", + "id": "={{$node[\"ClickUp9\"].json[\"id\"]}}" + }, + "name": "ClickUp13", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2050, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "6f52a60f-2a79-449e-8a8e-0bd4005bdfbf" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"ClickUp9\"].json[\"id\"]}}" + }, + "name": "ClickUp14", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2380, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "2a32012b-e6e5-4b42-8cfd-95318e12b81d" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 440, + 310 + ], + "typeVersion": 1, + "id": "b1a45946-ff9a-483d-99b3-42f6dc8d6471" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 710, + 340 + ], + "typeVersion": 1, + "id": "f780613f-41a1-4c01-b7b5-0143f87c6f3a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 980, + 460 + ], + "typeVersion": 1, + "id": "51af53ab-592e-4417-9601-92c4714c1980" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds3", + "type": "n8n-nodes-base.function", + "position": [ + 1240, + 460 + ], + "typeVersion": 1, + "id": "d5bfeee6-1a7e-4353-a20f-4ed4b5cba689" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds4", + "type": "n8n-nodes-base.function", + "position": [ + 1570, + 460 + ], + "typeVersion": 1, + "id": "9ab01733-73f7-498e-a969-9515ad2b5e32" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds5", + "type": "n8n-nodes-base.function", + "position": [ + 1890, + 460 + ], + "typeVersion": 1, + "id": "aa025cf9-c5e5-4f3b-bb62-3197d973011c" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds6", + "type": "n8n-nodes-base.function", + "position": [ + 2210, + 460 + ], + "typeVersion": 1, + "id": "9d4d54c4-f642-4e4c-b717-10387a49989d" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds7", + "type": "n8n-nodes-base.function", + "position": [ + 980, + 660 + ], + "typeVersion": 1, + "id": "d724d742-235c-43df-ba81-619d2f840dd5" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds8", + "type": "n8n-nodes-base.function", + "position": [ + 1240, + 660 + ], + "typeVersion": 1, + "id": "d0b9f5e5-c66c-479b-bf37-c04b2643742f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds9", + "type": "n8n-nodes-base.function", + "position": [ + 1550, + 660 + ], + "typeVersion": 1, + "id": "3950ee56-9ec9-4e78-ada3-857ab17aba27" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds10", + "type": "n8n-nodes-base.function", + "position": [ + 1890, + 660 + ], + "typeVersion": 1, + "id": "c3728ed7-486c-4a6d-865e-08a21426368c" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds11", + "type": "n8n-nodes-base.function", + "position": [ + 2210, + 660 + ], + "typeVersion": 1, + "id": "021dbc08-7d4e-4867-808c-58f6844c6634" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds12", + "type": "n8n-nodes-base.function", + "position": [ + 2530, + 660 + ], + "typeVersion": 1, + "id": "be53074b-6bfd-4fef-b359-034dd3be06f4" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds13", + "type": "n8n-nodes-base.function", + "position": [ + 700, + 660 + ], + "typeVersion": 1, + "id": "ce69e0ce-50d7-416f-9349-dc3b5e378fd3" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "ClickUp", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp": { + "main": [ + [ + { + "node": "Sleep 8 Seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp1": { + "main": [ + [ + { + "node": "Sleep 8 Seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp2": { + "main": [ + [ + { + "node": "Sleep 8 Seconds7", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp3": { + "main": [ + [ + { + "node": "Sleep 8 Seconds8", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp4": { + "main": [ + [ + { + "node": "Sleep 8 Seconds9", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp5": { + "main": [ + [ + { + "node": "Sleep 8 Seconds10", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp6": { + "main": [ + [ + { + "node": "Sleep 8 Seconds11", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp7": { + "main": [ + [ + { + "node": "Sleep 8 Seconds12", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp9": { + "main": [ + [ + { + "node": "Sleep 8 Seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp10": { + "main": [ + [ + { + "node": "Sleep 8 Seconds3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp11": { + "main": [ + [ + { + "node": "Sleep 8 Seconds4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp12": { + "main": [ + [ + { + "node": "Sleep 8 Seconds5", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp13": { + "main": [ + [ + { + "node": "Sleep 8 Seconds6", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp14": { + "main": [ + [ + { + "node": "Sleep 8 Seconds13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds": { + "main": [ + [ + { + "node": "ClickUp1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds1": { + "main": [ + [ + { + "node": "ClickUp9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds2": { + "main": [ + [ + { + "node": "ClickUp10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds3": { + "main": [ + [ + { + "node": "ClickUp11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds4": { + "main": [ + [ + { + "node": "ClickUp12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds5": { + "main": [ + [ + { + "node": "ClickUp13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds6": { + "main": [ + [ + { + "node": "ClickUp14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds7": { + "main": [ + [ + { + "node": "ClickUp3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds8": { + "main": [ + [ + { + "node": "ClickUp4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds9": { + "main": [ + [ + { + "node": "ClickUp5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds10": { + "main": [ + [ + { + "node": "ClickUp6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds11": { + "main": [ + [ + { + "node": "ClickUp7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds12": { + "main": [ + [ + { + "node": "ClickUp8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds13": { + "main": [ + [ + { + "node": "ClickUp2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/28.json b/test-workflows/workflows/28.json new file mode 100644 index 0000000000..cf7b995228 --- /dev/null +++ b/test-workflows/workflows/28.json @@ -0,0 +1,619 @@ +{ + "createdAt": "2021-02-17T10:31:28.487Z", + "updatedAt": "2021-05-21T11:19:34.732Z", + "id": "28", + "name": "ClickUp:CheckList:create update delete:CheckListItem:create update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "2cd723b8-61fc-43c8-8f3f-1ea7352d0380" + }, + { + "parameters": { + "resource": "folder", + "team": "4651110", + "space": "8716115", + "name": "=test{{Date.now()}}" + }, + "name": "ClickUp", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 440, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "572a26d0-b9b3-4770-9117-8887e5b44fa6" + }, + { + "parameters": { + "resource": "list", + "operation": "create", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "name": "=testingList{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp1", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 720, + 350 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "9eeacdb8-f581-4e85-a1df-2a95c1addfc3" + }, + { + "parameters": { + "team": "4651110", + "space": "8716115", + "folder": "={{$json[\"folder\"][\"id\"]}}", + "list": "={{$json[\"id\"]}}", + "name": "=testingTask{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp2", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1000, + 400 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "268944a2-0717-4eae-89af-fc0b04410f28" + }, + { + "parameters": { + "resource": "checklist", + "task": "={{$json[\"id\"]}}", + "name": "=checkListTest{{Date.now()}}" + }, + "name": "ClickUp3", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1320, + 400 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "ba8f8804-c2c4-4b27-af32-f7cf1b927015" + }, + { + "parameters": { + "resource": "checklist", + "operation": "update", + "checklist": "={{$node[\"ClickUp3\"].json[\"id\"]}}", + "updateFields": { + "name": "=checkListUpdated{{Date.now()}}" + } + }, + "name": "ClickUp5", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2620, + 400 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "f2497296-0a02-4776-8630-4b60ced78f68" + }, + { + "parameters": { + "resource": "checklist", + "operation": "delete", + "checklist": "={{$node[\"ClickUp3\"].json[\"id\"]}}" + }, + "name": "ClickUp6", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2900, + 400 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "a683cc12-b055-4e54-9e3b-8de767cc74a6" + }, + { + "parameters": { + "resource": "list", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}" + }, + "name": "ClickUp4", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 3170, + 350 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "8dd64f31-29d1-4875-8d03-01d0af2c6794" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}" + }, + "name": "ClickUp7", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 3450, + 290 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "36227deb-d4d2-418b-8343-e1377555e1f3" + }, + { + "parameters": { + "resource": "checklistItem", + "checklist": "={{$node[\"ClickUp3\"].json[\"id\"]}}", + "name": "=Item{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp8", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1620, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "f24f0655-5198-4eb7-a940-67ee22c2348a" + }, + { + "parameters": { + "resource": "checklistItem", + "operation": "update", + "checklist": "={{$node[\"ClickUp3\"].json[\"id\"]}}", + "checklistItem": "={{$node[\"ClickUp8\"].json[\"items\"][0][\"id\"]}}", + "updateFields": { + "name": "=UpdatedItem{{Date.now()}}" + } + }, + "name": "ClickUp9", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1940, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "3810e977-772d-4bce-b194-44e5bd8d011a" + }, + { + "parameters": { + "resource": "checklistItem", + "operation": "delete", + "checklist": "={{$node[\"ClickUp3\"].json[\"id\"]}}", + "checklistItem": "={{$node[\"ClickUp8\"].json[\"items\"][0][\"id\"]}}" + }, + "name": "ClickUp10", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2280, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "27d6aa81-4506-4e1d-af70-7261b7451814" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 570, + 300 + ], + "typeVersion": 1, + "id": "27b3d626-18a4-41e8-a461-a528119ddabf" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 860, + 400 + ], + "typeVersion": 1, + "id": "71a5ce83-df35-4968-8700-2d78833fc835" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 1150, + 400 + ], + "typeVersion": 1, + "id": "a2a519d7-b353-4bc3-aefc-511ede861469" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds3", + "type": "n8n-nodes-base.function", + "position": [ + 1500, + 500 + ], + "typeVersion": 1, + "id": "34f7d210-cc78-4215-aaef-c9b789897a83" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds4", + "type": "n8n-nodes-base.function", + "position": [ + 1780, + 500 + ], + "typeVersion": 1, + "id": "d6795c16-86a6-4928-99e7-416cd41d1d35" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds5", + "type": "n8n-nodes-base.function", + "position": [ + 2120, + 500 + ], + "typeVersion": 1, + "id": "edd68a24-372b-47bd-b8a5-ed26c5b16289" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds6", + "type": "n8n-nodes-base.function", + "position": [ + 2500, + 400 + ], + "typeVersion": 1, + "id": "36eec449-eacd-490f-b61e-58102b5964e6" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds8", + "type": "n8n-nodes-base.function", + "position": [ + 3050, + 350 + ], + "typeVersion": 1, + "id": "4f7c7d5d-b24a-4651-84e0-b3de2908c9ec" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds9", + "type": "n8n-nodes-base.function", + "position": [ + 3330, + 290 + ], + "typeVersion": 1, + "id": "fdd473de-9eb4-4193-886f-6b2d401ec539" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "ClickUp", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp": { + "main": [ + [ + { + "node": "Sleep 8 Seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp1": { + "main": [ + [ + { + "node": "Sleep 8 Seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp2": { + "main": [ + [ + { + "node": "Sleep 8 Seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp3": { + "main": [ + [ + { + "node": "Sleep 8 Seconds3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp5": { + "main": [ + [ + { + "node": "ClickUp6", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp6": { + "main": [ + [ + { + "node": "Sleep 8 Seconds8", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp4": { + "main": [ + [ + { + "node": "Sleep 8 Seconds9", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp8": { + "main": [ + [ + { + "node": "Sleep 8 Seconds4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp9": { + "main": [ + [ + { + "node": "Sleep 8 Seconds5", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp10": { + "main": [ + [ + { + "node": "Sleep 8 Seconds6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds": { + "main": [ + [ + { + "node": "ClickUp1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds1": { + "main": [ + [ + { + "node": "ClickUp2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds2": { + "main": [ + [ + { + "node": "ClickUp3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds3": { + "main": [ + [ + { + "node": "ClickUp8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds4": { + "main": [ + [ + { + "node": "ClickUp9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds5": { + "main": [ + [ + { + "node": "ClickUp10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds6": { + "main": [ + [ + { + "node": "ClickUp5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds8": { + "main": [ + [ + { + "node": "ClickUp4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds9": { + "main": [ + [ + { + "node": "ClickUp7", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/29.json b/test-workflows/workflows/29.json new file mode 100644 index 0000000000..68050c4304 --- /dev/null +++ b/test-workflows/workflows/29.json @@ -0,0 +1,470 @@ +{ + "createdAt": "2021-02-17T11:06:49.772Z", + "updatedAt": "2021-05-21T11:22:04.303Z", + "id": "29", + "name": "ClickUp:Comment:create update getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "31a422ab-f12f-4746-ae7a-bf991eb8cfb2" + }, + { + "parameters": { + "resource": "folder", + "team": "4651110", + "space": "8716115", + "name": "=Test2{{Date.now()}}" + }, + "name": "ClickUp", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "64ab5323-4dc3-4f28-bdb8-da24f78d8017" + }, + { + "parameters": { + "resource": "list", + "operation": "create", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "name": "=testingList2{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp1", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 680, + 350 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "f6c32a1e-8187-4e08-8283-a51ec248d1e0" + }, + { + "parameters": { + "resource": "comment", + "commentOn": "list", + "id": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "commentText": "=CommentOnList2{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp2", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 960, + 420 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "d27edbe8-e7d6-41bd-b9d0-3baaaeb62946" + }, + { + "parameters": { + "resource": "comment", + "operation": "update", + "comment": "={{$node[\"ClickUp2\"].json[\"id\"]}}", + "updateFields": { + "commentText": "=commentUpdated{{Date.now()}}" + } + }, + "name": "ClickUp3", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1230, + 420 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "11679d32-a338-4ace-993e-ade4de313f2d" + }, + { + "parameters": { + "resource": "comment", + "operation": "getAll", + "commentsOn": "list", + "id": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "ClickUp4", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1520, + 420 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "0b4921e6-d3a0-4784-b0ad-bec284c82f0d" + }, + { + "parameters": { + "resource": "comment", + "operation": "delete", + "comment": "={{$node[\"ClickUp4\"].json[\"id\"]}}" + }, + "name": "ClickUp5", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1830, + 420 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "b714cd49-ad36-44d5-8b3b-366fc2dfc678" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}" + }, + "name": "ClickUp7", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2400, + 290 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "2db1799e-fc8d-4025-b620-012fca33414a" + }, + { + "parameters": { + "resource": "list", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}" + }, + "name": "ClickUp6", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2130, + 350 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "23a70dfb-25da-4931-80b0-b5dca7d6554d" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 550, + 300 + ], + "typeVersion": 1, + "id": "01532975-dbf4-4757-a52b-255765b578bd" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 810, + 400 + ], + "typeVersion": 1, + "id": "50e69461-441f-4e30-be11-e2a426d4ec05" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 1100, + 420 + ], + "typeVersion": 1, + "id": "89191a40-0e4b-482b-a346-c7e04d9dd93f" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds3", + "type": "n8n-nodes-base.function", + "position": [ + 1370, + 420 + ], + "typeVersion": 1, + "id": "fd4dddb0-7f59-42bb-aac0-07c76dea598e" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds4", + "type": "n8n-nodes-base.function", + "position": [ + 1670, + 420 + ], + "typeVersion": 1, + "id": "3179d398-f06c-4902-82ac-3689d262297a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds5", + "type": "n8n-nodes-base.function", + "position": [ + 2000, + 350 + ], + "typeVersion": 1, + "id": "bfa972c2-e9ac-4500-8ffb-1ede8db29900" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds6", + "type": "n8n-nodes-base.function", + "position": [ + 2270, + 290 + ], + "typeVersion": 1, + "id": "2a6b234c-2bcf-4295-b092-2d7ba6ab7dd1" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "ClickUp", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp": { + "main": [ + [ + { + "node": "Sleep 8 Seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp1": { + "main": [ + [ + { + "node": "Sleep 8 Seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp2": { + "main": [ + [ + { + "node": "Sleep 8 Seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp3": { + "main": [ + [ + { + "node": "Sleep 8 Seconds3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp4": { + "main": [ + [ + { + "node": "Sleep 8 Seconds4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp5": { + "main": [ + [ + { + "node": "Sleep 8 Seconds5", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp6": { + "main": [ + [ + { + "node": "Sleep 8 Seconds6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds": { + "main": [ + [ + { + "node": "ClickUp1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds1": { + "main": [ + [ + { + "node": "ClickUp2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds2": { + "main": [ + [ + { + "node": "ClickUp3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds3": { + "main": [ + [ + { + "node": "ClickUp4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds4": { + "main": [ + [ + { + "node": "ClickUp5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds5": { + "main": [ + [ + { + "node": "ClickUp6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds6": { + "main": [ + [ + { + "node": "ClickUp7", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/30.json b/test-workflows/workflows/30.json new file mode 100644 index 0000000000..22e5825e1d --- /dev/null +++ b/test-workflows/workflows/30.json @@ -0,0 +1,471 @@ +{ + "createdAt": "2021-02-17T11:28:33.699Z", + "updatedAt": "2021-05-21T11:22:40.069Z", + "id": "30", + "name": "ClickUp:TaskDependency:create delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "c8338da0-7dbd-4b7b-ad70-c682f23f274b" + }, + { + "parameters": { + "resource": "folder", + "team": "4651110", + "space": "8716115", + "name": "=TestFolder3{{Date.now()}}" + }, + "name": "ClickUp", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "49bfdc4c-78c5-4fa0-ad06-749599d37da9" + }, + { + "parameters": { + "resource": "list", + "operation": "create", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "name": "=TestList{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp1", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 700, + 350 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "22b07b3b-3d70-4812-8113-ca3414a823fe" + }, + { + "parameters": { + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "name": "=testTask{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp9", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 990, + 400 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "f1468cfb-3736-4be0-b195-1f0c5f755890" + }, + { + "parameters": { + "resource": "taskDependency", + "task": "={{$node[\"ClickUp9\"].json[\"id\"]}}", + "dependsOnTask": "={{$node[\"ClickUp11\"].json[\"id\"]}}" + }, + "name": "ClickUp10", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1530, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "51f2c6b6-b7a4-41fc-b2e0-ce6185f735a3" + }, + { + "parameters": { + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "name": "=testTask2{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp11", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1250, + 400 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "befbbbf0-82d4-41f2-a557-f58d40499944" + }, + { + "parameters": { + "resource": "taskDependency", + "operation": "delete", + "task": "={{$node[\"ClickUp9\"].json[\"id\"]}}", + "dependsOnTask": "={{$node[\"ClickUp11\"].json[\"id\"]}}" + }, + "name": "ClickUp12", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1810, + 500 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "86f22c06-fcb6-40eb-a5f5-9e2e70bd768a" + }, + { + "parameters": { + "resource": "list", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}" + }, + "name": "ClickUp7", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2080, + 350 + ], + "alwaysOutputData": true, + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "e81f92bb-d7a6-49d5-8627-684107126a98" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}" + }, + "name": "ClickUp8", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2370, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "a5a69ffb-9f8d-40c6-aa84-a19bc6701824" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 550, + 300 + ], + "typeVersion": 1, + "id": "7d5fb22c-f448-40ff-981c-ea5d4a9e191c" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 850, + 400 + ], + "typeVersion": 1, + "id": "19cce08a-a818-4749-9b8f-95aa6d36a847" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 1120, + 400 + ], + "typeVersion": 1, + "id": "1a67dc29-5e28-4c23-921b-d8198ab9c4ff" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds3", + "type": "n8n-nodes-base.function", + "position": [ + 1390, + 500 + ], + "typeVersion": 1, + "id": "d80fb697-e532-4fca-a70a-7ba202475d18" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds4", + "type": "n8n-nodes-base.function", + "position": [ + 1670, + 500 + ], + "typeVersion": 1, + "id": "43edd50f-e0fd-433f-ba37-0b5b3c2534a4" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds5", + "type": "n8n-nodes-base.function", + "position": [ + 1950, + 350 + ], + "typeVersion": 1, + "id": "7507f4e6-4a8b-4080-ae36-df0df0d2243a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds6", + "type": "n8n-nodes-base.function", + "position": [ + 2240, + 300 + ], + "typeVersion": 1, + "id": "a08f6787-67f4-4a5e-92a8-4c0479911f6e" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "ClickUp", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp": { + "main": [ + [ + { + "node": "Sleep 8 Seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp1": { + "main": [ + [ + { + "node": "Sleep 8 Seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp9": { + "main": [ + [ + { + "node": "Sleep 8 Seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp10": { + "main": [ + [ + { + "node": "Sleep 8 Seconds4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp11": { + "main": [ + [ + { + "node": "Sleep 8 Seconds3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp12": { + "main": [ + [ + { + "node": "Sleep 8 Seconds5", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp7": { + "main": [ + [ + { + "node": "Sleep 8 Seconds6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds": { + "main": [ + [ + { + "node": "ClickUp1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds1": { + "main": [ + [ + { + "node": "ClickUp9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds2": { + "main": [ + [ + { + "node": "ClickUp11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds3": { + "main": [ + [ + { + "node": "ClickUp10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds4": { + "main": [ + [ + { + "node": "ClickUp12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds5": { + "main": [ + [ + { + "node": "ClickUp7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds6": { + "main": [ + [ + { + "node": "ClickUp8", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/31.json b/test-workflows/workflows/31.json new file mode 100644 index 0000000000..cd1d6952b3 --- /dev/null +++ b/test-workflows/workflows/31.json @@ -0,0 +1,831 @@ +{ + "createdAt": "2021-02-17T11:37:42.892Z", + "updatedAt": "2021-05-21T11:23:28.228Z", + "id": "31", + "name": "ClickUp:TimeEntry:create update start stop getall get delete:TimeEntryTag: add getAll remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 180, + 300 + ], + "id": "57e2a34f-32b5-40cf-af01-bd1673d56885" + }, + { + "parameters": { + "resource": "folder", + "team": "4651110", + "space": "8716115", + "name": "=TestFolder3{{Date.now()}}" + }, + "name": "ClickUp", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 340, + 300 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "e54b56d0-3678-4f29-ba16-124c8bab978e" + }, + { + "parameters": { + "resource": "list", + "operation": "create", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "name": "=TestList{{Date.now()}}", + "additionalFields": {} + }, + "name": "ClickUp1", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 620, + 350 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "7c895a57-ff70-4d75-bba0-2e909803ce14" + }, + { + "parameters": { + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "name": "={{Date.now()}}task", + "additionalFields": {} + }, + "name": "ClickUp9", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 880, + 400 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "941edfd0-d249-4679-bfb9-7b3de98942cf" + }, + { + "parameters": { + "resource": "timeEntry", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "start": "={{Date.now()}}", + "duration": 2, + "task": "={{$node[\"ClickUp9\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "ClickUp10", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1230, + 490 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "49d9fddf-92bb-41c2-83be-4fc1307fc00b" + }, + { + "parameters": { + "resource": "timeEntryTag", + "team": "4651110", + "timeEntryIds": "={{$node[\"ClickUp10\"].json[\"id\"]}}", + "tagsUi": { + "tagsValues": [ + { + "name": "n8n", + "tag_bg": "#FF3503", + "tag_fg": "#FFFFFF" + } + ] + } + }, + "name": "ClickUp11", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1530, + 570 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "a9c8efeb-cdfb-4759-84bd-5073734056c8" + }, + { + "parameters": { + "resource": "timeEntryTag", + "operation": "getAll", + "team": "4651110" + }, + "name": "ClickUp12", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 1900, + 570 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "c3c98b7f-7587-4d12-9e2a-5608b35c959c" + }, + { + "parameters": { + "resource": "timeEntryTag", + "operation": "remove", + "team": "4651110", + "timeEntryIds": "={{$node[\"ClickUp10\"].json[\"id\"]}}", + "tagNames": [ + "{\"name\":\"n8n\",\"creator\":8779387,\"tag_bg\":\"#FF3503\",\"tag_fg\":\"#FFFFFF\"}" + ] + }, + "name": "ClickUp13", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2210, + 570 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "40847957-d93e-4f0c-954f-ae8460fe35c0" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "update", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}", + "list": "={{$node[\"ClickUp1\"].json[\"id\"]}}", + "timeEntry": "={{$node[\"ClickUp10\"].json[\"id\"]}}", + "updateFields": { + "duration": 1 + } + }, + "name": "ClickUp14", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2490, + 480 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "e52fb5d1-f1bf-4a1d-a8f3-d37a17fc601b" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "start", + "team": "4651110", + "task": "={{$node[\"ClickUp9\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "ClickUp15", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 2770, + 480 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "55ca7b79-42a1-4029-bf83-3278d6186820" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "stop", + "team": "4651110" + }, + "name": "ClickUp16", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 3060, + 480 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "660f4dc1-4264-4633-b92a-58ed05f70724" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "getAll", + "team": "4651110", + "limit": 1, + "filters": {} + }, + "name": "ClickUp17", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 3330, + 480 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "0e143171-62db-4f3e-8d53-fb25c89b9d21" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "get", + "team": "4651110", + "timeEntry": "={{$node[\"ClickUp10\"].json[\"id\"]}}" + }, + "name": "ClickUp18", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 3600, + 480 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "58c0bb4e-2325-49c2-b121-c3c5e3124276" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "delete", + "team": "4651110", + "timeEntry": "={{$node[\"ClickUp10\"].json[\"id\"]}}" + }, + "name": "ClickUp19", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 3870, + 480 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "b2c2ab25-d4e3-463b-bb71-8cf8c127fb0c" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "team": "4651110", + "space": "8716115", + "folder": "={{$node[\"ClickUp\"].json[\"id\"]}}" + }, + "name": "ClickUp2", + "type": "n8n-nodes-base.clickUp", + "typeVersion": 1, + "position": [ + 4170, + 330 + ], + "credentials": { + "clickUpApi": { + "id": "13", + "name": "clickup cred" + } + }, + "id": "ae521f8e-61da-427c-9078-bb0d34372a3a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 470, + 300 + ], + "typeVersion": 1, + "id": "cd778215-46cb-4040-b5a8-4eacd1713e50" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds1", + "type": "n8n-nodes-base.function", + "position": [ + 750, + 350 + ], + "typeVersion": 1, + "id": "ac37f999-d0e8-463c-9088-9e530c89c251" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds2", + "type": "n8n-nodes-base.function", + "position": [ + 1020, + 400 + ], + "typeVersion": 1, + "id": "8a0375d2-4cf9-47f7-a096-cfa848791175" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds3", + "type": "n8n-nodes-base.function", + "position": [ + 1370, + 500 + ], + "typeVersion": 1, + "id": "442ac115-e73d-48c8-9db4-152a2593067d" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds4", + "type": "n8n-nodes-base.function", + "position": [ + 1710, + 570 + ], + "typeVersion": 1, + "id": "e5d50f49-fbe6-43bd-b490-089d24588c8d" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds5", + "type": "n8n-nodes-base.function", + "position": [ + 2050, + 570 + ], + "typeVersion": 1, + "id": "3d46fa02-ec36-4965-87b9-a9454fce76e3" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds6", + "type": "n8n-nodes-base.function", + "position": [ + 2360, + 480 + ], + "typeVersion": 1, + "id": "3275a0ae-e00f-4d98-8b16-79946d1e87f3" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds7", + "type": "n8n-nodes-base.function", + "position": [ + 2630, + 480 + ], + "typeVersion": 1, + "id": "a1722ed7-f526-483d-b14c-9658c3823e09" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds8", + "type": "n8n-nodes-base.function", + "position": [ + 2910, + 480 + ], + "typeVersion": 1, + "id": "0b493dec-41b3-418e-a163-5e76ee274146" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds9", + "type": "n8n-nodes-base.function", + "position": [ + 3200, + 480 + ], + "typeVersion": 1, + "id": "bf973582-986d-4962-a3bb-d415384ad5e5" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds10", + "type": "n8n-nodes-base.function", + "position": [ + 3470, + 480 + ], + "typeVersion": 1, + "id": "e6a2b2ac-c798-4ad0-9974-580c871fca4a" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds11", + "type": "n8n-nodes-base.function", + "position": [ + 3730, + 480 + ], + "typeVersion": 1, + "id": "1595390e-6e3f-46d7-8c02-26c52e3a62dd" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 8 Seconds12", + "type": "n8n-nodes-base.function", + "position": [ + 4050, + 330 + ], + "typeVersion": 1, + "id": "73d2d5c3-8485-4828-b2d6-e923259a9235" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "ClickUp", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp": { + "main": [ + [ + { + "node": "Sleep 8 Seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp1": { + "main": [ + [ + { + "node": "Sleep 8 Seconds1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp9": { + "main": [ + [ + { + "node": "Sleep 8 Seconds2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp10": { + "main": [ + [ + { + "node": "Sleep 8 Seconds3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp11": { + "main": [ + [ + { + "node": "Sleep 8 Seconds4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp12": { + "main": [ + [ + { + "node": "Sleep 8 Seconds5", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp13": { + "main": [ + [ + { + "node": "Sleep 8 Seconds6", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp14": { + "main": [ + [ + { + "node": "Sleep 8 Seconds7", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp15": { + "main": [ + [ + { + "node": "Sleep 8 Seconds8", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp16": { + "main": [ + [ + { + "node": "Sleep 8 Seconds9", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp17": { + "main": [ + [ + { + "node": "Sleep 8 Seconds10", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp18": { + "main": [ + [ + { + "node": "Sleep 8 Seconds11", + "type": "main", + "index": 0 + } + ] + ] + }, + "ClickUp19": { + "main": [ + [ + { + "node": "Sleep 8 Seconds12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds": { + "main": [ + [ + { + "node": "ClickUp1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds1": { + "main": [ + [ + { + "node": "ClickUp9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds2": { + "main": [ + [ + { + "node": "ClickUp10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds3": { + "main": [ + [ + { + "node": "ClickUp11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds4": { + "main": [ + [ + { + "node": "ClickUp12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds5": { + "main": [ + [ + { + "node": "ClickUp13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds6": { + "main": [ + [ + { + "node": "ClickUp14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds7": { + "main": [ + [ + { + "node": "ClickUp15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds8": { + "main": [ + [ + { + "node": "ClickUp16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds9": { + "main": [ + [ + { + "node": "ClickUp17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds10": { + "main": [ + [ + { + "node": "ClickUp18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds11": { + "main": [ + [ + { + "node": "ClickUp19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 8 Seconds12": { + "main": [ + [ + { + "node": "ClickUp2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/32.json b/test-workflows/workflows/32.json new file mode 100644 index 0000000000..848971a224 --- /dev/null +++ b/test-workflows/workflows/32.json @@ -0,0 +1,158 @@ +{ + "createdAt": "2021-02-17T12:54:18.856Z", + "updatedAt": "2021-02-24T12:51:15.701Z", + "id": "32", + "name": "Drif:Contact:create update get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "a8373e79-8b14-48ae-9baf-79db4bf1a92a" + }, + { + "parameters": { + "email": "=fake{{Date.now()}}@gmail.com", + "additionalFields": { + "name": "=Test{{Date.now()}}" + } + }, + "name": "Drift ", + "type": "n8n-nodes-base.drift", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "driftApi": { + "id": "15", + "name": "Drift API credentials" + } + }, + "id": "8cd5c238-7feb-4b60-985a-d99db59390bc" + }, + { + "parameters": { + "operation": "update", + "contactId": "={{$node[\"Drift \"].json[\"id\"]}}", + "updateFields": { + "name": "=node qtest{{Date.now()}}" + } + }, + "name": "Drift 1", + "type": "n8n-nodes-base.drift", + "typeVersion": 1, + "position": [ + 640, + 300 + ], + "credentials": { + "driftApi": { + "id": "15", + "name": "Drift API credentials" + } + }, + "id": "480edf8d-c1f6-4196-a659-f7b54c33e3db" + }, + { + "parameters": { + "operation": "get", + "contactId": "={{$node[\"Drift \"].json[\"id\"]}}" + }, + "name": "Drift 2", + "type": "n8n-nodes-base.drift", + "typeVersion": 1, + "position": [ + 790, + 300 + ], + "credentials": { + "driftApi": { + "id": "15", + "name": "Drift API credentials" + } + }, + "id": "d495bd88-0ed2-4016-acea-78deee947cc7" + }, + { + "parameters": { + "operation": "delete", + "contactId": "={{$node[\"Drift \"].json[\"id\"]}}" + }, + "name": "Drift 3", + "type": "n8n-nodes-base.drift", + "typeVersion": 1, + "position": [ + 940, + 300 + ], + "credentials": { + "driftApi": { + "id": "15", + "name": "Drift API credentials" + } + }, + "id": "2dce7e0c-3abd-45c8-a3d2-61edecd7a2bf" + } + ], + "connections": { + "Drift ": { + "main": [ + [ + { + "node": "Drift 1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Drift 1": { + "main": [ + [ + { + "node": "Drift 2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Drift 2": { + "main": [ + [ + { + "node": "Drift 3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Drift ", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/33.json b/test-workflows/workflows/33.json new file mode 100644 index 0000000000..4b874560c5 --- /dev/null +++ b/test-workflows/workflows/33.json @@ -0,0 +1,190 @@ +{ + "createdAt": "2021-02-17T13:25:16.665Z", + "updatedAt": "2021-02-17T13:25:16.665Z", + "id": "33", + "name": "Zoom:Meeting:create update getAll get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e177badc-c473-46ec-a4f7-6abe3cf18850" + }, + { + "parameters": { + "topic": "test", + "additionalFields": {} + }, + "name": "Zoom", + "type": "n8n-nodes-base.zoom", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "zoomApi": { + "id": "16", + "name": "Zoom JWT token" + } + }, + "id": "52fd7dd2-0260-4e24-b2e7-2fb0e6e96757" + }, + { + "parameters": { + "operation": "update", + "meetingId": "={{$node[\"Zoom\"].json[\"id\"]}}", + "updateFields": { + "duration": 30 + } + }, + "name": "Zoom1", + "type": "n8n-nodes-base.zoom", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "zoomApi": { + "id": "16", + "name": "Zoom JWT token" + } + }, + "id": "c2ccd698-377b-478e-ab75-dff35325ac93" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Zoom2", + "type": "n8n-nodes-base.zoom", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "zoomApi": { + "id": "16", + "name": "Zoom JWT token" + } + }, + "id": "5ca84447-9b5e-4679-b061-8b457ed1423a" + }, + { + "parameters": { + "operation": "get", + "meetingId": "={{$node[\"Zoom\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Zoom3", + "type": "n8n-nodes-base.zoom", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "zoomApi": { + "id": "16", + "name": "Zoom JWT token" + } + }, + "id": "bc1c531c-ee12-4f4e-bbde-c2a6a950ab3e" + }, + { + "parameters": { + "operation": "delete", + "meetingId": "={{$node[\"Zoom\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Zoom4", + "type": "n8n-nodes-base.zoom", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "zoomApi": { + "id": "16", + "name": "Zoom JWT token" + } + }, + "id": "05b90102-2196-41d0-ba64-42e8c45d2258" + } + ], + "connections": { + "Zoom": { + "main": [ + [ + { + "node": "Zoom1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zoom1": { + "main": [ + [ + { + "node": "Zoom2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zoom2": { + "main": [ + [ + { + "node": "Zoom3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zoom3": { + "main": [ + [ + { + "node": "Zoom4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Zoom", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/34.json b/test-workflows/workflows/34.json new file mode 100644 index 0000000000..068d44f4b0 --- /dev/null +++ b/test-workflows/workflows/34.json @@ -0,0 +1,253 @@ +{ + "createdAt": "2021-02-17T14:32:51.109Z", + "updatedAt": "2021-06-02T11:29:13.526Z", + "id": "34", + "name": "Strava:Activity:create get update getAll getComments getKudos getLaps", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "afcd2eb5-ee88-4fd8-ad2a-122f2ee05b6d" + }, + { + "parameters": { + "name": "TestActivity", + "type": "Run", + "startDate": "={{Date.now()}}", + "elapsedTime": 5, + "additionalFields": {} + }, + "name": "Strava", + "type": "n8n-nodes-base.strava", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "stravaOAuth2Api": { + "id": "17", + "name": "Strava credentials" + } + }, + "id": "3a0f90c9-47d1-4e97-b2ef-d04ffc09c7ab" + }, + { + "parameters": { + "operation": "update", + "activityId": "={{$node[\"Strava\"].json[\"id\"]}}", + "updateFields": { + "type": "Ride" + } + }, + "name": "Strava1", + "type": "n8n-nodes-base.strava", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "stravaOAuth2Api": { + "id": "17", + "name": "Strava credentials" + } + }, + "id": "b7731003-b34b-4cc9-b7cb-d6e1391268f8" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Strava2", + "type": "n8n-nodes-base.strava", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "stravaOAuth2Api": { + "id": "17", + "name": "Strava credentials" + } + }, + "notes": "IGNORED_PROPERTIES=device_watts", + "id": "7619daca-da98-4c79-9575-237c5ac602d2" + }, + { + "parameters": { + "operation": "get", + "activityId": "={{$node[\"Strava\"].json[\"id\"]}}" + }, + "name": "Strava3", + "type": "n8n-nodes-base.strava", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "stravaOAuth2Api": { + "id": "17", + "name": "Strava credentials" + } + }, + "id": "a2d40830-1aa4-4ffc-bc4c-de84003490ed" + }, + { + "parameters": { + "operation": "getComments", + "activityId": "={{$node[\"Strava\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Strava4", + "type": "n8n-nodes-base.strava", + "typeVersion": 1, + "position": [ + 600, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "stravaOAuth2Api": { + "id": "17", + "name": "Strava credentials" + } + }, + "id": "1d83183d-5238-47eb-b89d-4283af3953a8" + }, + { + "parameters": { + "operation": "getKudos", + "activityId": "={{$node[\"Strava\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Strava5", + "type": "n8n-nodes-base.strava", + "typeVersion": 1, + "position": [ + 750, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "stravaOAuth2Api": { + "id": "17", + "name": "Strava credentials" + } + }, + "id": "cdbc41db-3938-46a2-b167-c714aaa8dd5b" + }, + { + "parameters": { + "operation": "getLaps", + "activityId": "={{$node[\"Strava\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Strava6", + "type": "n8n-nodes-base.strava", + "typeVersion": 1, + "position": [ + 900, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "stravaOAuth2Api": { + "id": "17", + "name": "Strava credentials" + } + }, + "id": "86be5364-f022-43cb-b567-2b983f422ce7" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Strava", + "type": "main", + "index": 0 + } + ] + ] + }, + "Strava": { + "main": [ + [ + { + "node": "Strava4", + "type": "main", + "index": 0 + }, + { + "node": "Strava3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Strava1": { + "main": [ + [ + { + "node": "Strava2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Strava5": { + "main": [ + [ + { + "node": "Strava6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Strava4": { + "main": [ + [ + { + "node": "Strava5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Strava3": { + "main": [ + [ + { + "node": "Strava1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/35.json b/test-workflows/workflows/35.json new file mode 100644 index 0000000000..dda6676f8c --- /dev/null +++ b/test-workflows/workflows/35.json @@ -0,0 +1,422 @@ +{ + "createdAt": "2021-02-17T16:01:29.116Z", + "updatedAt": "2021-02-17T18:38:58.265Z", + "id": "35", + "name": "Slack:User:getPresence info:UserProfile:get update:Message:post getPermalink update postEphermera l delete:Reaction:add get remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 220, + 550 + ], + "id": "994d0931-d8cf-46ec-80dd-afa0d22717a1" + }, + { + "parameters": { + "resource": "userProfile", + "additionalFields": {} + }, + "name": "Slack", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 460, + 450 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "f4b748aa-95ac-491d-9aae-438e9d4af174" + }, + { + "parameters": { + "resource": "userProfile", + "operation": "update", + "additionalFields": { + "status_text": "Testing..." + } + }, + "name": "Slack1", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "79590777-6621-433a-88b2-555078feb8e1" + }, + { + "parameters": { + "channel": "random", + "text": "=Message at{{(new Date().toString())}}", + "attachments": [], + "otherOptions": {} + }, + "name": "Slack13", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 420, + 630 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "1f43049e-8dd6-425f-bb8a-e06edce9418b" + }, + { + "parameters": { + "operation": "getPermalink", + "channelId": "C01MZ82T9TR", + "timestamp": "={{$node[\"Slack13\"].json[\"message\"][\"ts\"]}}" + }, + "name": "Slack14", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1060, + 630 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "837e9401-e7f1-49f2-91ab-3f9882b13d89" + }, + { + "parameters": { + "operation": "update", + "channelId": "C01MZ82T9TR", + "text": "Message Updated ", + "ts": "={{$node[\"Slack13\"].json[\"message\"][\"ts\"]}}", + "updateFields": {}, + "attachments": [] + }, + "name": "Slack15", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1190, + 630 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "afd5e35a-da4c-4167-a208-ea4a4f28cac0" + }, + { + "parameters": { + "operation": "postEphemeral", + "channel": "random", + "user": "={{$node[\"Slack13\"].json[\"message\"][\"user\"]}}", + "text": "Message for Me Only", + "attachments": [], + "otherOptions": {} + }, + "name": "Slack16", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1320, + 630 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "1105d27e-18a8-4b77-b081-8127252edfbc" + }, + { + "parameters": { + "operation": "delete", + "channelId": "C01MZ82T9TR", + "timestamp": "={{$node[\"Slack13\"].json[\"message\"][\"ts\"]}}" + }, + "name": "Slack17", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1470, + 630 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "fc1412c5-331e-4bcb-a830-3f173d51c9ed" + }, + { + "parameters": { + "resource": "reaction", + "channelId": "C01MZ82T9TR", + "name": "+1", + "timestamp": "={{$node[\"Slack13\"].json[\"message\"][\"ts\"]}}" + }, + "name": "Slack18", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 580, + 700 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "d5f82714-f62e-4124-8a1d-081ef18b6ae2" + }, + { + "parameters": { + "resource": "reaction", + "operation": "get", + "channelId": "C01MZ82T9TR", + "timestamp": "={{$node[\"Slack13\"].json[\"message\"][\"ts\"]}}" + }, + "name": "Slack19", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 720, + 700 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "ad62b51f-a60e-46d8-b174-941f331886fb" + }, + { + "parameters": { + "resource": "reaction", + "operation": "remove", + "channelId": "C01MZ82T9TR", + "name": "+1", + "timestamp": "={{$node[\"Slack13\"].json[\"message\"][\"ts\"]}}" + }, + "name": "Slack20", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 870, + 700 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "d865f9ac-2f76-40fe-87e1-9c855cb518ec" + }, + { + "parameters": { + "resource": "user", + "operation": "getPresence", + "user": "={{$node[\"Slack13\"].json[\"message\"][\"user\"]}}" + }, + "name": "Slack24", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 580, + 850 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "6532165d-7578-4b90-b66d-e204955669dd" + }, + { + "parameters": { + "resource": "user", + "user": "={{$node[\"Slack13\"].json[\"message\"][\"user\"]}}" + }, + "name": "Slack25", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 730, + 850 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "f013017c-399b-4692-9dfe-be72138349b4" + } + ], + "connections": { + "Slack": { + "main": [ + [ + { + "node": "Slack1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Slack", + "type": "main", + "index": 0 + }, + { + "node": "Slack13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack13": { + "main": [ + [ + { + "node": "Slack18", + "type": "main", + "index": 0 + }, + { + "node": "Slack24", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack15": { + "main": [ + [ + { + "node": "Slack16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack16": { + "main": [ + [ + { + "node": "Slack17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack14": { + "main": [ + [ + { + "node": "Slack15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack18": { + "main": [ + [ + { + "node": "Slack19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack19": { + "main": [ + [ + { + "node": "Slack20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack20": { + "main": [ + [ + { + "node": "Slack14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack24": { + "main": [ + [ + { + "node": "Slack25", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/36.json b/test-workflows/workflows/36.json new file mode 100644 index 0000000000..13d7d86b6f --- /dev/null +++ b/test-workflows/workflows/36.json @@ -0,0 +1,753 @@ +{ + "createdAt": "2021-02-17T17:57:34.255Z", + "updatedAt": "2021-07-15T14:42:32.636Z", + "id": "36", + "name": "Slack:File:upload getAll get:Star:add getAll delete:Channgel:create update setPurpose setTopic ge t invite leave join getAll history replies member archive unarchive", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "a26bf258-8876-4142-9a6c-37ac7426e7c9" + }, + { + "parameters": { + "resource": "channel", + "operation": "setPurpose", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}", + "purpose": "Testing" + }, + "name": "Slack3", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 730, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "bd33c223-d19f-43ed-a4f8-6eb524340051" + }, + { + "parameters": { + "resource": "channel", + "operation": "setTopic", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}", + "topic": "QA" + }, + "name": "Slack4", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 870, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "e956c837-0f3e-4075-a246-ce5a5f16ef17" + }, + { + "parameters": { + "resource": "channel", + "operation": "get", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Slack5", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1020, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "66010c67-ac41-4390-a85a-6e3b9de26a98" + }, + { + "parameters": { + "resource": "channel", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Slack6", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1650, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "ead0ce56-689b-43b0-b527-ecd4f869963c" + }, + { + "parameters": { + "resource": "channel", + "operation": "history", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}", + "limit": 1, + "filters": {} + }, + "name": "Slack7", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1820, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "d1dc4c44-619b-42e5-af3f-106fff4a99b5" + }, + { + "parameters": { + "resource": "channel", + "operation": "rename", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}", + "name": "=renamed{{$node[\"Slack2\"].json[\"name\"]}}" + }, + "name": "Slack9", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 580, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "c63a975b-66ec-4f6a-85c4-712dd8f322d7" + }, + { + "parameters": { + "resource": "file", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Slack11", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 590, + 390 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "4d54c4d7-285e-4e61-853f-b25cc38160dd" + }, + { + "parameters": { + "resource": "file", + "operation": "get", + "fileId": "={{$node[\"Slack10\"].json[\"id\"]}}" + }, + "name": "Slack12", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 740, + 390 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "1cc8f403-d7a4-42a4-8e78-a2443c2aed32" + }, + { + "parameters": { + "resource": "channel", + "operation": "member", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Slack8", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 2120, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "88583aee-b74b-4316-a8c2-2a9ee278275a" + }, + { + "parameters": { + "resource": "channel", + "channelId": "=testchannel{{Math.random().toString(36).replace(/[^a-z]+/g, '')}}", + "additionalFields": { + "isPrivate": false + } + }, + "name": "Slack2", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 440, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "bfc23883-4190-46c7-8b9e-8afb0b4c3435" + }, + { + "parameters": { + "resource": "file", + "fileContent": "=Test file upload {{(new Date().toString())}}", + "options": { + "channelIds": [ + "C01N780JVPG" + ] + } + }, + "name": "Slack10", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 440, + 390 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "3526fb45-6eca-495d-8535-d77cbf2b78fd" + }, + { + "parameters": { + "resource": "star", + "operation": "delete", + "options": { + "channelId": "C01MZ82T9TR" + } + }, + "name": "Slack23", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 840, + 560 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "e4cfa506-e1b9-439f-8070-8c0cc7ba191d" + }, + { + "parameters": { + "resource": "star", + "operation": "getAll", + "limit": 1 + }, + "name": "Slack22", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 690, + 560 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "c79469c2-5987-442d-a08a-7b942f8c3fde" + }, + { + "parameters": { + "resource": "star", + "options": { + "channelId": "=C01MZ82T9TR" + } + }, + "name": "Slack21", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 550, + 560 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "eb6f3c3e-d6cb-42f4-aa6d-462bde196f28" + }, + { + "parameters": { + "resource": "channel", + "operation": "archive", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}" + }, + "name": "Slack", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 2250, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "cb863325-bb94-4669-a174-913a2d504fd9" + }, + { + "parameters": { + "resource": "channel", + "operation": "invite", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}", + "userIds": [ + "U01N08LEY9M" + ] + }, + "name": "Slack13", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1160, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "d4c01071-c77a-4605-8382-e0596de883ee" + }, + { + "parameters": { + "resource": "channel", + "operation": "join", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}" + }, + "name": "Slack16", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1500, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "b757d3d8-0d72-4efe-bcc0-ba360e423775" + }, + { + "parameters": { + "resource": "channel", + "operation": "replies", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}", + "ts": "={{$node[\"Slack7\"].json[\"ts\"]}}", + "filters": {} + }, + "name": "Slack18", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1960, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "c8c86ba2-599e-4546-a006-1509456726b7" + }, + { + "parameters": { + "resource": "channel", + "operation": "leave", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}" + }, + "name": "Slack17", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 1330, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "8d90aae7-bcc9-427d-86e4-4c18df0e6c35" + }, + { + "parameters": { + "resource": "channel", + "operation": "archive", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}" + }, + "name": "Slack1", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 2540, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "0a23fea3-c8dd-41a4-afef-1701d959d8f1" + }, + { + "parameters": { + "resource": "channel", + "operation": "unarchive", + "channelId": "={{$node[\"Slack2\"].json[\"id\"]}}" + }, + "name": "Slack14", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 2400, + 230 + ], + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "id": "2f208a4c-9c68-43d6-8dfd-eb1297a79b0d" + }, + { + "parameters": { + "resource": "star", + "operation": "delete", + "options": { + "channelId": "C01MZ82T9TR" + } + }, + "name": "Slack24", + "type": "n8n-nodes-base.slack", + "typeVersion": 1, + "position": [ + 400, + 560 + ], + "alwaysOutputData": true, + "credentials": { + "slackApi": { + "id": "18", + "name": "Slack Token" + } + }, + "continueOnFail": true, + "notes": "IGNORED_PROPERTIES=ok,error", + "id": "3d3fd370-7c82-4623-9258-e4d7e5a1e381" + } + ], + "connections": { + "Slack3": { + "main": [ + [ + { + "node": "Slack4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack4": { + "main": [ + [ + { + "node": "Slack5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack5": { + "main": [ + [ + { + "node": "Slack13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack6": { + "main": [ + [ + { + "node": "Slack7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack7": { + "main": [ + [ + { + "node": "Slack18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack9": { + "main": [ + [ + { + "node": "Slack3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack11": { + "main": [ + [ + { + "node": "Slack12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack2": { + "main": [ + [ + { + "node": "Slack9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack10": { + "main": [ + [ + { + "node": "Slack11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack22": { + "main": [ + [ + { + "node": "Slack23", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack21": { + "main": [ + [ + { + "node": "Slack22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Slack10", + "type": "main", + "index": 0 + }, + { + "node": "Slack2", + "type": "main", + "index": 0 + }, + { + "node": "Slack24", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack8": { + "main": [ + [ + { + "node": "Slack", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack13": { + "main": [ + [ + { + "node": "Slack17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack16": { + "main": [ + [ + { + "node": "Slack6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack18": { + "main": [ + [ + { + "node": "Slack8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack17": { + "main": [ + [ + { + "node": "Slack16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack": { + "main": [ + [ + { + "node": "Slack14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack14": { + "main": [ + [ + { + "node": "Slack1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Slack24": { + "main": [ + [ + { + "node": "Slack21", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/37.json b/test-workflows/workflows/37.json new file mode 100644 index 0000000000..ffd7abf514 --- /dev/null +++ b/test-workflows/workflows/37.json @@ -0,0 +1,466 @@ +{ + "createdAt": "2024-02-14T09:47:52.198Z", + "updatedAt": "2024-02-14T09:47:52.198Z", + "id": "37", + "name": "GitLab:Repository:get getIssues:Issue:create createComment edit get lock:Release:create get getAll update delete:User:getRepositories", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "57d13714-f0f8-46af-a51c-4d6691fe9a52" + }, + { + "parameters": { + "resource": "repository", + "operation": "get", + "owner": "nodeqa", + "repository": "nodemationQA" + }, + "name": "Gitlab", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 560, + 180 + ], + "id": "63131b59-53e5-431c-9c4e-daf68d14629c", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + }, + "notes": "IGNORED_PROPERTIES=topics" + }, + { + "parameters": { + "resource": "repository", + "owner": "nodeqa", + "repository": "nodemationQA", + "getRepositoryIssuesFilters": {} + }, + "name": "Gitlab1", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 820, + 180 + ], + "id": "6d4cf9da-8e20-45ac-a97e-b78365c53ae9", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + }, + "notes": "CAP_RESULTS_LENGTH=1" + }, + { + "parameters": { + "owner": "nodeqa", + "repository": "nodemationQA", + "title": "=Issue - {{(new Date()).toDateString()}}", + "body": "=QA Test on {{(new Date()).toDateString()}}", + "labels": [], + "assignee_ids": [] + }, + "name": "Gitlab2", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 550, + 330 + ], + "id": "6fd68a0d-f82b-4470-8ba0-624caac71815", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "operation": "createComment", + "owner": "nodeqa", + "repository": "nodemationQA", + "issueNumber": "={{$node[\"Gitlab2\"].json[\"iid\"]}}", + "body": "=Comment on issue - {{(new Date()).toString()}}" + }, + "name": "Gitlab3", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 710, + 330 + ], + "id": "f996bfa2-d08a-4943-bd32-6c3042345c24", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "operation": "edit", + "owner": "nodeqa", + "repository": "nodemationQA", + "issueNumber": "={{$node[\"Gitlab2\"].json[\"iid\"]}}", + "editFields": { + "description": "=Edited {{$node[\"Gitlab2\"].json[\"description\"]}}" + } + }, + "name": "Gitlab4", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 870, + 330 + ], + "id": "1dfade56-7b02-4c36-952f-729006aa4dbd", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "operation": "get", + "owner": "nodeqa", + "repository": "nodemationQA", + "issueNumber": "={{$node[\"Gitlab2\"].json[\"iid\"]}}" + }, + "name": "Gitlab5", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 1020, + 330 + ], + "id": "1ff45615-93bb-41b3-83d2-6a6135a77ee9", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "operation": "lock", + "owner": "nodeqa", + "repository": "nodemationQA", + "issueNumber": "={{$node[\"Gitlab2\"].json[\"iid\"]}}" + }, + "name": "Gitlab6", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 1180, + 330 + ], + "id": "f6367788-80ca-45a4-a018-c66b8815f911", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "resource": "release", + "owner": "nodeqa", + "repository": "nodemationQA", + "releaseTag": "=Release-tag-test{{Date.now()}}", + "additionalFields": { + "name": "=Release{{Date.now()}}", + "ref": "master" + } + }, + "name": "Gitlab7", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 540, + 490 + ], + "id": "5744f348-d468-45cd-90d8-b37502f20f49", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "resource": "user", + "owner": "n8nqa" + }, + "name": "Gitlab8", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 540, + 640 + ], + "id": "919f48e5-1999-40af-89c2-8adce98e843b", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + }, + "notes": "IGNORED_PROPERTIES=topics" + }, + { + "parameters": { + "resource": "release", + "operation": "get", + "owner": "nodeqa", + "repository": "nodemationQA", + "projectId": "24497029", + "tag_name": "={{$node[\"Gitlab7\"].json[\"tag_name\"]}}" + }, + "name": "Gitlab9", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 710, + 490 + ], + "id": "782007ea-d789-442c-b44d-fc34e737e467", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "resource": "release", + "operation": "getAll", + "owner": "nodeqa", + "repository": "nodemationQA", + "projectId": "24497029", + "limit": 1, + "additionalFields": {} + }, + "name": "Gitlab10", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 870, + 490 + ], + "id": "b441f646-eaef-41b8-934a-d349ae7563b5", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "resource": "release", + "operation": "update", + "owner": "nodeqa", + "repository": "nodemationQA", + "projectId": "24497029", + "tag_name": "={{$node[\"Gitlab7\"].json[\"tag_name\"]}}", + "additionalFields": { + "name": "=Updated{{$node[\"Gitlab7\"].json[\"name\"]}}" + } + }, + "name": "Gitlab11", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 1020, + 490 + ], + "id": "f2598d6c-084c-4d97-9e95-b36e1f56faa2", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + }, + { + "parameters": { + "resource": "release", + "operation": "delete", + "owner": "nodeqa", + "repository": "nodemationQA", + "projectId": "24497029", + "tag_name": "={{$node[\"Gitlab7\"].json[\"tag_name\"]}}" + }, + "name": "Gitlab12", + "type": "n8n-nodes-base.gitlab", + "typeVersion": 1, + "position": [ + 1180, + 490 + ], + "id": "36983c2c-6114-4692-b925-279a5ec8055b", + "credentials": { + "gitlabApi": { + "id": "19", + "name": "Gitlap token" + } + } + } + ], + "connections": { + "Gitlab": { + "main": [ + [ + { + "node": "Gitlab1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Gitlab", + "type": "main", + "index": 0 + }, + { + "node": "Gitlab2", + "type": "main", + "index": 0 + }, + { + "node": "Gitlab7", + "type": "main", + "index": 0 + }, + { + "node": "Gitlab8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gitlab2": { + "main": [ + [ + { + "node": "Gitlab3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gitlab3": { + "main": [ + [ + { + "node": "Gitlab4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gitlab4": { + "main": [ + [ + { + "node": "Gitlab5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gitlab5": { + "main": [ + [ + { + "node": "Gitlab6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gitlab7": { + "main": [ + [ + { + "node": "Gitlab9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gitlab9": { + "main": [ + [ + { + "node": "Gitlab10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gitlab10": { + "main": [ + [ + { + "node": "Gitlab11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gitlab11": { + "main": [ + [ + { + "node": "Gitlab12", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "27cc9b56542ad45b38725555722c50a1c3fee1670bbb67980558314ee08517c4" + }, + "pinData": {}, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/38.json b/test-workflows/workflows/38.json new file mode 100644 index 0000000000..aa81f425ed --- /dev/null +++ b/test-workflows/workflows/38.json @@ -0,0 +1,90 @@ +{ + "createdAt": "2021-02-18T09:13:09.580Z", + "updatedAt": "2021-02-18T09:13:09.580Z", + "id": "38", + "name": "Medium:Post:create:Publication:getall", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "fc3fb55c-91d4-4865-8bed-bb672fcf6ed8" + }, + { + "parameters": { + "title": "=Medium node TestQA Draft {{ (new Date()).toGMTString()}}", + "contentFormat": "markdown", + "content": "=# QA test Draft Content\n\n#### {{ (new Date()).toGMTString()}}", + "additionalFields": { + "publishStatus": "draft" + } + }, + "name": "Medium", + "type": "n8n-nodes-base.medium", + "typeVersion": 1, + "position": [ + 500, + 250 + ], + "credentials": { + "mediumApi": { + "id": "20", + "name": "Medium token" + } + }, + "id": "0c6e0d0c-76e4-4ae0-b97f-ef501bae351c" + }, + { + "parameters": { + "resource": "publication", + "operation": "getAll", + "limit": 1 + }, + "name": "Medium1", + "type": "n8n-nodes-base.medium", + "typeVersion": 1, + "position": [ + 500, + 400 + ], + "credentials": { + "mediumApi": { + "id": "20", + "name": "Medium token" + } + }, + "id": "a4561f3e-650c-4960-8688-97a4272189a1" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Medium", + "type": "main", + "index": 0 + }, + { + "node": "Medium1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/39.json b/test-workflows/workflows/39.json new file mode 100644 index 0000000000..b3e620bdbe --- /dev/null +++ b/test-workflows/workflows/39.json @@ -0,0 +1,938 @@ +{ + "createdAt": "2021-02-18T10:30:52.070Z", + "updatedAt": "2021-06-08T08:12:16.812Z", + "id": "39", + "name": "Github:Repository:get getProfile getLicense listPopularPaths listReferrers:File:create edit get delete:Issue:create createComment edit get lock:Release:create get getAll update delete:User:getRepositories invite:Review:create getAll get update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 180, + 750 + ], + "id": "f0955b0a-3d0c-48ef-adb2-541915a9acef" + }, + { + "parameters": { + "resource": "repository", + "operation": "getProfile", + "owner": "nodemationqa", + "repository": "nodeQA" + }, + "name": "GitHub", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 620, + 300 + ], + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "3d876463-6962-4b4d-b3cb-9015ec6848c0" + }, + { + "parameters": { + "resource": "repository", + "operation": "getLicense", + "owner": "nodemationqa", + "repository": "nodeQA" + }, + "name": "GitHub1", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 770, + 300 + ], + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "36bbea35-9d6e-4b28-a5a9-53cab2b5d970" + }, + { + "parameters": { + "resource": "repository", + "operation": "listPopularPaths", + "owner": "nodemationqa", + "repository": "nodeQA" + }, + "name": "GitHub2", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 920, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "f51387a0-836e-4962-90d9-c89190007c49" + }, + { + "parameters": { + "resource": "repository", + "operation": "listReferrers", + "owner": "nodemationqa", + "repository": "nodeQA" + }, + "name": "GitHub3", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 1070, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "db3f98fa-c19d-41fc-922f-0e356b150e0d" + }, + { + "parameters": { + "resource": "repository", + "operation": "get", + "owner": "nodemationqa", + "repository": "nodeQA" + }, + "name": "GitHub4", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 470, + 300 + ], + "executeOnce": false, + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "4827b07a-4982-4c4a-b47a-647b05846306" + }, + { + "parameters": { + "resource": "repository", + "owner": "nodemationqa", + "repository": "nodeQA", + "limit": 1, + "getRepositoryIssuesFilters": {} + }, + "name": "GitHub5", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 1210, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "5948497b-3e84-40ba-a87d-dd4da66a208c" + }, + { + "parameters": { + "resource": "file", + "owner": "nodemationqa", + "repository": "nodeQA", + "filePath": "=testFile{{Date.now()}}", + "fileContent": "Test file content, create file operation", + "commitMessage": "=Commited {{(new Date()).toGMTString()}}", + "additionalParameters": { + "branch": { + "branch": "main" + } + } + }, + "name": "GitHub6", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 470, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "752ecae8-1820-4e92-a7e0-8382fb63f94b" + }, + { + "parameters": { + "resource": "file", + "operation": "edit", + "owner": "nodemationqa", + "repository": "nodeQA", + "filePath": "={{$node[\"GitHub6\"].json[\"content\"][\"path\"]}}", + "fileContent": "Updated Test file content, create file operation", + "commitMessage": "=Updated commit message {{(new Date()).toGMTString()}}", + "additionalParameters": { + "branch": { + "branch": "main" + } + } + }, + "name": "GitHub7", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 630, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "c1326989-6614-42cb-859e-9186e8499ccc" + }, + { + "parameters": { + "resource": "file", + "operation": "get", + "owner": "nodemationqa", + "repository": "nodeQA", + "filePath": "={{$node[\"GitHub6\"].json[\"content\"][\"path\"]}}", + "asBinaryProperty": false + }, + "name": "GitHub8", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 770, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "2939814a-15b1-4a7b-b829-4b338bdd28a4" + }, + { + "parameters": { + "resource": "file", + "operation": "delete", + "owner": "nodemationqa", + "repository": "nodeQA", + "filePath": "={{$node[\"GitHub6\"].json[\"content\"][\"path\"]}}", + "commitMessage": "=delete commit message {{(new Date()).toGMTString()}}", + "additionalParameters": { + "branch": { + "branch": "main" + } + } + }, + "name": "GitHub9", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 910, + 460 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "68c193fe-ed71-449d-8f46-08e21cc2f08e" + }, + { + "parameters": { + "owner": "nodemationqa", + "repository": "nodeQA", + "title": "=Test Issue created at {{(new Date()).toGMTString()}}", + "body": "=Test issue body {{(new Date()).toGMTString()}}", + "labels": [], + "assignees": [] + }, + "name": "GitHub10", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 470, + 620 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "22800dbb-3c5c-4c30-9e94-8f4580c26ba7" + }, + { + "parameters": { + "operation": "createComment", + "owner": "nodemationqa", + "repository": "nodeQA", + "issueNumber": "={{$node[\"GitHub10\"].json[\"number\"]}}", + "body": "=Comment on issue at {{(new Date()).toGMTString()}}" + }, + "name": "GitHub11", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 620, + 620 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "edaee8cb-6469-4395-8c1d-9f577f5ea262" + }, + { + "parameters": { + "operation": "edit", + "owner": "nodemationqa", + "repository": "nodeQA", + "issueNumber": "={{$node[\"GitHub10\"].json[\"number\"]}}", + "editFields": { + "title": "=Updated {{$node[\"GitHub10\"].json[\"title\"]}}{{Date.now()}}", + "body": "=updated Test issue body {{(new Date()).toGMTString()}}" + } + }, + "name": "GitHub12", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 770, + 620 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "1b158bcd-d934-4347-8988-ba1e6240a4aa" + }, + { + "parameters": { + "operation": "get", + "owner": "nodemationqa", + "repository": "nodeQA", + "issueNumber": "={{$node[\"GitHub10\"].json[\"number\"]}}" + }, + "name": "GitHub13", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 920, + 620 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "7c1c2a47-f0ef-4ba5-8329-0f661e93afe4" + }, + { + "parameters": { + "operation": "lock", + "owner": "nodemationqa", + "repository": "nodeQA", + "issueNumber": "={{$node[\"GitHub10\"].json[\"number\"]}}", + "lockReason": "spam" + }, + "name": "GitHub14", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 1060, + 620 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "13bb869d-2c1e-433d-a4df-e4b7ed1fe15a" + }, + { + "parameters": { + "resource": "release", + "owner": "nodemationqa", + "repository": "nodeQA", + "releaseTag": "=Release{{Date.now()}}", + "additionalFields": { + "name": "=Release {{(new Date()).toGMTString()}}", + "draft": true + } + }, + "name": "GitHub15", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 470, + 770 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "83a9cc6c-815c-476d-a8d5-83a9475daca8" + }, + { + "parameters": { + "resource": "user", + "owner": "nodemationqa" + }, + "name": "GitHub16", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 470, + 930 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "ba63e2c6-4ac4-4180-9325-2f61e77f8a7d" + }, + { + "parameters": { + "resource": "user", + "operation": "invite", + "organization": "OrgnodeQA", + "email": "nodeqa@n8n.io" + }, + "name": "GitHub17", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 660, + 930 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "ce44c4b5-9ed1-463a-bed2-85102bdb66e2" + }, + { + "parameters": { + "resource": "review", + "owner": "nodemationqa", + "repository": "nodeQA", + "pullRequestNumber": 3, + "event": "comment", + "body": "=Review Test {{(new Date()).toGMTString()}}", + "additionalFields": {} + }, + "name": "GitHub18", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 460, + 1080 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "dd259704-d7e5-4a3b-8368-dc65c7241b61" + }, + { + "parameters": { + "resource": "review", + "operation": "getAll", + "owner": "nodemationqa", + "repository": "nodeQA", + "pullRequestNumber": 3, + "limit": 1 + }, + "name": "GitHub19", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 610, + 1080 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "1c090f0d-1bad-48d7-86ed-17a63359ace2" + }, + { + "parameters": { + "resource": "review", + "operation": "get", + "owner": "nodemationqa", + "repository": "nodeQA", + "pullRequestNumber": 3, + "reviewId": "={{$node[\"GitHub18\"].json[\"id\"]}}" + }, + "name": "GitHub20", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 750, + 1080 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "d917c74c-a3c8-4a12-b4cb-72987ad19f65" + }, + { + "parameters": { + "resource": "review", + "operation": "update", + "owner": "nodemationqa", + "repository": "nodeQA", + "pullRequestNumber": 3, + "reviewId": "={{$node[\"GitHub18\"].json[\"id\"]}}", + "body": "=Updated {{$node[\"GitHub18\"].json[\"body\"]}}" + }, + "name": "GitHub21", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 900, + 1080 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "5796a57b-9580-47af-83c2-6770f542eef2" + }, + { + "parameters": { + "resource": "release", + "operation": "getAll", + "owner": "nodemationqa", + "repository": "nodeQA", + "limit": 1 + }, + "name": "GitHub22", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 620, + 770 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "c4ce2f6d-7e2c-4931-9a62-f1702168fdca" + }, + { + "parameters": { + "resource": "release", + "operation": "get", + "owner": "nodemationqa", + "repository": "nodeQA", + "release_id": "={{$node[\"GitHub15\"].json[\"id\"]}}" + }, + "name": "GitHub23", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 770, + 770 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "d286eac6-e189-41d9-8956-3e528219dfc1" + }, + { + "parameters": { + "resource": "release", + "operation": "update", + "owner": "nodemationqa", + "repository": "nodeQA", + "release_id": "={{$node[\"GitHub15\"].json[\"id\"]}}", + "additionalFields": { + "draft": true, + "name": "=Updated{{$node[\"GitHub15\"].json[\"name\"]}}", + "tag_name": "=Updated{{$node[\"GitHub15\"].json[\"tag_name\"]}}" + } + }, + "name": "GitHub24", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 920, + 770 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "1bc53e99-0f2f-425d-977a-e27a75cd9dbf" + }, + { + "parameters": { + "resource": "release", + "operation": "delete", + "owner": "nodemationqa", + "repository": "nodeQA", + "release_id": "={{$node[\"GitHub15\"].json[\"id\"]}}" + }, + "name": "GitHub25", + "type": "n8n-nodes-base.github", + "typeVersion": 1, + "position": [ + 1060, + 770 + ], + "alwaysOutputData": true, + "credentials": { + "githubApi": { + "id": "21", + "name": "Github creds" + } + }, + "id": "ceab4826-8e38-4a8b-b60c-7dfcf65b7aa9" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "GitHub4", + "type": "main", + "index": 0 + }, + { + "node": "GitHub6", + "type": "main", + "index": 0 + }, + { + "node": "GitHub10", + "type": "main", + "index": 0 + }, + { + "node": "GitHub15", + "type": "main", + "index": 0 + }, + { + "node": "GitHub16", + "type": "main", + "index": 0 + }, + { + "node": "GitHub18", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub": { + "main": [ + [ + { + "node": "GitHub1", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub1": { + "main": [ + [ + { + "node": "GitHub2", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub2": { + "main": [ + [ + { + "node": "GitHub3", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub3": { + "main": [ + [ + { + "node": "GitHub5", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub4": { + "main": [ + [ + { + "node": "GitHub", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub8": { + "main": [ + [ + { + "node": "GitHub9", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub6": { + "main": [ + [ + { + "node": "GitHub7", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub7": { + "main": [ + [ + { + "node": "GitHub8", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub10": { + "main": [ + [ + { + "node": "GitHub11", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub11": { + "main": [ + [ + { + "node": "GitHub12", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub12": { + "main": [ + [ + { + "node": "GitHub13", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub13": { + "main": [ + [ + { + "node": "GitHub14", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub16": { + "main": [ + [ + { + "node": "GitHub17", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub18": { + "main": [ + [ + { + "node": "GitHub19", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub19": { + "main": [ + [ + { + "node": "GitHub20", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub20": { + "main": [ + [ + { + "node": "GitHub21", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub15": { + "main": [ + [ + { + "node": "GitHub22", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub22": { + "main": [ + [ + { + "node": "GitHub23", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub23": { + "main": [ + [ + { + "node": "GitHub24", + "type": "main", + "index": 0 + } + ] + ] + }, + "GitHub24": { + "main": [ + [ + { + "node": "GitHub25", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/4.json b/test-workflows/workflows/4.json new file mode 100644 index 0000000000..ac5bd6d6b0 --- /dev/null +++ b/test-workflows/workflows/4.json @@ -0,0 +1,158 @@ +{ + "createdAt": "2021-01-21T13:48:02.703Z", + "updatedAt": "2021-03-15T13:59:19.891Z", + "id": "4", + "name": "FTP:ftp:list download upload", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "5bc91980-86a2-469c-8ad0-7de1d8c9b7e1" + }, + { + "parameters": { + "operation": "list", + "path": "/1KB.zip" + }, + "name": "FTP1", + "type": "n8n-nodes-base.ftp", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "ftp": { + "id": "106", + "name": "FTP creds" + } + }, + "id": "7aee41cf-627d-424a-99a3-952837497848" + }, + { + "parameters": { + "path": "1KB.zip" + }, + "name": "FTP", + "type": "n8n-nodes-base.ftp", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "ftp": { + "id": "106", + "name": "FTP creds" + } + }, + "id": "ab5f20c7-6464-4779-8e13-b47b11ba9459" + }, + { + "parameters": { + "operation": "upload", + "path": "=/upload/{{$node[\"Set\"].json[\"filename\"]}}" + }, + "name": "FTP2", + "type": "n8n-nodes-base.ftp", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "ftp": { + "id": "106", + "name": "FTP creds" + } + }, + "id": "066b0e3d-918f-4a28-94b6-9432e6e572a1" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "filename", + "value": "=test{{Date.now()}}.zip" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "id": "08e2e0f0-f730-48cf-a05e-40820a55aaa3" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "FTP1", + "type": "main", + "index": 0 + } + ] + ] + }, + "FTP1": { + "main": [ + [ + { + "node": "FTP", + "type": "main", + "index": 0 + } + ] + ] + }, + "FTP": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "FTP2": { + "main": [ + [] + ] + }, + "Set": { + "main": [ + [ + { + "node": "FTP2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/40.json b/test-workflows/workflows/40.json new file mode 100644 index 0000000000..0236e8d516 --- /dev/null +++ b/test-workflows/workflows/40.json @@ -0,0 +1,598 @@ +{ + "createdAt": "2021-02-18T14:57:48.780Z", + "updatedAt": "2021-03-16T10:54:02.671Z", + "id": "40", + "name": "Gmail:Draft:create getAll get delete:Label:create getAll get delete:Message:send getAll get reply delete:MessageLabel:add remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 340, + 400 + ], + "id": "05c88b78-968b-4f4c-a1e9-8898251d3f7d" + }, + { + "parameters": { + "subject": "=Draft created at {{(new Date()).toGMTString()}}", + "message": "=Draft Test Body", + "additionalFields": {} + }, + "name": "Gmail", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 600, + 230 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "707afa42-fc6e-4117-84bc-29282319d5bb" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Gmail1", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 760, + 230 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "c73d9c21-ea4d-4976-ad4b-2ae4b0fada15" + }, + { + "parameters": { + "operation": "get", + "messageId": "={{$node[\"Gmail\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Gmail2", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 920, + 230 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "67666251-4a70-441a-a383-5582d297edd5" + }, + { + "parameters": { + "operation": "delete", + "messageId": "={{$node[\"Gmail\"].json[\"id\"]}}" + }, + "name": "Gmail3", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 1070, + 230 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "a0b1960d-1a73-43a4-9978-7d3634051884" + }, + { + "parameters": { + "resource": "label", + "name": "=TestLabel{{Date.now()}}" + }, + "name": "Gmail4", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 600, + 380 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "f2ddc4ef-a79f-4764-ad1e-8fd88e8cc3d9" + }, + { + "parameters": { + "resource": "label", + "operation": "getAll", + "limit": 1 + }, + "name": "Gmail5", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 760, + 380 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "0f6821e9-a68e-46ce-905c-78b14eaa6435" + }, + { + "parameters": { + "resource": "label", + "operation": "get", + "labelId": "={{$node[\"Gmail4\"].json[\"id\"]}}" + }, + "name": "Gmail7", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 920, + 380 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "c78804f2-5ea2-48e7-a98d-90ecb236d5b8" + }, + { + "parameters": { + "resource": "message", + "subject": "=Subject {{(new Date()).toGMTString()}}", + "message": "=Email Body {{(new Date()).toGMTString()}}", + "toList": [ + "node8qa@gmail.com" + ], + "additionalFields": {} + }, + "name": "Gmail8", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 610, + 530 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "3f832f5f-94e0-4f86-a041-cbf30655c43b" + }, + { + "parameters": { + "resource": "message", + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "Gmail9", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 1040, + 530 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "fb256709-1d09-478c-8a18-331830cd6df1" + }, + { + "parameters": { + "resource": "message", + "operation": "get", + "messageId": "={{$node[\"Gmail8\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Gmail10", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 1190, + 530 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "5f15fa23-4149-410f-baa0-cca8123707b5" + }, + { + "parameters": { + "resource": "message", + "operation": "delete", + "messageId": "={{$node[\"Gmail8\"].json[\"id\"]}}" + }, + "name": "Gmail11", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 1620, + 530 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "33489121-9268-4bbf-ba17-e2673970d71c" + }, + { + "parameters": { + "resource": "message", + "operation": "reply", + "threadId": "={{$node[\"Gmail8\"].json[\"threadId\"]}}", + "messageId": "={{$node[\"Gmail8\"].json[\"id\"]}}", + "subject": "=Reply {{(new Date()).toGMTString()}}", + "message": "=Reply body {{(new Date()).toGMTString()}}", + "toList": [ + "node8qa@gmail.com" + ], + "additionalFields": {} + }, + "name": "Gmail12", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 1330, + 530 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "1b8da955-757e-4973-a350-58abac6c4822" + }, + { + "parameters": { + "resource": "messageLabel", + "messageId": "={{$node[\"Gmail8\"].json[\"id\"]}}", + "labelIds": [ + "SPAM" + ] + }, + "name": "Gmail13", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 740, + 650 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "87698be8-16c6-496a-82fe-2ed1fcb3422a" + }, + { + "parameters": { + "resource": "message", + "operation": "delete", + "messageId": "={{$node[\"Gmail12\"].json[\"id\"]}}" + }, + "name": "Gmail14", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 1890, + 530 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "7f58e657-9bf8-4154-9353-39ac27d642cc" + }, + { + "parameters": { + "resource": "messageLabel", + "operation": "remove", + "messageId": "={{$node[\"Gmail8\"].json[\"id\"]}}", + "labelIds": [ + "SPAM" + ] + }, + "name": "Gmail15", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 880, + 650 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "0ffaee84-f0cf-42fc-a47d-0c9a25ae6b90" + }, + { + "parameters": { + "resource": "label", + "operation": "delete", + "labelId": "={{$node[\"Gmail4\"].json[\"id\"]}}" + }, + "name": "Gmail16", + "type": "n8n-nodes-base.gmail", + "typeVersion": 1, + "position": [ + 1070, + 380 + ], + "credentials": { + "gmailOAuth2": { + "id": "22", + "name": "Gmail 0auth" + } + }, + "id": "998e0199-62ef-462b-a353-b7721c95ad46" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 Second", + "type": "n8n-nodes-base.function", + "position": [ + 1470, + 530 + ], + "typeVersion": 1, + "id": "fea0314c-836f-43ea-8d3b-59fff652ad57" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 Second1", + "type": "n8n-nodes-base.function", + "position": [ + 1760, + 530 + ], + "typeVersion": 1, + "id": "677eb37a-3a00-4f00-aa8a-cfc7b373cc1c" + } + ], + "connections": { + "Gmail": { + "main": [ + [ + { + "node": "Gmail1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail1": { + "main": [ + [ + { + "node": "Gmail2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail2": { + "main": [ + [ + { + "node": "Gmail3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Gmail8", + "type": "main", + "index": 0 + }, + { + "node": "Gmail4", + "type": "main", + "index": 0 + }, + { + "node": "Gmail", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail4": { + "main": [ + [ + { + "node": "Gmail5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail5": { + "main": [ + [ + { + "node": "Gmail7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail9": { + "main": [ + [ + { + "node": "Gmail10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail8": { + "main": [ + [ + { + "node": "Gmail13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail10": { + "main": [ + [ + { + "node": "Gmail12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail12": { + "main": [ + [ + { + "node": "Sleep 0.5 Second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail13": { + "main": [ + [ + { + "node": "Gmail15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail15": { + "main": [ + [ + { + "node": "Gmail9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail7": { + "main": [ + [ + { + "node": "Gmail16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail14": { + "main": [ + [] + ] + }, + "Sleep 0.5 Second": { + "main": [ + [ + { + "node": "Gmail11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 Second1": { + "main": [ + [ + { + "node": "Gmail14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Gmail11": { + "main": [ + [ + { + "node": "Sleep 0.5 Second1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/41.json b/test-workflows/workflows/41.json new file mode 100644 index 0000000000..56d5482c11 --- /dev/null +++ b/test-workflows/workflows/41.json @@ -0,0 +1,231 @@ +{ + "createdAt": "2021-02-18T15:29:36.110Z", + "updatedAt": "2021-02-18T15:56:49.923Z", + "id": "41", + "name": "GoogleCalendar:Event:create getAll get update delete:Calendar:availability", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "6aeb5434-f098-403c-8a10-3b49b0ce5b28" + }, + { + "parameters": { + "resource": "calendar", + "calendar": "node8qa@gmail.com", + "timeMin": "2021-02-17T23:00:00.000Z", + "timeMax": "2021-02-18T23:00:00.000Z", + "options": { + "outputFormat": "availability" + } + }, + "name": "Google Calendar", + "type": "n8n-nodes-base.googleCalendar", + "typeVersion": 1, + "position": [ + 500, + 210 + ], + "credentials": { + "googleCalendarOAuth2Api": { + "id": "23", + "name": "Google calendar 0auth creds" + } + }, + "id": "1cd92151-378b-42a0-ab14-fb21b6efc5e5" + }, + { + "parameters": { + "calendar": "node8qa@gmail.com", + "start": "2021-02-18T15:50:50.000Z", + "end": "2021-02-19T15:50:50.000Z", + "additionalFields": { + "description": "Test" + } + }, + "name": "Google Calendar1", + "type": "n8n-nodes-base.googleCalendar", + "typeVersion": 1, + "position": [ + 490, + 390 + ], + "credentials": { + "googleCalendarOAuth2Api": { + "id": "23", + "name": "Google calendar 0auth creds" + } + }, + "id": "89509d2f-ceac-4046-ac47-a0c5d5aada34" + }, + { + "parameters": { + "operation": "get", + "calendar": "node8qa@gmail.com", + "eventId": "={{$node[\"Google Calendar1\"].json[\"id\"]}}", + "options": {} + }, + "name": "Google Calendar2", + "type": "n8n-nodes-base.googleCalendar", + "typeVersion": 1, + "position": [ + 820, + 390 + ], + "alwaysOutputData": true, + "credentials": { + "googleCalendarOAuth2Api": { + "id": "23", + "name": "Google calendar 0auth creds" + } + }, + "id": "48aa1cb4-9649-46f9-9368-fec67709b825" + }, + { + "parameters": { + "operation": "getAll", + "calendar": "node8qa@gmail.com", + "limit": 1, + "options": { + "showDeleted": true + } + }, + "name": "Google Calendar3", + "type": "n8n-nodes-base.googleCalendar", + "typeVersion": 1, + "position": [ + 650, + 390 + ], + "credentials": { + "googleCalendarOAuth2Api": { + "id": "23", + "name": "Google calendar 0auth creds" + } + }, + "id": "99926665-5d81-4452-96d8-f025a3539ae6" + }, + { + "parameters": { + "operation": "update", + "calendar": "node8qa@gmail.com", + "eventId": "={{$node[\"Google Calendar1\"].json[\"id\"]}}", + "updateFields": { + "color": "7" + } + }, + "name": "Google Calendar4", + "type": "n8n-nodes-base.googleCalendar", + "typeVersion": 1, + "position": [ + 980, + 390 + ], + "credentials": { + "googleCalendarOAuth2Api": { + "id": "23", + "name": "Google calendar 0auth creds" + } + }, + "id": "a673096e-b394-4a98-ba01-e0cdfabde6bd" + }, + { + "parameters": { + "operation": "delete", + "calendar": "node8qa@gmail.com", + "eventId": "={{$node[\"Google Calendar1\"].json[\"id\"]}}", + "options": {} + }, + "name": "Google Calendar5", + "type": "n8n-nodes-base.googleCalendar", + "typeVersion": 1, + "position": [ + 1130, + 390 + ], + "credentials": { + "googleCalendarOAuth2Api": { + "id": "23", + "name": "Google calendar 0auth creds" + } + }, + "id": "dd64b74a-ab43-4bed-a19c-59817cc6e4ab" + } + ], + "connections": { + "Google Calendar1": { + "main": [ + [ + { + "node": "Google Calendar3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Calendar3": { + "main": [ + [ + { + "node": "Google Calendar2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Calendar2": { + "main": [ + [ + { + "node": "Google Calendar4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Calendar4": { + "main": [ + [ + { + "node": "Google Calendar5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Google Calendar1", + "type": "main", + "index": 0 + }, + { + "node": "Google Calendar", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/42.json b/test-workflows/workflows/42.json new file mode 100644 index 0000000000..1aa48b1ece --- /dev/null +++ b/test-workflows/workflows/42.json @@ -0,0 +1,197 @@ +{ + "createdAt": "2021-02-18T16:06:30.135Z", + "updatedAt": "2021-02-18T16:06:30.135Z", + "id": "42", + "name": "GoogleTask:create update getAll get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 360, + 250 + ], + "id": "8a9cccfd-ef20-48c6-b6fa-f21c15ab3ee9" + }, + { + "parameters": { + "task": "MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow", + "title": "Do Testing", + "additionalFields": {} + }, + "name": "Google Tasks", + "type": "n8n-nodes-base.googleTasks", + "typeVersion": 1, + "position": [ + 550, + 250 + ], + "credentials": { + "googleTasksOAuth2Api": { + "id": "24", + "name": "Google Tasks 0auth creds" + } + }, + "id": "c007f149-e912-4c92-a05e-faf60bc1b6d3" + }, + { + "parameters": { + "operation": "update", + "title": "Do Testing", + "task": "MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow", + "taskId": "={{$node[\"Google Tasks\"].json[\"id\"]}}", + "updateFields": { + "status": "completed" + } + }, + "name": "Google Tasks1", + "type": "n8n-nodes-base.googleTasks", + "typeVersion": 1, + "position": [ + 720, + 250 + ], + "credentials": { + "googleTasksOAuth2Api": { + "id": "24", + "name": "Google Tasks 0auth creds" + } + }, + "id": "a1adcb8e-7f47-448b-8dd6-208d815a8515" + }, + { + "parameters": { + "operation": "get", + "title": "Do Testing", + "task": "MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow", + "taskId": "={{$node[\"Google Tasks\"].json[\"id\"]}}" + }, + "name": "Google Tasks2", + "type": "n8n-nodes-base.googleTasks", + "typeVersion": 1, + "position": [ + 1070, + 250 + ], + "credentials": { + "googleTasksOAuth2Api": { + "id": "24", + "name": "Google Tasks 0auth creds" + } + }, + "id": "ddc28328-f7f5-451e-9a9a-f3b4827cbb0d" + }, + { + "parameters": { + "operation": "delete", + "title": "Do Testing", + "task": "MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow", + "taskId": "={{$node[\"Google Tasks\"].json[\"id\"]}}" + }, + "name": "Google Tasks3", + "type": "n8n-nodes-base.googleTasks", + "typeVersion": 1, + "position": [ + 1230, + 250 + ], + "credentials": { + "googleTasksOAuth2Api": { + "id": "24", + "name": "Google Tasks 0auth creds" + } + }, + "id": "f9028103-aa27-405c-a081-7ae669cf3e86" + }, + { + "parameters": { + "operation": "getAll", + "title": "Do Testing", + "task": "MDI3ODQzODIxOTE4MjA1ODY3NzM6MDow", + "limit": 1, + "additionalFields": {} + }, + "name": "Google Tasks4", + "type": "n8n-nodes-base.googleTasks", + "typeVersion": 1, + "position": [ + 890, + 250 + ], + "credentials": { + "googleTasksOAuth2Api": { + "id": "24", + "name": "Google Tasks 0auth creds" + } + }, + "id": "96e66609-8e49-4bb0-b393-63ada8d98ccb" + } + ], + "connections": { + "Google Tasks": { + "main": [ + [ + { + "node": "Google Tasks1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Tasks1": { + "main": [ + [ + { + "node": "Google Tasks4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Tasks2": { + "main": [ + [ + { + "node": "Google Tasks3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Tasks4": { + "main": [ + [ + { + "node": "Google Tasks2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Google Tasks", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/43.json b/test-workflows/workflows/43.json new file mode 100644 index 0000000000..206106f38b --- /dev/null +++ b/test-workflows/workflows/43.json @@ -0,0 +1,233 @@ +{ + "createdAt": "2021-02-19T07:31:35.734Z", + "updatedAt": "2021-06-08T09:27:55.752Z", + "id": "43", + "name": "GoogleContacts:create update getAll get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "9b031147-6a8d-44ca-85b0-8cdaf10eb659" + }, + { + "parameters": { + "familyName": "QA", + "givenName": "node", + "additionalFields": { + "companyUi": { + "companyValues": [ + { + "current": true, + "domain": "n8n", + "name": "QA", + "title": "n8nQA" + } + ] + } + } + }, + "name": "Google Contacts", + "type": "n8n-nodes-base.googleContacts", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "googleContactsOAuth2Api": { + "id": "25", + "name": "Google Contacts creds" + } + }, + "id": "7d9e7d33-a215-4997-86a7-4067f990fdbd" + }, + { + "parameters": { + "operation": "update", + "contactId": "={{$node[\"Google Contacts\"].json[\"contactId\"]}}", + "fields": [ + "names" + ], + "updateFields": { + "givenName": "nodemation" + } + }, + "name": "Google Contacts1", + "type": "n8n-nodes-base.googleContacts", + "typeVersion": 1, + "position": [ + 780, + 300 + ], + "credentials": { + "googleContactsOAuth2Api": { + "id": "25", + "name": "Google Contacts creds" + } + }, + "id": "8577325f-5674-4c71-8d0b-15afd2eebde4" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "fields": [ + "*" + ], + "options": {} + }, + "name": "Google Contacts2", + "type": "n8n-nodes-base.googleContacts", + "typeVersion": 1, + "position": [ + 940, + 300 + ], + "credentials": { + "googleContactsOAuth2Api": { + "id": "25", + "name": "Google Contacts creds" + } + }, + "id": "a4079178-c6c0-490e-8e46-ba06237bbfce" + }, + { + "parameters": { + "operation": "get", + "contactId": "={{$node[\"Google Contacts\"].json[\"contactId\"]}}", + "fields": [ + "*" + ] + }, + "name": "Google Contacts3", + "type": "n8n-nodes-base.googleContacts", + "typeVersion": 1, + "position": [ + 1100, + 300 + ], + "credentials": { + "googleContactsOAuth2Api": { + "id": "25", + "name": "Google Contacts creds" + } + }, + "id": "98244b5e-a280-4717-8c1c-b8dac07fa5f5" + }, + { + "parameters": { + "operation": "delete", + "contactId": "={{$node[\"Google Contacts\"].json[\"contactId\"]}}" + }, + "name": "Google Contacts4", + "type": "n8n-nodes-base.googleContacts", + "typeVersion": 1, + "position": [ + 1250, + 300 + ], + "credentials": { + "googleContactsOAuth2Api": { + "id": "25", + "name": "Google Contacts creds" + } + }, + "id": "0d3f3684-07a8-4465-95dc-59dc3e11bdbb" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(3000);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 3 seconds", + "type": "n8n-nodes-base.function", + "position": [ + 610, + 300 + ], + "typeVersion": 1, + "id": "e1d77a33-d0c8-4920-a533-bc6fb413ea05" + } + ], + "connections": { + "Google Contacts": { + "main": [ + [ + { + "node": "Sleep 3 seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Contacts1": { + "main": [ + [ + { + "node": "Google Contacts2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Contacts2": { + "main": [ + [ + { + "node": "Google Contacts3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Contacts3": { + "main": [ + [ + { + "node": "Google Contacts4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Google Contacts", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 3 seconds": { + "main": [ + [ + { + "node": "Google Contacts1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/44.json b/test-workflows/workflows/44.json new file mode 100644 index 0000000000..a4e0144c3d --- /dev/null +++ b/test-workflows/workflows/44.json @@ -0,0 +1,389 @@ +{ + "createdAt": "2021-02-19T07:45:12.148Z", + "updatedAt": "2021-02-26T12:22:54.085Z", + "id": "44", + "name": "GoogleDrive:Folder:create share delete:File:upload share list download copy delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 450 + ], + "id": "8213c874-bb15-4a4e-af12-efe5b749179c" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "folder", + "name": "testFolder" + }, + "name": "Google Drive", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 500, + 290 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "8fb84335-a6b3-4147-a352-72c7911cfe26" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "folder", + "operation": "share", + "fileId": "={{$node[\"Google Drive\"].json[\"id\"]}}", + "permissionsUi": { + "permissionsValues": { + "role": "reader", + "type": "anyone" + } + }, + "options": {} + }, + "name": "Google Drive1", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 670, + 290 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "07038a52-58d5-49a0-bd35-50499664a826" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "folder", + "operation": "delete", + "fileId": "={{$node[\"Google Drive\"].json[\"id\"]}}" + }, + "name": "Google Drive2", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 830, + 290 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "ebd9563e-f9fa-4ced-a791-fe0ffc3f5d00" + }, + { + "parameters": { + "authentication": "serviceAccount", + "fileContent": "Test File Content", + "name": "testFile", + "parents": [] + }, + "name": "Google Drive3", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 500, + 450 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "848f7c4d-60b3-4f21-96a0-28ce6768bff5" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "share", + "fileId": "={{$node[\"Google Drive3\"].json[\"id\"]}}", + "permissionsUi": { + "permissionsValues": { + "role": "reader", + "type": "anyone" + } + }, + "options": {} + }, + "name": "Google Drive4", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 650, + 450 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "6bc457b8-8cce-4664-89a7-3c59a4a1cac9" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "list", + "limit": 1, + "options": {} + }, + "name": "Google Drive5", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 800, + 450 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "939faa4e-f542-41ad-804a-cda6cc30cd89" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "download", + "fileId": "={{$node[\"Google Drive3\"].json[\"id\"]}}" + }, + "name": "Google Drive6", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 960, + 450 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "8fa69472-389c-416b-9be1-8e104c99f9f9" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "copy", + "fileId": "={{$node[\"Google Drive3\"].json[\"id\"]}}", + "options": {} + }, + "name": "Google Drive7", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1100, + 450 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "1b9c73b8-4f19-49b8-9165-a8c125e264f6" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "delete", + "fileId": "={{$node[\"Google Drive3\"].json[\"id\"]}}" + }, + "name": "Google Drive8", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1240, + 450 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "e17d373d-907f-4635-bd44-b0e85e24acf7" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "delete", + "fileId": "={{$node[\"Google Drive7\"].json[\"id\"]}}" + }, + "name": "Google Drive9", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 1380, + 450 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "8621da7a-e990-4dca-84b7-1ddccf256016" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "drive", + "options": {} + }, + "name": "Google Drive10", + "type": "n8n-nodes-base.googleDrive", + "typeVersion": 1, + "position": [ + 500, + 610 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "disabled": true, + "id": "6a675ae3-30c5-44cb-8811-66625259b47d" + } + ], + "connections": { + "Google Drive": { + "main": [ + [ + { + "node": "Google Drive1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive1": { + "main": [ + [ + { + "node": "Google Drive2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Google Drive", + "type": "main", + "index": 0 + }, + { + "node": "Google Drive3", + "type": "main", + "index": 0 + }, + { + "node": "Google Drive10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive3": { + "main": [ + [ + { + "node": "Google Drive4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive4": { + "main": [ + [ + { + "node": "Google Drive5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive5": { + "main": [ + [ + { + "node": "Google Drive6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive6": { + "main": [ + [ + { + "node": "Google Drive7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive7": { + "main": [ + [ + { + "node": "Google Drive8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Drive8": { + "main": [ + [ + { + "node": "Google Drive9", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/45.json b/test-workflows/workflows/45.json new file mode 100644 index 0000000000..cbc6f7cafa --- /dev/null +++ b/test-workflows/workflows/45.json @@ -0,0 +1,417 @@ +{ + "createdAt": "2021-02-19T09:08:47.547Z", + "updatedAt": "2021-05-25T12:40:44.118Z", + "id": "45", + "name": "GoogleSheets:SpreadSheet:create:Sheet:create append read lookup update delete clean remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "8c3c86be-d507-41b2-835b-9b49c1c34dc1" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "spreadsheet", + "title": "=TestSpreadSheet {{(new Date()).toGMTString()}}", + "sheetsUi": { + "sheetValues": [] + }, + "options": {} + }, + "name": "Google Sheets", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 440, + 200 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "ca817592-040a-4fa1-a171-abe44d7a011c" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "append", + "sheetId": "1Vp6KkHSquwxi2Y4xiloyUMFrTAg9VHJ-PhGdgYq4apE", + "range": "A:B", + "options": { + "valueInputMode": "USER_ENTERED" + } + }, + "name": "Google Sheets1", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 610, + 360 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "f00b599c-3fd2-4c89-a9f0-84f33f4b0271" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "update", + "sheetId": "1Vp6KkHSquwxi2Y4xiloyUMFrTAg9VHJ-PhGdgYq4apE", + "range": "Sheet1!A:B", + "options": { + "valueInputMode": "USER_ENTERED" + } + }, + "name": "Google Sheets2", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 1200, + 360 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "174fac97-78c0-4474-9f9e-2b0a154eb6c5" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "number": [ + { + "name": "id", + "value": "={{$node[\"Function\"].json[\"id\"]}}" + } + ], + "string": [ + { + "name": "name", + "value": "=Updated {{$node[\"Function\"].json[\"name\"]}}" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "position": [ + 1050, + 360 + ], + "typeVersion": 1, + "alwaysOutputData": false, + "notesInFlow": true, + "notes": "Update one item name", + "id": "72366cc8-257d-40fe-be42-cc85b8a01edf" + }, + { + "parameters": { + "authentication": "serviceAccount", + "sheetId": "1Vp6KkHSquwxi2Y4xiloyUMFrTAg9VHJ-PhGdgYq4apE", + "range": "Sheet1!A:C", + "options": {} + }, + "name": "Google Sheets3", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 770, + 360 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "34ba96c0-f1d2-4d78-883c-f809166e8688" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "lookup", + "sheetId": "1Vp6KkHSquwxi2Y4xiloyUMFrTAg9VHJ-PhGdgYq4apE", + "range": "Sheet1!A:B", + "lookupColumn": "name", + "lookupValue": "test1", + "options": {} + }, + "name": "Google Sheets4", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 910, + 360 + ], + "alwaysOutputData": true, + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "e29d0550-1a22-4fc7-96a1-d4cc1b924b2f" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "clear", + "sheetId": "1Vp6KkHSquwxi2Y4xiloyUMFrTAg9VHJ-PhGdgYq4apE", + "range": "A2:C50" + }, + "name": "Google Sheets5", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 1500, + 360 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "6bbb5985-4367-4492-85db-aefcea813c99" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "delete", + "sheetId": "1Vp6KkHSquwxi2Y4xiloyUMFrTAg9VHJ-PhGdgYq4apE", + "toDelete": { + "columns": [], + "rows": [ + { + "sheetId": 0, + "startIndex": 1 + } + ] + } + }, + "name": "Google Sheets6", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 1350, + 360 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "0c129d65-37c8-48a6-b0fa-062a1b474d96" + }, + { + "parameters": { + "functionCode": "items = [\n {\n json:{\n id: Math.round(Math.random()*1000),\n name: 'test1'\n } \n },\n {\n json:{\n id: Math.round(Math.random()*1000),\n name: 'test2'\n } \n }\n]\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 440, + 360 + ], + "notesInFlow": true, + "notes": "create the input data", + "id": "e4dce6be-f388-4159-889f-0c0243a9a407" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "create", + "sheetId": "={{$node[\"Google Sheets\"].json[\"spreadsheetId\"]}}", + "options": { + "gridProperties": { + "columnCount": 10, + "rowCount": 20 + }, + "rightToLeft": false, + "index": 1, + "tabColor": "#FF6E39" + } + }, + "name": "Google Sheets7", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 600, + 200 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "e32770bf-a9e6-47cf-a75f-6e335ca46d3d" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "remove", + "sheetId": "={{$node[\"Google Sheets\"].json[\"spreadsheetId\"]}}", + "id": "={{$node[\"Google Sheets7\"].json[\"sheetId\"]}}" + }, + "name": "Google Sheets8", + "type": "n8n-nodes-base.googleSheets", + "typeVersion": 1, + "position": [ + 750, + 200 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "b3ff83fc-5bb3-4472-bbf4-c24a56e4ecf1" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Google Sheets", + "type": "main", + "index": 0 + }, + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Sheets1": { + "main": [ + [ + { + "node": "Google Sheets3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Sheets2": { + "main": [ + [ + { + "node": "Google Sheets6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Google Sheets2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Sheets3": { + "main": [ + [ + { + "node": "Google Sheets4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Sheets4": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Sheets6": { + "main": [ + [ + { + "node": "Google Sheets5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "Google Sheets1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Sheets": { + "main": [ + [ + { + "node": "Google Sheets7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Sheets7": { + "main": [ + [ + { + "node": "Google Sheets8", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/46.json b/test-workflows/workflows/46.json new file mode 100644 index 0000000000..56e0ba6f88 --- /dev/null +++ b/test-workflows/workflows/46.json @@ -0,0 +1,332 @@ +{ + "createdAt": "2021-02-19T09:10:55.093Z", + "updatedAt": "2021-06-04T16:58:49.525Z", + "id": "46", + "name": "GoogleBooks:Volume:getAll get:BookShelf:getAll get:BookShelfVolume:add move getAll remove clear", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 190, + 380 + ], + "id": "92c95e9a-bed8-4099-9f53-f2744380c0e2" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "volume", + "operation": "getAll", + "searchQuery": "lean startup", + "limit": 2 + }, + "name": "Google Books", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 480, + 300 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "notes": "IGNORED_PROPERTIES=userInfo", + "id": "2cc49cda-b0ee-4c8f-96c9-eede0627537c" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "volume", + "volumeId": "={{$node[\"Google Books\"].json[\"id\"]}}" + }, + "name": "Google Books1", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "notes": "IGNORED_PROPERTIES=layerInfo", + "id": "629b25f8-ced3-41a0-9e8e-47a84c1c654b" + }, + { + "parameters": { + "authentication": "serviceAccount", + "operation": "getAll", + "myLibrary": true, + "limit": 1 + }, + "name": "Google Books2", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 480, + 460 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "6deb68ae-0a5d-4d1c-b8f0-e6f7a53bb67a" + }, + { + "parameters": { + "authentication": "serviceAccount", + "myLibrary": true, + "shelfId": "1001" + }, + "name": "Google Books3", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 640, + 460 + ], + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "75b090c9-0b7b-466a-8805-3a7a19cb4db8" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "bookshelfVolume", + "operation": "add", + "shelfId": "1001", + "volumeId": "={{$node[\"Google Books1\"].json[\"id\"]}}" + }, + "name": "Google Books4", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 820, + 420 + ], + "alwaysOutputData": true, + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "de433fd4-9964-4e37-9446-33248f9851f6" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "bookshelfVolume", + "operation": "move", + "shelfId": "1001", + "volumeId": "={{$node[\"Google Books1\"].json[\"id\"]}}", + "volumePosition": "1" + }, + "name": "Google Books5", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 990, + 420 + ], + "alwaysOutputData": true, + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "f797616b-cd2d-4f41-b138-eafeaac2a059" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "bookshelfVolume", + "myLibrary": true, + "shelfId": "1001", + "limit": 1 + }, + "name": "Google Books6", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 1150, + 420 + ], + "alwaysOutputData": true, + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "notes": "IGNORED_PROPERTIES=layerInfo", + "id": "2c5e6a25-48c7-44e7-bce6-e7b15af5632f" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "bookshelfVolume", + "operation": "remove", + "shelfId": "1001", + "volumeId": "={{$node[\"Google Books1\"].json[\"id\"]}}" + }, + "name": "Google Books7", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 1340, + 420 + ], + "alwaysOutputData": true, + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "3effe483-67fd-4dc4-90b2-aacea6a8e4b2" + }, + { + "parameters": { + "authentication": "serviceAccount", + "resource": "bookshelfVolume", + "operation": "clear", + "shelfId": "1001" + }, + "name": "Google Books8", + "type": "n8n-nodes-base.googleBooks", + "typeVersion": 1, + "position": [ + 1520, + 420 + ], + "alwaysOutputData": true, + "credentials": { + "googleApi": { + "id": "196", + "name": "Google API creds" + } + }, + "id": "e0d6001c-abb2-41b2-a61e-3aaa47999106" + } + ], + "connections": { + "Google Books": { + "main": [ + [ + { + "node": "Google Books1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Google Books", + "type": "main", + "index": 0 + }, + { + "node": "Google Books2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Books2": { + "main": [ + [ + { + "node": "Google Books3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Books1": { + "main": [ + [ + { + "node": "Google Books4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Books4": { + "main": [ + [ + { + "node": "Google Books5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Books5": { + "main": [ + [ + { + "node": "Google Books6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Books6": { + "main": [ + [ + { + "node": "Google Books7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Google Books7": { + "main": [ + [ + { + "node": "Google Books8", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/47.json b/test-workflows/workflows/47.json new file mode 100644 index 0000000000..27b4bcc65f --- /dev/null +++ b/test-workflows/workflows/47.json @@ -0,0 +1,268 @@ +{ + "createdAt": "2021-02-19T14:03:33.612Z", + "updatedAt": "2021-07-12T12:44:36.384Z", + "id": "47", + "name": "Airtable:append update read list delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 250 + ], + "id": "033f4cbc-f36c-41df-bce3-5726a6aace1e" + }, + { + "parameters": { + "operation": "append", + "application": "appxv9J85H3ZM4WZp", + "table": "FixedTestTable", + "options": {} + }, + "name": "Airtable", + "type": "n8n-nodes-base.airtable", + "typeVersion": 1, + "position": [ + 550, + 250 + ], + "credentials": { + "airtableApi": { + "id": "32", + "name": "Airtable creds" + } + }, + "id": "284d290d-93c8-441b-9b4e-0e21902f55a9" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "Name", + "value": "Test" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 400, + 250 + ], + "notesInFlow": true, + "notes": "Set Name column value", + "id": "0cd5f3da-97bd-4121-95f7-502338856476" + }, + { + "parameters": { + "operation": "update", + "application": "appxv9J85H3ZM4WZp", + "table": "FixedTestTable", + "id": "={{$node[\"Airtable\"].json[\"id\"]}}", + "updateAllFields": false, + "fields": [ + "Name" + ], + "options": {} + }, + "name": "Airtable1", + "type": "n8n-nodes-base.airtable", + "typeVersion": 1, + "position": [ + 850, + 250 + ], + "credentials": { + "airtableApi": { + "id": "32", + "name": "Airtable creds" + } + }, + "id": "3642a3b3-3fc0-4354-b8ae-4340c2735b68" + }, + { + "parameters": { + "application": "appxv9J85H3ZM4WZp", + "table": "FixedTestTable", + "id": "={{$node[\"Airtable\"].json[\"id\"]}}" + }, + "name": "Airtable2", + "type": "n8n-nodes-base.airtable", + "typeVersion": 1, + "position": [ + 1000, + 250 + ], + "credentials": { + "airtableApi": { + "id": "32", + "name": "Airtable creds" + } + }, + "id": "3075d56b-f6d9-42e1-9ce5-0270650d39d6" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "Name", + "value": "UpdatedTest" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 700, + 250 + ], + "notesInFlow": true, + "notes": "Update Name column", + "id": "517e190a-792d-43b5-a8df-31f4348c62f6" + }, + { + "parameters": { + "operation": "list", + "application": "appxv9J85H3ZM4WZp", + "table": "FixedTestTable", + "returnAll": false, + "limit": 1, + "additionalOptions": {} + }, + "name": "Airtable3", + "type": "n8n-nodes-base.airtable", + "typeVersion": 1, + "position": [ + 1150, + 250 + ], + "credentials": { + "airtableApi": { + "id": "32", + "name": "Airtable creds" + } + }, + "id": "51a97002-565f-4ac1-a1a5-83e9190f6ae2" + }, + { + "parameters": { + "operation": "delete", + "application": "appxv9J85H3ZM4WZp", + "table": "FixedTestTable", + "id": "={{$node[\"Airtable\"].json[\"id\"]}}" + }, + "name": "Airtable4", + "type": "n8n-nodes-base.airtable", + "typeVersion": 1, + "position": [ + 1300, + 250 + ], + "credentials": { + "airtableApi": { + "id": "32", + "name": "Airtable creds" + } + }, + "id": "5923a88f-cf48-4ea6-8fcd-fdf7ae8eb6ee" + } + ], + "connections": { + "Airtable": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Airtable", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Airtable1": { + "main": [ + [ + { + "node": "Airtable2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Airtable1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Airtable2": { + "main": [ + [ + { + "node": "Airtable3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Airtable3": { + "main": [ + [ + { + "node": "Airtable4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/48.json b/test-workflows/workflows/48.json new file mode 100644 index 0000000000..e0c01fef6d --- /dev/null +++ b/test-workflows/workflows/48.json @@ -0,0 +1,603 @@ +{ + "createdAt": "2021-02-19T14:19:19.630Z", + "updatedAt": "2021-02-19T14:42:39.385Z", + "id": "48", + "name": "Asana:Project:getAll get:Task:create update move getAll get delete:TaskComment:add remove:TaskTag:add remove:TaskProject:add remov e:SubTask:create getAll:User:get getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 280, + 390 + ], + "id": "064566bb-7ae7-4ad5-97ab-69b2973f7eb9" + }, + { + "parameters": { + "resource": "project", + "operation": "getAll", + "workspace": "1177253494675264", + "limit": 1, + "additionalFields": {} + }, + "name": "Asana", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 510, + 300 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "c8bc019c-3007-4981-a93e-1f293b6f501a" + }, + { + "parameters": { + "resource": "project", + "id": "={{$node[\"Asana\"].json[\"gid\"]}}" + }, + "name": "Asana1", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 660, + 300 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "766f5d4b-3f5d-4f88-bbc4-4814d2b7c1ba" + }, + { + "parameters": { + "workspace": "1177253494675264", + "name": "TaskTest", + "otherProperties": { + "assignee": "1199961026001666" + } + }, + "name": "Asana2", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 510, + 450 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "776e73c2-bb77-4fee-8ef7-6921bc50e049" + }, + { + "parameters": { + "operation": "update", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "otherProperties": { + "name": "UpdatedTestTask" + } + }, + "name": "Asana3", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 660, + 450 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "91c57a7e-1138-48dc-8048-0baec087a61d" + }, + { + "parameters": { + "operation": "move", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "projectId": "1199961131378839", + "section": "1199961131378842" + }, + "name": "Asana4", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 820, + 450 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "40fb1194-7895-4bcb-ab3d-43918f35f9ed" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": { + "assignee": "1199961026001666", + "workspace": "1177253494675264" + } + }, + "name": "Asana5", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 970, + 450 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "3116c2d7-5026-48fd-8f00-158d4fcd8019" + }, + { + "parameters": { + "operation": "get", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}" + }, + "name": "Asana6", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1130, + 450 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "b993560a-0dc1-4ace-8185-ba82913c4c72" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}" + }, + "name": "Asana7", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1680, + 460 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "9a2fba6c-df53-494f-91c3-33af89e4c51c" + }, + { + "parameters": { + "resource": "taskComment", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "text": "TestTaskComment", + "additionalFields": {} + }, + "name": "Asana8", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1310, + 300 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "a262aed6-8572-4345-b686-abda94858dee" + }, + { + "parameters": { + "resource": "taskComment", + "operation": "remove", + "id": "={{$node[\"Asana8\"].json[\"gid\"]}}" + }, + "name": "Asana9", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1460, + 300 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "82eaa43c-f3a9-482e-bd61-8c33b2c6702b" + }, + { + "parameters": { + "resource": "taskTag", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "tag": "1199534487398432" + }, + "name": "Asana10", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1310, + 450 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "0fa8b198-1c6a-4148-a9c3-1d99223118c6" + }, + { + "parameters": { + "resource": "taskTag", + "operation": "remove", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "tag": "1199534487398432" + }, + "name": "Asana11", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1460, + 450 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "fef9c7fa-3a84-4fce-9e1c-56aee5cff928" + }, + { + "parameters": { + "resource": "taskProject", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "project": "1199961131378839", + "additionalFields": {} + }, + "name": "Asana12", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1310, + 600 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "b90287d6-0d4a-44b7-b526-4debcc327803" + }, + { + "parameters": { + "resource": "taskProject", + "operation": "remove", + "id": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "project": "1199961131378839" + }, + "name": "Asana13", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1460, + 600 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "dc5a5de2-f621-47e9-8b9b-5ed13e7ba90c" + }, + { + "parameters": { + "resource": "user", + "userId": "1199961026001666" + }, + "name": "Asana14", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 510, + 620 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "b95e4adb-3e89-498f-9919-b8e5d2c92a4d" + }, + { + "parameters": { + "resource": "user", + "operation": "getAll", + "workspace": "1177253494675264" + }, + "name": "Asana15", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 650, + 620 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "2c9da710-8406-4d84-a8d1-c888ffc1e13e" + }, + { + "parameters": { + "resource": "subtask", + "taskId": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "name": "SubTestTask", + "otherProperties": {} + }, + "name": "Asana16", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1310, + 760 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "6788086b-1b9f-47c7-8eb4-31ba19ababe3" + }, + { + "parameters": { + "resource": "subtask", + "operation": "getAll", + "taskId": "={{$node[\"Asana2\"].json[\"gid\"]}}", + "limit": 1, + "options": {} + }, + "name": "Asana17", + "type": "n8n-nodes-base.asana", + "typeVersion": 1, + "position": [ + 1460, + 760 + ], + "credentials": { + "asanaApi": { + "id": "33", + "name": "Asana creds" + } + }, + "id": "87cfd6a1-342a-43eb-b056-febc6d6c9a47" + } + ], + "connections": { + "Asana": { + "main": [ + [ + { + "node": "Asana1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana2": { + "main": [ + [ + { + "node": "Asana3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana3": { + "main": [ + [ + { + "node": "Asana4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana4": { + "main": [ + [ + { + "node": "Asana5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana5": { + "main": [ + [ + { + "node": "Asana6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana6": { + "main": [ + [ + { + "node": "Asana8", + "type": "main", + "index": 0 + }, + { + "node": "Asana10", + "type": "main", + "index": 0 + }, + { + "node": "Asana12", + "type": "main", + "index": 0 + }, + { + "node": "Asana16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana8": { + "main": [ + [ + { + "node": "Asana9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana9": { + "main": [ + [] + ] + }, + "Asana10": { + "main": [ + [ + { + "node": "Asana11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana11": { + "main": [ + [] + ] + }, + "Asana12": { + "main": [ + [ + { + "node": "Asana13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana13": { + "main": [ + [] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Asana2", + "type": "main", + "index": 0 + }, + { + "node": "Asana14", + "type": "main", + "index": 0 + }, + { + "node": "Asana", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana14": { + "main": [ + [ + { + "node": "Asana15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana16": { + "main": [ + [ + { + "node": "Asana17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Asana17": { + "main": [ + [ + { + "node": "Asana7", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/49.json b/test-workflows/workflows/49.json new file mode 100644 index 0000000000..ae5fb9292f --- /dev/null +++ b/test-workflows/workflows/49.json @@ -0,0 +1,127 @@ +{ + "createdAt": "2021-02-19T16:46:19.188Z", + "updatedAt": "2021-02-19T16:46:33.650Z", + "id": "49", + "name": "Bitly:Link:create get update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 300, + 300 + ], + "id": "2780ec3a-4691-4fb0-b10a-71c14b669e40" + }, + { + "parameters": { + "longUrl": "https://n8n.io/", + "additionalFields": { + "title": "n8n" + } + }, + "name": "Bitly", + "type": "n8n-nodes-base.bitly", + "typeVersion": 1, + "position": [ + 560, + 300 + ], + "credentials": { + "bitlyApi": { + "id": "34", + "name": "Bitly creds" + } + }, + "id": "f8d1516e-50b7-475e-9745-9b5b6bc8219c" + }, + { + "parameters": { + "operation": "get", + "id": "={{$node[\"Bitly\"].json[\"id\"]}}" + }, + "name": "Bitly1", + "type": "n8n-nodes-base.bitly", + "typeVersion": 1, + "position": [ + 730, + 300 + ], + "credentials": { + "bitlyApi": { + "id": "34", + "name": "Bitly creds" + } + }, + "id": "26aef02a-14df-4496-81c4-6f241501e42b" + }, + { + "parameters": { + "operation": "update", + "id": "={{$node[\"Bitly\"].json[\"id\"]}}", + "updateFields": { + "group": "Bl2jgvxfKYU" + } + }, + "name": "Bitly2", + "type": "n8n-nodes-base.bitly", + "typeVersion": 1, + "position": [ + 890, + 300 + ], + "credentials": { + "bitlyApi": { + "id": "34", + "name": "Bitly creds" + } + }, + "id": "d661eb9e-7481-4724-93b5-39e25d0f3e9f" + } + ], + "connections": { + "Bitly": { + "main": [ + [ + { + "node": "Bitly1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Bitly1": { + "main": [ + [ + { + "node": "Bitly2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Bitly", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/5.json b/test-workflows/workflows/5.json new file mode 100644 index 0000000000..bef0cf8d2f --- /dev/null +++ b/test-workflows/workflows/5.json @@ -0,0 +1,105 @@ +{ + "createdAt": "2021-02-15T11:38:21.443Z", + "updatedAt": "2021-05-20T15:25:59.639Z", + "id": "5", + "name": "Hackernews:All:getAll:Article:get:User:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "481a7e7f-5ea7-402b-8316-f72c37b850bb" + }, + { + "parameters": { + "resource": "all", + "limit": 1, + "additionalFields": {} + }, + "name": "Hacker News", + "type": "n8n-nodes-base.hackerNews", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "3c48cdd6-1b9f-41cc-9ffd-861839a17846" + }, + { + "parameters": { + "articleId": "={{$json[\"objectID\"]}}", + "additionalFields": {} + }, + "name": "Hacker News1", + "type": "n8n-nodes-base.hackerNews", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "3cd97e86-f978-498a-9519-117a930529ad" + }, + { + "parameters": { + "resource": "user", + "username": "={{$json[\"author\"]}}" + }, + "name": "Hacker News2", + "type": "n8n-nodes-base.hackerNews", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "4f1db844-dea5-4ee0-bf62-ae05a7467fe7" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Hacker News", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hacker News": { + "main": [ + [ + { + "node": "Hacker News1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hacker News1": { + "main": [ + [ + { + "node": "Hacker News2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/50.json b/test-workflows/workflows/50.json new file mode 100644 index 0000000000..ee306ca609 --- /dev/null +++ b/test-workflows/workflows/50.json @@ -0,0 +1,192 @@ +{ + "createdAt": "2021-02-19T17:00:08.359Z", + "updatedAt": "2021-02-19T17:00:09.839Z", + "id": "50", + "name": "Brandfetch:color company font logo industry", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "82e5bad6-fe48-46f5-a494-d5c92fb33bde" + }, + { + "parameters": { + "operation": "color", + "domain": "n8n.io" + }, + "name": "Brandfetch", + "type": "n8n-nodes-base.Brandfetch", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "brandfetchApi": { + "id": "35", + "name": "Brandfetch creds" + } + }, + "id": "5116c2ec-f940-48ed-b325-577e41ec28ab" + }, + { + "parameters": { + "operation": "company", + "domain": "n8n.io" + }, + "name": "Brandfetch1", + "type": "n8n-nodes-base.Brandfetch", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "brandfetchApi": { + "id": "35", + "name": "Brandfetch creds" + } + }, + "id": "efa378a2-cac0-4e32-a068-ed3260cdbf5d" + }, + { + "parameters": { + "operation": "font", + "domain": "n8n.io" + }, + "name": "Brandfetch2", + "type": "n8n-nodes-base.Brandfetch", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "brandfetchApi": { + "id": "35", + "name": "Brandfetch creds" + } + }, + "id": "7052951a-6829-437b-b222-13e0d19f8b2d" + }, + { + "parameters": { + "operation": "industry", + "domain": "n8n.io" + }, + "name": "Brandfetch3", + "type": "n8n-nodes-base.Brandfetch", + "typeVersion": 1, + "position": [ + 1100, + 300 + ], + "credentials": { + "brandfetchApi": { + "id": "35", + "name": "Brandfetch creds" + } + }, + "id": "98a08780-4212-4f77-9d7e-043da423672a" + }, + { + "parameters": { + "domain": "n8n.io", + "download": true, + "imageTypes": [ + "icon" + ] + }, + "name": "Brandfetch4", + "type": "n8n-nodes-base.Brandfetch", + "typeVersion": 1, + "position": [ + 950, + 300 + ], + "credentials": { + "brandfetchApi": { + "id": "35", + "name": "Brandfetch creds" + } + }, + "id": "0966b6d6-13c0-4571-9b79-4ac6966e7210" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Brandfetch", + "type": "main", + "index": 0 + } + ] + ] + }, + "Brandfetch": { + "main": [ + [ + { + "node": "Brandfetch1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Brandfetch1": { + "main": [ + [ + { + "node": "Brandfetch2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Brandfetch2": { + "main": [ + [ + { + "node": "Brandfetch4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Brandfetch3": { + "main": [ + [] + ] + }, + "Brandfetch4": { + "main": [ + [ + { + "node": "Brandfetch3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/51.json b/test-workflows/workflows/51.json new file mode 100644 index 0000000000..ad26a5f0b2 --- /dev/null +++ b/test-workflows/workflows/51.json @@ -0,0 +1,479 @@ +{ + "createdAt": "2021-02-22T07:24:58.045Z", + "updatedAt": "2021-06-07T09:03:59.431Z", + "id": "51", + "name": "Clockify:Project:create update get getAll:Tag:create update getAll delete:TimeEntry:create update get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 290, + 420 + ], + "id": "d407a858-2b0d-47c9-8004-c2aa1c1debb5" + }, + { + "parameters": { + "workspaceId": "60335ad3f24e660123d7fdee", + "name": "=TestProject created {{(new Date).toGMTString()}}", + "additionalFields": {} + }, + "name": "Clockify", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 500, + 250 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "b95e9179-0b3e-41de-9f8e-e5ed5fb969e9" + }, + { + "parameters": { + "operation": "update", + "workspaceId": "60335ad3f24e660123d7fdee", + "projectId": "={{$node[\"Clockify\"].json[\"id\"]}}", + "updateFields": { + "name": "=Updated {{$node[\"Clockify\"].json[\"name\"]}}" + } + }, + "name": "Clockify1", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 650, + 250 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "0eec5307-ecca-4bc5-b40f-e21090c2941c" + }, + { + "parameters": { + "operation": "get", + "workspaceId": "60335ad3f24e660123d7fdee", + "projectId": "={{$node[\"Clockify\"].json[\"id\"]}}" + }, + "name": "Clockify2", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 800, + 250 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "dfaaf0b6-7657-42f7-b1a3-7bedbcdebfc0" + }, + { + "parameters": { + "operation": "getAll", + "workspaceId": "60335ad3f24e660123d7fdee", + "limit": 1, + "additionalFields": {} + }, + "name": "Clockify3", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 950, + 250 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "e7648d2a-b3f5-4a72-97bc-4d923df7d32c" + }, + { + "parameters": { + "operation": "delete", + "workspaceId": "60335ad3f24e660123d7fdee", + "projectId": "={{$node[\"Clockify\"].json[\"id\"]}}" + }, + "name": "Clockify4", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 1100, + 250 + ], + "notesInFlow": true, + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "disabled": true, + "notes": "delete require archive first", + "id": "59497092-bb8d-41cb-b80e-8642e83fe865" + }, + { + "parameters": { + "resource": "tag", + "workspaceId": "60335ad3f24e660123d7fdee", + "name": "=TestTag{{$evaluateExpression(Math.random())}}" + }, + "name": "Clockify5", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 500, + 400 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "780628c7-b7cb-4657-9d59-add61d07e849" + }, + { + "parameters": { + "resource": "tag", + "operation": "update", + "workspaceId": "60335ad3f24e660123d7fdee", + "tagId": "={{$node[\"Clockify5\"].json[\"id\"]}}", + "updateFields": { + "name": "=UpdatedTag{{$evaluateExpression(Math.random())}}" + } + }, + "name": "Clockify6", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 830, + 400 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "43d5352c-56b1-4c6a-93c2-e09569209485" + }, + { + "parameters": { + "resource": "tag", + "operation": "getAll", + "workspaceId": "60335ad3f24e660123d7fdee", + "limit": 1, + "additionalFields": {} + }, + "name": "Clockify7", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 980, + 400 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "28ccc080-049d-461f-ab30-ff877b0e0a92" + }, + { + "parameters": { + "resource": "tag", + "operation": "delete", + "workspaceId": "60335ad3f24e660123d7fdee", + "tagId": "={{$node[\"Clockify5\"].json[\"id\"]}}" + }, + "name": "Clockify8", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 1130, + 400 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "a3cc2dea-5a89-44ac-92da-bcfbeac654a2" + }, + { + "parameters": { + "resource": "timeEntry", + "workspaceId": "60335ad3f24e660123d7fdee", + "start": "={{(new Date()).toISOString()}}", + "additionalFields": {} + }, + "name": "Clockify9", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 500, + 560 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "2297d639-4261-46d0-b269-bd240b732fca" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "update", + "workspaceId": "60335ad3f24e660123d7fdee", + "timeEntryId": "={{$node[\"Clockify9\"].json[\"id\"]}}", + "updateFields": { + "description": "Updated time entry" + } + }, + "name": "Clockify10", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 650, + 560 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "936d9faf-b8eb-4f28-aa6e-4ce43bf119ae" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "get", + "workspaceId": "60335ad3f24e660123d7fdee", + "timeEntryId": "={{$node[\"Clockify9\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Clockify11", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 800, + 560 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "1b7e1644-9988-4794-91e4-278ec8dba2c4" + }, + { + "parameters": { + "resource": "timeEntry", + "operation": "delete", + "workspaceId": "60335ad3f24e660123d7fdee", + "timeEntryId": "={{$node[\"Clockify9\"].json[\"id\"]}}" + }, + "name": "Clockify12", + "type": "n8n-nodes-base.clockify", + "typeVersion": 1, + "position": [ + 950, + 560 + ], + "credentials": { + "clockifyApi": { + "id": "36", + "name": "Clockify creds" + } + }, + "id": "8af95310-ac19-43b8-a8c1-df89b2a715cc" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 660, + 400 + ], + "typeVersion": 1, + "id": "be2fd4bd-f014-48b8-9e52-f18cc6595477" + } + ], + "connections": { + "Clockify": { + "main": [ + [ + { + "node": "Clockify1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify1": { + "main": [ + [ + { + "node": "Clockify2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify2": { + "main": [ + [ + { + "node": "Clockify3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify3": { + "main": [ + [ + { + "node": "Clockify4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify5": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify6": { + "main": [ + [ + { + "node": "Clockify7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify7": { + "main": [ + [ + { + "node": "Clockify8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify9": { + "main": [ + [ + { + "node": "Clockify10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify10": { + "main": [ + [ + { + "node": "Clockify11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Clockify11": { + "main": [ + [ + { + "node": "Clockify12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Clockify", + "type": "main", + "index": 0 + }, + { + "node": "Clockify5", + "type": "main", + "index": 0 + }, + { + "node": "Clockify9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "Clockify6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/52.json b/test-workflows/workflows/52.json new file mode 100644 index 0000000000..7bf1b1de8c --- /dev/null +++ b/test-workflows/workflows/52.json @@ -0,0 +1,653 @@ +{ + "createdAt": "2021-02-22T08:19:03.344Z", + "updatedAt": "2021-02-25T09:52:14.205Z", + "id": "52", + "name": "Coda:Table:getAllColumns getColumn getAllRows getRow createRow pushButton deleteRow:View:getAll get getAllViewColumns getAllViewRows updateViewRow pushViewButto n:Formula:get getAll:Control:get getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 450 + ], + "id": "20619e15-af58-4fc0-9d21-275a6e4d4ebb" + }, + { + "parameters": { + "resource": "control", + "operation": "getAll", + "docId": "2-5DWWeFZp", + "limit": 1 + }, + "name": "Coda", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 430, + 220 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "fc0f43ee-65aa-4676-b393-6e3e9ffc33ca" + }, + { + "parameters": { + "resource": "control", + "docId": "2-5DWWeFZp", + "controlId": "={{$node[\"Coda\"].json[\"id\"]}}" + }, + "name": "Coda1", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 580, + 220 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "ac99a243-1fed-4faf-842d-96108d5b4d60" + }, + { + "parameters": { + "resource": "formula", + "operation": "getAll", + "docId": "2-5DWWeFZp", + "limit": 1 + }, + "name": "Coda2", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 430, + 370 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "8523646e-fffb-4958-b9fb-2ac34e3282e8" + }, + { + "parameters": { + "resource": "formula", + "docId": "2-5DWWeFZp", + "formulaId": "={{$node[\"Coda2\"].json[\"id\"]}}" + }, + "name": "Coda3", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 580, + 370 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "7027e41a-e726-4a36-af68-e05d5c64efac" + }, + { + "parameters": { + "operation": "getAllColumns", + "docId": "2-5DWWeFZp", + "tableId": "grid-lDqTU2W4nP", + "limit": 1 + }, + "name": "Coda4", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 430, + 530 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "ddb40d66-f1ad-49c3-a11d-c10c384f3e4f" + }, + { + "parameters": { + "operation": "getColumn", + "docId": "2-5DWWeFZp", + "tableId": "grid-lDqTU2W4nP", + "columnId": "={{$node[\"Coda4\"].json[\"id\"]}}" + }, + "name": "Coda5", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 580, + 530 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "e0443974-4778-4c76-9a7b-3307506f7ad9" + }, + { + "parameters": { + "operation": "getAllRows", + "docId": "2-5DWWeFZp", + "tableId": "grid-lDqTU2W4nP", + "limit": 1, + "options": {} + }, + "name": "Coda6", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 730, + 530 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "4d07fe9e-29f0-481d-860d-623d5e2f4116" + }, + { + "parameters": { + "operation": "getRow", + "docId": "2-5DWWeFZp", + "tableId": "grid-lDqTU2W4nP", + "rowId": "={{$node[\"Coda6\"].json[\"id\"]}}", + "options": {} + }, + "name": "Coda7", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 880, + 530 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "b00e4b21-5acb-493a-bb52-20725a4c4dde" + }, + { + "parameters": { + "docId": "2-5DWWeFZp", + "tableId": "grid-lDqTU2W4nP", + "options": {} + }, + "name": "Coda8", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 1180, + 530 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "814390a0-e0f7-4981-9243-b34b5b613071" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "number": [ + { + "name": "number", + "value": 101 + }, + { + "name": "sum" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1030, + 530 + ], + "id": "99b92bf6-f5d5-4c43-bd76-f55735c496f2" + }, + { + "parameters": { + "operation": "deleteRow", + "docId": "2-5DWWeFZp", + "tableId": "grid-lDqTU2W4nP", + "rowId": "={{$node[\"Coda6\"].json[\"id\"]}}" + }, + "name": "Coda9", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 1480, + 530 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "783160e7-a206-4dc3-9bce-b4b914c54a49" + }, + { + "parameters": { + "operation": "pushButton", + "docId": "2-5DWWeFZp", + "tableId": "grid-lDqTU2W4nP", + "rowId": "={{$node[\"Coda6\"].json[\"id\"]}}", + "columnId": "c-hTB8QwFtUS" + }, + "name": "Coda10", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 1330, + 530 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "43a39974-ac1c-4c2c-9011-113b8865f770" + }, + { + "parameters": { + "resource": "view", + "operation": "getAll", + "docId": "2-5DWWeFZp", + "limit": 1 + }, + "name": "Coda11", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 430, + 700 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "01270518-cd5e-41bc-860e-800107940b68" + }, + { + "parameters": { + "resource": "view", + "docId": "2-5DWWeFZp", + "viewId": "table-FTj1L0rh08" + }, + "name": "Coda12", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 580, + 700 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "f3f9ed26-a541-4107-ba9f-c1bd2004f886" + }, + { + "parameters": { + "resource": "view", + "operation": "getAllViewColumns", + "docId": "2-5DWWeFZp", + "viewId": "table-FTj1L0rh08", + "limit": 1 + }, + "name": "Coda13", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 730, + 700 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "6edc3858-5763-410f-8bb5-15bf84ce38db" + }, + { + "parameters": { + "resource": "view", + "operation": "getAllViewRows", + "docId": "2-5DWWeFZp", + "viewId": "table-FTj1L0rh08", + "limit": 1, + "options": {} + }, + "name": "Coda14", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 880, + 700 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "2e87f275-a020-4629-8319-7a47d149796e" + }, + { + "parameters": { + "resource": "view", + "operation": "updateViewRow", + "docId": "2-5DWWeFZp", + "viewId": "table-FTj1L0rh08", + "rowId": "={{$node[\"Coda14\"].json[\"id\"]}}", + "keyName": "number", + "options": { + "disableParsing": true + } + }, + "name": "Coda15", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 1180, + 700 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "0594b22d-0857-450a-9aa2-f2bf6cefd24d" + }, + { + "parameters": { + "keepOnlySet": true, + "values": { + "number": [ + { + "name": "number", + "value": 102 + }, + { + "name": "sum" + } + ] + }, + "options": {} + }, + "name": "Set1", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 1030, + 700 + ], + "id": "8af848c3-52a4-465b-99c7-e73c480825e4" + }, + { + "parameters": { + "resource": "view", + "operation": "pushViewButton", + "docId": "2-5DWWeFZp", + "viewId": "table-FTj1L0rh08", + "rowId": "={{$node[\"Coda14\"].json[\"id\"]}}", + "columnId": "c-hTB8QwFtUS" + }, + "name": "Coda16", + "type": "n8n-nodes-base.coda", + "typeVersion": 1, + "position": [ + 1330, + 700 + ], + "credentials": { + "codaApi": { + "id": "37", + "name": "Code creds" + } + }, + "id": "a48740c3-b5b1-4ac0-825b-accc0296dba0" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Coda11", + "type": "main", + "index": 0 + }, + { + "node": "Coda4", + "type": "main", + "index": 0 + }, + { + "node": "Coda2", + "type": "main", + "index": 0 + }, + { + "node": "Coda", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda": { + "main": [ + [ + { + "node": "Coda1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda2": { + "main": [ + [ + { + "node": "Coda3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda4": { + "main": [ + [ + { + "node": "Coda5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda5": { + "main": [ + [ + { + "node": "Coda6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda6": { + "main": [ + [ + { + "node": "Coda7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda7": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda8": { + "main": [ + [ + { + "node": "Coda10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set": { + "main": [ + [ + { + "node": "Coda8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda10": { + "main": [ + [ + { + "node": "Coda9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda11": { + "main": [ + [ + { + "node": "Coda12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda12": { + "main": [ + [ + { + "node": "Coda13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda13": { + "main": [ + [ + { + "node": "Coda14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda14": { + "main": [ + [ + { + "node": "Set1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Coda15": { + "main": [ + [ + { + "node": "Coda16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set1": { + "main": [ + [ + { + "node": "Coda15", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/53.json b/test-workflows/workflows/53.json new file mode 100644 index 0000000000..4e85b603a5 --- /dev/null +++ b/test-workflows/workflows/53.json @@ -0,0 +1,410 @@ +{ + "createdAt": "2021-02-22T09:25:07.982Z", + "updatedAt": "2021-06-01T10:33:44.740Z", + "id": "53", + "name": "ConvertKit:CustomField:create getAll update delete:Form:getAll addSubscriber getSubscriptions:Tag:create getAll:TagSubscriber:add getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "524988a0-a07b-4aca-8284-22aa6f951ca0" + }, + { + "parameters": { + "resource": "customField", + "operation": "create", + "label": "=testField{{$evaluateExpression(Math.random())}}" + }, + "name": "ConvertKit", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 450, + 240 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "dcc8137a-d346-418a-b782-11cc2249b029" + }, + { + "parameters": { + "resource": "customField", + "operation": "getAll", + "limit": 1 + }, + "name": "ConvertKit1", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 600, + 240 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "be466a4d-3611-4f4d-bca6-997b894d1a07" + }, + { + "parameters": { + "resource": "customField", + "id": "={{$node[\"ConvertKit\"].json[\"id\"]}}", + "label": "UpdatedTestField" + }, + "name": "ConvertKit2", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 750, + 240 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "c09251ba-7a0a-4221-9f52-c40061f2b62b" + }, + { + "parameters": { + "resource": "customField", + "operation": "delete", + "id": "={{$node[\"ConvertKit\"].json[\"id\"]}}" + }, + "name": "ConvertKit3", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 900, + 240 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "d3073227-93de-4e3e-a82e-410659aeb65a" + }, + { + "parameters": { + "operation": "getAll" + }, + "name": "ConvertKit4", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 450, + 400 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "9792b051-1166-4ab6-bac6-2aae6f269f0a" + }, + { + "parameters": { + "id": 2059113, + "email": "=fakeemail{{Date.now()}}@gmail.com", + "additionalFields": {} + }, + "name": "ConvertKit5", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 600, + 400 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "195f9241-fc99-4184-aed1-b7a7a2672b2f" + }, + { + "parameters": { + "operation": "getSubscriptions", + "id": 2059113, + "limit": 1, + "additionalFields": {} + }, + "name": "ConvertKit6", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 1490, + 400 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "0ceb3aa2-56ef-4bb6-b08c-50f8267d85be" + }, + { + "parameters": { + "resource": "tag", + "name": "=tag{{Date.now()}}" + }, + "name": "ConvertKit7", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 750, + 490 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "9d905c82-8c32-4114-881a-28268f3238e7" + }, + { + "parameters": { + "resource": "tag", + "operation": "getAll", + "limit": 1 + }, + "name": "ConvertKit8", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 890, + 490 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "c5461704-d54f-4ad2-b0e1-fa9f217888ed" + }, + { + "parameters": { + "resource": "tagSubscriber", + "operation": "add", + "tagId": "={{$node[\"ConvertKit7\"].json[\"id\"]}}", + "email": "={{$node[\"ConvertKit5\"].json[\"subscriber\"][\"email_address\"]}}", + "additionalFields": {} + }, + "name": "ConvertKit9", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 1050, + 550 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "2b123134-1ed6-415f-b9c2-d20b0e1782c6" + }, + { + "parameters": { + "resource": "tagSubscriber", + "operation": "getAll", + "tagId": "={{$node[\"ConvertKit7\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "ConvertKit10", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 1200, + 550 + ], + "alwaysOutputData": true, + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "6b44a0a6-9252-48b3-848f-74feb59c7845" + }, + { + "parameters": { + "resource": "tagSubscriber", + "operation": "delete", + "tagId": "={{$node[\"ConvertKit7\"].json[\"id\"]}}", + "email": "={{$node[\"ConvertKit5\"].json[\"subscriber\"][\"email_address\"]}}" + }, + "name": "ConvertKit11", + "type": "n8n-nodes-base.convertKit", + "typeVersion": 1, + "position": [ + 1350, + 550 + ], + "credentials": { + "convertKitApi": { + "id": "38", + "name": "ConvertKit creds" + } + }, + "id": "4c309c5b-a55f-47da-9dee-8620b505e501" + } + ], + "connections": { + "ConvertKit": { + "main": [ + [ + { + "node": "ConvertKit1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit1": { + "main": [ + [ + { + "node": "ConvertKit2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit2": { + "main": [ + [ + { + "node": "ConvertKit3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "ConvertKit", + "type": "main", + "index": 0 + }, + { + "node": "ConvertKit4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit5": { + "main": [ + [ + { + "node": "ConvertKit7", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit4": { + "main": [ + [ + { + "node": "ConvertKit5", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit7": { + "main": [ + [ + { + "node": "ConvertKit8", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit8": { + "main": [ + [ + { + "node": "ConvertKit9", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit9": { + "main": [ + [ + { + "node": "ConvertKit10", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit10": { + "main": [ + [ + { + "node": "ConvertKit11", + "type": "main", + "index": 0 + } + ] + ] + }, + "ConvertKit11": { + "main": [ + [ + { + "node": "ConvertKit6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/54.json b/test-workflows/workflows/54.json new file mode 100644 index 0000000000..7c7638e5b6 --- /dev/null +++ b/test-workflows/workflows/54.json @@ -0,0 +1,852 @@ +{ + "createdAt": "2021-02-22T10:00:31.563Z", + "updatedAt": "2021-02-22T10:50:12.567Z", + "id": "54", + "name": "InvoiceNinja:Client:create getAll get delete:Expense:create getAll get delete:Invoice:create getAll get email delete:Payment:create get getAll delete:Quote:crea te getAll get email delete:Task:create getAll get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 850 + ], + "id": "1d47bc56-1b68-4ff0-8007-ae06b9c29610" + }, + { + "parameters": { + "additionalFields": { + "clientName": "=TestClient{{Date.now()}}" + } + }, + "name": "Invoice Ninja", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 500, + 390 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "5b32c13a-c05e-45b6-8fdc-6174ebc941ea" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Invoice Ninja1", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 650, + 390 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "1db90b48-219d-4e96-a782-7ff5823e9ee5" + }, + { + "parameters": { + "operation": "get", + "clientId": "={{$node[\"Invoice Ninja\"].json[\"id\"]}}", + "options": {} + }, + "name": "Invoice Ninja2", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 800, + 390 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "f3e516a2-8e52-4fdb-80ba-932c960f6976" + }, + { + "parameters": { + "operation": "delete", + "clientId": "={{$node[\"Invoice Ninja\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja3", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 950, + 390 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "cd219ff6-4105-4690-8d9c-918d8f35cdd9" + }, + { + "parameters": { + "resource": "expense", + "additionalFields": { + "amount": 100 + } + }, + "name": "Invoice Ninja4", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 500, + 550 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "1d666aef-f593-42d3-9b61-fb54fe36bf0e" + }, + { + "parameters": { + "resource": "expense", + "operation": "getAll", + "limit": 1 + }, + "name": "Invoice Ninja5", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 650, + 550 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "42b27738-9c2e-41e5-ba79-93efb0087729" + }, + { + "parameters": { + "resource": "expense", + "operation": "get", + "expenseId": "={{$node[\"Invoice Ninja4\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja6", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 800, + 550 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "578e0bbd-f7a9-4640-a3ad-de936eaacd79" + }, + { + "parameters": { + "resource": "expense", + "operation": "delete", + "expenseId": "={{$node[\"Invoice Ninja4\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja7", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 950, + 550 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "994c5b63-8463-49db-b22f-5019e9c0917b" + }, + { + "parameters": { + "resource": "invoice", + "additionalFields": { + "email": "test@gmail.com" + } + }, + "name": "Invoice Ninja8", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 500, + 710 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "4153127d-468e-4c08-9f06-768e4b192403" + }, + { + "parameters": { + "resource": "invoice", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Invoice Ninja9", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 1250, + 710 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "9c236165-1824-44f9-8614-00e0a17a1103" + }, + { + "parameters": { + "resource": "invoice", + "operation": "get", + "invoiceId": "={{$node[\"Invoice Ninja8\"].json[\"id\"]}}", + "options": {} + }, + "name": "Invoice Ninja10", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 1400, + 710 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "44b48920-a293-4ca9-9033-178a18b3bf21" + }, + { + "parameters": { + "resource": "invoice", + "operation": "email", + "invoiceId": "={{$node[\"Invoice Ninja8\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja11", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 1550, + 710 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "aa19e0ab-0cbb-496c-a110-d16119d8a998" + }, + { + "parameters": { + "resource": "invoice", + "operation": "delete", + "invoiceId": "={{$node[\"Invoice Ninja8\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja12", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 1700, + 710 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "9bb13cc8-610b-42c1-9f6d-8971091ae507" + }, + { + "parameters": { + "resource": "payment", + "invoice": "={{$node[\"Invoice Ninja8\"].json[\"id\"]}}", + "amount": 102, + "additionalFields": {} + }, + "name": "Invoice Ninja14", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 650, + 820 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "d19e4bad-d79d-4012-b32a-257cb0ebaa05" + }, + { + "parameters": { + "resource": "quote", + "additionalFields": { + "email": "test@gmail.com" + } + }, + "name": "Invoice Ninja15", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 500, + 1020 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "c00c4d59-128a-41eb-9518-b132948d1054" + }, + { + "parameters": { + "resource": "quote", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Invoice Ninja16", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 650, + 1020 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "0b4a39fa-9360-4011-b989-a42fc7d283ee" + }, + { + "parameters": { + "resource": "quote", + "operation": "get", + "quoteId": "={{$node[\"Invoice Ninja15\"].json[\"id\"]}}", + "options": {} + }, + "name": "Invoice Ninja17", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 800, + 1020 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "3d2b2f4b-eed9-4419-849d-cae56ae9cba3" + }, + { + "parameters": { + "resource": "quote", + "operation": "email", + "quoteId": "={{$node[\"Invoice Ninja15\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja18", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 950, + 1020 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "f99b80b6-5dda-4bc6-b2c4-1a43c715f23c" + }, + { + "parameters": { + "resource": "quote", + "operation": "delete", + "quoteId": "={{$node[\"Invoice Ninja15\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja19", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 1100, + 1020 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "0a02025d-782e-4f1f-b17a-618449393a87" + }, + { + "parameters": { + "resource": "task", + "additionalFields": {} + }, + "name": "Invoice Ninja20", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 500, + 1180 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "42fbd794-c557-4b30-863a-fbbe0012772d" + }, + { + "parameters": { + "resource": "task", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Invoice Ninja21", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 650, + 1180 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "dd74acb7-ad5f-4a04-8b54-5d57846031dc" + }, + { + "parameters": { + "resource": "task", + "operation": "get", + "taskId": "={{$node[\"Invoice Ninja20\"].json[\"id\"]}}", + "options": {} + }, + "name": "Invoice Ninja22", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 800, + 1180 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "2066f094-5f18-4e14-9349-4ae32a803a4a" + }, + { + "parameters": { + "resource": "task", + "operation": "delete", + "taskId": "={{$node[\"Invoice Ninja20\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja23", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 950, + 1180 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "7f0705d7-cb3d-44d5-a47b-65605b653f4a" + }, + { + "parameters": { + "resource": "payment", + "operation": "get", + "paymentId": "={{$node[\"Invoice Ninja14\"].json[\"id\"]}}", + "options": {} + }, + "name": "Invoice Ninja24", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 800, + 820 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "a3f3f226-e931-4185-891c-b98f554a1634" + }, + { + "parameters": { + "resource": "payment", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Invoice Ninja25", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 950, + 820 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "e4660139-dc2c-4555-88aa-ab38b4ac1f31" + }, + { + "parameters": { + "resource": "payment", + "operation": "delete", + "paymentId": "={{$node[\"Invoice Ninja14\"].json[\"id\"]}}" + }, + "name": "Invoice Ninja26", + "type": "n8n-nodes-base.invoiceNinja", + "typeVersion": 1, + "position": [ + 1100, + 820 + ], + "credentials": { + "invoiceNinjaApi": { + "id": "39", + "name": "Invoice Ninja creds " + } + }, + "id": "465cbca5-b9b9-4e70-b245-a80defd3c7cd" + } + ], + "connections": { + "Invoice Ninja": { + "main": [ + [ + { + "node": "Invoice Ninja1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja1": { + "main": [ + [ + { + "node": "Invoice Ninja2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Invoice Ninja4", + "type": "main", + "index": 0 + }, + { + "node": "Invoice Ninja8", + "type": "main", + "index": 0 + }, + { + "node": "Invoice Ninja15", + "type": "main", + "index": 0 + }, + { + "node": "Invoice Ninja", + "type": "main", + "index": 0 + }, + { + "node": "Invoice Ninja20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja3": { + "main": [ + [] + ] + }, + "Invoice Ninja2": { + "main": [ + [ + { + "node": "Invoice Ninja3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja4": { + "main": [ + [ + { + "node": "Invoice Ninja5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja5": { + "main": [ + [ + { + "node": "Invoice Ninja6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja6": { + "main": [ + [ + { + "node": "Invoice Ninja7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja8": { + "main": [ + [ + { + "node": "Invoice Ninja14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja9": { + "main": [ + [ + { + "node": "Invoice Ninja10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja10": { + "main": [ + [ + { + "node": "Invoice Ninja11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja11": { + "main": [ + [ + { + "node": "Invoice Ninja12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja15": { + "main": [ + [ + { + "node": "Invoice Ninja16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja16": { + "main": [ + [ + { + "node": "Invoice Ninja17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja17": { + "main": [ + [ + { + "node": "Invoice Ninja18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja18": { + "main": [ + [ + { + "node": "Invoice Ninja19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja20": { + "main": [ + [ + { + "node": "Invoice Ninja21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja21": { + "main": [ + [ + { + "node": "Invoice Ninja22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja22": { + "main": [ + [ + { + "node": "Invoice Ninja23", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja14": { + "main": [ + [ + { + "node": "Invoice Ninja24", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja24": { + "main": [ + [ + { + "node": "Invoice Ninja25", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja25": { + "main": [ + [ + { + "node": "Invoice Ninja26", + "type": "main", + "index": 0 + } + ] + ] + }, + "Invoice Ninja26": { + "main": [ + [ + { + "node": "Invoice Ninja9", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/55.json b/test-workflows/workflows/55.json new file mode 100644 index 0000000000..b0f987c3cb --- /dev/null +++ b/test-workflows/workflows/55.json @@ -0,0 +1,125 @@ +{ + "createdAt": "2021-02-22T11:10:50.078Z", + "updatedAt": "2021-02-22T11:10:50.078Z", + "id": "55", + "name": "Hunter: domainSearch emailFinder emailVerifier", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "71b4c90c-bc69-40af-ae0d-4148c869e90f" + }, + { + "parameters": { + "domain": "n8n.io", + "limit": 1, + "filters": {} + }, + "name": "Hunter", + "type": "n8n-nodes-base.hunter", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "hunterApi": { + "id": "40", + "name": "Hunter creds" + } + }, + "id": "1d897521-8f0d-4e5b-8c16-e4db83af76de" + }, + { + "parameters": { + "operation": "emailFinder", + "domain": "n8n.io", + "firstname": "hosting", + "lastname": "test" + }, + "name": "Hunter1", + "type": "n8n-nodes-base.hunter", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "hunterApi": { + "id": "40", + "name": "Hunter creds" + } + }, + "id": "e3d7ac81-0e2f-4c1c-947e-99539c16049f" + }, + { + "parameters": { + "operation": "emailVerifier", + "email": "nodeqa@n8n.io" + }, + "name": "Hunter2", + "type": "n8n-nodes-base.hunter", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "hunterApi": { + "id": "40", + "name": "Hunter creds" + } + }, + "id": "6882fbb1-7af6-4585-90f3-d2881e1c07aa" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Hunter", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hunter": { + "main": [ + [ + { + "node": "Hunter1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Hunter1": { + "main": [ + [ + { + "node": "Hunter2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/56.json b/test-workflows/workflows/56.json new file mode 100644 index 0000000000..08a87e29e5 --- /dev/null +++ b/test-workflows/workflows/56.json @@ -0,0 +1,1145 @@ +{ + "createdAt": "2021-02-22T11:29:46.504Z", + "updatedAt": "2021-02-22T13:29:41.718Z", + "id": "56", + "name": "Trello:Board:*List:*Card:*Label:*CardComment:*Attachment:*CheckList:*", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + -580, + 310 + ], + "id": "60bc897d-49b0-41d9-9ecd-a241e69f23fd" + }, + { + "parameters": { + "resource": "board", + "name": "TestBoard", + "description": "test qa board", + "additionalFields": {} + }, + "name": "Trello", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + -300, + 311 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "d9bb9631-be15-44b7-8962-15adb038513f" + }, + { + "parameters": { + "resource": "board", + "operation": "update", + "id": "={{$node[\"Trello\"].json[\"id\"]}}", + "updateFields": { + "name": "UpatedTestBoard" + } + }, + "name": "Trello1", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 2970, + 301 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "5240d7bc-d9d5-465e-87d5-7d68513b0552" + }, + { + "parameters": { + "resource": "board", + "operation": "get", + "id": "={{$node[\"Trello\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello2", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 3120, + 301 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "d7d28b3a-a2ec-4c45-aeab-ffd60fa7ed1c" + }, + { + "parameters": { + "resource": "board", + "operation": "delete", + "id": "={{$node[\"Trello\"].json[\"id\"]}}" + }, + "name": "Trello3", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 3270, + 301 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "bfd73a34-44a6-4067-9e68-47f217a6e96a" + }, + { + "parameters": { + "resource": "list", + "idBoard": "={{$node[\"Trello\"].json[\"id\"]}}", + "name": "To Test", + "additionalFields": {} + }, + "name": "Trello4", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + -160, + 411 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "f539269f-9813-4158-9cfb-3568adc2ad4a" + }, + { + "parameters": { + "resource": "list", + "operation": "update", + "id": "={{$node[\"Trello4\"].json[\"id\"]}}", + "updateFields": {} + }, + "name": "Trello5", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + -10, + 411 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "6cc9eb56-e9ac-48bd-965f-61da503191f8" + }, + { + "parameters": { + "resource": "list", + "operation": "get", + "id": "={{$node[\"Trello4\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello6", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 140, + 411 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "9ee41feb-6b2d-4b76-9e39-13a8a41553e6" + }, + { + "parameters": { + "resource": "list", + "operation": "getAll", + "id": "={{$node[\"Trello\"].json[\"id\"]}}", + "limit": 1, + "additionalFields": {} + }, + "name": "Trello7", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 290, + 411 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "34c2e5be-9ae1-4212-991b-8099e11fedb1" + }, + { + "parameters": { + "resource": "list", + "operation": "getCards", + "id": "={{$node[\"Trello4\"].json[\"id\"]}}", + "limit": 1, + "additionalFields": {} + }, + "name": "Trello8", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 2550, + 401 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "6ecf2b95-1431-4ca6-85da-a099c2152169" + }, + { + "parameters": { + "resource": "list", + "operation": "archive", + "id": "={{$node[\"Trello4\"].json[\"id\"]}}" + }, + "name": "Trello9", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 2840, + 401 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "92cfc2ec-b2bb-4e00-afae-1a540903886a" + }, + { + "parameters": { + "listId": "={{$node[\"Trello4\"].json[\"id\"]}}", + "name": "TestCard", + "description": "qa test card", + "additionalFields": {} + }, + "name": "Trello10", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 430, + 511 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "3ecf077b-90ae-484b-91f7-a134defb5a9b" + }, + { + "parameters": { + "resource": "cardComment", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "text": "Test comment" + }, + "name": "Trello11", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 590, + 591 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "f60d1db5-08b7-47d3-8e87-c6d6db863400" + }, + { + "parameters": { + "resource": "cardComment", + "operation": "update", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "commentId": "={{$node[\"Trello11\"].json[\"id\"]}}", + "text": "Updated comment" + }, + "name": "Trello12", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 740, + 591 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "b9b78d60-9ac7-47a7-a21d-91c0eea11529" + }, + { + "parameters": { + "resource": "cardComment", + "operation": "delete", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "commentId": "={{$node[\"Trello11\"].json[\"id\"]}}" + }, + "name": "Trello13", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 890, + 591 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "ab58cd8f-6d9c-4d13-9061-e7075baa09a0" + }, + { + "parameters": { + "operation": "update", + "id": "={{$node[\"Trello10\"].json[\"id\"]}}", + "updateFields": { + "name": "UpdateTestCard" + } + }, + "name": "Trello14", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 2270, + 501 + ], + "alwaysOutputData": true, + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "4a02293e-8c77-4fec-96d4-b30ef8bef67d" + }, + { + "parameters": { + "operation": "get", + "id": "={{$node[\"Trello10\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello15", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 2410, + 501 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "5f3eecb4-bdc3-41ee-8c08-6133996cfe6c" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"Trello10\"].json[\"id\"]}}" + }, + "name": "Trello16", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 2700, + 501 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "4b372bda-f6ba-4148-af60-7baa2750b199" + }, + { + "parameters": { + "resource": "label", + "operation": "create", + "boardId": "={{$node[\"Trello\"].json[\"id\"]}}", + "name": "TestLabel", + "color": "blue" + }, + "name": "Trello17", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 590, + 431 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "00028ce8-a909-46b7-a39b-2893f039dfb4" + }, + { + "parameters": { + "resource": "label", + "operation": "update", + "id": "={{$node[\"Trello17\"].json[\"id\"]}}", + "updateFields": { + "color": "orange" + } + }, + "name": "Trello18", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 730, + 431 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "4b45bec0-38ea-44fb-b8ce-2bdeb0111749" + }, + { + "parameters": { + "resource": "label", + "boardId": "={{$node[\"Trello\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello19", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 870, + 431 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "a6d224e2-f55b-41a4-9682-27221a17946e" + }, + { + "parameters": { + "resource": "checklist", + "operation": "create", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "name": "TestCheckList", + "additionalFields": {} + }, + "name": "Trello20", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 590, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "59a94a1d-eb67-48bc-82ea-065bd2ef4458" + }, + { + "parameters": { + "resource": "checklist", + "operation": "createCheckItem", + "checklistId": "={{$node[\"Trello20\"].json[\"id\"]}}", + "name": "TestCheckListItem", + "additionalFields": {} + }, + "name": "Trello21", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 740, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "1fd1b5e1-6029-4a2a-972e-43014d5fafc1" + }, + { + "parameters": { + "resource": "checklist", + "operation": "updateCheckItem", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "checkItemId": "={{$node[\"Trello21\"].json[\"id\"]}}", + "additionalFields": { + "name": "UpdatedCheckListItem", + "state": "complete" + } + }, + "name": "Trello22", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 920, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "8736bed5-3556-44ae-a95f-3bdf353beaab" + }, + { + "parameters": { + "resource": "checklist", + "operation": "getCheckItem", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "checkItemId": "={{$node[\"Trello21\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello23", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 1090, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "16a9b8ce-2f76-4bf2-89c0-5adaf2f82c13" + }, + { + "parameters": { + "resource": "checklist", + "operation": "completedCheckItems", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello24", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 1270, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "6e2b2fd6-0fa0-44d8-8530-d95043cf117f" + }, + { + "parameters": { + "resource": "checklist", + "operation": "getCheckItem", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "checkItemId": "={{$node[\"Trello21\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello25", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 1440, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "0387d97e-31f6-4226-9da6-c029714fd5dd" + }, + { + "parameters": { + "resource": "checklist", + "operation": "deleteCheckItem", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "checkItemId": "={{$node[\"Trello21\"].json[\"id\"]}}" + }, + "name": "Trello26", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 1600, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "368bfe8c-797a-4458-90bb-24c54393e038" + }, + { + "parameters": { + "resource": "checklist", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello27", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 1740, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "c67011e2-140d-489d-bffd-7e3cd6704fee" + }, + { + "parameters": { + "resource": "checklist", + "operation": "get", + "id": "={{$node[\"Trello20\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello28", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 1890, + 281 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "61c6e9e9-d539-43fa-ab8b-836c660a4182" + }, + { + "parameters": { + "resource": "checklist", + "operation": "delete", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "id": "={{$node[\"Trello20\"].json[\"id\"]}}" + }, + "name": "Trello29", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 2040, + 281 + ], + "alwaysOutputData": true, + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "3d78422e-1c16-4ece-8aac-c62178ff0687" + }, + { + "parameters": { + "resource": "attachment", + "operation": "create", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "url": "https://cdn-images-1.medium.com/max/159/1*b9a5qBIsH4Jn2b7Lqq9fHg@2x.png", + "additionalFields": {} + }, + "name": "Trello30", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 590, + 751 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "38fa57aa-5631-469e-9c6f-a2f6fa5e87cf" + }, + { + "parameters": { + "resource": "attachment", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello31", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 730, + 751 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "b6fa8d72-0a6e-471a-bfa9-46c70dc0f1cb" + }, + { + "parameters": { + "resource": "attachment", + "operation": "get", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "id": "={{$node[\"Trello30\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Trello32", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 890, + 751 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "d789d4bf-4a60-43da-963d-41fc5ea923e1" + }, + { + "parameters": { + "resource": "attachment", + "operation": "delete", + "cardId": "={{$node[\"Trello10\"].json[\"id\"]}}", + "id": "={{$node[\"Trello30\"].json[\"id\"]}}" + }, + "name": "Trello33", + "type": "n8n-nodes-base.trello", + "typeVersion": 1, + "position": [ + 1050, + 751 + ], + "credentials": { + "trelloApi": { + "id": "41", + "name": "Trello creds" + } + }, + "id": "7d6b761b-1dc0-45c6-852e-c5a7d1e7d3d7" + } + ], + "connections": { + "Trello": { + "main": [ + [ + { + "node": "Trello4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello1": { + "main": [ + [ + { + "node": "Trello2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello2": { + "main": [ + [ + { + "node": "Trello3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello4": { + "main": [ + [ + { + "node": "Trello5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello5": { + "main": [ + [ + { + "node": "Trello6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello6": { + "main": [ + [ + { + "node": "Trello7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello7": { + "main": [ + [ + { + "node": "Trello10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello8": { + "main": [ + [ + { + "node": "Trello16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello9": { + "main": [ + [ + { + "node": "Trello1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello10": { + "main": [ + [ + { + "node": "Trello30", + "type": "main", + "index": 0 + }, + { + "node": "Trello11", + "type": "main", + "index": 0 + }, + { + "node": "Trello17", + "type": "main", + "index": 0 + }, + { + "node": "Trello20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello11": { + "main": [ + [ + { + "node": "Trello12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello12": { + "main": [ + [ + { + "node": "Trello13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello14": { + "main": [ + [ + { + "node": "Trello15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello15": { + "main": [ + [ + { + "node": "Trello8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello16": { + "main": [ + [ + { + "node": "Trello9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello17": { + "main": [ + [ + { + "node": "Trello18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello18": { + "main": [ + [ + { + "node": "Trello19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello20": { + "main": [ + [ + { + "node": "Trello21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello21": { + "main": [ + [ + { + "node": "Trello22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello22": { + "main": [ + [ + { + "node": "Trello23", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello23": { + "main": [ + [ + { + "node": "Trello24", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello24": { + "main": [ + [ + { + "node": "Trello25", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello25": { + "main": [ + [ + { + "node": "Trello26", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello26": { + "main": [ + [ + { + "node": "Trello27", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello27": { + "main": [ + [ + { + "node": "Trello28", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello28": { + "main": [ + [ + { + "node": "Trello29", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello29": { + "main": [ + [ + { + "node": "Trello14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello30": { + "main": [ + [ + { + "node": "Trello31", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello31": { + "main": [ + [ + { + "node": "Trello32", + "type": "main", + "index": 0 + } + ] + ] + }, + "Trello32": { + "main": [ + [ + { + "node": "Trello33", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Trello", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/57.json b/test-workflows/workflows/57.json new file mode 100644 index 0000000000..b6713be8fe --- /dev/null +++ b/test-workflows/workflows/57.json @@ -0,0 +1,141 @@ +{ + "createdAt": "2021-02-22T13:24:15.920Z", + "updatedAt": "2021-07-14T13:33:54.633Z", + "id": "57", + "name": "Mindee:receipt:predict:invoice:predict", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 330, + 230 + ], + "id": "a2fb028a-a712-440d-b273-88e18c86f688" + }, + { + "parameters": {}, + "name": "Mindee", + "type": "n8n-nodes-base.mindee", + "typeVersion": 1, + "position": [ + 650, + 150 + ], + "credentials": { + "mindeeReceiptApi": { + "id": "44", + "name": "Mindee Receipt creds" + } + }, + "id": "d1c7c807-0f46-48d7-a6a8-07c6fbd9298e" + }, + { + "parameters": { + "url": "https://upload.wikimedia.org/wikipedia/commons/0/0b/ReceiptSwiss.jpg", + "responseFormat": "file", + "options": {}, + "headerParametersUi": { + "parameter": [ + { + "name": "User-agent", + "value": "n8n-io app" + } + ] + } + }, + "name": "HTTP Request", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 1, + "position": [ + 500, + 150 + ], + "id": "8313ed3a-96d5-4f34-8d5c-76bcdc7be95a" + }, + { + "parameters": { + "resource": "invoice" + }, + "name": "Mindee1", + "type": "n8n-nodes-base.mindee", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "mindeeInvoiceApi": { + "id": "45", + "name": "Mindee Invoice creds" + } + }, + "id": "1632bf97-ed0a-49cc-8c55-be7be333c91b" + }, + { + "parameters": { + "url": "https://www.invoicesimple.com/wp-content/uploads/2018/06/Sample-Invoice-printable.png", + "responseFormat": "file", + "options": {} + }, + "name": "HTTP Request1", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "id": "72d76ab1-1074-42ca-af84-cf8dc7eef32f" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "HTTP Request", + "type": "main", + "index": 0 + }, + { + "node": "HTTP Request1", + "type": "main", + "index": 0 + } + ] + ] + }, + "HTTP Request": { + "main": [ + [ + { + "node": "Mindee", + "type": "main", + "index": 0 + } + ] + ] + }, + "HTTP Request1": { + "main": [ + [ + { + "node": "Mindee1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/58.json b/test-workflows/workflows/58.json new file mode 100644 index 0000000000..85be2be036 --- /dev/null +++ b/test-workflows/workflows/58.json @@ -0,0 +1,220 @@ +{ + "createdAt": "2021-02-23T09:32:37.389Z", + "updatedAt": "2021-02-23T09:33:19.392Z", + "id": "58", + "name": "Todoist:Task:create get close reopen getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "1756bcfd-e673-45a5-abd8-9ee7b59e6a5c" + }, + { + "parameters": { + "project": 2259097055, + "labels": [ + 2156287483 + ], + "content": "Test Task", + "options": {} + }, + "name": "Todoist", + "type": "n8n-nodes-base.todoist", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "todoistApi": { + "id": "43", + "name": "Todoist creds" + } + }, + "id": "9e3c07cc-af99-4d37-a4f4-f2d1786109aa" + }, + { + "parameters": { + "operation": "get", + "taskId": "={{$node[\"Todoist\"].json[\"id\"]}}" + }, + "name": "Todoist1", + "type": "n8n-nodes-base.todoist", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "todoistApi": { + "id": "43", + "name": "Todoist creds" + } + }, + "id": "b617cd35-9714-4c7e-8913-c3d7819d3ad3" + }, + { + "parameters": { + "operation": "close", + "taskId": "={{$node[\"Todoist\"].json[\"id\"]}}" + }, + "name": "Todoist2", + "type": "n8n-nodes-base.todoist", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "todoistApi": { + "id": "43", + "name": "Todoist creds" + } + }, + "id": "f9bc971d-a014-4ec9-b701-7fdfbb308454" + }, + { + "parameters": { + "operation": "reopen", + "taskId": "={{$node[\"Todoist\"].json[\"id\"]}}" + }, + "name": "Todoist3", + "type": "n8n-nodes-base.todoist", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "todoistApi": { + "id": "43", + "name": "Todoist creds" + } + }, + "id": "f6d4be0d-b7c1-4eea-b1eb-ef2f7ed1b6b8" + }, + { + "parameters": { + "operation": "delete", + "taskId": "={{$node[\"Todoist\"].json[\"id\"]}}" + }, + "name": "Todoist4", + "type": "n8n-nodes-base.todoist", + "typeVersion": 1, + "position": [ + 1200, + 300 + ], + "credentials": { + "todoistApi": { + "id": "43", + "name": "Todoist creds" + } + }, + "id": "967b63c7-4f60-4598-bdb3-9109ca2df94a" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Todoist5", + "type": "n8n-nodes-base.todoist", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "todoistApi": { + "id": "43", + "name": "Todoist creds" + } + }, + "id": "92240fb4-1d58-4dc9-bb29-db2804189e1d" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Todoist", + "type": "main", + "index": 0 + } + ] + ] + }, + "Todoist": { + "main": [ + [ + { + "node": "Todoist1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Todoist1": { + "main": [ + [ + { + "node": "Todoist2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Todoist2": { + "main": [ + [ + { + "node": "Todoist3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Todoist5": { + "main": [ + [ + { + "node": "Todoist4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Todoist3": { + "main": [ + [ + { + "node": "Todoist5", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/59.json b/test-workflows/workflows/59.json new file mode 100644 index 0000000000..8aff1dd21a --- /dev/null +++ b/test-workflows/workflows/59.json @@ -0,0 +1,381 @@ +{ + "createdAt": "2021-02-23T10:02:06.947Z", + "updatedAt": "2021-06-03T12:24:52.296Z", + "id": "59", + "name": "SendGrid:List:create update get getAll delete:Contact:upsert getAll get delete:mail:send", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 150, + 400 + ], + "id": "cab42b4b-d902-4524-ba7c-a43e35900705" + }, + { + "parameters": { + "name": "=TestList{{Date.now()}}" + }, + "name": "SendGrid", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 350, + 300 + ], + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "79f6deca-f925-4162-8d81-14c466ace4ac" + }, + { + "parameters": { + "operation": "update", + "listId": "={{$node[\"SendGrid\"].json[\"id\"]}}", + "name": "=UpdatedTestList{{Date.now()}}" + }, + "name": "SendGrid1", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "80d58751-f59c-4685-b9a8-c8a438171803" + }, + { + "parameters": { + "operation": "get", + "listId": "={{$node[\"SendGrid\"].json[\"id\"]}}" + }, + "name": "SendGrid2", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "5f09a27b-d2f9-4dd2-ad82-1ca7679c0499" + }, + { + "parameters": { + "operation": "delete", + "listId": "={{$node[\"SendGrid\"].json[\"id\"]}}" + }, + "name": "SendGrid3", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 950, + 300 + ], + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "cfa7cafc-72ee-4197-916a-9fbe335eeecd" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "SendGrid4", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "2460a6da-9efa-4613-8083-58b940cefb38" + }, + { + "parameters": { + "resource": "contact", + "email": "=fakeemail{{Date.now()}}@gmail.com", + "additionalFields": { + "firstName": "Fake", + "lastName": "Email" + } + }, + "name": "SendGrid5", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 350, + 450 + ], + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "0c1183f8-3849-4019-88cd-0e9498e772ce" + }, + { + "parameters": { + "resource": "contact", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "SendGrid6", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 650, + 450 + ], + "executeOnce": false, + "alwaysOutputData": true, + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "ae3988ef-4046-4a88-81a4-3f9dec1c90f3" + }, + { + "parameters": { + "resource": "contact", + "operation": "get", + "contactId": "={{$node[\"SendGrid6\"].json[\"id\"]}}" + }, + "name": "SendGrid7", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 800, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "727c4520-d781-4914-ae55-8413368dfe4a" + }, + { + "parameters": { + "resource": "contact", + "operation": "delete", + "ids": "=undefined" + }, + "name": "SendGrid8", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 950, + 450 + ], + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "99abe2ed-524c-482b-9a87-f5043c7568cd" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(1000);\nreturn item;" + }, + "name": "FunctionItem", + "type": "n8n-nodes-base.functionItem", + "typeVersion": 1, + "position": [ + 500, + 450 + ], + "notes": "Sleep function", + "id": "5b5fc626-adc4-47af-811a-3785d04f8b75" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(5000);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 5 Seconds", + "type": "n8n-nodes-base.function", + "position": [ + 1400, + 200 + ], + "typeVersion": 1, + "id": "c1921fc7-275d-4fc9-bb8c-151d5a525b90" + }, + { + "parameters": { + "resource": "mail", + "fromEmail": "node8qa@gmail.com", + "fromName": "node,qa", + "toEmail": "node8qa@gmail.com", + "subject": "SendGrid test workflow", + "contentValue": "=Message at {{(new Date).toUTCString()}}", + "additionalFields": {} + }, + "name": "SendGrid9", + "type": "n8n-nodes-base.sendGrid", + "typeVersion": 1, + "position": [ + 350, + 600 + ], + "credentials": { + "sendGridApi": { + "id": "46", + "name": "SendGrid creds" + } + }, + "id": "189e1b95-2ad7-4c7e-8f87-b6114c4d99cb" + } + ], + "connections": { + "SendGrid": { + "main": [ + [ + { + "node": "SendGrid1", + "type": "main", + "index": 0 + } + ] + ] + }, + "SendGrid1": { + "main": [ + [ + { + "node": "SendGrid2", + "type": "main", + "index": 0 + } + ] + ] + }, + "SendGrid2": { + "main": [ + [ + { + "node": "SendGrid4", + "type": "main", + "index": 0 + } + ] + ] + }, + "SendGrid4": { + "main": [ + [ + { + "node": "SendGrid3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "SendGrid", + "type": "main", + "index": 0 + }, + { + "node": "SendGrid5", + "type": "main", + "index": 0 + }, + { + "node": "SendGrid9", + "type": "main", + "index": 0 + } + ] + ] + }, + "SendGrid5": { + "main": [ + [ + { + "node": "FunctionItem", + "type": "main", + "index": 0 + } + ] + ] + }, + "SendGrid6": { + "main": [ + [ + { + "node": "SendGrid7", + "type": "main", + "index": 0 + } + ] + ] + }, + "SendGrid7": { + "main": [ + [ + { + "node": "SendGrid8", + "type": "main", + "index": 0 + } + ] + ] + }, + "FunctionItem": { + "main": [ + [ + { + "node": "SendGrid6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/6.json b/test-workflows/workflows/6.json new file mode 100644 index 0000000000..b37eb33af7 --- /dev/null +++ b/test-workflows/workflows/6.json @@ -0,0 +1,78 @@ +{ + "createdAt": "2021-04-14T14:13:32.964Z", + "updatedAt": "2021-04-14T14:57:59.464Z", + "id": "6", + "name": "Static files workflow", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "48c3bb01-34b1-416a-a29a-428f46b0b5a0" + }, + { + "parameters": { + "fileName": "=/tmp/{{$node[\"Set files\"].json[\"filename\"]}}", + "dataPropertyName": "binaryfile" + }, + "name": "Write Binary File", + "type": "n8n-nodes-base.writeBinaryFile", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "3975413e-bcd6-4e7a-a57d-a6d16d734dcd" + }, + { + "parameters": { + "functionCode": "files = [\n {\n mimeType: 'image/png',\n data: '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',\n fileName: 'n8n-logo.png',\n },\n\n {\n mimeType: 'application/pdf',\n data: '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3iVUEWUxQu8Tqou1xDr0TqGR2ExsJbYTO4rdxD7l0TMKxSJxojhNnCU+LtriAnGxuFRcIa4RN4hviJsv1nddIR/7zXgoAawCVgUTwSTwElAGLwWDYAiMgAqogTpogFHwcvAK8EqwOvgn8CqwJlgLvA5MAa8H64I3gDeC9cEG4E1gI7AJ2BRsBt4KtgHbgneC7cEOYCrYGUwDu4BdwW5gd7AH2BPsBfYG+4B9wX7g3WB/cAA4EL/QPwl+B34P/hs8Bf4A/sgYJaAAiqAHlEAv5R9On8tpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNqE0yacNuG0CadNOG3CaRNOm3DahNMmnDbhtAmnTThtwmkTTptw2oTTJpw24bQJp004bcJpE06bcNr8w+lzOm3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW384fU6nHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGkHTjtw2oHTDpx24LQDpx047cBpB047cNqB0w6cduC0A6cdOO3AaQdOO3DagdMOnHbgtAOnHTjtwGnnD6fP6bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047cJpF067cNqF0y6cduG0C6ddOO3CaRdOu3DahdMunHbhtAunXTjtwmkXTrtw2oXTLpx24bQLp1047f7enb4Yo7jROmcQ9oQIowR6QR9YBawKJoJ+8BJQBgNgEAyDEVABVdAAo+BlYDXwcvBKsDpYA7wGTAavBeuA14HXg3XBG8AbwfrgTWAjsDHYBGwG3gq2AFuCt4OtwTvAduCdYHvwLrADmAp2BDuBncE0sAvYFewGdgd7gIgfHMW2jSaA2MJRbOEotnA0CcQWjmILRy8FsZ2j2M7REMi29h9On8tpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcNqC0xactuC0BactOG3BaQtOW3DagtMWnLbgtAWnLThtwWkLTltw2oLTFpy24LQFpy04bcFpC05bcPp335++SE7bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG0zactuG0DadtOG3DaRtO23DahtM2nLbhtA2nbThtw2kbTttw2obTNpy24bQNp204bcNpG07bcNqG03b59+GIwhFaHLHY6Ox6hr4CaTpNBZJDGpAFZDFZSlYg8uMbFX6peoKcEqTy54ZrCXWEWmSFUJ9so1ObCq0wnnMPemxkCDls9GP6V0TL2CZMpsfH44JL52K5p4Wlwiq69Dr239vQU6GFtBe9KLSSPWESmUci+A/E5fgPRAr+91AX/3u4Ef97qE9bXorvhUpZ1E/KPLAYHAnafL1ewrt80AULwPngPMyVx8ty+DIO3xazMfU5sAh8Bp+M4/On8/lMnr6ENJfFQkX6AOZaCY7DtAks3ibqmM1rno1RwtkcsdrGY3oR/3wmT0t4OpvFKkUL8D4W1RMp1i2q4l0smmcKiZBmpBWeEe5FBpIMko1IEUV4aiwW27NsH7PnJe4JDyMknB0ezQwJD2QRXikR+zfM+sDs3dDyNDY1GxwCTgRngRMos1BCFi8hC0tm8RKyeAlZKCELJWShhCyU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kYPrt5OXtxSXaxZf+jNV8/IY1Cx6nMM59q+xJrj4U28LwUPKkqiMLlSdsLBPG+x1W7usXXdCsD8qLLTNy2LdXqFSjuSk0+CydwCDYzt/8yB/3Sv+qBSlj27BEMh/ABW4qmINCmVuZHN0cmVhbQ0KZW5kb2JqDQoyMCAwIG9iag0KPDwvVHlwZS9YUmVmL1NpemUgMjAvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dIC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDgxPj4NCnN0cmVhbQ0KeJxjYACC//8ZgaQgAwOIqoVQW8EU42EwxcwPobaDKZZlEOo2mGIVYGBgAmoQYGCGUCwQihVCMUEoqBI2kIZfMB4jkMfeATaFI5eBAQACHwkSDQplbmRzdHJlYW0NCmVuZG9iag0KeHJlZg0KMCAyMQ0KMDAwMDAwMDAxMCA2NTUzNSBmDQowMDAwMDAwMDE3IDAwMDAwIG4NCjAwMDAwMDAxMjUgMDAwMDAgbg0KMDAwMDAwMDE4MSAwMDAwMCBuDQowMDAwMDAwNDUxIDAwMDAwIG4NCjAwMDAwMDA3ODMgMDAwMDAgbg0KMDAwMDAwMDk1MSAwMDAwMCBuDQowMDAwMDAxMTkwIDAwMDAwIG4NCjAwMDAwMDEyNDMgMDAwMDAgbg0KMDAwMDAwMTI5NiAwMDAwMCBuDQowMDAwMDAwMDExIDY1NTM1IGYNCjAwMDAwMDAwMTIgNjU1MzUgZg0KMDAwMDAwMDAxMyA2NTUzNSBmDQowMDAwMDAwMDE0IDY1NTM1IGYNCjAwMDAwMDAwMTUgNjU1MzUgZg0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMTkyOCAwMDAwMCBuDQowMDAwMDAyMTU3IDAwMDAwIG4NCjAwMDAxODU1MTkgMDAwMDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSAyMS9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dID4+DQpzdGFydHhyZWYNCjE4NTc5OQ0KJSVFT0YNCnhyZWYNCjAgMA0KdHJhaWxlcg0KPDwvU2l6ZSAyMS9Sb290IDEgMCBSL0luZm8gOSAwIFIvSURbPDMyMThENkU0QjEwRjNFNDk4MEE3OTdBQUUxRTVCOTZEPjwzMjE4RDZFNEIxMEYzRTQ5ODBBNzk3QUFFMUU1Qjk2RD5dIC9QcmV2IDE4NTc5OS9YUmVmU3RtIDE4NTUxOT4+DQpzdGFydHhyZWYNCjE4NjM3Ng0KJSVFT0Y=',\n fileName: '05-versions-space.pdf',\n },\n\n {\n mimeType: 'image/png',\n data: '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',\n fileName: 'n8n-screenshot.png',\n }\n]\n\nreturn files.map(file => ({json:{filename:file.fileName},binary:{binaryfile:file}}));\n" + }, + "name": "Set files", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "3f6a46bd-b5e9-4ff3-9562-335c4f540f02" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Set files", + "type": "main", + "index": 0 + } + ] + ] + }, + "Set files": { + "main": [ + [ + { + "node": "Write Binary File", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": {}, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/60.json b/test-workflows/workflows/60.json new file mode 100644 index 0000000000..8da0c063f4 --- /dev/null +++ b/test-workflows/workflows/60.json @@ -0,0 +1,193 @@ +{ + "createdAt": "2021-02-23T15:27:09.090Z", + "updatedAt": "2021-07-16T07:21:35.499Z", + "id": "60", + "name": "Taiga:Issue:create update get getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 170, + 350 + ], + "id": "f7f8b0e2-b017-4579-b9e0-3ba533335d3a" + }, + { + "parameters": { + "projectId": 399742, + "subject": "Test", + "additionalFields": { + "description": "TestIssue" + } + }, + "name": "Taiga", + "type": "n8n-nodes-base.taiga", + "typeVersion": 1, + "position": [ + 350, + 350 + ], + "credentials": { + "taigaApi": { + "id": "221", + "name": "taigaApi" + } + }, + "id": "c7b5324f-05d8-4eb7-a4f2-0f0a4c6de1da" + }, + { + "parameters": { + "operation": "update", + "projectId": 399742, + "issueId": "={{$node[\"Taiga\"].json[\"id\"]}}", + "updateFields": { + "subject": "UpdatedTest" + } + }, + "name": "Taiga1", + "type": "n8n-nodes-base.taiga", + "typeVersion": 1, + "position": [ + 500, + 350 + ], + "credentials": { + "taigaApi": { + "id": "221", + "name": "taigaApi" + } + }, + "id": "c156fd69-32cb-4b38-b85a-aeac05032c23" + }, + { + "parameters": { + "operation": "get", + "issueId": "={{$node[\"Taiga\"].json[\"id\"]}}" + }, + "name": "Taiga2", + "type": "n8n-nodes-base.taiga", + "typeVersion": 1, + "position": [ + 650, + 350 + ], + "credentials": { + "taigaApi": { + "id": "221", + "name": "taigaApi" + } + }, + "id": "2f3418a5-b09a-4db3-9cb8-c8d10b31a4b6" + }, + { + "parameters": { + "operation": "getAll", + "projectId": 399742, + "limit": 1, + "filters": {} + }, + "name": "Taiga3", + "type": "n8n-nodes-base.taiga", + "typeVersion": 1, + "position": [ + 800, + 350 + ], + "credentials": { + "taigaApi": { + "id": "221", + "name": "taigaApi" + } + }, + "id": "a100f3a0-d4ae-41f3-81d5-21101a91eef6" + }, + { + "parameters": { + "operation": "delete", + "issueId": "={{$node[\"Taiga\"].json[\"id\"]}}" + }, + "name": "Taiga4", + "type": "n8n-nodes-base.taiga", + "typeVersion": 1, + "position": [ + 950, + 350 + ], + "credentials": { + "taigaApi": { + "id": "221", + "name": "taigaApi" + } + }, + "id": "a1c664cd-c0f0-44af-94ce-6c650aee489c" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Taiga", + "type": "main", + "index": 0 + } + ] + ] + }, + "Taiga": { + "main": [ + [ + { + "node": "Taiga1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Taiga1": { + "main": [ + [ + { + "node": "Taiga2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Taiga2": { + "main": [ + [ + { + "node": "Taiga3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Taiga3": { + "main": [ + [ + { + "node": "Taiga4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/61.json b/test-workflows/workflows/61.json new file mode 100644 index 0000000000..4ef0aaff54 --- /dev/null +++ b/test-workflows/workflows/61.json @@ -0,0 +1,582 @@ +{ + "createdAt": "2021-02-23T16:32:02.682Z", + "updatedAt": "2021-07-14T13:38:50.003Z", + "id": "61", + "name": "Spotify:Artist:get getAlbums getRelatedArtists getTopTracks:Album:get getNewReleases getTracks:Track:get getAudioFeatures:Playlist:create getUserPlaylists get add getTracks delete:Player:recentylPlayed currentlyPlaying:Library:getLikedTracks", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "4509b9ad-036c-4042-9094-565f3831b616" + }, + { + "parameters": { + "resource": "artist", + "id": "0dwFxqYkvZLSA6U6XfQcDV" + }, + "name": "Spotify", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 440, + 300 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "1d211521-bf07-43d1-a537-76a43689659f" + }, + { + "parameters": { + "resource": "artist", + "operation": "getAlbums", + "id": "0dwFxqYkvZLSA6U6XfQcDV", + "limit": 1 + }, + "name": "Spotify1", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "5335e14c-1580-43cf-ab02-e0a6ff3a8682" + }, + { + "parameters": { + "resource": "artist", + "operation": "getRelatedArtists", + "id": "0dwFxqYkvZLSA6U6XfQcDV" + }, + "name": "Spotify2", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 600, + 150 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "87c2549e-56ae-4bce-94aa-f6a28da0a87c" + }, + { + "parameters": { + "resource": "artist", + "operation": "getTopTracks", + "id": "0dwFxqYkvZLSA6U6XfQcDV" + }, + "name": "Spotify3", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 600, + 460 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "69240ec6-ad37-46b3-80d2-b1656c2f1334" + }, + { + "parameters": { + "resource": "album", + "id": "={{$node[\"Spotify1\"].json[\"id\"]}}" + }, + "name": "Spotify4", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 810, + 300 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "00066fda-fa7f-4070-a687-fe253bfdd1cb" + }, + { + "parameters": { + "resource": "album", + "operation": "getTracks", + "id": "={{$node[\"Spotify1\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Spotify5", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 1100, + 300 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "a2a42efb-f876-4612-acfd-2325108cea84" + }, + { + "parameters": { + "resource": "track", + "operation": "get", + "id": "={{$node[\"Spotify5\"].json[\"id\"]}}" + }, + "name": "Spotify6", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 1250, + 300 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "be6c985b-88be-424f-b7c3-76126a347140" + }, + { + "parameters": { + "resource": "track", + "operation": "getAudioFeatures", + "id": "={{$node[\"Spotify5\"].json[\"id\"]}}" + }, + "name": "Spotify7", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 1400, + 300 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "6c05d655-43c2-456d-a9d0-a80ac251c1f6" + }, + { + "parameters": { + "resource": "playlist", + "operation": "getUserPlaylists", + "limit": 1 + }, + "name": "Spotify8", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 450, + 610 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "36defd84-29a1-4f39-896e-4885daaec151" + }, + { + "parameters": { + "resource": "playlist", + "operation": "get", + "id": "={{$node[\"Spotify8\"].json[\"id\"]}}" + }, + "name": "Spotify9", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 600, + 610 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "61c3c3dd-c263-4f2d-bd2d-c30ee5cd24ed" + }, + { + "parameters": { + "resource": "playlist", + "id": "={{$node[\"Spotify8\"].json[\"id\"]}}", + "trackID": "spotify:track:2ea6bt302Bq8Hiulp8Bn2C", + "additionalFields": {} + }, + "name": "Spotify10", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 750, + 610 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "1aba2540-e5c6-4e19-9afb-1ce402ee9e63" + }, + { + "parameters": { + "resource": "playlist", + "operation": "getTracks", + "id": "={{$node[\"Spotify8\"].json[\"id\"]}}", + "limit": 1 + }, + "name": "Spotify11", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 900, + 610 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "b73d97e3-8689-4d5a-b63a-798b841f97df" + }, + { + "parameters": { + "resource": "playlist", + "operation": "delete", + "id": "={{$node[\"Spotify8\"].json[\"id\"]}}", + "trackID": "spotify:track:2ea6bt302Bq8Hiulp8Bn2C" + }, + "name": "Spotify12", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 1050, + 610 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "0a06cad9-d378-4206-8974-4a32f47c3ca2" + }, + { + "parameters": { + "operation": "recentlyPlayed", + "limit": 1 + }, + "name": "Spotify14", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 450, + 0 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "e053e2f6-6166-4642-aae0-45c9e1fd7e8a" + }, + { + "parameters": { + "operation": "currentlyPlaying" + }, + "name": "Spotify15", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 600, + 0 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "3f6ce69d-fe20-4ae8-9e0f-2fd6819829b8" + }, + { + "parameters": { + "resource": "album", + "operation": "getNewReleases", + "limit": 1, + "filters": { + "country": "DE" + } + }, + "name": "Spotify13", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 950, + 300 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "56209a90-208b-427e-91a6-2afeed0a2637" + }, + { + "parameters": { + "resource": "playlist", + "operation": "create", + "name": "=Playlist{{Date.now()}}", + "additionalFields": { + "public": true + } + }, + "name": "Spotify16", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 1200, + 610 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "59830b10-56b4-49b0-b2fd-c21829acb8f6" + }, + { + "parameters": { + "resource": "library", + "limit": 1 + }, + "name": "Spotify17", + "type": "n8n-nodes-base.spotify", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "spotifyOAuth2Api": { + "id": "223", + "name": "Spotify OAuth2 creds" + } + }, + "id": "8ffb18bc-7e7a-403c-bcb1-60732c28f358" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Spotify", + "type": "main", + "index": 0 + }, + { + "node": "Spotify8", + "type": "main", + "index": 0 + }, + { + "node": "Spotify14", + "type": "main", + "index": 0 + }, + { + "node": "Spotify17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify": { + "main": [ + [ + { + "node": "Spotify1", + "type": "main", + "index": 0 + }, + { + "node": "Spotify3", + "type": "main", + "index": 0 + }, + { + "node": "Spotify2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify1": { + "main": [ + [ + { + "node": "Spotify4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify4": { + "main": [ + [ + { + "node": "Spotify13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify5": { + "main": [ + [ + { + "node": "Spotify6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify6": { + "main": [ + [ + { + "node": "Spotify7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify8": { + "main": [ + [ + { + "node": "Spotify9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify9": { + "main": [ + [ + { + "node": "Spotify10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify10": { + "main": [ + [ + { + "node": "Spotify11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify11": { + "main": [ + [ + { + "node": "Spotify12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify14": { + "main": [ + [ + { + "node": "Spotify15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify13": { + "main": [ + [ + { + "node": "Spotify5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spotify12": { + "main": [ + [ + { + "node": "Spotify16", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/62.json b/test-workflows/workflows/62.json new file mode 100644 index 0000000000..7f62ba0ca2 --- /dev/null +++ b/test-workflows/workflows/62.json @@ -0,0 +1,117 @@ +{ + "createdAt": "2021-02-25T08:31:03.195Z", + "updatedAt": "2021-02-25T08:32:00.908Z", + "id": "62", + "name": "ProfitWell:Company:getSetting:Metric:getMontly getDaily", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 300, + 350 + ], + "id": "4dbeace0-2f7c-4987-b559-b94bf635956b" + }, + { + "parameters": { + "resource": "company" + }, + "name": "ProfitWell", + "type": "n8n-nodes-base.profitWell", + "typeVersion": 1, + "position": [ + 500, + 270 + ], + "credentials": { + "profitWellApi": { + "id": "51", + "name": "ProfitWell creds" + } + }, + "id": "641ae41a-7ffd-4644-af38-336ae09074eb" + }, + { + "parameters": { + "type": "monthly", + "options": {} + }, + "name": "ProfitWell1", + "type": "n8n-nodes-base.profitWell", + "typeVersion": 1, + "position": [ + 500, + 420 + ], + "credentials": { + "profitWellApi": { + "id": "51", + "name": "ProfitWell creds" + } + }, + "id": "fa1e6b3f-6aee-43da-a1a5-7a5f5e820430" + }, + { + "parameters": { + "type": "daily", + "month": "={{(new Date()).toISOString().slice(0,7)}}", + "simple": false, + "options": {} + }, + "name": "ProfitWell2", + "type": "n8n-nodes-base.profitWell", + "typeVersion": 1, + "position": [ + 650, + 420 + ], + "credentials": { + "profitWellApi": { + "id": "51", + "name": "ProfitWell creds" + } + }, + "id": "fba5b0a1-1e81-473c-9973-2d7f21a646d3" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "ProfitWell", + "type": "main", + "index": 0 + }, + { + "node": "ProfitWell1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ProfitWell1": { + "main": [ + [ + { + "node": "ProfitWell2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/63.json b/test-workflows/workflows/63.json new file mode 100644 index 0000000000..6866f74b1e --- /dev/null +++ b/test-workflows/workflows/63.json @@ -0,0 +1,160 @@ +{ + "createdAt": "2021-02-25T09:15:01.281Z", + "updatedAt": "2021-03-10T14:03:08.426Z", + "id": "63", + "name": "Segment:Identify:create:Track:event page", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 400 + ], + "id": "238a4bec-9ecf-47ad-a99b-98ac07a426da" + }, + { + "parameters": { + "userId": "rzfu5AbHm7U3rj7jMdqsjW", + "traits": { + "traitsUi": [ + { + "key": "type", + "value": "test" + } + ] + } + }, + "name": "Segment", + "type": "n8n-nodes-base.segment", + "typeVersion": 1, + "position": [ + 500, + 250 + ], + "credentials": { + "segmentApi": { + "id": "52", + "name": "Segment creds" + } + }, + "id": "228fb339-6315-4c04-bce3-18d4c16019ad" + }, + { + "parameters": { + "resource": "track", + "userId": "rzfu5AbHm7U3rj7jMdqsjW", + "event": "click" + }, + "name": "Segment1", + "type": "n8n-nodes-base.segment", + "typeVersion": 1, + "position": [ + 500, + 400 + ], + "credentials": { + "segmentApi": { + "id": "52", + "name": "Segment creds" + } + }, + "id": "09f95724-5ae1-4bc3-9aa0-7010129aa7da" + }, + { + "parameters": { + "resource": "track", + "operation": "page", + "userId": "rzfu5AbHm7U3rj7jMdqsjW", + "name": "landing" + }, + "name": "Segment2", + "type": "n8n-nodes-base.segment", + "typeVersion": 1, + "position": [ + 650, + 400 + ], + "credentials": { + "segmentApi": { + "id": "52", + "name": "Segment creds" + } + }, + "id": "f80c0402-ca47-417c-bc0c-b5d4b0b463fc" + }, + { + "parameters": { + "resource": "group", + "userId": "rzfu5AbHm7U3rj7jMdqsjW", + "groupId": "=FixedGroupID", + "traits": { + "traitsUi": [ + { + "key": "mode", + "value": "test" + } + ] + } + }, + "name": "Segment3", + "type": "n8n-nodes-base.segment", + "typeVersion": 1, + "position": [ + 500, + 550 + ], + "credentials": { + "segmentApi": { + "id": "52", + "name": "Segment creds" + } + }, + "id": "58a1a209-2fbe-48aa-8b8f-186ce492cd12" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Segment", + "type": "main", + "index": 0 + }, + { + "node": "Segment1", + "type": "main", + "index": 0 + }, + { + "node": "Segment3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Segment1": { + "main": [ + [ + { + "node": "Segment2", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/64.json b/test-workflows/workflows/64.json new file mode 100644 index 0000000000..8ca2540690 --- /dev/null +++ b/test-workflows/workflows/64.json @@ -0,0 +1,93 @@ +{ + "createdAt": "2021-02-25T09:24:41.132Z", + "updatedAt": "2021-02-25T09:24:41.132Z", + "id": "64", + "name": "SIGNL4:Alert:send resolve", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e54d4fc1-752f-436e-8c86-139e373a54de" + }, + { + "parameters": { + "message": "=test{{Date.now()}}", + "additionalFields": { + "title": "=Title{{Date.now()}}" + } + }, + "name": "SIGNL4", + "type": "n8n-nodes-base.signl4", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "signl4Api": { + "id": "53", + "name": "Signal4 creds" + } + }, + "id": "870742ca-8ae9-44f6-a2e0-b6ec40298cd2" + }, + { + "parameters": { + "operation": "resolve", + "externalId": "={{$node[\"SIGNL4\"].json[\"eventId\"]}}" + }, + "name": "SIGNL", + "type": "n8n-nodes-base.signl4", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "signl4Api": { + "id": "53", + "name": "Signal4 creds" + } + }, + "id": "95ab047b-4159-45fd-9ec6-2d1b9c326a5f" + } + ], + "connections": { + "SIGNL4": { + "main": [ + [ + { + "node": "SIGNL", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "SIGNL4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/65.json b/test-workflows/workflows/65.json new file mode 100644 index 0000000000..5e156df25b --- /dev/null +++ b/test-workflows/workflows/65.json @@ -0,0 +1,122 @@ +{ + "createdAt": "2021-02-25T09:43:01.461Z", + "updatedAt": "2021-02-25T09:43:01.461Z", + "id": "65", + "name": "Spontit:Push:create", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "e33d511e-ced8-4880-a890-e943c6aab5dc" + }, + { + "parameters": { + "content": "=Content {{Date.now()}}", + "additionalFields": { + "pushTitle": "=TestNotif {{Date.now()}}" + } + }, + "name": "Spontit", + "type": "n8n-nodes-base.spontit", + "typeVersion": 1, + "position": [ + 470, + 300 + ], + "credentials": { + "spontitApi": { + "id": "54", + "name": "Spontit creds" + } + }, + "id": "06d02833-8870-4d12-a60f-59c1763f0361" + }, + { + "parameters": { + "url": "={{$node[\"Spontit\"].json[\"message\"].replace(\"Pushed! Available at \",\"\")}}", + "responseFormat": "string", + "options": {} + }, + "name": "HTTP Request", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "e22a1da8-01dc-476f-b449-527888f5d58e" + }, + { + "parameters": { + "extractionValues": { + "values": [ + { + "key": "data-subscription", + "cssSelector": "#loadApp_script[data-subscription]", + "returnValue": "attribute", + "attribute": "data-subscription" + } + ] + }, + "options": {} + }, + "name": "HTML Extract", + "type": "n8n-nodes-base.htmlExtract", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "641a91ef-f7a2-4f1a-8876-bd0b0cf133cb" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Spontit", + "type": "main", + "index": 0 + } + ] + ] + }, + "Spontit": { + "main": [ + [ + { + "node": "HTTP Request", + "type": "main", + "index": 0 + } + ] + ] + }, + "HTTP Request": { + "main": [ + [ + { + "node": "HTML Extract", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/66.json b/test-workflows/workflows/66.json new file mode 100644 index 0000000000..bb67cf78b5 --- /dev/null +++ b/test-workflows/workflows/66.json @@ -0,0 +1,162 @@ +{ + "createdAt": "2021-02-25T10:14:44.063Z", + "updatedAt": "2021-02-25T10:14:44.063Z", + "id": "66", + "name": "Storyblok:Story:get getAll publish unpublish", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "0da0a738-e19c-4837-af8b-0a1ae6cd7943" + }, + { + "parameters": { + "source": "managementApi", + "operation": "getAll", + "space": 106530, + "returnAll": true, + "filters": {} + }, + "name": "Storyblok", + "type": "n8n-nodes-base.storyblok", + "typeVersion": 1, + "position": [ + 440, + 300 + ], + "credentials": { + "storyblokManagementApi": { + "id": "56", + "name": "Storyblok Management creds" + } + }, + "id": "76bbeb75-0065-41cf-943e-2cdf4cdc53b1" + }, + { + "parameters": { + "source": "managementApi", + "space": 106530, + "storyId": "={{$node[\"Storyblok\"].json[\"id\"]}}" + }, + "name": "Storyblok1", + "type": "n8n-nodes-base.storyblok", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "storyblokManagementApi": { + "id": "56", + "name": "Storyblok Management creds" + } + }, + "id": "27852b2f-f00f-4dee-8df5-30f7aaabbfc2" + }, + { + "parameters": { + "source": "managementApi", + "operation": "publish", + "space": 106530, + "storyId": "={{$node[\"Storyblok\"].json[\"id\"]}}", + "options": {} + }, + "name": "Storyblok2", + "type": "n8n-nodes-base.storyblok", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "storyblokManagementApi": { + "id": "56", + "name": "Storyblok Management creds" + } + }, + "id": "fa39cb57-fe77-46c3-9ac9-82d3c3b6fced" + }, + { + "parameters": { + "source": "managementApi", + "operation": "unpublish", + "space": 106530, + "storyId": "={{$node[\"Storyblok\"].json[\"id\"]}}" + }, + "name": "Storyblok3", + "type": "n8n-nodes-base.storyblok", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "storyblokManagementApi": { + "id": "56", + "name": "Storyblok Management creds" + } + }, + "id": "12a65877-f3a5-46ae-b033-0296c9c23314" + } + ], + "connections": { + "Storyblok": { + "main": [ + [ + { + "node": "Storyblok1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Storyblok1": { + "main": [ + [ + { + "node": "Storyblok2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Storyblok2": { + "main": [ + [ + { + "node": "Storyblok3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Storyblok", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/67.json b/test-workflows/workflows/67.json new file mode 100644 index 0000000000..c0215c9c97 --- /dev/null +++ b/test-workflows/workflows/67.json @@ -0,0 +1,791 @@ +{ + "createdAt": "2021-02-25T11:13:34.019Z", + "updatedAt": "2021-05-03T07:55:48.432Z", + "id": "67", + "name": " Twist:Channel:create update get getAll archive unarchive delete:MessageConversation:create get getAll update delete:Thread:create get update getAll delete:Comment:create get update getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "27f84602-beb4-4f88-8218-2a97b75c2224" + }, + { + "parameters": { + "resource": "channel", + "workspaceId": 164330, + "name": "=TestChannel{{Date.now()}}", + "additionalFields": {} + }, + "name": "Twist", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "5f8b0940-95b9-4ceb-b582-978ecc2a3054" + }, + { + "parameters": { + "resource": "channel", + "operation": "update", + "channelId": "={{$node[\"Twist\"].json[\"id\"]}}", + "updateFields": { + "name": "=UpdatedChannel{{Date.now()}}" + } + }, + "name": "Twist1", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1300, + 300 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "ae38c81e-4500-4794-a2be-dd13baec5a12" + }, + { + "parameters": { + "resource": "channel", + "operation": "get", + "channelId": "={{$node[\"Twist\"].json[\"id\"]}}" + }, + "name": "Twist2", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1450, + 300 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "13a50551-66d2-41c8-a223-b668d1760bb9" + }, + { + "parameters": { + "resource": "channel", + "operation": "getAll", + "workspaceId": 164330, + "limit": 1, + "filters": {} + }, + "name": "Twist3", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1600, + 300 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "ccd8ba04-a775-4726-8fd5-6bd7aab479be" + }, + { + "parameters": { + "workspaceId": 164330, + "conversationId": 1067233, + "content": "=Message {{Date.now()}}", + "additionalFields": {} + }, + "name": "Twist4", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 400, + 450 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "d71aab63-c8fc-4707-b1ef-e65c86b57889" + }, + { + "parameters": { + "resource": "channel", + "operation": "archive", + "channelId": "={{$node[\"Twist\"].json[\"id\"]}}" + }, + "name": "Twist5", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1750, + 300 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "ad43fda9-1a8c-4742-a6f4-e06fd9ca6b71" + }, + { + "parameters": { + "resource": "channel", + "operation": "unarchive", + "channelId": "={{$node[\"Twist\"].json[\"id\"]}}" + }, + "name": "Twist6", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1900, + 300 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "7694c0d8-a552-4447-b596-4fc4028286ca" + }, + { + "parameters": { + "resource": "channel", + "operation": "archive", + "channelId": "={{$node[\"Twist\"].json[\"id\"]}}" + }, + "name": "Twist7", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 2050, + 300 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "117e67bf-96e6-45e2-815a-39a061c0b70f" + }, + { + "parameters": { + "resource": "channel", + "operation": "delete", + "channelId": "={{$node[\"Twist\"].json[\"id\"]}}" + }, + "name": "Twist8", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 2200, + 300 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "9f2ac87f-563d-46ea-9e84-20106ae3d298" + }, + { + "parameters": { + "operation": "get", + "id": "={{$node[\"Twist4\"].json[\"id\"]}}" + }, + "name": "Twist9", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "f18044fe-f54c-4508-8d7b-fd207d7592d7" + }, + { + "parameters": { + "operation": "getAll", + "workspaceId": 164330, + "conversationId": 1067233, + "additionalFields": { + "limit": 1 + } + }, + "name": "Twist10", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 800, + 450 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "9af8b264-9fd4-42d2-adb3-11c31cc4a2bc" + }, + { + "parameters": { + "operation": "update", + "id": "={{$node[\"Twist4\"].json[\"id\"]}}", + "updateFields": { + "actionsUi": { + "actionValues": [ + { + "action": "open_url", + "button_text": "community ?", + "type": "action", + "url": "http://community.n8n.io" + } + ] + } + } + }, + "name": "Twist11", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1000, + 450 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "bee483bf-33e8-4dda-992a-facd5cf7e678" + }, + { + "parameters": { + "operation": "delete", + "id": "={{$node[\"Twist4\"].json[\"id\"]}}" + }, + "name": "Twist12", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1200, + 450 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "7069faaa-b9f0-4a53-8a0f-8496697b8a0c" + }, + { + "parameters": { + "resource": "thread", + "channelId": "={{$node[\"Twist\"].json[\"id\"]}}", + "title": "=Thread{{Date.now()}}", + "content": "test", + "additionalFields": {} + }, + "name": "Twist13", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 550, + 150 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "b7484a76-76e7-4b7f-9702-efd247ce3b7f" + }, + { + "parameters": { + "resource": "thread", + "operation": "get", + "threadId": "={{$node[\"Twist13\"].json[\"id\"]}}" + }, + "name": "Twist14", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 700, + 150 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "6d2214c7-4046-48ad-8968-bd94b4fead5f" + }, + { + "parameters": { + "resource": "thread", + "operation": "update", + "threadId": "={{$node[\"Twist13\"].json[\"id\"]}}", + "updateFields": { + "content": "Updated Content" + } + }, + "name": "Twist15", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 850, + 150 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "f18cc9f8-8019-45a6-b129-4503d5e8aabe" + }, + { + "parameters": { + "resource": "thread", + "operation": "delete", + "threadId": "={{$node[\"Twist13\"].json[\"id\"]}}" + }, + "name": "Twist16", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1150, + 150 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "0d712781-9323-48c6-9cc7-72cb43bb73d1" + }, + { + "parameters": { + "resource": "thread", + "operation": "getAll", + "channelId": "={{$node[\"Twist\"].json[\"id\"]}}", + "limit": 1, + "filters": {} + }, + "name": "Twist17", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1000, + 150 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "6921bbfc-1f9c-4939-874d-d507221603f1" + }, + { + "parameters": { + "resource": "comment", + "threadId": "={{$node[\"Twist13\"].json[\"id\"]}}", + "content": "=Comment{{Date.now()}}", + "additionalFields": {} + }, + "name": "Twist18", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 700, + 0 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "0c6fb7ef-6ed1-4361-860e-757cbfcaf1d6" + }, + { + "parameters": { + "resource": "comment", + "operation": "get", + "commentId": "={{$node[\"Twist18\"].json[\"id\"]}}" + }, + "name": "Twist19", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 850, + 0 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "6a268279-ca4a-4a06-ab80-79a9a7eb46bd" + }, + { + "parameters": { + "resource": "comment", + "operation": "update", + "commentId": "={{$node[\"Twist18\"].json[\"id\"]}}", + "updateFields": { + "content": "Updated Content" + } + }, + "name": "Twist20", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1000, + 0 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "21e3d0e7-7334-4540-88ed-bacb111bb3c4" + }, + { + "parameters": { + "resource": "comment", + "operation": "getAll", + "threadId": "={{$node[\"Twist13\"].json[\"id\"]}}", + "limit": 1, + "filters": {} + }, + "name": "Twist21", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1150, + 0 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "1a4f872d-f05f-474f-a7d9-97f2f046533b" + }, + { + "parameters": { + "resource": "comment", + "operation": "delete", + "commentId": "={{$node[\"Twist18\"].json[\"id\"]}}" + }, + "name": "Twist22", + "type": "n8n-nodes-base.twist", + "typeVersion": 1, + "position": [ + 1300, + 0 + ], + "credentials": { + "twistOAuth2Api": { + "id": "58", + "name": "Twist OAuth2 creds" + } + }, + "id": "d2496300-155c-4bd3-8acd-1d3c068dba37" + } + ], + "connections": { + "Twist": { + "main": [ + [ + { + "node": "Twist13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist1": { + "main": [ + [ + { + "node": "Twist2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist2": { + "main": [ + [ + { + "node": "Twist3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Twist", + "type": "main", + "index": 0 + }, + { + "node": "Twist4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist3": { + "main": [ + [ + { + "node": "Twist5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist5": { + "main": [ + [ + { + "node": "Twist6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist6": { + "main": [ + [ + { + "node": "Twist7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist7": { + "main": [ + [ + { + "node": "Twist8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist4": { + "main": [ + [ + { + "node": "Twist9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist9": { + "main": [ + [ + { + "node": "Twist10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist10": { + "main": [ + [ + { + "node": "Twist11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist11": { + "main": [ + [ + { + "node": "Twist12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist13": { + "main": [ + [ + { + "node": "Twist18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist14": { + "main": [ + [ + { + "node": "Twist15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist15": { + "main": [ + [ + { + "node": "Twist17", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist16": { + "main": [ + [ + { + "node": "Twist1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist17": { + "main": [ + [ + { + "node": "Twist16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist18": { + "main": [ + [ + { + "node": "Twist19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist19": { + "main": [ + [ + { + "node": "Twist20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist20": { + "main": [ + [ + { + "node": "Twist21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist21": { + "main": [ + [ + { + "node": "Twist22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Twist22": { + "main": [ + [ + { + "node": "Twist14", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/68.json b/test-workflows/workflows/68.json new file mode 100644 index 0000000000..f1ef09ab26 --- /dev/null +++ b/test-workflows/workflows/68.json @@ -0,0 +1,129 @@ +{ + "createdAt": "2021-02-25T12:44:44.483Z", + "updatedAt": "2021-02-25T12:44:52.927Z", + "id": "68", + "name": "CircleCI:Pipeline:getAll get trigger", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "ccd210e8-4155-4e27-bcda-8ecde0543afe" + }, + { + "parameters": { + "operation": "getAll", + "vcs": "github", + "projectSlug": "nodemationqa/nodeQA", + "limit": 1, + "filters": {} + }, + "name": "CircleCI", + "type": "n8n-nodes-base.circleCi", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "circleCiApi": { + "id": "59", + "name": "CircleCI creds" + } + }, + "id": "72b39f65-9aef-4dd2-9887-a68e247e5c0d" + }, + { + "parameters": { + "vcs": "github", + "projectSlug": "nodemationqa/nodeQA" + }, + "name": "CircleCI1", + "type": "n8n-nodes-base.circleCi", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "circleCiApi": { + "id": "59", + "name": "CircleCI creds" + } + }, + "id": "094f3916-c071-47af-9d66-d54d88a826ff" + }, + { + "parameters": { + "operation": "trigger", + "vcs": "github", + "projectSlug": "nodemationqa/nodeQA", + "additionalFields": { + "branch": "main" + } + }, + "name": "CircleCI2", + "type": "n8n-nodes-base.circleCi", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "circleCiApi": { + "id": "59", + "name": "CircleCI creds" + } + }, + "id": "eeb564f3-d08d-4fdb-8c7a-19937bcb2817" + } + ], + "connections": { + "CircleCI": { + "main": [ + [ + { + "node": "CircleCI1", + "type": "main", + "index": 0 + } + ] + ] + }, + "CircleCI1": { + "main": [ + [ + { + "node": "CircleCI2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "CircleCI", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/69.json b/test-workflows/workflows/69.json new file mode 100644 index 0000000000..ff12c491bd --- /dev/null +++ b/test-workflows/workflows/69.json @@ -0,0 +1,255 @@ +{ + "createdAt": "2021-02-25T13:03:37.942Z", + "updatedAt": "2021-07-14T13:44:25.847Z", + "id": "69", + "name": "CoinGecko:Coin:get getAll history candlesick market marketChart price ticker:Event:getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 230, + 430 + ], + "id": "a288470d-d151-4273-a50d-31c76cd1a2ce" + }, + { + "parameters": { + "resource": "event", + "limit": 1, + "options": { + "upcoming_events_only": false + } + }, + "name": "CoinGecko", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 400, + 290 + ], + "notes": "CAP_RESULTS_LENGTH=1", + "id": "b3b33313-3b7b-4569-aec4-77854b0c1980" + }, + { + "parameters": { + "limit": 1 + }, + "name": "CoinGecko1", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 400, + 550 + ], + "alwaysOutputData": true, + "id": "e8e650b8-2122-4974-ba3e-74889528cd74" + }, + { + "parameters": { + "operation": "history", + "coinId": "bitcoin", + "date": "2021-02-24T23:00:00.000Z", + "options": { + "localization": false + } + }, + "name": "CoinGecko2", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 770, + 330 + ], + "alwaysOutputData": true, + "id": "725e7306-f2dc-4c05-b6d8-ed75a394953b" + }, + { + "parameters": { + "operation": "get", + "coinId": "bitcoin", + "options": { + "localization": false + } + }, + "name": "CoinGecko3", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 630, + 330 + ], + "alwaysOutputData": true, + "id": "635e5c09-c4ca-4c05-ae93-7613f12c608a" + }, + { + "parameters": { + "operation": "candlestick", + "baseCurrency": "bitcoin", + "quoteCurrency": "eur", + "days": "1" + }, + "name": "CoinGecko4", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 910, + 330 + ], + "alwaysOutputData": true, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "54fc5a2b-34a8-4f41-a9dc-b4b156b2448f" + }, + { + "parameters": { + "operation": "market", + "baseCurrency": "btc", + "limit": 1, + "options": {} + }, + "name": "CoinGecko5", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 630, + 480 + ], + "id": "43972652-a7ac-4eb2-92b3-d5ea6328b135" + }, + { + "parameters": { + "operation": "marketChart", + "baseCurrency": "oxbitcoin", + "quoteCurrency": "btc", + "days": "1" + }, + "name": "CoinGecko6", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 630, + 630 + ], + "notes": "CAP_RESULTS_LENGTH=1", + "id": "857b16d9-deab-4a5c-9d6d-d79f83cc566e" + }, + { + "parameters": { + "operation": "price", + "baseCurrencies": [ + "ethereum-classic" + ], + "quoteCurrencies": [ + "btc" + ], + "options": {} + }, + "name": "CoinGecko7", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 630, + 780 + ], + "id": "c6d8a963-5bac-4841-a612-3d21b6ea71b6" + }, + { + "parameters": { + "operation": "ticker", + "coinId": "bitcoin", + "limit": 1, + "options": {} + }, + "name": "CoinGecko8", + "type": "n8n-nodes-base.coinGecko", + "typeVersion": 1, + "position": [ + 630, + 930 + ], + "notes": "IGNORED_PROPERTIES=target_coin_id", + "id": "16097486-6aaf-476a-8c93-8bfbbd25b056" + } + ], + "connections": { + "CoinGecko1": { + "main": [ + [ + { + "node": "CoinGecko3", + "type": "main", + "index": 0 + }, + { + "node": "CoinGecko5", + "type": "main", + "index": 0 + }, + { + "node": "CoinGecko6", + "type": "main", + "index": 0 + }, + { + "node": "CoinGecko7", + "type": "main", + "index": 0 + }, + { + "node": "CoinGecko8", + "type": "main", + "index": 0 + } + ] + ] + }, + "CoinGecko3": { + "main": [ + [ + { + "node": "CoinGecko2", + "type": "main", + "index": 0 + } + ] + ] + }, + "CoinGecko2": { + "main": [ + [ + { + "node": "CoinGecko4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "CoinGecko1", + "type": "main", + "index": 0 + }, + { + "node": "CoinGecko", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/70.json b/test-workflows/workflows/70.json new file mode 100644 index 0000000000..d32fbd88e2 --- /dev/null +++ b/test-workflows/workflows/70.json @@ -0,0 +1,228 @@ +{ + "createdAt": "2021-02-25T13:38:22.940Z", + "updatedAt": "2021-02-25T13:38:22.940Z", + "id": "70", + "name": "Contentful-delivery-api:locale:getAll:entry:getAll:ContentType:get:Asset:getAll get:Space:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 260, + 390 + ], + "id": "92fcb1c3-e481-4350-910b-99de6956a87d" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "additionalFields": { + "content_type": "blogPost" + } + }, + "name": "Contentful", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 550, + 250 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "e85d9486-96dc-4f89-9ab6-b0b91b1968df" + }, + { + "parameters": { + "resource": "contentType", + "contentTypeId": "blogPost", + "additionalFields": {} + }, + "name": "Contentful1", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 550, + 420 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "4958d8ff-37dd-4086-a90b-fcf608a48d26" + }, + { + "parameters": { + "resource": "asset", + "limit": 1, + "additionalFields": {} + }, + "name": "Contentful2", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 550, + 570 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "4dabb763-4379-4d65-b484-0dc528535896" + }, + { + "parameters": { + "resource": "asset", + "operation": "get", + "assetId": "5UvpPFo279OoVXHLRXqlo9" + }, + "name": "Contentful3", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 700, + 570 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "disabled": true, + "id": "cd08d703-328c-4f6e-a0e5-5681f2aa208a" + }, + { + "parameters": { + "entryId": "={{$node[\"Contentful\"].json[\"author\"][\"sys\"][\"id\"]}}" + }, + "name": "Contentful4", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 700, + 250 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "disabled": true, + "id": "f53c8f63-386c-491a-b5f9-119f27aaa421" + }, + { + "parameters": { + "resource": "locale", + "limit": 1 + }, + "name": "Contentful5", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 550, + 100 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "429edf92-f2cf-4897-ba31-9413f57b0a46" + }, + { + "parameters": { + "resource": "space" + }, + "name": "Contentful6", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 550, + 730 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "36e76b3d-fb38-4abe-a4b9-81c8604f87f8" + } + ], + "connections": { + "Contentful": { + "main": [ + [ + { + "node": "Contentful4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Contentful2": { + "main": [ + [ + { + "node": "Contentful3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Contentful5", + "type": "main", + "index": 0 + }, + { + "node": "Contentful", + "type": "main", + "index": 0 + }, + { + "node": "Contentful1", + "type": "main", + "index": 0 + }, + { + "node": "Contentful2", + "type": "main", + "index": 0 + }, + { + "node": "Contentful6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/71.json b/test-workflows/workflows/71.json new file mode 100644 index 0000000000..b3a25cd4c4 --- /dev/null +++ b/test-workflows/workflows/71.json @@ -0,0 +1,235 @@ +{ + "createdAt": "2021-02-25T13:44:10.456Z", + "updatedAt": "2021-02-25T13:44:14.960Z", + "id": "71", + "name": "Contentful-preview-api:locale:getAll:entry:getAll:ContentType:get:Asset:getAll get:Space:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 300, + 450 + ], + "id": "b4ecfdaf-3dd8-4462-a893-00fcf0965acb" + }, + { + "parameters": { + "source": "previewApi", + "operation": "getAll", + "limit": 1, + "additionalFields": { + "content_type": "blogPost" + } + }, + "name": "Contentful", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 510, + 130 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "6f0e510a-f47b-406b-a3e4-50160a3837f8" + }, + { + "parameters": { + "source": "previewApi", + "resource": "contentType", + "contentTypeId": "blogPost", + "additionalFields": {} + }, + "name": "Contentful1", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 510, + 450 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "f667eb16-7c5e-42a8-b94a-465a0c17de0a" + }, + { + "parameters": { + "source": "previewApi", + "resource": "asset", + "limit": 1, + "additionalFields": {} + }, + "name": "Contentful2", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 510, + 300 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "9b9910ed-bcbb-4126-8625-d5599ff716a3" + }, + { + "parameters": { + "source": "previewApi", + "resource": "asset", + "operation": "get", + "assetId": "5UvpPFo279OoVXHLRXqlo9" + }, + "name": "Contentful3", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "disabled": true, + "id": "0c26e50d-0829-41dc-8477-b93a812ff7cd" + }, + { + "parameters": { + "source": "previewApi", + "entryId": "={{$node[\"Contentful\"].json[\"author\"][\"sys\"][\"id\"]}}" + }, + "name": "Contentful4", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 660, + 130 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "disabled": true, + "id": "c6c48d22-6a1f-4c2c-82eb-2c7c0a43d3e6" + }, + { + "parameters": { + "source": "previewApi", + "resource": "locale", + "limit": 1 + }, + "name": "Contentful5", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 510, + 750 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "0ff365a7-b88e-4bc2-965f-4198dc2287ca" + }, + { + "parameters": { + "source": "previewApi", + "resource": "space" + }, + "name": "Contentful6", + "type": "n8n-nodes-base.contentful", + "typeVersion": 1, + "position": [ + 510, + 610 + ], + "credentials": { + "contentfulApi": { + "id": "47", + "name": "Contenful creds" + } + }, + "id": "43ab9aa7-dcef-416b-92fc-690040a35086" + } + ], + "connections": { + "Contentful": { + "main": [ + [ + { + "node": "Contentful4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Contentful2": { + "main": [ + [ + { + "node": "Contentful3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Contentful1", + "type": "main", + "index": 0 + }, + { + "node": "Contentful", + "type": "main", + "index": 0 + }, + { + "node": "Contentful5", + "type": "main", + "index": 0 + }, + { + "node": "Contentful2", + "type": "main", + "index": 0 + }, + { + "node": "Contentful6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/72.json b/test-workflows/workflows/72.json new file mode 100644 index 0000000000..5a80032f38 --- /dev/null +++ b/test-workflows/workflows/72.json @@ -0,0 +1,589 @@ +{ + "createdAt": "2021-02-25T14:32:07.257Z", + "updatedAt": "2021-11-12T13:03:17.136Z", + "id": "72", + "name": "Zulip:Message:sendPrivate update updateFile sendStream get delete:Stream:create getAll getSubscribed update delete:user:getAll get update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 460 + ], + "id": "b29fb793-aa1e-4659-a887-a6444a072274" + }, + { + "parameters": { + "to": [ + "nodeqa@n8n.io" + ], + "content": "=Message {{Date.now()}}" + }, + "name": "Zulip", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 430, + 300 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "2eafb3ef-51ac-4153-ba65-f1c736be64f3" + }, + { + "parameters": { + "operation": "update", + "messageId": "={{$node[\"Zulip\"].json[\"id\"]}}", + "updateFields": { + "content": "=Update content {{Date.now()}}" + } + }, + "name": "Zulip1", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 590, + 300 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "70a21ba0-3781-4598-86c8-24fa97d813b2" + }, + { + "parameters": { + "operation": "sendStream", + "stream": 278954, + "topic": "topic demonstration", + "content": "Test Stream message {{Date.now()}}" + }, + "name": "Zulip2", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 740, + 300 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "b631cfd9-4085-4a3f-9898-f3a2dd6053cc" + }, + { + "parameters": { + "operation": "get", + "messageId": "={{$node[\"Zulip\"].json[\"id\"]}}" + }, + "name": "Zulip3", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 890, + 300 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "bbfcd095-ab13-47d0-8826-cad588bb4269" + }, + { + "parameters": { + "operation": "delete", + "messageId": "={{$node[\"Zulip\"].json[\"id\"]}}" + }, + "name": "Zulip4", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 1040, + 300 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "af456d26-456e-4c8a-9df4-4dd5a9bd4f66" + }, + { + "parameters": { + "operation": "delete", + "messageId": "={{$node[\"Zulip2\"].json[\"id\"]}}" + }, + "name": "Zulip5", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 1200, + 300 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "8167982f-4c29-4767-9b2f-4c41d3c1d6da" + }, + { + "parameters": { + "operation": "updateFile" + }, + "name": "Zulip6", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 590, + 470 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "27e360f0-add1-4478-b971-47cfaee55374" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 430, + 470 + ], + "id": "ca173086-6491-4487-a201-8e7b6ec08c3a" + }, + { + "parameters": { + "resource": "stream", + "subscriptions": { + "properties": [ + { + "name": "StreamTest", + "description": "testing stream from n8n" + } + ] + }, + "additionalFields": {} + }, + "name": "Zulip7", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 430, + 620 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "53b92b41-c256-45d1-af57-73cdc927e4ad" + }, + { + "parameters": { + "resource": "stream", + "operation": "getAll", + "additionalFields": { + "includeAllActive": false, + "includeDefault": false, + "includePublic": false + } + }, + "name": "Zulip8", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 600, + 620 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "95060b52-7fca-4fe6-89b7-3b95630d3876" + }, + { + "parameters": { + "resource": "stream", + "operation": "update", + "streamId": "={{$node[\"Function\"].json[\"stream_id\"]}}", + "additionalFields": { + "newName": "=UpdateStream{{Date.now()}}" + } + }, + "name": "Zulip9", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 910, + 620 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "afcf6e21-92b0-4b87-8de3-0fc7a309ab45" + }, + { + "parameters": { + "functionCode": "\nreturn [items[0]];" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 750, + 620 + ], + "notesInFlow": true, + "notes": "Convert multiple result into one", + "id": "281d2d4f-d8d9-4b9f-a150-f8650775d89f" + }, + { + "parameters": { + "resource": "stream", + "operation": "getSubscribed", + "additionalFields": {} + }, + "name": "Zulip10", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 590, + 760 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "6193ce51-b480-44e4-ab58-4c4045432e7d" + }, + { + "parameters": { + "resource": "stream", + "operation": "delete", + "streamId": "={{$node[\"Function\"].json[\"stream_id\"]}}" + }, + "name": "Zulip11", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 1050, + 620 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "8922c332-3948-4b92-a947-b06327a7cc95" + }, + { + "parameters": { + "resource": "user", + "operation": "getAll", + "additionalFields": {} + }, + "name": "Zulip12", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 440, + 910 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "c2eb822b-4473-46ca-a70e-0ab4b7e59647" + }, + { + "parameters": { + "resource": "user", + "operation": "get", + "userId": "={{$node[\"Zulip12\"].json[\"user_id\"]}}", + "additionalFields": {} + }, + "name": "Zulip13", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 590, + 910 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "id": "77661e37-ad74-4274-9bdb-c809305369a5" + }, + { + "parameters": { + "resource": "user", + "operation": "update", + "userId": "={{$node[\"Zulip12\"].json[\"user_id\"]}}", + "additionalFields": { + "fullName": "mario" + } + }, + "name": "Zulip14", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 750, + 910 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "disabled": true, + "id": "cb5c1ade-b500-48a9-a572-08b57316739f" + }, + { + "parameters": { + "resource": "user", + "operation": "update", + "userId": "={{$node[\"Zulip12\"].json[\"user_id\"]}}", + "additionalFields": { + "fullName": "nodeqa" + } + }, + "name": "Zulip15", + "type": "n8n-nodes-base.zulip", + "typeVersion": 1, + "position": [ + 890, + 910 + ], + "credentials": { + "zulipApi": { + "id": "60", + "name": "Zulip creds" + } + }, + "disabled": true, + "id": "bd6174d3-edf6-438c-b60b-b18312458624" + } + ], + "connections": { + "Zulip": { + "main": [ + [ + { + "node": "Zulip1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip1": { + "main": [ + [ + { + "node": "Zulip2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip2": { + "main": [ + [ + { + "node": "Zulip3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip3": { + "main": [ + [ + { + "node": "Zulip4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip4": { + "main": [ + [ + { + "node": "Zulip5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Zulip6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + }, + { + "node": "Zulip", + "type": "main", + "index": 0 + }, + { + "node": "Zulip7", + "type": "main", + "index": 0 + }, + { + "node": "Zulip12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip7": { + "main": [ + [ + { + "node": "Zulip8", + "type": "main", + "index": 0 + }, + { + "node": "Zulip10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip8": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Function": { + "main": [ + [ + { + "node": "Zulip9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip9": { + "main": [ + [ + { + "node": "Zulip11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip12": { + "main": [ + [ + { + "node": "Zulip13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip13": { + "main": [ + [ + { + "node": "Zulip14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zulip14": { + "main": [ + [ + { + "node": "Zulip15", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/73.json b/test-workflows/workflows/73.json new file mode 100644 index 0000000000..459790ef77 --- /dev/null +++ b/test-workflows/workflows/73.json @@ -0,0 +1,857 @@ +{ + "createdAt": "2021-02-25T15:49:55.037Z", + "updatedAt": "2021-06-07T14:53:16.628Z", + "id": "73", + "name": "Youtube:Channel:get getAll update:Playlist:create update getAll get delete:PlaylistItem:add getAll get delete:videoCategory:getAll:Video:rate get upload update delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 310, + 550 + ], + "id": "2ee04975-ff22-40e0-a3a9-d2542266c3bf" + }, + { + "parameters": { + "limit": 1, + "filters": { + "id": "UCkdph8FDLpq2UD2i_OlwErA" + }, + "options": {} + }, + "name": "YouTube", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "8688bf50-6db1-432a-851e-fa4cb2f33439" + }, + { + "parameters": { + "operation": "get", + "channelId": "UCiHVTkJtWSdc9N3h0nUGWLg" + }, + "name": "YouTube1", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "18508d2b-7662-4eb0-bb2b-82eebcd49f11" + }, + { + "parameters": { + "operation": "update", + "channelId": "={{$node[\"YouTube\"].json[\"id\"]}}", + "updateFields": { + "brandingSettingsUi": { + "channelSettingsValues": { + "channel": { + "description": "=Update description {{Date.now()}}" + } + } + } + } + }, + "name": "YouTube2", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 950, + 300 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "83fcbb4e-5ce7-470d-8b11-8f02964774f6" + }, + { + "parameters": { + "operation": "uploadBanner", + "channelId": "UCkdph8FDLpq2UD2i_OlwErA" + }, + "name": "YouTube3", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 1250, + 300 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "disabled": true, + "id": "94865deb-30fa-4250-8637-ce93c0bc12d7" + }, + { + "parameters": { + "resource": "playlist", + "operation": "create", + "title": "=Test{{Date.now()}}", + "options": {} + }, + "name": "YouTube4", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 500, + 450 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "ca4cb125-1083-4e44-a05a-76191b2c6dd4" + }, + { + "parameters": { + "resource": "playlist", + "operation": "update", + "playlistId": "={{$node[\"YouTube4\"].json[\"id\"]}}", + "title": "=UpdatePlaylist{{Date.now()}}", + "updateFields": {} + }, + "name": "YouTube5", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 800, + 450 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "55cdf544-6908-4fc8-afad-2752f2373a14" + }, + { + "parameters": { + "resource": "playlist", + "limit": 1, + "filters": {}, + "options": {} + }, + "name": "YouTube6", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 1860, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "7275ae09-2a2b-4a79-8a11-6b37b51c3426" + }, + { + "parameters": { + "resource": "playlistItem", + "playlistId": "={{$node[\"YouTube4\"].json[\"id\"]}}", + "videoId": "sJO3b0WXm8I", + "options": {} + }, + "name": "YouTube9", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 950, + 550 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "ed7dcec9-c5d5-4627-a859-0475ab304c88" + }, + { + "parameters": { + "resource": "playlistItem", + "operation": "getAll", + "playlistId": "={{$node[\"YouTube4\"].json[\"id\"]}}", + "part": [ + "id", + "status", + "contentDetails" + ], + "limit": 1, + "options": {} + }, + "name": "YouTube10", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 1250, + 550 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "c02c85b3-59e4-4fcf-ad40-1fd9cad8c2f7" + }, + { + "parameters": { + "resource": "playlistItem", + "operation": "get", + "playlistItemId": "={{$node[\"YouTube9\"].json[\"id\"]}}", + "part": [ + "contentDetails", + "id", + "status" + ], + "options": {} + }, + "name": "YouTube11", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 1400, + 550 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "13002ca6-7817-41c3-b1fe-0d078c8e82f9" + }, + { + "parameters": { + "resource": "playlistItem", + "operation": "delete", + "playlistItemId": "={{$node[\"YouTube9\"].json[\"id\"]}}", + "options": {} + }, + "name": "YouTube12", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 1700, + 550 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "b0e8f742-b143-4eab-b227-482b3f772e3e" + }, + { + "parameters": { + "resource": "video", + "operation": "rate", + "videoId": "sJO3b0WXm8I", + "rating": "like" + }, + "name": "YouTube13", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 500, + 800 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "c13bc29b-3e16-4d0b-ba98-24156e1d64b0" + }, + { + "parameters": { + "resource": "video", + "operation": "get", + "videoId": "sJO3b0WXm8I", + "part": [ + "status", + "id", + "snippet" + ], + "options": {} + }, + "name": "YouTube14", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 800, + 800 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "dd846141-f074-41a3-b9f0-4e32ec04639e" + }, + { + "parameters": { + "resource": "video", + "operation": "upload", + "title": "Earth spin", + "regionCode": "DE", + "categoryId": "27", + "options": {} + }, + "name": "YouTube15", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 1250, + 800 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "disabled": true, + "id": "4bd4cca1-e76c-4889-b5df-5d2eefe7d74c" + }, + { + "parameters": { + "url": "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4", + "responseFormat": "file", + "options": {} + }, + "name": "HTTP Request", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 1, + "position": [ + 950, + 800 + ], + "disabled": true, + "id": "b78b84af-4759-42b8-812a-af46ab04d6fb" + }, + { + "parameters": { + "resource": "video", + "operation": "update", + "videoId": "={{$node[\"YouTube15\"].json[\"id\"]}}", + "title": "=Updated Earth spin", + "regionCode": "DE", + "categoryId": "27", + "updateFields": {} + }, + "name": "YouTube16", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 1400, + 800 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "disabled": true, + "id": "cdb2885f-ab9a-41b1-8e84-071aa040e91a" + }, + { + "parameters": { + "resource": "video", + "operation": "delete", + "videoId": "={{$node[\"YouTube15\"].json[\"id\"]}}", + "options": {} + }, + "name": "YouTube17", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 1690, + 800 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "disabled": true, + "id": "15ebb1e6-b8f5-458c-803a-ddd62105b07c" + }, + { + "parameters": { + "resource": "videoCategory", + "regionCode": "DE", + "limit": 1 + }, + "name": "YouTube18", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 500, + 630 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "8ec4326f-f615-4acd-bedf-7d138051058a" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 1100, + 300 + ], + "disabled": true, + "id": "01e62fe7-5350-4def-9640-18171cbde303" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second", + "type": "n8n-nodes-base.function", + "position": [ + 650, + 300 + ], + "typeVersion": 1, + "id": "bea9b966-028f-4891-892b-30415cb38452" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second1", + "type": "n8n-nodes-base.function", + "position": [ + 650, + 450 + ], + "typeVersion": 1, + "id": "74460a7d-956c-4a9c-8357-de6b2d1e6076" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second2", + "type": "n8n-nodes-base.function", + "position": [ + 1100, + 550 + ], + "typeVersion": 1, + "id": "a565a893-fdb1-45f5-96b9-846146a10c14" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second3", + "type": "n8n-nodes-base.function", + "position": [ + 1550, + 550 + ], + "typeVersion": 1, + "id": "4659b2a6-7c8d-4290-9f57-b17e9c566c50" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second4", + "type": "n8n-nodes-base.function", + "position": [ + 650, + 800 + ], + "typeVersion": 1, + "id": "15cca754-b296-4cb5-93d1-efd315175e9e" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second5", + "type": "n8n-nodes-base.function", + "position": [ + 1110, + 800 + ], + "typeVersion": 1, + "disabled": true, + "id": "caf5b31c-9e80-4796-8ded-c9e1401adbd8" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(500);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.5 second6", + "type": "n8n-nodes-base.function", + "position": [ + 1550, + 800 + ], + "typeVersion": 1, + "disabled": true, + "id": "8b08f732-62ba-48d3-980b-30b225c6a029" + }, + { + "parameters": { + "resource": "playlist", + "operation": "delete", + "playlistId": "={{$node[\"YouTube4\"].json[\"id\"]}}", + "options": {} + }, + "name": "YouTube7", + "type": "n8n-nodes-base.youTube", + "typeVersion": 1, + "position": [ + 2030, + 450 + ], + "credentials": { + "youTubeOAuth2Api": { + "id": "62", + "name": "YouTube OAuth2 creds" + } + }, + "id": "2b8b1d2f-5864-481d-a735-700380ccb2ea" + } + ], + "connections": { + "YouTube": { + "main": [ + [ + { + "node": "YouTube2", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube1": { + "main": [ + [ + { + "node": "Sleep 0.5 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube4": { + "main": [ + [ + { + "node": "Sleep 0.5 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube5": { + "main": [ + [ + { + "node": "YouTube9", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube6": { + "main": [ + [ + { + "node": "YouTube7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "YouTube13", + "type": "main", + "index": 0 + }, + { + "node": "YouTube18", + "type": "main", + "index": 0 + }, + { + "node": "YouTube4", + "type": "main", + "index": 0 + }, + { + "node": "YouTube1", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube9": { + "main": [ + [ + { + "node": "Sleep 0.5 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube10": { + "main": [ + [ + { + "node": "YouTube11", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube11": { + "main": [ + [ + { + "node": "Sleep 0.5 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube12": { + "main": [ + [ + { + "node": "YouTube6", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube13": { + "main": [ + [ + { + "node": "Sleep 0.5 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "HTTP Request": { + "main": [ + [ + { + "node": "Sleep 0.5 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube14": { + "main": [ + [ + { + "node": "HTTP Request", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube15": { + "main": [ + [ + { + "node": "YouTube16", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube16": { + "main": [ + [ + { + "node": "Sleep 0.5 second6", + "type": "main", + "index": 0 + } + ] + ] + }, + "YouTube2": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "YouTube3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second": { + "main": [ + [ + { + "node": "YouTube", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second1": { + "main": [ + [ + { + "node": "YouTube5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second2": { + "main": [ + [ + { + "node": "YouTube10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second3": { + "main": [ + [ + { + "node": "YouTube12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second4": { + "main": [ + [ + { + "node": "YouTube14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second5": { + "main": [ + [ + { + "node": "YouTube15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.5 second6": { + "main": [ + [ + { + "node": "YouTube17", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/74.json b/test-workflows/workflows/74.json new file mode 100644 index 0000000000..c841426c36 --- /dev/null +++ b/test-workflows/workflows/74.json @@ -0,0 +1,160 @@ +{ + "createdAt": "2021-02-26T08:35:26.228Z", + "updatedAt": "2021-02-26T08:37:00.970Z", + "id": "74", + "name": "E-goi:Contact:create get getAll update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "dc6a5a64-8c22-4032-aace-0dea668a571c" + }, + { + "parameters": { + "list": 1, + "email": "=fake{{Date.now()}}@gmail.com", + "additionalFields": {} + }, + "name": "E-goi", + "type": "n8n-nodes-base.egoi", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "egoiApi": { + "id": "63", + "name": "E-goi creds" + } + }, + "id": "25e5ee3b-abfb-427f-afc3-55b27e204f17" + }, + { + "parameters": { + "operation": "get", + "list": 1, + "contactId": "={{$node[\"E-goi\"].json[\"base\"][\"contact_id\"]}}" + }, + "name": "E-goi1", + "type": "n8n-nodes-base.egoi", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "egoiApi": { + "id": "63", + "name": "E-goi creds" + } + }, + "id": "13e4101f-896b-4786-b9b7-ac5a31ad06f5" + }, + { + "parameters": { + "operation": "getAll", + "list": 1, + "limit": 1 + }, + "name": "E-goi2", + "type": "n8n-nodes-base.egoi", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "egoiApi": { + "id": "63", + "name": "E-goi creds" + } + }, + "id": "39aa7752-aa1b-4db5-b1ed-988fa169b544" + }, + { + "parameters": { + "operation": "update", + "list": 1, + "contactId": "={{$node[\"E-goi\"].json[\"base\"][\"contact_id\"]}}", + "updateFields": { + "status": "inactive" + } + }, + "name": "E-goi3", + "type": "n8n-nodes-base.egoi", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "egoiApi": { + "id": "63", + "name": "E-goi creds" + } + }, + "id": "d9cf87e8-dff7-4b74-adbf-8bdf5c22f541" + } + ], + "connections": { + "E-goi": { + "main": [ + [ + { + "node": "E-goi1", + "type": "main", + "index": 0 + } + ] + ] + }, + "E-goi1": { + "main": [ + [ + { + "node": "E-goi2", + "type": "main", + "index": 0 + } + ] + ] + }, + "E-goi2": { + "main": [ + [ + { + "node": "E-goi3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "E-goi", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/75.json b/test-workflows/workflows/75.json new file mode 100644 index 0000000000..2465c014eb --- /dev/null +++ b/test-workflows/workflows/75.json @@ -0,0 +1,574 @@ +{ + "createdAt": "2021-02-26T09:26:39.448Z", + "updatedAt": "2021-02-26T10:58:10.897Z", + "id": "75", + "name": "Harvest:Client:create update getAll get delete:Invoice:create update getAll get delete:Contact:create update get getAll delete:Company:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 150, + 300 + ], + "id": "2e356688-aa17-4377-99a8-85bdf89f4804" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "operation": "create", + "name": "=Client{{Date.now()}}", + "additionalFields": {} + }, + "name": "Harvest", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 400, + 230 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "9dff6c6e-f6e9-4754-9dd5-b68c3adf590f" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest\"].json[\"id\"]}}", + "updateFields": { + "name": "=UpdatedClient{{Date.now()}}" + } + }, + "name": "Harvest1", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1310, + 230 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "239a0f84-f452-4d2b-b208-3024f68e2104" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "limit": 1, + "filters": {} + }, + "name": "Harvest2", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1460, + 230 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "fb51704a-377b-4d9b-ad37-0f7dfac320c2" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "operation": "get", + "id": "={{$node[\"Harvest\"].json[\"id\"]}}" + }, + "name": "Harvest3", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1610, + 230 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "b1c22046-82ed-41a2-961b-fc2fc864a23c" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest\"].json[\"id\"]}}" + }, + "name": "Harvest4", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1760, + 230 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "5b049ab1-8091-4a1c-94b9-57b2239cfacf" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "company", + "accountId": 1416330 + }, + "name": "Harvest5", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 400, + 440 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "7119f466-ef7a-4ced-bef5-8deefbab4c79" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "contact", + "accountId": 1416330, + "operation": "create", + "firstName": "=FirstName{{Date.now()}}", + "clientId": "={{$node[\"Harvest\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Harvest6", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "51db9f70-0f68-4722-8ebc-3edf8f342f47" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "contact", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest6\"].json[\"id\"]}}", + "updateFields": { + "first_name": "=FirstNameUpdated{{Date.now()}}" + } + }, + "name": "Harvest7", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "ee3d8921-fe23-4feb-a70b-6695cb2271cb" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "contact", + "accountId": 1416330, + "operation": "get", + "id": "={{$node[\"Harvest6\"].json[\"id\"]}}" + }, + "name": "Harvest8", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "e585c5d8-71f7-433a-ae83-70e0a24bed2d" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "contact", + "accountId": 1416330, + "limit": 1, + "filters": {} + }, + "name": "Harvest9", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "e113e7b0-c8c2-4f11-a767-462b6a519c5c" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "contact", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest6\"].json[\"id\"]}}" + }, + "name": "Harvest10", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "7820c685-f762-4f66-b602-e20e4dda437a" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "invoice", + "accountId": 1416330, + "operation": "create", + "clientId": "={{$node[\"Harvest\"].json[\"id\"]}}", + "additionalFields": { + "subject": "=Subject{{Date.now()}}" + } + }, + "name": "Harvest11", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 550, + 140 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "6ffb33ca-58ba-456b-a9ac-d33f3f2e2eee" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "invoice", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest11\"].json[\"id\"]}}", + "updateFields": { + "subject": "=UpdatedSubject{{Date.now()}}" + } + }, + "name": "Harvest12", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 700, + 140 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "bb9bb3dc-ca74-4572-8c44-7bcaca67bd52" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "invoice", + "accountId": 1416330, + "limit": 1, + "filters": {} + }, + "name": "Harvest13", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 850, + 140 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "fd41f71c-0899-4887-ab85-8ba208e60b55" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "invoice", + "accountId": 1416330, + "operation": "get", + "id": "={{$node[\"Harvest11\"].json[\"id\"]}}" + }, + "name": "Harvest14", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1000, + 140 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "0b68daaf-464e-4e04-bdca-3b67ad74b33e" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "invoice", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest11\"].json[\"id\"]}}" + }, + "name": "Harvest15", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1150, + 140 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "270d7f79-c97f-4e4e-a0b7-596635eabf8c" + } + ], + "connections": { + "Harvest": { + "main": [ + [ + { + "node": "Harvest11", + "type": "main", + "index": 0 + }, + { + "node": "Harvest6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest1": { + "main": [ + [ + { + "node": "Harvest2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest2": { + "main": [ + [ + { + "node": "Harvest3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest3": { + "main": [ + [ + { + "node": "Harvest4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Harvest", + "type": "main", + "index": 0 + }, + { + "node": "Harvest5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest6": { + "main": [ + [ + { + "node": "Harvest7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest7": { + "main": [ + [ + { + "node": "Harvest8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest8": { + "main": [ + [ + { + "node": "Harvest9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest9": { + "main": [ + [ + { + "node": "Harvest10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest10": { + "main": [ + [ + { + "node": "Harvest1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest11": { + "main": [ + [ + { + "node": "Harvest12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest12": { + "main": [ + [ + { + "node": "Harvest13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest13": { + "main": [ + [ + { + "node": "Harvest14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest14": { + "main": [ + [ + { + "node": "Harvest15", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/76.json b/test-workflows/workflows/76.json new file mode 100644 index 0000000000..9c9dfeca29 --- /dev/null +++ b/test-workflows/workflows/76.json @@ -0,0 +1,836 @@ +{ + "createdAt": "2021-02-26T09:54:20.362Z", + "updatedAt": "2021-03-29T15:02:36.931Z", + "id": "76", + "name": "Harvest:Project:create update getAll get delete:Task:getAll get:TimeEntry:createByDuration createByStartEnd update getAll restartTime stopTime delete:User:me get getAll update", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 160, + 650 + ], + "id": "8833cc21-1b21-4e79-b6c7-4393f7466b69" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "operation": "create", + "name": "=RandomClient{{Date.now()}}", + "additionalFields": {} + }, + "name": "Harvest", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "1a1ea2ec-520a-4086-b786-358e6f6ee5d1" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest\"].json[\"id\"]}}" + }, + "name": "Harvest1", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1300, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "0e833b0d-00e0-4be1-a578-e73017f5065b" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "project", + "accountId": 1416330, + "operation": "create", + "name": "=Project{{Date.now()}}", + "clientId": "={{$node[\"Harvest\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "Harvest2", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 550, + 350 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "4cd6a29d-0972-4169-af76-7b631f35a730" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "project", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest2\"].json[\"id\"]}}", + "updateFields": {} + }, + "name": "Harvest3", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 700, + 350 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "e8ef59df-d4e2-4e27-91cc-f192082c7115" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "project", + "accountId": 1416330, + "limit": 1, + "filters": {} + }, + "name": "Harvest4", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 850, + 350 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "cabf6a20-aeda-435a-9290-0457d8c92e7d" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "project", + "accountId": 1416330, + "operation": "get", + "id": "={{$node[\"Harvest2\"].json[\"id\"]}}" + }, + "name": "Harvest5", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1000, + 350 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "48e37176-9c45-4e1f-943c-58fcc338b060" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "project", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest2\"].json[\"id\"]}}" + }, + "name": "Harvest6", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1150, + 350 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "0618ef71-88d4-4e88-9114-59f98596768a" + }, + { + "parameters": { + "authentication": "oAuth2", + "accountId": 1416330, + "limit": 1, + "filters": {} + }, + "name": "Harvest7", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 400, + 500 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "8e653471-6477-4538-9691-f7c5f053798e" + }, + { + "parameters": { + "authentication": "oAuth2", + "accountId": 1416330, + "operation": "get", + "id": "={{$node[\"Harvest7\"].json[\"id\"]}}" + }, + "name": "Harvest8", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 550, + 500 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "e0934891-d965-418d-88bc-13d10ef16171" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "timeEntry", + "accountId": 1416330, + "operation": "createByDuration", + "projectId": "27925524", + "taskId": "16181821", + "spentDate": "2021-02-26T10:20:56.825Z", + "additionalFields": {} + }, + "name": "Harvest11", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 400, + 650 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "99c627a7-eb16-4e0b-8288-218fd2ff3f11" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "timeEntry", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest11\"].json[\"id\"]}}", + "updateFields": {} + }, + "name": "Harvest12", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 550, + 650 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "584e3df4-1d4c-4f2a-b2b9-3b5bd7ec47f9" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "timeEntry", + "accountId": 1416330, + "limit": 1, + "filters": {} + }, + "name": "Harvest13", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 700, + 650 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "4fc58913-81bf-45f9-8d2f-042898629b9e" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "timeEntry", + "accountId": 1416330, + "operation": "restartTime", + "id": "={{$node[\"Harvest11\"].json[\"id\"]}}" + }, + "name": "Harvest14", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 850, + 650 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "c83b2bda-8290-4580-bbfc-cf94e922d90c" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "timeEntry", + "accountId": 1416330, + "operation": "stopTime", + "id": "={{$node[\"Harvest11\"].json[\"id\"]}}" + }, + "name": "Harvest15", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1000, + 650 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "dd9a6234-40c1-43e8-b901-b5580e1fa8b7" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "timeEntry", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest11\"].json[\"id\"]}}" + }, + "name": "Harvest16", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1150, + 650 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "77ebc40f-31b7-4a18-8461-e6508f5a28fc" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "timeEntry", + "accountId": 1416330, + "operation": "createByStartEnd", + "projectId": "27925524", + "taskId": "16181821", + "spentDate": "2021-02-26T10:20:56.825Z", + "additionalFields": { + "ended_time": "5:00pm", + "started_time": "8:00am" + } + }, + "name": "Harvest17", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 400, + 800 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "57840c65-51d5-423f-a3c3-879093551e8e" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "timeEntry", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest17\"].json[\"id\"]}}" + }, + "name": "Harvest18", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 550, + 800 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "1235197c-ef59-43fb-804b-6398c4cc1a1e" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "accountId": 1416330 + }, + "name": "Harvest19", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 400, + 950 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "8a2caa48-eae1-4386-8a08-5977a03ad855" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "accountId": 1416330, + "operation": "get", + "id": "={{$node[\"Harvest19\"].json[\"id\"]}}" + }, + "name": "Harvest20", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 550, + 950 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "bcd17478-d82d-45fc-bc97-5d06fddacb36" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "accountId": 1416330, + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Harvest21", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 700, + 950 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "f0c8258d-c081-48f1-b276-5cb95e147c7b" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest19\"].json[\"id\"]}}", + "updateFields": { + "timezone": "Berlin" + } + }, + "name": "Harvest22", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 850, + 950 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "efad7fea-318e-4125-8fdc-025c60629fbe" + }, + { + "parameters": { + "authentication": "oAuth2", + "accountId": 1416330, + "operation": "create", + "name": "=Task{{Date.now()}}", + "additionalFields": {} + }, + "name": "Harvest9", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 700, + 500 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "2fcd0aed-3cf8-4516-808d-74bc63b99373" + }, + { + "parameters": { + "authentication": "oAuth2", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest9\"].json[\"id\"]}}", + "updateFields": { + "name": "=Update{{$node[\"Harvest9\"].json[\"name\"]}}" + } + }, + "name": "Harvest10", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 850, + 500 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "0a403014-8e17-4efd-8c36-8b7edd360cfe" + }, + { + "parameters": { + "authentication": "oAuth2", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest9\"].json[\"id\"]}}" + }, + "name": "Harvest23", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 990, + 500 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "27bb65f0-6868-437b-b254-269442300f67" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Harvest", + "type": "main", + "index": 0 + }, + { + "node": "Harvest11", + "type": "main", + "index": 0 + }, + { + "node": "Harvest17", + "type": "main", + "index": 0 + }, + { + "node": "Harvest7", + "type": "main", + "index": 0 + }, + { + "node": "Harvest19", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest": { + "main": [ + [ + { + "node": "Harvest2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest2": { + "main": [ + [ + { + "node": "Harvest3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest3": { + "main": [ + [ + { + "node": "Harvest4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest4": { + "main": [ + [ + { + "node": "Harvest5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest5": { + "main": [ + [ + { + "node": "Harvest6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest6": { + "main": [ + [ + { + "node": "Harvest1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest7": { + "main": [ + [ + { + "node": "Harvest8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest11": { + "main": [ + [ + { + "node": "Harvest12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest12": { + "main": [ + [ + { + "node": "Harvest13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest13": { + "main": [ + [ + { + "node": "Harvest14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest14": { + "main": [ + [ + { + "node": "Harvest15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest15": { + "main": [ + [ + { + "node": "Harvest16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest17": { + "main": [ + [ + { + "node": "Harvest18", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest19": { + "main": [ + [ + { + "node": "Harvest20", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest20": { + "main": [ + [ + { + "node": "Harvest21", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest21": { + "main": [ + [ + { + "node": "Harvest22", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest8": { + "main": [ + [ + { + "node": "Harvest9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest9": { + "main": [ + [ + { + "node": "Harvest10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest10": { + "main": [ + [ + { + "node": "Harvest23", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/77.json b/test-workflows/workflows/77.json new file mode 100644 index 0000000000..f859517a2e --- /dev/null +++ b/test-workflows/workflows/77.json @@ -0,0 +1,446 @@ +{ + "createdAt": "2021-02-26T10:47:07.557Z", + "updatedAt": "2021-02-26T10:54:33.074Z", + "id": "77", + "name": "Harvest:Expense:create update get getAll delete:Estimate:create update get getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 220 + ], + "id": "2bb0bfe5-a448-40ae-a4be-0689032e87e9" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "operation": "create", + "name": "=Client{{Date.now()}}", + "additionalFields": {} + }, + "name": "Harvest", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "31ef3552-d142-4338-89a9-830f488aaee2" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "client", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest\"].json[\"id\"]}}" + }, + "name": "Harvest1", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1340, + 300 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "ea99bdb4-a747-4ab0-ac0a-9be4ae96549c" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "estimate", + "accountId": 1416330, + "operation": "create", + "clientId": "={{$node[\"Harvest\"].json[\"id\"]}}", + "additionalFields": { + "subject": "=Estimate{{Date.now()}}" + } + }, + "name": "Harvest2", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 600, + 400 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "e1f7a876-0103-4b73-8669-81ef0994da09" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "estimate", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest2\"].json[\"id\"]}}", + "updateFields": { + "subject": "=UpdateSubject{{Date.now()}}" + } + }, + "name": "Harvest3", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 750, + 400 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "7989bc34-0e2d-4add-af9c-3fd7f69d3219" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "estimate", + "accountId": 1416330, + "operation": "get", + "id": "={{$node[\"Harvest2\"].json[\"id\"]}}" + }, + "name": "Harvest4", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 900, + 400 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "20378436-76b0-430d-94cf-e034f3534ad8" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "estimate", + "accountId": 1416330, + "limit": 1, + "filters": {} + }, + "name": "Harvest5", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1050, + 400 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "7bbdbf6e-2741-463f-8b1d-31c17d53972f" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "estimate", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest2\"].json[\"id\"]}}" + }, + "name": "Harvest6", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1200, + 400 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "c3c439b0-e7bf-4896-b948-77037cea12fa" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "expense", + "accountId": 1416330, + "operation": "create", + "projectId": "27925524", + "expenseCategoryId": "7737171", + "spentDate": "2021-02-26T10:51:40.112Z", + "additionalFields": { + "total_cost": "101" + } + }, + "name": "Harvest7", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 460, + 150 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "09619bf1-f1f8-425a-b24f-cdbaa294bda2" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "expense", + "accountId": 1416330, + "operation": "update", + "id": "={{$node[\"Harvest7\"].json[\"id\"]}}", + "updateFields": { + "total_cost": "201" + } + }, + "name": "Harvest8", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 600, + 150 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "ff10db35-ec3d-4684-85fa-682272052a4e" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "expense", + "accountId": 1416330, + "operation": "get", + "id": "={{$node[\"Harvest7\"].json[\"id\"]}}" + }, + "name": "Harvest9", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 750, + 150 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "7788ca40-e46d-4332-ac73-1e4f8a6adddd" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "expense", + "accountId": 1416330, + "limit": 1, + "filters": {} + }, + "name": "Harvest10", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 900, + 150 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "e7595ae1-7392-4f84-b18c-3097d47ddff4" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "expense", + "accountId": 1416330, + "operation": "delete", + "id": "={{$node[\"Harvest7\"].json[\"id\"]}}" + }, + "name": "Harvest11", + "type": "n8n-nodes-base.harvest", + "typeVersion": 1, + "position": [ + 1050, + 150 + ], + "credentials": { + "harvestOAuth2Api": { + "id": "64", + "name": "Harvest OAuth2 creds" + } + }, + "id": "eb9f74f8-d780-4c55-9ffd-e3540adfe808" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Harvest", + "type": "main", + "index": 0 + }, + { + "node": "Harvest7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest": { + "main": [ + [ + { + "node": "Harvest2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest2": { + "main": [ + [ + { + "node": "Harvest3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest3": { + "main": [ + [ + { + "node": "Harvest4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest4": { + "main": [ + [ + { + "node": "Harvest5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest5": { + "main": [ + [ + { + "node": "Harvest6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest6": { + "main": [ + [ + { + "node": "Harvest1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest7": { + "main": [ + [ + { + "node": "Harvest8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest8": { + "main": [ + [ + { + "node": "Harvest9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest9": { + "main": [ + [ + { + "node": "Harvest10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Harvest10": { + "main": [ + [ + { + "node": "Harvest11", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/78.json b/test-workflows/workflows/78.json new file mode 100644 index 0000000000..1ab0e5170b --- /dev/null +++ b/test-workflows/workflows/78.json @@ -0,0 +1,444 @@ +{ + "createdAt": "2021-02-26T13:19:21.412Z", + "updatedAt": "2021-06-07T09:10:58.362Z", + "id": "78", + "name": "NASA:ALL:", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 140, + 530 + ], + "id": "58ef3e12-49b0-40f0-a5d1-264dfe9b0e17" + }, + { + "parameters": { + "resource": "asteroidNeoBrowse", + "limit": 1 + }, + "name": "NASA", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 450, + 220 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "id": "bb5be736-03e5-46d7-997d-e64f6673b783" + }, + { + "parameters": { + "resource": "asteroidNeoLookup", + "asteroidId": "={{$node[\"NASA\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "NASA1", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 620, + 220 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "id": "e6cee073-75cd-4ff0-9c2d-a6c8287bcf0e" + }, + { + "parameters": { + "resource": "asteroidNeoFeed", + "additionalFields": { + "startDate": "2020-08-10T22:00:00.000Z", + "endDate": "2020-08-10T22:00:00.000Z" + } + }, + "name": "NASA2", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 790, + 220 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "id": "3b6fad60-3b18-46c8-89d9-7097d678c124" + }, + { + "parameters": { + "resource": "donkiCoronalMassEjection", + "additionalFields": {} + }, + "name": "NASA3", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 450, + 370 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "d3ec4cda-449e-476f-ac32-0d31a8a96f58" + }, + { + "parameters": { + "resource": "donkiInterplanetaryShock", + "additionalFields": { + "location": "STEREO A" + } + }, + "name": "NASA4", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 450, + 680 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "0d290992-c9b2-411f-bba0-1bc420a412f1" + }, + { + "parameters": { + "resource": "donkiSolarFlare", + "additionalFields": {} + }, + "name": "NASA5", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 450, + 520 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "188fe560-87ec-4f60-a844-c0c48b7de306" + }, + { + "parameters": { + "resource": "donkiSolarEnergeticParticle", + "additionalFields": {} + }, + "name": "NASA6", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 650, + 670 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "id": "741adc5a-c4c6-48c8-bced-41b14831092e" + }, + { + "parameters": { + "resource": "donkiMagnetopauseCrossing", + "additionalFields": {} + }, + "name": "NASA7", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 650, + 370 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "id": "7ce89dd3-c364-49dd-9542-fd0bcfff9d63" + }, + { + "parameters": { + "resource": "donkiRadiationBeltEnhancement", + "additionalFields": {} + }, + "name": "NASA8", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 650, + 520 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "id": "ed4e394b-49ed-4c92-9a54-6fc065723251" + }, + { + "parameters": { + "resource": "donkiHighSpeedStream", + "additionalFields": {} + }, + "name": "NASA9", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 450, + 830 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "4c483b64-1315-4531-ae03-12a825bdaf33" + }, + { + "parameters": { + "resource": "donkiWsaEnlilSimulation", + "additionalFields": {} + }, + "name": "NASA10", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 650, + 830 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "3e8ad703-1880-45df-b95b-309dba2f63ad" + }, + { + "parameters": { + "resource": "donkiNotifications", + "additionalFields": {} + }, + "name": "NASA11", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 450, + 980 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "e650443b-32c4-49dc-beee-49e361494158" + }, + { + "parameters": { + "resource": "earthImagery", + "lat": 52.52, + "lon": 13.405, + "additionalFields": { + "date": "=2019-05-05" + } + }, + "name": "NASA12", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 620, + 980 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "id": "86c4b0a2-7a39-4794-b3e0-a6dd188496e9" + }, + { + "parameters": { + "additionalFields": { + "date": "=2019-05-05" + } + }, + "name": "NASA14", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 450, + 70 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "id": "5d726ffa-d7b5-46dc-9e78-a2e550cbe145" + }, + { + "parameters": { + "resource": "earthAssets", + "lat": 0, + "lon": 0, + "additionalFields": { + "date": "2021-01-31T23:00:00.000Z" + } + }, + "name": "NASA13", + "type": "n8n-nodes-base.nasa", + "typeVersion": 1, + "position": [ + 160, + 790 + ], + "credentials": { + "nasaApi": { + "id": "49", + "name": "Nasa creds" + } + }, + "disabled": true, + "id": "1483c3eb-ca7b-4908-a454-4b573e56ed3a" + } + ], + "connections": { + "NASA": { + "main": [ + [ + { + "node": "NASA1", + "type": "main", + "index": 0 + } + ] + ] + }, + "NASA1": { + "main": [ + [ + { + "node": "NASA2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "NASA", + "type": "main", + "index": 0 + }, + { + "node": "NASA3", + "type": "main", + "index": 0 + }, + { + "node": "NASA7", + "type": "main", + "index": 0 + }, + { + "node": "NASA5", + "type": "main", + "index": 0 + }, + { + "node": "NASA8", + "type": "main", + "index": 0 + }, + { + "node": "NASA6", + "type": "main", + "index": 0 + }, + { + "node": "NASA4", + "type": "main", + "index": 0 + }, + { + "node": "NASA9", + "type": "main", + "index": 0 + }, + { + "node": "NASA10", + "type": "main", + "index": 0 + }, + { + "node": "NASA11", + "type": "main", + "index": 0 + }, + { + "node": "NASA12", + "type": "main", + "index": 0 + }, + { + "node": "NASA14", + "type": "main", + "index": 0 + }, + { + "node": "NASA13", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/79.json b/test-workflows/workflows/79.json new file mode 100644 index 0000000000..edc5d9782b --- /dev/null +++ b/test-workflows/workflows/79.json @@ -0,0 +1,219 @@ +{ + "createdAt": "2021-02-26T15:36:21.900Z", + "updatedAt": "2021-02-26T15:40:43.297Z", + "id": "79", + "name": "ZohoCRM:Lead:create update get getAll delete getFields", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "08024b38-dc6e-48be-917a-96cba2a48960" + }, + { + "parameters": { + "lastName": "=Last{{Date.now()}}", + "additionalFields": {} + }, + "name": "Zoho CRM", + "type": "n8n-nodes-base.zohoCrm", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "zohoOAuth2Api": { + "id": "67", + "name": "Zoho OAuth2 creds" + } + }, + "id": "4496eb6a-f9a8-4e82-b160-7afe3ca37483" + }, + { + "parameters": { + "operation": "update", + "leadId": "={{$node[\"Zoho CRM\"].json[\"id\"]}}", + "additionalFields": { + "lastName": "=UpdatedLast{{Date.now()}}" + } + }, + "name": "Zoho CRM1", + "type": "n8n-nodes-base.zohoCrm", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "zohoOAuth2Api": { + "id": "67", + "name": "Zoho OAuth2 creds" + } + }, + "id": "e34f782e-6772-4fbe-b332-8d9ecfbae345" + }, + { + "parameters": { + "operation": "get", + "leadId": "={{$node[\"Zoho CRM\"].json[\"id\"]}}" + }, + "name": "Zoho CRM2", + "type": "n8n-nodes-base.zohoCrm", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "zohoOAuth2Api": { + "id": "67", + "name": "Zoho OAuth2 creds" + } + }, + "id": "b225d319-d025-408c-9414-b665fc807993" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Zoho CRM3", + "type": "n8n-nodes-base.zohoCrm", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "zohoOAuth2Api": { + "id": "67", + "name": "Zoho OAuth2 creds" + } + }, + "id": "0c08ddd8-cacd-49b6-b2e0-0ab54013e93b" + }, + { + "parameters": { + "operation": "delete", + "leadId": "={{$node[\"Zoho CRM\"].json[\"id\"]}}" + }, + "name": "Zoho CRM4", + "type": "n8n-nodes-base.zohoCrm", + "typeVersion": 1, + "position": [ + 1050, + 300 + ], + "credentials": { + "zohoOAuth2Api": { + "id": "67", + "name": "Zoho OAuth2 creds" + } + }, + "id": "5e6706ca-53f4-4b90-ab9d-1396f59f5461" + }, + { + "parameters": { + "operation": "getFields" + }, + "name": "Zoho CRM5", + "type": "n8n-nodes-base.zohoCrm", + "typeVersion": 1, + "position": [ + 1200, + 300 + ], + "credentials": { + "zohoOAuth2Api": { + "id": "67", + "name": "Zoho OAuth2 creds" + } + }, + "id": "6deb175d-2b56-4bef-a5fe-f8b77181520b" + } + ], + "connections": { + "Zoho CRM": { + "main": [ + [ + { + "node": "Zoho CRM1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zoho CRM1": { + "main": [ + [ + { + "node": "Zoho CRM2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zoho CRM2": { + "main": [ + [ + { + "node": "Zoho CRM3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zoho CRM3": { + "main": [ + [ + { + "node": "Zoho CRM4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zoho CRM4": { + "main": [ + [ + { + "node": "Zoho CRM5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Zoho CRM", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/80.json b/test-workflows/workflows/80.json new file mode 100644 index 0000000000..747916a293 --- /dev/null +++ b/test-workflows/workflows/80.json @@ -0,0 +1,449 @@ +{ + "createdAt": "2021-02-26T16:19:59.941Z", + "updatedAt": "2021-02-26T16:20:47.874Z", + "id": "80", + "name": "Zendesk:Ticket:create update get getAll delete:TicketField:getAll get:User:create update getAll search get delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 200, + 460 + ], + "id": "4b8759d6-5b80-4936-93a5-b13fb5796186" + }, + { + "parameters": { + "authentication": "oAuth2", + "description": "=Description{{Date.now()}}", + "additionalFields": {} + }, + "name": "Zendesk", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "d19f346d-1951-48ac-a774-6816c8547a9d" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "update", + "id": "={{$node[\"Zendesk\"].json[\"id\"]}}", + "updateFields": { + "subject": "=UpdatedSubject{{Date.now()}}" + } + }, + "name": "Zendesk1", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "f5ff3626-892b-44ad-8eda-f5c753520a17" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "get", + "id": "={{$node[\"Zendesk\"].json[\"id\"]}}" + }, + "name": "Zendesk2", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "6a72a337-f588-4c4b-844f-f96b68b2c464" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "getAll", + "limit": 1, + "options": {} + }, + "name": "Zendesk3", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "a9590bd0-c6da-4d3a-9c8d-c86c00924373" + }, + { + "parameters": { + "authentication": "oAuth2", + "operation": "delete", + "id": "={{$node[\"Zendesk\"].json[\"id\"]}}" + }, + "name": "Zendesk4", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "0ea03844-4270-4aad-a614-e60d2008e773" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "ticketField", + "operation": "getAll", + "limit": 1 + }, + "name": "Zendesk5", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 400, + 450 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "714ab216-9da0-496d-acfa-3c82f16a22f4" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "ticketField", + "ticketFieldId": "={{$node[\"Zendesk5\"].json[\"id\"]}}" + }, + "name": "Zendesk6", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 550, + 450 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "8ee850ce-35e2-435b-8abb-e2a8820362b3" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "name": "=Name{{Date.now()}}", + "additionalFields": {} + }, + "name": "Zendesk7", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 400, + 600 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "999a937f-cb90-448f-abe1-49efa8b5c6e4" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "operation": "update", + "id": "={{$node[\"Zendesk7\"].json[\"id\"]}}", + "updateFields": { + "name": "=UpdatedName{{Date.now()}}" + } + }, + "name": "Zendesk8", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 550, + 600 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "3ca61e62-ea9e-4431-b099-e6185c7546bb" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "Zendesk9", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 700, + 600 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "6ab5a5c4-715e-4db4-9e60-44ffc3d7858b" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "operation": "search", + "limit": 1, + "filters": {} + }, + "name": "Zendesk10", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 850, + 600 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "1c032158-0872-4518-b7d9-c41cd7402baf" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "operation": "get", + "id": "={{$node[\"Zendesk7\"].json[\"id\"]}}" + }, + "name": "Zendesk11", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 1000, + 600 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "5b713747-e0ff-4918-bfa9-daac79899b90" + }, + { + "parameters": { + "authentication": "oAuth2", + "resource": "user", + "operation": "delete", + "id": "={{$node[\"Zendesk7\"].json[\"id\"]}}" + }, + "name": "Zendesk12", + "type": "n8n-nodes-base.zendesk", + "typeVersion": 1, + "position": [ + 1150, + 600 + ], + "credentials": { + "zendeskOAuth2Api": { + "id": "68", + "name": "Zendesk OAuth2 " + } + }, + "id": "e8af8a3e-7cc0-4f30-9498-aca3837919cd" + } + ], + "connections": { + "Zendesk": { + "main": [ + [ + { + "node": "Zendesk1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk1": { + "main": [ + [ + { + "node": "Zendesk2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk2": { + "main": [ + [ + { + "node": "Zendesk3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk3": { + "main": [ + [ + { + "node": "Zendesk4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk5": { + "main": [ + [ + { + "node": "Zendesk6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Zendesk", + "type": "main", + "index": 0 + }, + { + "node": "Zendesk5", + "type": "main", + "index": 0 + }, + { + "node": "Zendesk7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk7": { + "main": [ + [ + { + "node": "Zendesk8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk8": { + "main": [ + [ + { + "node": "Zendesk9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk9": { + "main": [ + [ + { + "node": "Zendesk10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk10": { + "main": [ + [ + { + "node": "Zendesk11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Zendesk11": { + "main": [ + [ + { + "node": "Zendesk12", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/81.json b/test-workflows/workflows/81.json new file mode 100644 index 0000000000..324c5ed66e --- /dev/null +++ b/test-workflows/workflows/81.json @@ -0,0 +1,162 @@ +{ + "createdAt": "2021-03-01T09:51:34.123Z", + "updatedAt": "2021-06-02T11:29:56.485Z", + "id": "81", + "name": "PhantomBuster:getAll get launch getOutput", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "85fb6aa2-9869-4db4-bd9a-daf1db2bf96e" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1 + }, + "name": "Phantombuster", + "type": "n8n-nodes-base.phantombuster", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "phantombusterApi": { + "id": "70", + "name": "Phantombuster creds" + } + }, + "id": "1b0bda87-f6ec-42a9-84db-af15ec98c377" + }, + { + "parameters": { + "operation": "get", + "agentId": "={{$node[\"Phantombuster\"].json[\"id\"]}}" + }, + "name": "Phantombuster1", + "type": "n8n-nodes-base.phantombuster", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "phantombusterApi": { + "id": "70", + "name": "Phantombuster creds" + } + }, + "id": "1c0d3094-59c7-4f8c-b7d6-3544dcde6bcc" + }, + { + "parameters": { + "agentId": "={{$node[\"Phantombuster\"].json[\"id\"]}}", + "resolveData": false, + "jsonParameters": true, + "additionalFields": { + "argumentsJson": "{\n\t\"urls\": [\n\t\t\"https://n8n.io/\"\n\t],\n\t\"timeToWait\": 5000,\n\t\"pagesPerLaunch\": 1,\n\t\"onlyGetOneEmail\": false\n}" + } + }, + "name": "Phantombuster2", + "type": "n8n-nodes-base.phantombuster", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "credentials": { + "phantombusterApi": { + "id": "70", + "name": "Phantombuster creds" + } + }, + "id": "932b8b9f-b118-401c-9164-aac9942631a9" + }, + { + "parameters": { + "operation": "getOutput", + "agentId": "={{$node[\"Phantombuster\"].json[\"id\"]}}", + "resolveData": false, + "additionalFields": { + "prevContainerId": "={{$node[\"Phantombuster2\"].json[\"containerId\"]}}" + } + }, + "name": "Phantombuster3", + "type": "n8n-nodes-base.phantombuster", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "credentials": { + "phantombusterApi": { + "id": "70", + "name": "Phantombuster creds" + } + }, + "notes": "IGNORED_PROPERTIES=mostRecentEndedAt", + "id": "803d6c12-a407-4037-ae9f-62b90d17ceac" + } + ], + "connections": { + "Phantombuster": { + "main": [ + [ + { + "node": "Phantombuster1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Phantombuster1": { + "main": [ + [ + { + "node": "Phantombuster2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Phantombuster2": { + "main": [ + [ + { + "node": "Phantombuster3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Phantombuster", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/82.json b/test-workflows/workflows/82.json new file mode 100644 index 0000000000..211675162c --- /dev/null +++ b/test-workflows/workflows/82.json @@ -0,0 +1,563 @@ +{ + "createdAt": "2021-03-01T10:15:48.446Z", + "updatedAt": "2021-06-04T14:49:07.640Z", + "id": "82", + "name": "Microsoft OneDrive:Folder:create getChildren share search delete:File:upload get share download copy delete search", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "8dd4b3f2-e8ad-481a-8a37-6fc5cad4eb8e" + }, + { + "parameters": { + "resource": "folder", + "operation": "create", + "name": "=TestFolder{{Date.now()}}", + "options": {} + }, + "name": "Microsoft OneDrive", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 490, + 300 + ], + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "60b3c5f1-1a49-4961-9d3b-7a8681b882fc" + }, + { + "parameters": { + "resource": "folder", + "folderId": "={{$node[\"Microsoft OneDrive\"].json[\"id\"]}}" + }, + "name": "Microsoft OneDrive1", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 2410, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "1fea4cc3-5693-470e-b04b-630bfc994fce" + }, + { + "parameters": { + "resource": "folder", + "operation": "search", + "query": "TestFolder" + }, + "name": "Microsoft OneDrive2", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 2850, + 150 + ], + "alwaysOutputData": true, + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "notes": "CAP_RESULTS_LENGTH=1", + "id": "d04119ed-853d-421e-a872-c02d3ab34b6d" + }, + { + "parameters": { + "resource": "folder", + "operation": "share", + "folderId": "={{$node[\"Microsoft OneDrive\"].json[\"id\"]}}", + "type": "view", + "scope": "anonymous" + }, + "name": "Microsoft OneDrive3", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 2560, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "2fd0be17-d65a-4c47-ada6-ed83a84a8a9c" + }, + { + "parameters": { + "fileName": "=FileName{{Date.now()}}", + "parentId": "={{$node[\"Microsoft OneDrive\"].json[\"id\"]}}", + "fileContent": "=Test written at {{Date()}}" + }, + "name": "Microsoft OneDrive4", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 770, + 450 + ], + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "88d28811-6fdc-4d81-8d64-225c857efe27" + }, + { + "parameters": { + "operation": "get", + "fileId": "={{$node[\"Microsoft OneDrive4\"].json[\"id\"]}}" + }, + "name": "Microsoft OneDrive5", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 1070, + 450 + ], + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "cdf9a69d-e4e0-4c8d-a154-e57910ed9c9e" + }, + { + "parameters": { + "operation": "share", + "fileId": "={{$node[\"Microsoft OneDrive4\"].json[\"id\"]}}", + "type": "view", + "scope": "anonymous" + }, + "name": "Microsoft OneDrive6", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 1220, + 450 + ], + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "35ac9411-ebea-4929-a4b8-5fab696507c0" + }, + { + "parameters": { + "operation": "search", + "query": "Test" + }, + "name": "Microsoft OneDrive7", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 2120, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "d4cf2dbf-430b-4af9-a478-78f9d63c0f4e" + }, + { + "parameters": { + "operation": "download", + "fileId": "={{$node[\"Microsoft OneDrive4\"].json[\"id\"]}}" + }, + "name": "Microsoft OneDrive8", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 1520, + 450 + ], + "alwaysOutputData": true, + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "b22405f7-c624-4f51-b72f-2cd6fba6055c" + }, + { + "parameters": { + "operation": "copy", + "fileId": "={{$node[\"Microsoft OneDrive4\"].json[\"id\"]}}", + "additionalFields": { + "name": "=CopiedFile{{Date.now()}}" + }, + "parentReference": { + "name": "=CopiedFile{{Date.now()}}", + "path": "=/drive/root:/{{$node[\"Microsoft OneDrive\"].json[\"name\"]}}" + } + }, + "name": "Microsoft OneDrive9", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 1670, + 450 + ], + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "0a8c8d20-cc43-4a4d-a1d4-acebd6742cdd" + }, + { + "parameters": { + "operation": "delete", + "fileId": "={{$node[\"Microsoft OneDrive4\"].json[\"id\"]}}" + }, + "name": "Microsoft OneDrive10", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 1970, + 450 + ], + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "9cbe23a3-6e32-45a8-9e9f-60c9ed5cea4e" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "folderId": "={{$node[\"Microsoft OneDrive\"].json[\"id\"]}}" + }, + "name": "Microsoft OneDrive11", + "type": "n8n-nodes-base.microsoftOneDrive", + "typeVersion": 1, + "position": [ + 2850, + 300 + ], + "alwaysOutputData": true, + "credentials": { + "microsoftOneDriveOAuth2Api": { + "id": "69", + "name": "Microsoft Drive OAuth2 creds" + } + }, + "id": "c33517a8-7045-45c7-8e49-e778313d2ce7" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second", + "type": "n8n-nodes-base.function", + "position": [ + 2700, + 300 + ], + "typeVersion": 1, + "id": "47de5dd5-9705-4186-a0f4-9579467897e3" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second1", + "type": "n8n-nodes-base.function", + "position": [ + 2280, + 300 + ], + "typeVersion": 1, + "id": "0987168a-7db4-4e81-bde8-4a6961f514a1" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second2", + "type": "n8n-nodes-base.function", + "position": [ + 1820, + 450 + ], + "typeVersion": 1, + "id": "eb7f14c0-6925-4c32-89f6-835e09498bce" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second3", + "type": "n8n-nodes-base.function", + "position": [ + 1370, + 450 + ], + "typeVersion": 1, + "id": "04e7f940-2bd4-4191-8157-89a3c067fdd1" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second4", + "type": "n8n-nodes-base.function", + "position": [ + 920, + 450 + ], + "typeVersion": 1, + "id": "6977a587-99f4-4998-953f-7ea20768a92b" + }, + { + "parameters": { + "functionCode": "function sleep(milliseconds) {\n return new Promise(\n resolve => setTimeout(resolve, milliseconds)\n );\n}\n\nawait sleep(800);\n\n// Output data\nreturn items;" + }, + "name": "Sleep 0.8 second5", + "type": "n8n-nodes-base.function", + "position": [ + 650, + 450 + ], + "typeVersion": 1, + "id": "7e920caf-326c-44ad-9f49-bb11d8378d12" + } + ], + "connections": { + "Microsoft OneDrive": { + "main": [ + [ + { + "node": "Sleep 0.8 second5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive1": { + "main": [ + [ + { + "node": "Microsoft OneDrive3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive3": { + "main": [ + [ + { + "node": "Sleep 0.8 second", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive4": { + "main": [ + [ + { + "node": "Sleep 0.8 second4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive5": { + "main": [ + [ + { + "node": "Microsoft OneDrive6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive6": { + "main": [ + [ + { + "node": "Sleep 0.8 second3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive7": { + "main": [ + [ + { + "node": "Sleep 0.8 second1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive8": { + "main": [ + [ + { + "node": "Microsoft OneDrive9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive9": { + "main": [ + [ + { + "node": "Sleep 0.8 second2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Microsoft OneDrive10": { + "main": [ + [ + { + "node": "Microsoft OneDrive7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Microsoft OneDrive", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second": { + "main": [ + [ + { + "node": "Microsoft OneDrive11", + "type": "main", + "index": 0 + }, + { + "node": "Microsoft OneDrive2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second1": { + "main": [ + [ + { + "node": "Microsoft OneDrive1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second2": { + "main": [ + [ + { + "node": "Microsoft OneDrive10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second3": { + "main": [ + [ + { + "node": "Microsoft OneDrive8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second4": { + "main": [ + [ + { + "node": "Microsoft OneDrive5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Sleep 0.8 second5": { + "main": [ + [ + { + "node": "Microsoft OneDrive4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/83.json b/test-workflows/workflows/83.json new file mode 100644 index 0000000000..7ba6410671 --- /dev/null +++ b/test-workflows/workflows/83.json @@ -0,0 +1,79 @@ +{ + "createdAt": "2021-03-01T10:49:40.953Z", + "updatedAt": "2021-03-01T10:49:40.953Z", + "id": "83", + "name": "RSS Feed", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "2abda6cf-70a8-40c3-9446-4f7f8233e54a" + }, + { + "parameters": { + "url": "https://www.producthunt.com/feed" + }, + "name": "RSS Feed Read", + "type": "n8n-nodes-base.rssFeedRead", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "46f4bb0e-011d-499c-92bd-7b1e6c814133" + }, + { + "parameters": { + "functionCode": "if(items.length !== 50){\n throw new Error('Invalid RSS feed result');\n}else{\nreturn [];\n}\n" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "notesInFlow": true, + "notes": "Throw error if result.length !=50", + "id": "f4a98301-2dbe-45b2-ac1d-97df0ac58b94" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "RSS Feed Read", + "type": "main", + "index": 0 + } + ] + ] + }, + "RSS Feed Read": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/84.json b/test-workflows/workflows/84.json new file mode 100644 index 0000000000..0a422ac433 --- /dev/null +++ b/test-workflows/workflows/84.json @@ -0,0 +1,407 @@ +{ + "createdAt": "2021-03-01T11:14:09.665Z", + "updatedAt": "2021-03-01T11:21:28.506Z", + "id": "84", + "name": "Matrix:Room:create invite kick leave:RoomMember:getAll:Message:create getAll:Account:me:Media:upload:Event:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "4653989b-2d73-400a-b9e3-05248cca34be" + }, + { + "parameters": { + "resource": "account" + }, + "name": "Matrix", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 450, + 100 + ], + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "47305d8a-ba2e-4bc3-8021-1abf32a300ae" + }, + { + "parameters": { + "resource": "room", + "roomName": "=Room{{Date.now()}}" + }, + "name": "Matrix1", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "5d6f2b69-6762-4376-b1bb-6b3d8b823c37" + }, + { + "parameters": { + "resource": "room", + "operation": "invite", + "roomId": "={{$node[\"Matrix1\"].json[\"room_id\"]}}", + "userId": "@node8qa:matrix.org" + }, + "name": "Matrix2", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 1000, + 200 + ], + "alwaysOutputData": true, + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "939b7824-2a25-4b5a-9d11-57ee9107578c" + }, + { + "parameters": { + "resource": "room", + "operation": "kick", + "roomId": "={{$node[\"Matrix1\"].json[\"room_id\"]}}", + "userId": "@node8qa:matrix.org", + "reason": "test" + }, + "name": "Matrix3", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 1200, + 200 + ], + "alwaysOutputData": true, + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "e5d85928-b775-4eb5-9976-18075db86af0" + }, + { + "parameters": { + "resource": "room", + "operation": "leave", + "roomId": "={{$node[\"Matrix1\"].json[\"room_id\"]}}" + }, + "name": "Matrix4", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 1440, + 420 + ], + "alwaysOutputData": true, + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "7e684d64-ab4c-4de9-bd5b-ab1e8571c0d9" + }, + { + "parameters": { + "resource": "roomMember", + "roomId": "={{$node[\"Matrix1\"].json[\"room_id\"]}}", + "filters": {} + }, + "name": "Matrix5", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 700, + 420 + ], + "alwaysOutputData": true, + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "a3cd7697-4db7-4cc2-a8bf-68625273a76a" + }, + { + "parameters": { + "roomId": "={{$node[\"Matrix1\"].json[\"room_id\"]}}", + "text": "=Test {{Date.now()}}" + }, + "name": "Matrix6", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 600, + 200 + ], + "alwaysOutputData": true, + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "9cbac5a1-e829-40d3-acd7-ad4fdb03c1ac" + }, + { + "parameters": { + "operation": "getAll", + "roomId": "={{$node[\"Matrix1\"].json[\"room_id\"]}}", + "limit": 1, + "otherOptions": {} + }, + "name": "Matrix7", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 800, + 200 + ], + "alwaysOutputData": true, + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "205d5ab7-64ae-4722-b4bd-bb2a687de4b4" + }, + { + "parameters": { + "resource": "media", + "roomId": "={{$node[\"Matrix1\"].json[\"room_id\"]}}" + }, + "name": "Matrix8", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 820, + 620 + ], + "alwaysOutputData": true, + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "6aa74367-4d6a-495f-885e-14568c493ca1" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 600, + 620 + ], + "id": "07201442-b394-41cb-90e7-1a3f3f5e414f" + }, + { + "parameters": { + "resource": "event", + "roomId": "={{$node[\"Matrix1\"].json[\"room_id\"]}}", + "eventId": "={{$node[\"Matrix8\"].json[\"event_id\"]}}" + }, + "name": "Matrix9", + "type": "n8n-nodes-base.matrix", + "typeVersion": 1, + "position": [ + 1020, + 620 + ], + "alwaysOutputData": true, + "credentials": { + "matrixApi": { + "id": "71", + "name": "Matrix creds" + } + }, + "id": "a0c2d949-47f2-49a4-90fd-7ca465c2c579" + }, + { + "parameters": { + "mode": "chooseBranch" + }, + "name": "Merge", + "type": "n8n-nodes-base.merge", + "typeVersion": 2.1, + "position": [ + 1240, + 420 + ], + "id": "a3b8276c-5961-4508-a8c1-5d9144436ff5" + } + ], + "connections": { + "Matrix1": { + "main": [ + [ + { + "node": "Matrix6", + "type": "main", + "index": 0 + }, + { + "node": "Matrix5", + "type": "main", + "index": 0 + }, + { + "node": "Read Binary File", + "type": "main", + "index": 0 + } + ] + ] + }, + "Matrix2": { + "main": [ + [ + { + "node": "Matrix3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Matrix3": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + } + ] + ] + }, + "Matrix6": { + "main": [ + [ + { + "node": "Matrix7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Matrix7": { + "main": [ + [ + { + "node": "Matrix2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "Matrix8", + "type": "main", + "index": 0 + } + ] + ] + }, + "Matrix8": { + "main": [ + [ + { + "node": "Matrix9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Matrix1", + "type": "main", + "index": 0 + }, + { + "node": "Matrix", + "type": "main", + "index": 0 + } + ] + ] + }, + "Matrix5": { + "main": [ + [] + ] + }, + "Matrix9": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Matrix4": { + "main": [ + [] + ] + }, + "Merge": { + "main": [ + [ + { + "node": "Matrix4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/85.json b/test-workflows/workflows/85.json new file mode 100644 index 0000000000..7cbe2afbb1 --- /dev/null +++ b/test-workflows/workflows/85.json @@ -0,0 +1,119 @@ +{ + "createdAt": "2021-03-02T10:23:05.991Z", + "updatedAt": "2021-05-25T13:21:54.785Z", + "id": "85", + "name": "Linkedin:Post:create", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 200, + 300 + ], + "id": "92f57774-0f92-4eaf-89e9-e8c33dd21cfe" + }, + { + "parameters": { + "postAs": "person", + "person": "gpZ0alGajT", + "text": "=Test Post created by person at {{new Date()}}", + "additionalFields": { + "visibility": "CONNECTIONS" + } + }, + "name": "LinkedIn", + "type": "n8n-nodes-base.linkedIn", + "typeVersion": 1, + "position": [ + 550, + 200 + ], + "credentials": { + "linkedInOAuth2Api": { + "id": "74", + "name": "LinkedIn OAuth2 creds" + } + }, + "id": "63e56abf-2054-4691-99d7-e639d2a1af45" + }, + { + "parameters": { + "postAs": "person", + "person": "gpZ0alGajT", + "text": "=Test Post created by person at {{new Date()}}", + "shareMediaCategory": "IMAGE", + "additionalFields": { + "title": "=ImagePost {{Date.now()}}", + "visibility": "CONNECTIONS" + } + }, + "name": "LinkedIn1", + "type": "n8n-nodes-base.linkedIn", + "typeVersion": 1, + "position": [ + 560, + 350 + ], + "credentials": { + "linkedInOAuth2Api": { + "id": "74", + "name": "LinkedIn OAuth2 creds" + } + }, + "id": "a6a0d2d6-f399-41a3-88fe-a4b0c2d5512e" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 420, + 350 + ], + "id": "e80c32c0-f983-46cd-becc-e030b93732c7" + } + ], + "connections": { + "Read Binary File": { + "main": [ + [ + { + "node": "LinkedIn1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + }, + { + "node": "LinkedIn", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/86.json b/test-workflows/workflows/86.json new file mode 100644 index 0000000000..8e27999147 --- /dev/null +++ b/test-workflows/workflows/86.json @@ -0,0 +1,610 @@ +{ + "createdAt": "2021-03-02T16:28:15.682Z", + "updatedAt": "2021-03-02T16:51:15.335Z", + "id": "86", + "name": "ActiveCampaign:Contact:create update get getAll delete:Account:create update get getAll delete:AccountContact:create update delete:ContactTag:add remove:ContactList:add remove", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 240, + 250 + ], + "id": "5e0c4a10-4f4c-4d7e-ac88-cfb0e0147e6d" + }, + { + "parameters": { + "email": "=fake{{Date.now()}}@gmail.com", + "additionalFields": {} + }, + "name": "ActiveCampaign", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 400, + 250 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "218c5b2e-6051-4f23-ba62-8d5b9deee1c6" + }, + { + "parameters": { + "operation": "update", + "contactId": "={{$node[\"ActiveCampaign\"].json[\"id\"]}}", + "updateFields": { + "email": "=updatedFake{{Date.now()}}@gmail.com" + } + }, + "name": "ActiveCampaign1", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1860, + 420 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "305a7c81-ca92-4e98-af9e-16793b4ef154" + }, + { + "parameters": { + "operation": "get", + "contactId": "={{$node[\"ActiveCampaign\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign2", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2060, + 420 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "0793b6d4-3d35-49c9-ac08-783568dcbaf7" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "additionalFields": {} + }, + "name": "ActiveCampaign3", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2240, + 420 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "577ef13f-7105-4d8a-bed7-e032a4dbd41e" + }, + { + "parameters": { + "operation": "delete", + "contactId": "={{$node[\"ActiveCampaign\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign4", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2700, + 580 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "fa91c140-0213-4490-b9d5-8bc7f58f076c" + }, + { + "parameters": { + "resource": "contactList", + "listId": 1, + "contactId": "={{$node[\"ActiveCampaign\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign5", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1800, + 600 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "9ec94695-33dd-4b2d-afa5-275f25c5519d" + }, + { + "parameters": { + "resource": "contactList", + "operation": "remove", + "listId": 1, + "contactId": "={{$node[\"ActiveCampaign\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign6", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2040, + 600 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "b1f7a747-06a7-4e0c-9492-da2b0d0058ee" + }, + { + "parameters": { + "resource": "contactTag", + "tagId": "1", + "contactId": "={{$node[\"ActiveCampaign\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign7", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1800, + 160 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "2fd08b2d-5fcc-4e53-ab07-0a4ccceb4343" + }, + { + "parameters": { + "resource": "contactTag", + "operation": "remove", + "contactTagId": "={{$node[\"ActiveCampaign7\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign8", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1950, + 160 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "7a5a5918-0d77-4244-bfda-81fa9a16bb4a" + }, + { + "parameters": { + "resource": "account", + "name": "=Name{{Date.now()}}", + "additionalFields": {} + }, + "name": "ActiveCampaign9", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "c27e3344-ae6d-4c50-9b68-fbe0cc933bff" + }, + { + "parameters": { + "resource": "account", + "operation": "update", + "accountId": "={{$node[\"ActiveCampaign9\"].json[\"id\"]}}", + "updateFields": { + "name": "=updatedName{{Date.now()}}" + } + }, + "name": "ActiveCampaign10", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "f0488b6f-4e0a-4314-8748-0107fe6615f0" + }, + { + "parameters": { + "resource": "account", + "operation": "get", + "accountId": "={{$node[\"ActiveCampaign9\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign11", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1300, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "323985d0-1ee6-40c3-ac86-7ddd93755d92" + }, + { + "parameters": { + "resource": "account", + "operation": "getAll", + "limit": 1, + "filters": {} + }, + "name": "ActiveCampaign12", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1450, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "0056df12-007e-49fe-a03f-b784e4c05354" + }, + { + "parameters": { + "resource": "account", + "operation": "delete", + "accountId": "={{$node[\"ActiveCampaign9\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign13", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1600, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "4149b2f7-c778-40d5-9e91-a652148bdb0f" + }, + { + "parameters": { + "resource": "accountContact", + "account": "={{$node[\"ActiveCampaign9\"].json[\"id\"]}}", + "contact": "={{$node[\"ActiveCampaign\"].json[\"id\"]}}", + "additionalFields": {} + }, + "name": "ActiveCampaign14", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 700, + 400 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "88202473-515f-443d-bdc2-79a79bf72228" + }, + { + "parameters": { + "resource": "accountContact", + "operation": "update", + "accountContactId": "={{$node[\"ActiveCampaign14\"].json[\"id\"]}}", + "updateFields": { + "jobTitle": "TestJobTitle" + } + }, + "name": "ActiveCampaign15", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 850, + 400 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "d5c849a3-4bd3-4d31-80f4-b842e725620a" + }, + { + "parameters": { + "resource": "accountContact", + "operation": "delete", + "accountContactId": "={{$node[\"ActiveCampaign14\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign16", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1000, + 400 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "3fadb7d0-4353-4bc9-9099-269db90d56e9" + }, + { + "parameters": { + "mode": "chooseBranch" + }, + "name": "Merge", + "type": "n8n-nodes-base.merge", + "typeVersion": 2.1, + "position": [ + 2480, + 580 + ], + "id": "e48d6833-8e96-4fd9-ba59-e6aef2d6dfba" + } + ], + "connections": { + "ActiveCampaign": { + "main": [ + [ + { + "node": "ActiveCampaign9", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign1": { + "main": [ + [ + { + "node": "ActiveCampaign2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign2": { + "main": [ + [ + { + "node": "ActiveCampaign3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign3": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign5": { + "main": [ + [ + { + "node": "ActiveCampaign6", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign7": { + "main": [ + [ + { + "node": "ActiveCampaign8", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign8": { + "main": [ + [ + { + "node": "ActiveCampaign1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "ActiveCampaign", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign9": { + "main": [ + [ + { + "node": "ActiveCampaign14", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign10": { + "main": [ + [ + { + "node": "ActiveCampaign11", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign11": { + "main": [ + [ + { + "node": "ActiveCampaign12", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign12": { + "main": [ + [ + { + "node": "ActiveCampaign13", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign14": { + "main": [ + [ + { + "node": "ActiveCampaign15", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign15": { + "main": [ + [ + { + "node": "ActiveCampaign16", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign16": { + "main": [ + [ + { + "node": "ActiveCampaign10", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign13": { + "main": [ + [ + { + "node": "ActiveCampaign5", + "type": "main", + "index": 0 + }, + { + "node": "ActiveCampaign7", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign6": { + "main": [ + [ + { + "node": "Merge", + "type": "main", + "index": 1 + } + ] + ] + }, + "Merge": { + "main": [ + [ + { + "node": "ActiveCampaign4", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/87.json b/test-workflows/workflows/87.json new file mode 100644 index 0000000000..f2e5ab49bd --- /dev/null +++ b/test-workflows/workflows/87.json @@ -0,0 +1,667 @@ +{ + "createdAt": "2021-03-02T17:11:06.700Z", + "updatedAt": "2021-03-02T17:38:14.995Z", + "id": "87", + "name": "ActiveCampaign:Deal:create update get createNote updateNote getAll delete:Tag:create update get getAll delete:Connection:create update get getAll delete:List:getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 50, + 550 + ], + "id": "a2295ea9-244a-4306-8154-22eb9bbcb44e" + }, + { + "parameters": { + "resource": "connection", + "service": "n8n", + "externalid": "={{Date.now()}}", + "name": "=Name{{Date.now()}}", + "logoUrl": "https://n8n.io/_nuxt/img/df5be1c.png", + "linkUrl": "https://n8n.io/" + }, + "name": "ActiveCampaign", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "5a58849c-68a7-4df6-afc6-15bfcf9e542a" + }, + { + "parameters": { + "resource": "connection", + "operation": "update", + "connectionId": "={{$node[\"ActiveCampaign\"].json[\"connection\"][\"id\"]}}", + "updateFields": { + "syncStatus": 0 + } + }, + "name": "ActiveCampaign1", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "90f92758-d9a4-4c9f-95b6-a0dfce8ad0a6" + }, + { + "parameters": { + "resource": "connection", + "operation": "get", + "connectionId": "={{$node[\"ActiveCampaign\"].json[\"connection\"][\"id\"]}}" + }, + "name": "ActiveCampaign2", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "2c023901-6976-4e87-a1cd-5578e1b0e39e" + }, + { + "parameters": { + "resource": "connection", + "operation": "getAll", + "limit": 1 + }, + "name": "ActiveCampaign3", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "3ac46999-9c81-4d69-b5af-b302cbf17495" + }, + { + "parameters": { + "resource": "connection", + "operation": "delete", + "connectionId": "={{$node[\"ActiveCampaign\"].json[\"connection\"][\"id\"]}}" + }, + "name": "ActiveCampaign4", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "6ee06c8c-76b8-421e-a663-1749ab15173c" + }, + { + "parameters": { + "email": "=fake{{Date.now()}}@gmail.com", + "additionalFields": {} + }, + "name": "ActiveCampaign5", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 250, + 470 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "7b0271b5-ffde-4e57-9389-e35cdc23f7a3" + }, + { + "parameters": { + "resource": "deal", + "title": "=Title{{Date.now()}}", + "contact": "={{$node[\"ActiveCampaign5\"].json[\"id\"]}}", + "value": 101, + "currency": "usd", + "group": "1", + "stage": "0", + "owner": "1", + "additionalFields": {} + }, + "name": "ActiveCampaign7", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 400, + 550 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "90219b3a-7ebc-497f-b757-f03f7267b82a" + }, + { + "parameters": { + "resource": "list", + "limit": 1 + }, + "name": "ActiveCampaign8", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 250, + 650 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "0311b73b-b4d4-4e26-a527-f853bbb6e919" + }, + { + "parameters": { + "resource": "tag", + "name": "=Tag{{Date.now()}}", + "additionalFields": {} + }, + "name": "ActiveCampaign9", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 250, + 800 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "f9cb63f2-8f09-4588-b72c-454a2d46d254" + }, + { + "parameters": { + "resource": "tag", + "operation": "update", + "tagId": "={{$node[\"ActiveCampaign9\"].json[\"id\"]}}", + "updateFields": {} + }, + "name": "ActiveCampaign10", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 400, + 800 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "518317dc-7765-4bf6-9430-9bb38bd15427" + }, + { + "parameters": { + "resource": "tag", + "operation": "get", + "tagId": "={{$node[\"ActiveCampaign9\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign11", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 550, + 800 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "b8fa4436-7059-467f-b38e-32d1fb0d1322" + }, + { + "parameters": { + "resource": "tag", + "operation": "getAll", + "limit": 1 + }, + "name": "ActiveCampaign12", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 700, + 800 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "8c8fda95-bd1d-41c4-9b56-7946e4f8f246" + }, + { + "parameters": { + "resource": "tag", + "operation": "delete", + "tagId": "={{$node[\"ActiveCampaign9\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign13", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 850, + 800 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "1e3f23a3-4905-43f3-bace-5c3bc340e6f1" + }, + { + "parameters": { + "resource": "deal", + "operation": "update", + "dealId": "={{$node[\"ActiveCampaign7\"].json[\"deal\"][\"id\"]}}", + "updateFields": { + "value": 201 + } + }, + "name": "ActiveCampaign14", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 550, + 550 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "a4c82ca4-f15b-4b4a-9f0c-4fff2720db1f" + }, + { + "parameters": { + "resource": "deal", + "operation": "get", + "dealId": "={{$node[\"ActiveCampaign7\"].json[\"deal\"][\"id\"]}}" + }, + "name": "ActiveCampaign15", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 700, + 550 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "900af275-1075-41e6-983d-f8522ea792c7" + }, + { + "parameters": { + "resource": "deal", + "operation": "createNote", + "dealId": "={{$node[\"ActiveCampaign7\"].json[\"deal\"][\"id\"]}}", + "dealNote": "TestNote" + }, + "name": "ActiveCampaign16", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 850, + 550 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "e2fcb50a-69e9-4588-958d-d9d55863bc6d" + }, + { + "parameters": { + "resource": "deal", + "operation": "updateNote", + "dealId": "={{$node[\"ActiveCampaign7\"].json[\"deal\"][\"id\"]}}", + "dealNoteId": "={{$node[\"ActiveCampaign16\"].json[\"note\"][\"id\"]}}", + "dealNote": "UpdatedNote" + }, + "name": "ActiveCampaign17", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1000, + 550 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "eeddfcc2-e580-4f0f-80ad-382a38ef4f31" + }, + { + "parameters": { + "resource": "deal", + "operation": "getAll", + "limit": 1 + }, + "name": "ActiveCampaign18", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1150, + 550 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "ad04ac82-0369-4006-aacd-e87b8dbbc6f8" + }, + { + "parameters": { + "resource": "deal", + "operation": "delete", + "dealId": "={{$node[\"ActiveCampaign7\"].json[\"deal\"][\"id\"]}}" + }, + "name": "ActiveCampaign19", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1300, + 550 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "83432217-ae3f-4ecb-8cbb-fe21e1105146" + }, + { + "parameters": { + "operation": "delete", + "contactId": "={{$node[\"ActiveCampaign5\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign6", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1450, + 470 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "7492e380-426b-4c06-98bd-13a5a10b3232" + } + ], + "connections": { + "ActiveCampaign": { + "main": [ + [ + { + "node": "ActiveCampaign1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign1": { + "main": [ + [ + { + "node": "ActiveCampaign2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign2": { + "main": [ + [ + { + "node": "ActiveCampaign3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign3": { + "main": [ + [ + { + "node": "ActiveCampaign4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "ActiveCampaign", + "type": "main", + "index": 0 + }, + { + "node": "ActiveCampaign5", + "type": "main", + "index": 0 + }, + { + "node": "ActiveCampaign8", + "type": "main", + "index": 0 + }, + { + "node": "ActiveCampaign9", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign5": { + "main": [ + [ + { + "node": "ActiveCampaign7", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign9": { + "main": [ + [ + { + "node": "ActiveCampaign10", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign10": { + "main": [ + [ + { + "node": "ActiveCampaign11", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign11": { + "main": [ + [ + { + "node": "ActiveCampaign12", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign12": { + "main": [ + [ + { + "node": "ActiveCampaign13", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign7": { + "main": [ + [ + { + "node": "ActiveCampaign14", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign14": { + "main": [ + [ + { + "node": "ActiveCampaign15", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign15": { + "main": [ + [ + { + "node": "ActiveCampaign16", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign16": { + "main": [ + [ + { + "node": "ActiveCampaign17", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign17": { + "main": [ + [ + { + "node": "ActiveCampaign18", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign18": { + "main": [ + [ + { + "node": "ActiveCampaign19", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign19": { + "main": [ + [ + { + "node": "ActiveCampaign6", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/88.json b/test-workflows/workflows/88.json new file mode 100644 index 0000000000..6e0da6d560 --- /dev/null +++ b/test-workflows/workflows/88.json @@ -0,0 +1,600 @@ +{ + "createdAt": "2021-03-02T17:43:57.153Z", + "updatedAt": "2021-03-02T18:24:50.151Z", + "id": "88", + "name": "ActiveCampaign:EcommerceCustomer:create update get getAll delete:EcommerceOrder:create update get getAll delete:EcommerceOrderProduct:getByProductId getByOrderId getAll", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "d98ebf73-d4b9-4f3c-8959-09921d971af4" + }, + { + "parameters": { + "resource": "connection", + "service": "n8n", + "externalid": "=account{{Date.now()}}", + "name": "=AccountName{{Date.now()}}", + "logoUrl": "https://n8n.io/_nuxt/img/df5be1c.png", + "linkUrl": "https://n8n.io" + }, + "name": "ActiveCampaign", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "06f9b5c8-7772-4e1f-aa36-cff61ad6d9c7" + }, + { + "parameters": { + "resource": "ecommerceCustomer", + "connectionid": "={{$node[\"ActiveCampaign\"].json[\"connection\"][\"id\"]}}", + "externalid": "=customer{{Date.now()}}", + "email": "=fake{{Date.now()}}@gmail.com", + "additionalFields": {} + }, + "name": "ActiveCampaign1", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 600, + 350 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "3bc4598b-fbad-4f70-afbf-24094a92c3ac" + }, + { + "parameters": { + "resource": "ecommerceCustomer", + "operation": "update", + "ecommerceCustomerId": "={{$node[\"ActiveCampaign1\"].json[\"ecomCustomer\"][\"id\"]}}", + "updateFields": { + "acceptsMarketing": true + } + }, + "name": "ActiveCampaign2", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1930, + 350 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "177ccb5e-64cb-4614-9d06-d03391a99606" + }, + { + "parameters": { + "resource": "ecommerceCustomer", + "operation": "get", + "ecommerceCustomerId": "={{$node[\"ActiveCampaign1\"].json[\"ecomCustomer\"][\"id\"]}}" + }, + "name": "ActiveCampaign3", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2080, + 350 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "d0aac97c-66df-498b-b350-75a5b43db790" + }, + { + "parameters": { + "resource": "ecommerceCustomer", + "operation": "getAll", + "limit": 1 + }, + "name": "ActiveCampaign4", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2230, + 350 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "01924984-0fd8-4aad-9c87-d672d22062f9" + }, + { + "parameters": { + "resource": "ecommerceCustomer", + "operation": "delete", + "ecommerceCustomerId": "={{$node[\"ActiveCampaign1\"].json[\"ecomCustomer\"][\"id\"]}}" + }, + "name": "ActiveCampaign5", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2700, + 350 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "c0d51d56-316e-4c3a-902e-e2806b357e49" + }, + { + "parameters": { + "resource": "connection", + "operation": "delete", + "connectionId": "={{$node[\"ActiveCampaign\"].json[\"connection\"][\"id\"]}}" + }, + "name": "ActiveCampaign6", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2960, + 310 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "0e5e9588-0159-4573-8a12-80c28597d5d2" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "externalid": "=externalOrderId{{Date.now()}}", + "email": "=customerEmail{{Date.now()}}@gmail.com", + "totalPrice": 101, + "connectionid": "={{$node[\"ActiveCampaign1\"].json[\"connections\"][0][\"id\"]}}", + "customerid": "={{$node[\"ActiveCampaign1\"].json[\"ecomCustomer\"][\"id\"]}}", + "externalCreatedDate": "2021-03-02T17:48:16.000Z", + "orderProducts": [ + { + "name": "=Product{{Date.now()}}", + "price": 101, + "externalid": "=ProductId{{Date.now()}}", + "category": "Test", + "quantity": 1 + } + ], + "additionalFields": {} + }, + "name": "ActiveCampaign7", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 750, + 500 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "625154fe-1a64-4d75-aaf8-98acd9e9ada7" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "operation": "update", + "orderId": "={{$node[\"ActiveCampaign7\"].json[\"ecomOrder\"][\"id\"]}}", + "updateFields": { + "totalPrice": 201 + } + }, + "name": "ActiveCampaign8", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1330, + 500 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "426277b4-5376-46fb-a536-685e850db4f2" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "operation": "get", + "orderId": "={{$node[\"ActiveCampaign7\"].json[\"ecomOrder\"][\"id\"]}}" + }, + "name": "ActiveCampaign9", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1480, + 500 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "9f79b204-ac2e-4bc9-ba28-88f26e4361e0" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "operation": "getAll", + "limit": 1 + }, + "name": "ActiveCampaign10", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1630, + 500 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "55383188-29bf-4d80-aea0-643f2944e449" + }, + { + "parameters": { + "resource": "ecommerceOrder", + "operation": "delete", + "orderId": "={{$node[\"ActiveCampaign7\"].json[\"ecomOrder\"][\"id\"]}}" + }, + "name": "ActiveCampaign11", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1780, + 500 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "9adb900b-6822-40b3-972b-8c3dba51d737" + }, + { + "parameters": { + "resource": "ecommerceOrderProducts", + "operation": "getByProductId", + "procuctId": "={{$node[\"ActiveCampaign7\"].json[\"ecomOrderProducts\"][0][\"id\"]}}" + }, + "name": "ActiveCampaign12", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 900, + 630 + ], + "alwaysOutputData": true, + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "6b7ec0c7-d112-40b7-87ab-92a16261a0d6" + }, + { + "parameters": { + "resource": "ecommerceOrderProducts", + "operation": "getByOrderId", + "orderId": "={{$node[\"ActiveCampaign7\"].json[\"ecomOrder\"][\"id\"]}}" + }, + "name": "ActiveCampaign13", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1050, + 630 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "eb9239ee-e92e-438b-9301-4f91297067ee" + }, + { + "parameters": { + "resource": "ecommerceOrderProducts", + "limit": 1 + }, + "name": "ActiveCampaign14", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 1200, + 630 + ], + "alwaysOutputData": true, + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "7ea53540-9953-40a7-bcb9-0fb103bfb66a" + }, + { + "parameters": { + "operation": "getAll", + "limit": 1, + "additionalFields": { + "email": "={{$node[\"ActiveCampaign3\"].json[\"ecomCustomer\"][\"email\"]}}" + } + }, + "name": "ActiveCampaign15", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2400, + 200 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "39812fca-6913-46d6-8210-0ec0319fd590" + }, + { + "parameters": { + "operation": "delete", + "contactId": "={{$node[\"ActiveCampaign15\"].json[\"id\"]}}" + }, + "name": "ActiveCampaign16", + "type": "n8n-nodes-base.activeCampaign", + "typeVersion": 1, + "position": [ + 2550, + 200 + ], + "credentials": { + "activeCampaignApi": { + "id": "75", + "name": "ActiveCampaign creds" + } + }, + "id": "59d52f2b-810a-437e-b5ce-885cc1ff746b" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "ActiveCampaign", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign": { + "main": [ + [ + { + "node": "ActiveCampaign1", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign1": { + "main": [ + [ + { + "node": "ActiveCampaign7", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign2": { + "main": [ + [ + { + "node": "ActiveCampaign3", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign3": { + "main": [ + [ + { + "node": "ActiveCampaign4", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign4": { + "main": [ + [ + { + "node": "ActiveCampaign15", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign5": { + "main": [ + [ + { + "node": "ActiveCampaign6", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign7": { + "main": [ + [ + { + "node": "ActiveCampaign12", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign8": { + "main": [ + [ + { + "node": "ActiveCampaign9", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign9": { + "main": [ + [ + { + "node": "ActiveCampaign10", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign10": { + "main": [ + [ + { + "node": "ActiveCampaign11", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign11": { + "main": [ + [ + { + "node": "ActiveCampaign2", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign12": { + "main": [ + [ + { + "node": "ActiveCampaign13", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign13": { + "main": [ + [ + { + "node": "ActiveCampaign14", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign14": { + "main": [ + [ + { + "node": "ActiveCampaign8", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign15": { + "main": [ + [ + { + "node": "ActiveCampaign16", + "type": "main", + "index": 0 + } + ] + ] + }, + "ActiveCampaign16": { + "main": [ + [ + { + "node": "ActiveCampaign5", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/89.json b/test-workflows/workflows/89.json new file mode 100644 index 0000000000..c1d0946389 --- /dev/null +++ b/test-workflows/workflows/89.json @@ -0,0 +1,438 @@ +{ + "createdAt": "2021-03-03T09:10:46.509Z", + "updatedAt": "2021-03-03T09:14:14.253Z", + "id": "89", + "name": "S3:Bucket:create getAll search:File:upload getAll download copy delete:Folder:create getAll delete", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 100, + 450 + ], + "id": "5f0064e0-df3f-4b86-9ff6-5914642a97b3" + }, + { + "parameters": { + "resource": "bucket", + "name": "=Bucket{{Date.now()}}", + "additionalFields": {} + }, + "name": "S3", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 300, + 300 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "48d6cb9a-a344-4be5-919e-3221f2f8a240" + }, + { + "parameters": { + "resource": "bucket", + "operation": "getAll", + "limit": 1 + }, + "name": "S", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "49b3346f-3156-4c9e-af2d-73387c596049" + }, + { + "parameters": { + "resource": "bucket", + "operation": "search", + "bucketName": "={{$node[\"S\"].json[\"Name\"]}}", + "limit": 1, + "additionalFields": {} + }, + "name": "S1", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "81e8284f-6314-473b-8eb4-8c3fbbdd88e6" + }, + { + "parameters": { + "operation": "upload", + "bucketName": "fixedbucket", + "fileName": "=File{{Date.now()}}", + "additionalFields": {}, + "tagsUi": { + "tagsValues": [] + } + }, + "name": "S2", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 450, + 450 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "25ce2a12-596f-4a9e-b406-3810ccba7db7" + }, + { + "parameters": { + "filePath": "/tmp/n8n-logo.png" + }, + "name": "Read Binary File", + "type": "n8n-nodes-base.readBinaryFile", + "typeVersion": 1, + "position": [ + 300, + 450 + ], + "id": "c8f464bb-d963-449f-8ee7-ad8d29e70271" + }, + { + "parameters": { + "operation": "getAll", + "bucketName": "fixedbucket", + "limit": 1, + "options": {} + }, + "name": "S4", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 600, + 450 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "349ae355-80cd-492d-b08c-2d75ccb35382" + }, + { + "parameters": { + "bucketName": "fixedbucket", + "fileKey": "={{$node[\"S4\"].json[\"Key\"]}}" + }, + "name": "S5", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 750, + 450 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "e8e125d4-e4dc-44ef-8a80-0d7643cbe7e7" + }, + { + "parameters": { + "operation": "copy", + "sourcePath": "=/fixedbucket/{{$node[\"S4\"].json[\"Key\"]}}", + "destinationPath": "=/fixedbucket/Copied{{$node[\"S4\"].json[\"Key\"]}}", + "additionalFields": {} + }, + "name": "S6", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 900, + 450 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "f9fee53d-4c4d-43db-9d90-e128929800ee" + }, + { + "parameters": { + "operation": "delete", + "bucketName": "fixedbucket", + "fileKey": "={{$node[\"S4\"].json[\"Key\"]}}", + "options": {} + }, + "name": "S7", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 1050, + 450 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "2125301b-ec39-4590-91a6-b72f18f8bdfd" + }, + { + "parameters": { + "operation": "delete", + "bucketName": "fixedbucket", + "fileKey": "=Copied{{$node[\"S4\"].json[\"Key\"]}}", + "options": {} + }, + "name": "S8", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 1200, + 450 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "19563d5e-0131-40be-afac-d9c71ae9a4b6" + }, + { + "parameters": { + "resource": "folder", + "bucketName": "fixedbucket", + "folderName": "=Folder{{Date.now()}}", + "additionalFields": {} + }, + "name": "S9", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 300, + 600 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "7171d305-06da-4448-934a-b6fc78a1a7f4" + }, + { + "parameters": { + "resource": "folder", + "operation": "getAll", + "bucketName": "fixedbucket", + "limit": 1, + "options": {} + }, + "name": "S10", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 450, + 600 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "ff9b78fb-9d66-4ec0-a096-2cf4d183baae" + }, + { + "parameters": { + "resource": "folder", + "operation": "delete", + "bucketName": "fixedbucket", + "folderKey": "={{$node[\"S10\"].json[\"Key\"]}}" + }, + "name": "S11", + "type": "n8n-nodes-base.s3", + "typeVersion": 1, + "position": [ + 600, + 600 + ], + "credentials": { + "s3": { + "id": "76", + "name": "S3 creds" + } + }, + "id": "8b2e8c9a-a7be-4c86-b3f5-d3f03c18a8e0" + } + ], + "connections": { + "S3": { + "main": [ + [ + { + "node": "S", + "type": "main", + "index": 0 + } + ] + ] + }, + "S": { + "main": [ + [ + { + "node": "S1", + "type": "main", + "index": 0 + } + ] + ] + }, + "S2": { + "main": [ + [ + { + "node": "S4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Read Binary File": { + "main": [ + [ + { + "node": "S2", + "type": "main", + "index": 0 + } + ] + ] + }, + "S4": { + "main": [ + [ + { + "node": "S5", + "type": "main", + "index": 0 + } + ] + ] + }, + "S5": { + "main": [ + [ + { + "node": "S6", + "type": "main", + "index": 0 + } + ] + ] + }, + "S6": { + "main": [ + [ + { + "node": "S7", + "type": "main", + "index": 0 + } + ] + ] + }, + "S7": { + "main": [ + [ + { + "node": "S8", + "type": "main", + "index": 0 + } + ] + ] + }, + "S9": { + "main": [ + [ + { + "node": "S10", + "type": "main", + "index": 0 + } + ] + ] + }, + "S10": { + "main": [ + [ + { + "node": "S11", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Read Binary File", + "type": "main", + "index": 0 + }, + { + "node": "S3", + "type": "main", + "index": 0 + }, + { + "node": "S9", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/90.json b/test-workflows/workflows/90.json new file mode 100644 index 0000000000..971225d878 --- /dev/null +++ b/test-workflows/workflows/90.json @@ -0,0 +1,220 @@ +{ + "createdAt": "2021-03-03T09:55:59.197Z", + "updatedAt": "2021-03-03T09:56:30.684Z", + "id": "90", + "name": "Date&Time:formatDate", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "9f4c1cf1-66f7-4a2e-86a3-0ef54cff1666" + }, + { + "parameters": { + "value": "1614764492648", + "options": { + "fromFormat": "x" + } + }, + "name": "Date & Time", + "type": "n8n-nodes-base.dateTime", + "typeVersion": 1, + "position": [ + 400, + 300 + ], + "id": "c1251fbd-cd97-4d51-bbf0-4ecce33e588a" + }, + { + "parameters": { + "value": "1614764492648", + "toFormat": "YYYY/MM/DD", + "options": { + "fromFormat": "x" + } + }, + "name": "Date & Time1", + "type": "n8n-nodes-base.dateTime", + "typeVersion": 1, + "position": [ + 550, + 300 + ], + "id": "57ab6614-af49-4555-8158-11ee5771b2e7" + }, + { + "parameters": { + "value": "1614764492648", + "toFormat": "MMMM DD YYYY", + "options": { + "fromFormat": "x" + } + }, + "name": "Date & Time2", + "type": "n8n-nodes-base.dateTime", + "typeVersion": 1, + "position": [ + 700, + 300 + ], + "id": "bf0a4b07-62ce-4234-8dfe-a2f582d40bd8" + }, + { + "parameters": { + "value": "1614764492648", + "toFormat": "MM-DD-YYYY", + "options": { + "fromFormat": "x" + } + }, + "name": "Date & Time3", + "type": "n8n-nodes-base.dateTime", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "id": "8b429a06-bce9-49d0-9277-038bc06c8463" + }, + { + "parameters": { + "value": "1614764492648", + "toFormat": "YYYY-MM-DD", + "options": { + "fromFormat": "x" + } + }, + "name": "Date & Time4", + "type": "n8n-nodes-base.dateTime", + "typeVersion": 1, + "position": [ + 1000, + 300 + ], + "id": "8e0681ff-dd9f-4e6d-83cf-18a1e72fe1e1" + }, + { + "parameters": { + "value": "1614764492648", + "toFormat": "X", + "options": { + "fromFormat": "x" + } + }, + "name": "Date & Time5", + "type": "n8n-nodes-base.dateTime", + "typeVersion": 1, + "position": [ + 1150, + 300 + ], + "id": "4917a56c-7455-4354-a018-cec74552e203" + }, + { + "parameters": { + "functionCode": "\n// mm/dd/yyyy\nif($node[\"Date & Time\"].json[\"data\"] !== \"03/03/2021\")\n{\n throw new Error(\"Error convert date to mm/dd/yyyy\");\n}\n// yyyy/mm/dd\nif($node[\"Date & Time1\"].json[\"data\"] !== \"2021/03/03\")\n{\n throw new Error(\"Error convert date to yyyy/mm/dd\");\n}\n// mmmm dd yyyy\nif($node[\"Date & Time2\"].json[\"data\"] !== \"March 03 2021\")\n{\n throw new Error(\"Error convert date to mmmm dd yyyy\");\n}\n// mm-dd-yyyy\nif($node[\"Date & Time3\"].json[\"data\"] !== \"03-03-2021\")\n{\n throw new Error(\"Error convert date to mm-dd-yyyy\");\n}\n// yyyy-mm-dd\nif($node[\"Date & Time4\"].json[\"data\"] !== \"2021-03-03\")\n{ \n throw new Error(\"Error convert date to yyyy-mm-dd\");\n}\n// unix timestamp\nif($node[\"Date & Time5\"].json[\"data\"] !== \"1614764492\")\n{ \n throw new Error(\"Error convert date to unix timestamp\");\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 1350, + 300 + ], + "id": "fe192bd8-40ce-4b2d-b467-837c1c208ee3" + } + ], + "connections": { + "Date & Time": { + "main": [ + [ + { + "node": "Date & Time1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Date & Time1": { + "main": [ + [ + { + "node": "Date & Time2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Date & Time2": { + "main": [ + [ + { + "node": "Date & Time3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Date & Time3": { + "main": [ + [ + { + "node": "Date & Time4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Date & Time4": { + "main": [ + [ + { + "node": "Date & Time5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Date & Time5": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Date & Time", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/91.json b/test-workflows/workflows/91.json new file mode 100644 index 0000000000..7d5813a167 --- /dev/null +++ b/test-workflows/workflows/91.json @@ -0,0 +1,200 @@ +{ + "createdAt": "2021-03-03T10:18:29.938Z", + "updatedAt": "2021-03-03T10:18:35.288Z", + "id": "91", + "name": "HTML Extract:json binary", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "51f39bec-0696-4ff7-93a8-26d105a5edfc" + }, + { + "parameters": { + "functionCode": "item.data = `\n\n\n\n
\"background
\"background
\"background

\n\t\t\t\t\t\tExtendable workflow automation\n\t\t\t\t\t

\"n8n
\n\t\tGithub\n\t
\"Play

\n\t\t\t\t\t\tWatch how simple it is to design a\n\t\t\t\t\t\tTypeform +\n\t\t\t\t\t\tGoogle Sheets +\n\t\t\t\t\t\tSlack workflow\n\t\t\t\t\t

Open icon

Open

\n\t\t\t\t\t\tThanks to our fair-code license, run n8n locally, or the cloud.\n\t\t\t\t\t\tDecide who gets access and where your data is stored.\n\t\t\t\t\t

Extendable icon

Extendable

\n\t\t\t\t\t\tEasy to augment with custom functions logic, and apps with minimal\n\t\t\t\t\t\tengineering effort.\n\t\t\t\t\t

Powerful icon

Powerful

\n\t\t\t\t\t\tn8n's node based editor lets you map anything to everything and go\n\t\t\t\t\t\tbeyond basic ETL.\n\t\t\t\t\t

What can I do with n8n?

Sync data between 150+ apps

\n\t\t\t\t\t\t\tMove and transform data between different apps and databases without getting caught up in API docs and troubleshooting CORS errors.\n\t\t\t\t\t\t

Design powerful workflows

Create custom integrations

\n\t\t\t\t\t\t\tSee what else you can do with n8n! Visit our\n\t\t\t\t\t\t\tMedium publication

How to get started?

\n\t\t\t\t\t\tCLI\n\t\t\t\t\t

\n\t\tClick to copy\n\t
\n\t\tClick to copy\n\t

\n\t\t\t\t\t\tDocker\n\t\t\t\t\t

\n\t\tClick to copy\n\t
\n\t\t\t\t\t\t\t\tn8n.cloud - our hosted offering is now in early access\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\tGet updates from n8n\n\t\t\t\t\t

Subscribe to our newsletter

\n\t\tBy submitting your email address you agree to your personal data being\n\t\tstored and used to provide you with information and commercial offers\n\t\tabout n8n.\n\t

\n
\n\n`;\nreturn item;" + }, + "name": "FunctionItem", + "type": "n8n-nodes-base.functionItem", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "notesInFlow": true, + "notes": "Set html data", + "id": "70ab3e66-cac8-45fd-917d-838e2538ad69" + }, + { + "parameters": { + "extractionValues": { + "values": [ + { + "key": "extracted", + "cssSelector": "li>a", + "returnArray": true + } + ] + }, + "options": { + "trimValues": true + } + }, + "name": "HTML Extract", + "type": "n8n-nodes-base.htmlExtract", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "f27a2f9c-1946-4cac-96fe-d980fe2e5077" + }, + { + "parameters": { + "functionCode": "testData = [ \"Quickstart\", \"Apps & nodes\", \"Workflows\", \"Docs\", \"Github\", \"Forum\", \"Blog\", \"Contribute\", \"n8n.cloud\", \"Sign in\", \"Register\", \"Quickstart\", \"Apps & nodes\", \"Workflows\", \"Docs\", \"Github\", \"Forum\", \"Blog\", \"Contribute\", \"n8n.cloud\", \"Sign in\", \"Register\" ].join('');\nresultData = $node[\"HTML Extract\"].json[\"extracted\"].join('')\nif(testData !== resultData){\n throw new Error('Error in extracting html from json data');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 850, + 300 + ], + "notesInFlow": true, + "notes": "Verify the result", + "id": "97bc0163-8d74-4f5b-b65c-ec1354333908" + }, + { + "parameters": { + "mode": "jsonToBinary", + "convertAllData": false, + "options": { + "useRawData": true + } + }, + "name": "Move Binary Data", + "type": "n8n-nodes-base.moveBinaryData", + "typeVersion": 1, + "position": [ + 650, + 500 + ], + "id": "c25511ef-8cbc-4d29-bc2f-3983d900e802" + }, + { + "parameters": { + "sourceData": "binary", + "extractionValues": { + "values": [ + { + "key": "extracted", + "cssSelector": "li>a", + "returnArray": true + } + ] + }, + "options": { + "trimValues": true + } + }, + "name": "HTML Extract1", + "type": "n8n-nodes-base.htmlExtract", + "typeVersion": 1, + "position": [ + 850, + 500 + ], + "id": "9df0c1ed-008b-4820-958f-c87330a9000d" + }, + { + "parameters": { + "functionCode": "testData = [ \"Quickstart\", \"Apps & nodes\", \"Workflows\", \"Docs\", \"Github\", \"Forum\", \"Blog\", \"Contribute\", \"n8n.cloud\", \"Sign in\", \"Register\", \"Quickstart\", \"Apps & nodes\", \"Workflows\", \"Docs\", \"Github\", \"Forum\", \"Blog\", \"Contribute\", \"n8n.cloud\", \"Sign in\", \"Register\" ].join('');\nresultData = $node[\"HTML Extract1\"].json[\"extracted\"].join('')\nif(testData !== resultData){\n throw new Error('Error in extracting html from binary data');\n}\nreturn items;" + }, + "name": "Function1", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 1050, + 500 + ], + "notesInFlow": true, + "notes": "Verify the result", + "id": "a36ed52d-5256-4cbf-b96f-596574b092fc" + } + ], + "connections": { + "FunctionItem": { + "main": [ + [ + { + "node": "HTML Extract", + "type": "main", + "index": 0 + }, + { + "node": "Move Binary Data", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "FunctionItem", + "type": "main", + "index": 0 + } + ] + ] + }, + "HTML Extract": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Move Binary Data": { + "main": [ + [ + { + "node": "HTML Extract1", + "type": "main", + "index": 0 + } + ] + ] + }, + "HTML Extract1": { + "main": [ + [ + { + "node": "Function1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/92.json b/test-workflows/workflows/92.json new file mode 100644 index 0000000000..fd073c27c5 --- /dev/null +++ b/test-workflows/workflows/92.json @@ -0,0 +1,864 @@ +{ + "createdAt": "2021-03-03T12:12:08.076Z", + "updatedAt": "2021-03-03T12:18:09.812Z", + "id": "92", + "name": "IF", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 260, + 300 + ], + "id": "6ae1c6d7-2986-491e-9657-e173e8c700e0" + }, + { + "parameters": { + "conditions": { + "boolean": [ + { + "value1": true, + "operation": "notEqual" + } + ] + } + }, + "name": "IF", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 450, + 100 + ], + "id": "744cd7d3-fe05-416b-afe4-3fd9f02d684b" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [ + { + "value1": "2021-03-01T23:00:00.000Z", + "value2": "2021-02-28T23:00:00.000Z" + } + ] + } + }, + "name": "IF1", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 450, + 250 + ], + "id": "d9d7145d-0f47-4ac1-b51d-cae45a77cbab" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [ + { + "value1": 5, + "value2": 10 + } + ] + } + }, + "name": "IF2", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 450, + 410 + ], + "id": "dceb69ae-c2d9-4a0a-aeb9-3ef388e64005" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [], + "string": [ + { + "value1": "n8n.io", + "operation": "contains", + "value2": "io" + } + ] + } + }, + "name": "IF3", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 450, + 670 + ], + "id": "9c377027-9b03-4d11-8405-f13c773efff1" + }, + { + "parameters": { + "conditions": { + "boolean": [ + { + "value1": true, + "value2": true + } + ] + } + }, + "name": "IF4", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 620, + 100 + ], + "id": "c790a2e9-20de-45b9-b5be-f7d78e8f8e01" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [ + { + "value1": "2021-02-27T23:00:00.000Z", + "operation": "before", + "value2": "2021-02-28T23:00:00.000Z" + } + ] + } + }, + "name": "IF5", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 610, + 250 + ], + "id": "acc6b0b6-539c-4fdb-8275-da2ad32e18e5" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [ + { + "value1": 5, + "operation": "smallerEqual", + "value2": 5 + } + ] + } + }, + "name": "IF6", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 600, + 410 + ], + "id": "2132f7b3-cebc-4873-9eff-8b17e678947f" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [ + { + "value1": 5, + "operation": "equal", + "value2": 5 + } + ] + } + }, + "name": "IF7", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 750, + 410 + ], + "id": "668ff49b-0ab6-476e-987c-23ad3e31f01a" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [ + { + "value1": 6, + "operation": "notEqual", + "value2": 5 + } + ] + } + }, + "name": "IF8", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 900, + 410 + ], + "id": "86cb816b-0a96-4e04-baca-6fd0b81963bd" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [ + { + "value1": 6, + "operation": "larger", + "value2": 5 + } + ] + } + }, + "name": "IF9", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 1050, + 410 + ], + "id": "c7b5d37c-ef3d-4e52-b577-61e07b741943" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [ + { + "value1": 6, + "operation": "largerEqual", + "value2": 5 + } + ] + } + }, + "name": "IF10", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 1200, + 410 + ], + "id": "9058992b-0369-43fb-b03b-566a891e111b" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [], + "string": [ + { + "value1": "n8n.io", + "operation": "endsWith", + "value2": "io" + } + ] + } + }, + "name": "IF11", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 600, + 670 + ], + "id": "e59a8821-d56d-445f-948f-cdbf113d7185" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [], + "string": [ + { + "value1": "n8n", + "value2": "n8n" + } + ] + } + }, + "name": "IF12", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 750, + 670 + ], + "id": "e30e0fda-749f-4fa1-84d3-f662b35d14cd" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [], + "string": [ + { + "value1": "n8n", + "operation": "notContains", + "value2": "9" + } + ] + } + }, + "name": "IF13", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 900, + 670 + ], + "id": "680373c4-912e-4c35-8dd4-6682cc215914" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [], + "string": [ + { + "value1": "n8n", + "operation": "notEqual", + "value2": "n9n" + } + ] + } + }, + "name": "IF14", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 1050, + 670 + ], + "id": "1883b843-2bd0-44f1-8e1f-f371dcbb6276" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [], + "string": [ + { + "value1": "n8n", + "operation": "regex", + "value2": "/n[1-8]n/i" + } + ] + } + }, + "name": "IF15", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 1200, + 670 + ], + "id": "7b167295-0811-4aa6-a769-beaac7f91a24" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [], + "string": [ + { + "value1": "n8n.io", + "operation": "startsWith", + "value2": "n8n" + } + ] + } + }, + "name": "IF16", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 1350, + 670 + ], + "id": "39c6a9fd-c9ea-4528-b8ac-c9461e053ef5" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [], + "string": [ + { + "operation": "isEmpty" + } + ] + } + }, + "name": "IF17", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 1500, + 670 + ], + "id": "e0b3a955-6f8d-4a7b-bd09-8eb779d9bd42" + }, + { + "parameters": { + "conditions": { + "boolean": [], + "dateTime": [], + "number": [ + { + "value1": "={{}}", + "operation": "isEmpty" + } + ] + } + }, + "name": "IF18", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [ + 1350, + 410 + ], + "id": "1b87e5de-dd4e-40b5-b54c-4402edd94462" + }, + { + "parameters": { + "functionCode": "throw Error('Problem in boolean statement');\n" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 800, + 90 + ], + "notesInFlow": true, + "notes": "Boolean Error", + "id": "a2347b9b-db80-4e15-8863-32288e42f3d1" + }, + { + "parameters": { + "functionCode": "throw Error('Problem in Date&Time statement');\n" + }, + "name": "Function1", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 790, + 250 + ], + "notesInFlow": true, + "notes": "Date&Time Error", + "id": "95f68b92-15db-48db-89a4-9c8e0465be49" + }, + { + "parameters": { + "functionCode": "throw Error('Problem in Number statement');\n" + }, + "name": "Function2", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 840, + 540 + ], + "notesInFlow": true, + "notes": "Number Error", + "id": "33a9a8db-7c54-4154-ad8c-b03050b9341c" + }, + { + "parameters": { + "functionCode": "throw Error('Problem in String comparison statement');\n" + }, + "name": "Function3", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 970, + 840 + ], + "notesInFlow": true, + "notes": "String Error", + "id": "919cfdb2-72b2-41b5-aaaf-5df780fe57ba" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "IF", + "type": "main", + "index": 0 + }, + { + "node": "IF1", + "type": "main", + "index": 0 + }, + { + "node": "IF2", + "type": "main", + "index": 0 + }, + { + "node": "IF3", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF": { + "main": [ + [ + { + "node": "IF4", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF1": { + "main": [ + [ + { + "node": "IF5", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function1", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF2": { + "main": [ + [ + { + "node": "IF6", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF4": { + "main": [ + [], + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF5": { + "main": [ + [], + [ + { + "node": "Function1", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF10": { + "main": [ + [ + { + "node": "IF18", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF9": { + "main": [ + [ + { + "node": "IF10", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF8": { + "main": [ + [ + { + "node": "IF9", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF7": { + "main": [ + [ + { + "node": "IF8", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF6": { + "main": [ + [ + { + "node": "IF7", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF3": { + "main": [ + [ + { + "node": "IF11", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF11": { + "main": [ + [ + { + "node": "IF12", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF12": { + "main": [ + [ + { + "node": "IF13", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF13": { + "main": [ + [ + { + "node": "IF14", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF14": { + "main": [ + [ + { + "node": "IF15", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF15": { + "main": [ + [ + { + "node": "IF16", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF16": { + "main": [ + [ + { + "node": "IF17", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF18": { + "main": [ + [], + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "IF17": { + "main": [ + [], + [ + { + "node": "Function3", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/93.json b/test-workflows/workflows/93.json new file mode 100644 index 0000000000..124dd0f7d5 --- /dev/null +++ b/test-workflows/workflows/93.json @@ -0,0 +1,130 @@ +{ + "createdAt": "2021-03-03T13:27:06.481Z", + "updatedAt": "2021-03-03T13:32:50.258Z", + "id": "93", + "name": "Move Binary Data:toJSON:toBinary", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "490486f2-7ea9-410e-9281-84cd27836115" + }, + { + "parameters": { + "mode": "jsonToBinary", + "options": {} + }, + "name": "Move Binary Data", + "type": "n8n-nodes-base.moveBinaryData", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "id": "9ddb3642-7086-4f67-8b20-9255bc2b99cc" + }, + { + "parameters": { + "functionCode": "item = {\n name:'test',\n indexes:[1,2,3],\n subobj:{\n name:'subtest'\n }\n};\nreturn item;" + }, + "name": "FunctionItem", + "type": "n8n-nodes-base.functionItem", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "notesInFlow": true, + "notes": "Set json data", + "id": "8c99a563-2438-4822-b35d-3016c7524c50" + }, + { + "parameters": { + "options": {} + }, + "name": "Move Binary Data1", + "type": "n8n-nodes-base.moveBinaryData", + "typeVersion": 1, + "position": [ + 750, + 300 + ], + "id": "43d6faba-afc5-45bd-b477-a28054b75ddf" + }, + { + "parameters": { + "functionCode": "if(JSON.stringify($node['FunctionItem'].json)!==JSON.stringify($node['Move Binary Data1'].json)){\n throw new Error('Problem in move binary node');\n}\n\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 900, + 300 + ], + "notesInFlow": true, + "notes": "Evaluate the conversion result", + "id": "e4fbc1b7-b88e-49c3-bb0c-9dda8a447617" + } + ], + "connections": { + "Move Binary Data": { + "main": [ + [ + { + "node": "Move Binary Data1", + "type": "main", + "index": 0 + } + ] + ] + }, + "FunctionItem": { + "main": [ + [ + { + "node": "Move Binary Data", + "type": "main", + "index": 0 + } + ] + ] + }, + "Move Binary Data1": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "FunctionItem", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/94.json b/test-workflows/workflows/94.json new file mode 100644 index 0000000000..48f6898537 --- /dev/null +++ b/test-workflows/workflows/94.json @@ -0,0 +1,128 @@ +{ + "createdAt": "2021-03-03T14:18:03.010Z", + "updatedAt": "2021-03-03T14:18:09.549Z", + "id": "94", + "name": "XML:toJSON:toXML", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "50d8428b-c132-49cb-8f4c-2eeba448d666" + }, + { + "parameters": { + "mode": "jsonToxml", + "options": {} + }, + "name": "XML", + "type": "n8n-nodes-base.xml", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "id": "664b8c25-5107-4715-a463-9a954965c096" + }, + { + "parameters": { + "functionCode": "item= {\n name:'testing xml',\n arr:[{key:'item1'},{key:'item2'}],\n subobj:{\n arr:[1,2,3,4,5],\n secondarr:[{key:'subitem1'},{key:'subitem2'},{key:'subitem3'}]\n }\n};\nreturn item;" + }, + "name": "FunctionItem", + "type": "n8n-nodes-base.functionItem", + "typeVersion": 1, + "position": [ + 450, + 300 + ], + "id": "dfb38369-2fb3-4d92-b843-b663b3a4675a" + }, + { + "parameters": { + "options": { + "explicitRoot": false + } + }, + "name": "XML1", + "type": "n8n-nodes-base.xml", + "typeVersion": 1, + "position": [ + 800, + 350 + ], + "id": "7085c1d8-a216-47a7-98d1-2f5e9e3eda47" + }, + { + "parameters": { + "functionCode": "if(JSON.stringify($node['FunctionItem'].json) !== JSON.stringify($node['XML1'].json) ){\n throw new Error('Problem in XML conversion');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 990, + 350 + ], + "id": "f03b8331-fa37-4aeb-97c9-0a3514942f96" + } + ], + "connections": { + "XML": { + "main": [ + [ + { + "node": "XML1", + "type": "main", + "index": 0 + } + ] + ] + }, + "FunctionItem": { + "main": [ + [ + { + "node": "XML", + "type": "main", + "index": 0 + } + ] + ] + }, + "XML1": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "FunctionItem", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/95.json b/test-workflows/workflows/95.json new file mode 100644 index 0000000000..0ccca2a152 --- /dev/null +++ b/test-workflows/workflows/95.json @@ -0,0 +1,87 @@ +{ + "createdAt": "2021-03-03T14:28:28.227Z", + "updatedAt": "2021-03-03T14:28:29.476Z", + "id": "95", + "name": "Set", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "32be2fcf-b143-442e-877f-96b51b0b5148" + }, + { + "parameters": { + "values": { + "string": [ + { + "name": "name", + "value": "test" + } + ] + }, + "options": {} + }, + "name": "Set", + "type": "n8n-nodes-base.set", + "typeVersion": 1, + "position": [ + 430, + 300 + ], + "id": "17c6fa30-1a0e-4d29-8c73-ef9357d5f877" + }, + { + "parameters": { + "functionCode": "testData = JSON.stringify({\n name: \"test\"\n});\n\nif(JSON.stringify($node['Set'].json)!==testData){\n throw new Error('Error in Set node');\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 600, + 300 + ], + "notesInFlow": true, + "notes": "Verify the result of set node", + "id": "c6e9a289-5551-4db5-8d32-a11953bc92d6" + } + ], + "connections": { + "Set": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Set", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/96.json b/test-workflows/workflows/96.json new file mode 100644 index 0000000000..c962fcb822 --- /dev/null +++ b/test-workflows/workflows/96.json @@ -0,0 +1,86 @@ +{ + "createdAt": "2021-03-03T14:48:52.147Z", + "updatedAt": "2021-03-03T14:49:01.728Z", + "id": "96", + "name": "MessageBird:Sms:send:Balance:get", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "a19a2b96-9d4e-40dc-ae19-ffa7d1de094c" + }, + { + "parameters": { + "resource": "balance" + }, + "name": "MessageBird", + "type": "n8n-nodes-base.messageBird", + "typeVersion": 1, + "position": [ + 500, + 240 + ], + "credentials": { + "messageBirdApi": { + "id": "61", + "name": "MessageBird creds" + } + }, + "id": "ab3e0402-21cc-4699-8ba3-b995dd5f17bc" + }, + { + "parameters": { + "originator": "4930270504079 ", + "recipients": "4930270504079 ", + "message": "TestMessage", + "additionalFields": {} + }, + "name": "MessageBird1", + "type": "n8n-nodes-base.messageBird", + "typeVersion": 1, + "position": [ + 500, + 400 + ], + "credentials": { + "messageBirdApi": { + "id": "61", + "name": "MessageBird creds" + } + }, + "id": "67922f27-a0c3-49c9-a48f-98495a45e9e3" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "MessageBird", + "type": "main", + "index": 0 + }, + { + "node": "MessageBird1", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/97.json b/test-workflows/workflows/97.json new file mode 100644 index 0000000000..e61733b956 --- /dev/null +++ b/test-workflows/workflows/97.json @@ -0,0 +1,500 @@ +{ + "createdAt": "2024-02-14T09:47:52.295Z", + "updatedAt": "2024-02-14T09:47:52.295Z", + "id": "97", + "name": "Crypto", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 880, + 760 + ], + "id": "17f0290e-2fc4-4bb8-a8fe-da8b0ad82d11" + }, + { + "parameters": { + "type": "SHA256", + "value": "n8n" + }, + "name": "Crypto1", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1380, + 560 + ], + "id": "8853a37b-fcf3-4ac7-913e-964a48497339" + }, + { + "parameters": { + "type": "SHA384", + "value": "n8n" + }, + "name": "Crypto2", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1530, + 560 + ], + "id": "cf4718ee-852d-48f0-b96e-048283221cbd" + }, + { + "parameters": { + "type": "SHA512", + "value": "n8n" + }, + "name": "Crypto3", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1680, + 560 + ], + "id": "8d05e80a-e7ff-4ae8-9f04-8a4f33579308" + }, + { + "parameters": { + "functionCode": "testData = ['5877e26c078d6409fde54d508bf25721','636396f02b6571e40d8fe91cba550515c0cdc0e7d314c210e00b02256375a796','c7049c8950ea211bec236edffb37cbecf2aa338443c5e048c1cbb4e2ee20eb60fa9a1d34699d7a86e7362b010bb4ffe7','a8a7eec953f1f31484a479c84982d52847de602d7f220ac3903518369a7536693d60882e5eb782599e72024fb649cc03aa0a19ebce632e9039b4f604335834af']\n\nfor(let i=0;i<4;i++){\n if($node[`Crypto${i}`].json['data'] !== testData[i]){\n throw new Error(`Error in HASH: ${$node[`Crypto${i}`].parameter[\"type\"]} operation`);\n }\n}\nreturn items;" + }, + "name": "Function", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 1880, + 560 + ], + "notesInFlow": true, + "id": "d4232a52-6eed-494e-b99a-13668c58f05b", + "notes": "Verify hash values" + }, + { + "parameters": { + "value": "n8n" + }, + "name": "Crypto0", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1230, + 560 + ], + "id": "3c6f13f3-1202-4629-be6d-8a2ecd973752" + }, + { + "parameters": { + "action": "hmac", + "value": "n8n", + "secret": "secrect" + }, + "name": "Crypto4", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1230, + 710 + ], + "id": "9cc4ea7c-2c71-4a2c-bdb8-208576381724" + }, + { + "parameters": { + "action": "hmac", + "type": "SHA256", + "value": "n8n", + "secret": "secrect" + }, + "name": "Crypto5", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1380, + 710 + ], + "id": "0b318b49-fd2f-4ad7-9927-4048ad87009d" + }, + { + "parameters": { + "action": "hmac", + "type": "SHA384", + "value": "n8n", + "secret": "secrect" + }, + "name": "Crypto6", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1530, + 710 + ], + "id": "e4fc0137-576a-4401-8caf-5198ab0970e9" + }, + { + "parameters": { + "action": "hmac", + "type": "SHA512", + "value": "n8n", + "secret": "secrect" + }, + "name": "Crypto7", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1680, + 710 + ], + "id": "f1193f43-762d-4659-9444-ebea098c897e" + }, + { + "parameters": { + "functionCode": "testData = ['3fb7c95bca84c0bf49045b4e6a279dc0','a8066096944b87daa8d0459629d8f3958d35fa453c310e7370b619d0b81ce48e','08bec8212275cd79a1c6bf52cad5b31ccd46ec87c7a8a9d1c8589c816f8a7124313528040b138229e15c32c1b3c82b80','0f53f3a374314123991b32e47159ad44e1c61d1c0e96809c1f19d54a5e955c06d5b633f376f2a8419e36ea4b63346fcb39d389714c344771140fd512ac55723a']\n\nfor(let i=4;i<8;i++){\n if($node[`Crypto${i}`].json['data'] !== testData[i-4]){\n throw new Error(`Error in Hmac: ${$node[`Crypto${i}`].parameter[\"type\"]} operation`);\n }\n}\nreturn items;" + }, + "name": "Function1", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 1880, + 710 + ], + "notesInFlow": true, + "id": "b4c78dc0-9064-4de6-9c9d-1e6d6ce4b716", + "notes": "Verify hmac values" + }, + { + "parameters": { + "action": "sign", + "value": "n8n", + "algorithm": "ripemd", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDuY4lRGHHAW9mXYY57m/CUzM4zqQ1e0W9D3e76YpipgF6rWtUn\nS8aSD+DxGxp4MldazZTwPPcpJHcV/Hr3A/KezsY9aOpXdnUdquV85969OgyGCRJk\nBv2gowSGfy4ueomfm4PFTPF0anPir+X1IZzAyzO6igL5ZE0Y5rcVrOgLKwIDAQAB\nAoGARfQ4he8d5jwt0HHkzVoX0Zp+AgPgNAxSUcCNEbWgJdFRNoh7l0HxvcfiEu6I\nqG/hWXiNdaf2QYD9XxrNfLIQXj+2MVOh4wpeqbO1DlqiGa9J8y7rLOVO+64ODXGt\nbZns6kcWLx8gYnhwqIJHnqfzvAsFjEKuKiSxpyeK8EvjDW0CQQD91J9DzhSXyvwE\nNaZT4Y9BcEbazVv+xUVhkSs7WRWStimeb57eIrIcXPE9heiT+6QpAnm6EZQR7RWN\n48PiAfbnAkEA8G0gwMWsnpmtb9VbF2uuQxs4Bw5Nuzb6l/+0zTqMELSVCaHIGnxk\nkV08NHfnck1jp1RU9MiUFI1yfRrN6vz1HQJBAMWQ8w3Rn1Gumo2kPHvZeqlSfLPd\nV5drcF9KoL2mzxXMV4SMGLmJg9xzswlR6v8TxGhvFtPuzrNNN5OjDlohcU0CQBOC\nZ3P9FmLQSZiXkYq2/C8J2GQKLxiP/4myADPfGlqIrMdZT2mGyopZLHd9e1R1Hy8G\n0tYCKLH6QF4SfL8iw6kCQCV81eZ/3JthrEfsIMv9lxvTLaRrprI5Eei8Rl+cFhNH\nziv/tOUxppOn1SkHvxXni5F5dbNR9u4mjaCLDau+qIg=\n-----END RSA PRIVATE KEY-----" + }, + "name": "Crypto11", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1400, + 900 + ], + "alwaysOutputData": true, + "id": "95830d32-cbdc-4fe9-914b-0b799ff503a7" + }, + { + "parameters": { + "action": "sign", + "value": "n8n", + "algorithm": "ripemd160", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDuY4lRGHHAW9mXYY57m/CUzM4zqQ1e0W9D3e76YpipgF6rWtUn\nS8aSD+DxGxp4MldazZTwPPcpJHcV/Hr3A/KezsY9aOpXdnUdquV85969OgyGCRJk\nBv2gowSGfy4ueomfm4PFTPF0anPir+X1IZzAyzO6igL5ZE0Y5rcVrOgLKwIDAQAB\nAoGARfQ4he8d5jwt0HHkzVoX0Zp+AgPgNAxSUcCNEbWgJdFRNoh7l0HxvcfiEu6I\nqG/hWXiNdaf2QYD9XxrNfLIQXj+2MVOh4wpeqbO1DlqiGa9J8y7rLOVO+64ODXGt\nbZns6kcWLx8gYnhwqIJHnqfzvAsFjEKuKiSxpyeK8EvjDW0CQQD91J9DzhSXyvwE\nNaZT4Y9BcEbazVv+xUVhkSs7WRWStimeb57eIrIcXPE9heiT+6QpAnm6EZQR7RWN\n48PiAfbnAkEA8G0gwMWsnpmtb9VbF2uuQxs4Bw5Nuzb6l/+0zTqMELSVCaHIGnxk\nkV08NHfnck1jp1RU9MiUFI1yfRrN6vz1HQJBAMWQ8w3Rn1Gumo2kPHvZeqlSfLPd\nV5drcF9KoL2mzxXMV4SMGLmJg9xzswlR6v8TxGhvFtPuzrNNN5OjDlohcU0CQBOC\nZ3P9FmLQSZiXkYq2/C8J2GQKLxiP/4myADPfGlqIrMdZT2mGyopZLHd9e1R1Hy8G\n0tYCKLH6QF4SfL8iw6kCQCV81eZ/3JthrEfsIMv9lxvTLaRrprI5Eei8Rl+cFhNH\nziv/tOUxppOn1SkHvxXni5F5dbNR9u4mjaCLDau+qIg=\n-----END RSA PRIVATE KEY-----" + }, + "name": "Crypto12", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1580, + 900 + ], + "alwaysOutputData": true, + "id": "66906a33-ae4d-4e65-b809-614fecbc2c56" + }, + { + "parameters": { + "action": "sign", + "value": "n8n", + "algorithm": "rmd160", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDuY4lRGHHAW9mXYY57m/CUzM4zqQ1e0W9D3e76YpipgF6rWtUn\nS8aSD+DxGxp4MldazZTwPPcpJHcV/Hr3A/KezsY9aOpXdnUdquV85969OgyGCRJk\nBv2gowSGfy4ueomfm4PFTPF0anPir+X1IZzAyzO6igL5ZE0Y5rcVrOgLKwIDAQAB\nAoGARfQ4he8d5jwt0HHkzVoX0Zp+AgPgNAxSUcCNEbWgJdFRNoh7l0HxvcfiEu6I\nqG/hWXiNdaf2QYD9XxrNfLIQXj+2MVOh4wpeqbO1DlqiGa9J8y7rLOVO+64ODXGt\nbZns6kcWLx8gYnhwqIJHnqfzvAsFjEKuKiSxpyeK8EvjDW0CQQD91J9DzhSXyvwE\nNaZT4Y9BcEbazVv+xUVhkSs7WRWStimeb57eIrIcXPE9heiT+6QpAnm6EZQR7RWN\n48PiAfbnAkEA8G0gwMWsnpmtb9VbF2uuQxs4Bw5Nuzb6l/+0zTqMELSVCaHIGnxk\nkV08NHfnck1jp1RU9MiUFI1yfRrN6vz1HQJBAMWQ8w3Rn1Gumo2kPHvZeqlSfLPd\nV5drcF9KoL2mzxXMV4SMGLmJg9xzswlR6v8TxGhvFtPuzrNNN5OjDlohcU0CQBOC\nZ3P9FmLQSZiXkYq2/C8J2GQKLxiP/4myADPfGlqIrMdZT2mGyopZLHd9e1R1Hy8G\n0tYCKLH6QF4SfL8iw6kCQCV81eZ/3JthrEfsIMv9lxvTLaRrprI5Eei8Rl+cFhNH\nziv/tOUxppOn1SkHvxXni5F5dbNR9u4mjaCLDau+qIg=\n-----END RSA PRIVATE KEY-----" + }, + "name": "Crypto13", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1780, + 900 + ], + "alwaysOutputData": true, + "id": "6832df1e-f3ff-479a-ac25-f04ed8be05ac" + }, + { + "parameters": { + "action": "sign", + "value": "n8n", + "algorithm": "sha1", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDuY4lRGHHAW9mXYY57m/CUzM4zqQ1e0W9D3e76YpipgF6rWtUn\nS8aSD+DxGxp4MldazZTwPPcpJHcV/Hr3A/KezsY9aOpXdnUdquV85969OgyGCRJk\nBv2gowSGfy4ueomfm4PFTPF0anPir+X1IZzAyzO6igL5ZE0Y5rcVrOgLKwIDAQAB\nAoGARfQ4he8d5jwt0HHkzVoX0Zp+AgPgNAxSUcCNEbWgJdFRNoh7l0HxvcfiEu6I\nqG/hWXiNdaf2QYD9XxrNfLIQXj+2MVOh4wpeqbO1DlqiGa9J8y7rLOVO+64ODXGt\nbZns6kcWLx8gYnhwqIJHnqfzvAsFjEKuKiSxpyeK8EvjDW0CQQD91J9DzhSXyvwE\nNaZT4Y9BcEbazVv+xUVhkSs7WRWStimeb57eIrIcXPE9heiT+6QpAnm6EZQR7RWN\n48PiAfbnAkEA8G0gwMWsnpmtb9VbF2uuQxs4Bw5Nuzb6l/+0zTqMELSVCaHIGnxk\nkV08NHfnck1jp1RU9MiUFI1yfRrN6vz1HQJBAMWQ8w3Rn1Gumo2kPHvZeqlSfLPd\nV5drcF9KoL2mzxXMV4SMGLmJg9xzswlR6v8TxGhvFtPuzrNNN5OjDlohcU0CQBOC\nZ3P9FmLQSZiXkYq2/C8J2GQKLxiP/4myADPfGlqIrMdZT2mGyopZLHd9e1R1Hy8G\n0tYCKLH6QF4SfL8iw6kCQCV81eZ/3JthrEfsIMv9lxvTLaRrprI5Eei8Rl+cFhNH\nziv/tOUxppOn1SkHvxXni5F5dbNR9u4mjaCLDau+qIg=\n-----END RSA PRIVATE KEY-----" + }, + "name": "Crypto14", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 2040, + 900 + ], + "alwaysOutputData": true, + "id": "4549f4f2-eadb-4df0-8e27-701d62f7d750" + }, + { + "parameters": { + "action": "sign", + "value": "n8n", + "algorithm": "sha224", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDuY4lRGHHAW9mXYY57m/CUzM4zqQ1e0W9D3e76YpipgF6rWtUn\nS8aSD+DxGxp4MldazZTwPPcpJHcV/Hr3A/KezsY9aOpXdnUdquV85969OgyGCRJk\nBv2gowSGfy4ueomfm4PFTPF0anPir+X1IZzAyzO6igL5ZE0Y5rcVrOgLKwIDAQAB\nAoGARfQ4he8d5jwt0HHkzVoX0Zp+AgPgNAxSUcCNEbWgJdFRNoh7l0HxvcfiEu6I\nqG/hWXiNdaf2QYD9XxrNfLIQXj+2MVOh4wpeqbO1DlqiGa9J8y7rLOVO+64ODXGt\nbZns6kcWLx8gYnhwqIJHnqfzvAsFjEKuKiSxpyeK8EvjDW0CQQD91J9DzhSXyvwE\nNaZT4Y9BcEbazVv+xUVhkSs7WRWStimeb57eIrIcXPE9heiT+6QpAnm6EZQR7RWN\n48PiAfbnAkEA8G0gwMWsnpmtb9VbF2uuQxs4Bw5Nuzb6l/+0zTqMELSVCaHIGnxk\nkV08NHfnck1jp1RU9MiUFI1yfRrN6vz1HQJBAMWQ8w3Rn1Gumo2kPHvZeqlSfLPd\nV5drcF9KoL2mzxXMV4SMGLmJg9xzswlR6v8TxGhvFtPuzrNNN5OjDlohcU0CQBOC\nZ3P9FmLQSZiXkYq2/C8J2GQKLxiP/4myADPfGlqIrMdZT2mGyopZLHd9e1R1Hy8G\n0tYCKLH6QF4SfL8iw6kCQCV81eZ/3JthrEfsIMv9lxvTLaRrprI5Eei8Rl+cFhNH\nziv/tOUxppOn1SkHvxXni5F5dbNR9u4mjaCLDau+qIg=\n-----END RSA PRIVATE KEY-----" + }, + "name": "Crypto15", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 2170, + 900 + ], + "alwaysOutputData": true, + "id": "07643489-a8fa-40c7-a1df-b3b910a5c83a" + }, + { + "parameters": { + "action": "sign", + "value": "n8n", + "algorithm": "sha256", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDuY4lRGHHAW9mXYY57m/CUzM4zqQ1e0W9D3e76YpipgF6rWtUn\nS8aSD+DxGxp4MldazZTwPPcpJHcV/Hr3A/KezsY9aOpXdnUdquV85969OgyGCRJk\nBv2gowSGfy4ueomfm4PFTPF0anPir+X1IZzAyzO6igL5ZE0Y5rcVrOgLKwIDAQAB\nAoGARfQ4he8d5jwt0HHkzVoX0Zp+AgPgNAxSUcCNEbWgJdFRNoh7l0HxvcfiEu6I\nqG/hWXiNdaf2QYD9XxrNfLIQXj+2MVOh4wpeqbO1DlqiGa9J8y7rLOVO+64ODXGt\nbZns6kcWLx8gYnhwqIJHnqfzvAsFjEKuKiSxpyeK8EvjDW0CQQD91J9DzhSXyvwE\nNaZT4Y9BcEbazVv+xUVhkSs7WRWStimeb57eIrIcXPE9heiT+6QpAnm6EZQR7RWN\n48PiAfbnAkEA8G0gwMWsnpmtb9VbF2uuQxs4Bw5Nuzb6l/+0zTqMELSVCaHIGnxk\nkV08NHfnck1jp1RU9MiUFI1yfRrN6vz1HQJBAMWQ8w3Rn1Gumo2kPHvZeqlSfLPd\nV5drcF9KoL2mzxXMV4SMGLmJg9xzswlR6v8TxGhvFtPuzrNNN5OjDlohcU0CQBOC\nZ3P9FmLQSZiXkYq2/C8J2GQKLxiP/4myADPfGlqIrMdZT2mGyopZLHd9e1R1Hy8G\n0tYCKLH6QF4SfL8iw6kCQCV81eZ/3JthrEfsIMv9lxvTLaRrprI5Eei8Rl+cFhNH\nziv/tOUxppOn1SkHvxXni5F5dbNR9u4mjaCLDau+qIg=\n-----END RSA PRIVATE KEY-----" + }, + "name": "Crypto16", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 2300, + 900 + ], + "alwaysOutputData": true, + "id": "bde3009c-b253-4ff6-b7bc-89d3b02ef2b6" + }, + { + "parameters": { + "functionCode": "testData = [\n '9d0bc120a967882743370f715dfa90789c4d9322a4faf691d1f80b306c6bd900bfcba5f62946ef88ba7e1fdd008ff3efe8545b979299b14e0e0eccd3e33b1afa11397494526e31968f13d2ac3e3deaa2bc4a27862b7025444c91ebed5f1b98d2c0390630d8eabc6a7662a9ab069cb3aab273ae1c09f20f51fa8e04af4bcccbc6',\n '0b494c8146f7efd7aa53b418a7057a3a57317a0380c06c7d18114077a03fc6441b57ca8c03edff4ca6fdc2394d026893258b97d34bf0c5c44bc20bd264899eb1316da1e624db1455c73c9054ff732464f775b473b3ba67250ffd74ee42b1acfdf5539bf793d7002327d8d156424444624a625f8dd3f013d40a7ba7b6726186a9',\n '0b494c8146f7efd7aa53b418a7057a3a57317a0380c06c7d18114077a03fc6441b57ca8c03edff4ca6fdc2394d026893258b97d34bf0c5c44bc20bd264899eb1316da1e624db1455c73c9054ff732464f775b473b3ba67250ffd74ee42b1acfdf5539bf793d7002327d8d156424444624a625f8dd3f013d40a7ba7b6726186a9',\n '0b494c8146f7efd7aa53b418a7057a3a57317a0380c06c7d18114077a03fc6441b57ca8c03edff4ca6fdc2394d026893258b97d34bf0c5c44bc20bd264899eb1316da1e624db1455c73c9054ff732464f775b473b3ba67250ffd74ee42b1acfdf5539bf793d7002327d8d156424444624a625f8dd3f013d40a7ba7b6726186a9',\n 'b9d0c7c4acb8ef55b5c323f82755fb420e5145bafe4de34925e86c53c9f652eb08ec0d87a9be95ca0c0d90b16dd1b55f1200d87c13e4cdb1ae902f41998314f7b85ffc82f0f1d5296119bd92e23ae685b8b59a3a4ba4b8d54db2314c077b1b238c4ac582e36b51c18c0b5474f0d68c1f42e01c08985111ded4cfd3463068d89a',\n '1387958052cf887bd50925a8d44bbf8f138cdd23f51a3422028edf39ad413a1591f5ebd653c4f225298cd6857044648bcfb768113674e7bd11c632fb0fc40cfa646301934b8fcf4da9799272a737155a239e1f8db5e92a23bfa2aeabc6732f5be14078a5815fff542842efed681ac3b919f9d42bfc822b0fd611c0b22286f241',\n '922659a8d40b12f81080425a8676830be06f26dd8cd18cad25d02055332c94b8b9634598ef5b172ee53e53788d33c183bf0984ae3b48d792f426a601dbf2eb4771bc844bc2464de8ca5b6746bbdc2f1713a1e1d57a6970568f033e588c759e4b179b791b7fcb75d323c98cc5c6f33c3659410b159c94bc13834e81ce297ce98d'\n]\n\nfor(let i=10;i<17;i++){\n if($node[`Crypto${i}`].json['data'] !== testData[i-10]){\n throw new Error(`Error in Hmac: ${$node[`Crypto${i}`].parameter[\"algorithm\"]} operation (node:Crypto${i})`);\n }\n}\nreturn items;" + }, + "name": "Function2", + "type": "n8n-nodes-base.function", + "typeVersion": 1, + "position": [ + 2470, + 900 + ], + "alwaysOutputData": true, + "notesInFlow": true, + "id": "ae850710-ba68-44a1-892f-62dc2f270e53", + "notes": "Verify signing values" + }, + { + "parameters": { + "action": "sign", + "value": "n8n", + "algorithm": "md5", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDuY4lRGHHAW9mXYY57m/CUzM4zqQ1e0W9D3e76YpipgF6rWtUn\nS8aSD+DxGxp4MldazZTwPPcpJHcV/Hr3A/KezsY9aOpXdnUdquV85969OgyGCRJk\nBv2gowSGfy4ueomfm4PFTPF0anPir+X1IZzAyzO6igL5ZE0Y5rcVrOgLKwIDAQAB\nAoGARfQ4he8d5jwt0HHkzVoX0Zp+AgPgNAxSUcCNEbWgJdFRNoh7l0HxvcfiEu6I\nqG/hWXiNdaf2QYD9XxrNfLIQXj+2MVOh4wpeqbO1DlqiGa9J8y7rLOVO+64ODXGt\nbZns6kcWLx8gYnhwqIJHnqfzvAsFjEKuKiSxpyeK8EvjDW0CQQD91J9DzhSXyvwE\nNaZT4Y9BcEbazVv+xUVhkSs7WRWStimeb57eIrIcXPE9heiT+6QpAnm6EZQR7RWN\n48PiAfbnAkEA8G0gwMWsnpmtb9VbF2uuQxs4Bw5Nuzb6l/+0zTqMELSVCaHIGnxk\nkV08NHfnck1jp1RU9MiUFI1yfRrN6vz1HQJBAMWQ8w3Rn1Gumo2kPHvZeqlSfLPd\nV5drcF9KoL2mzxXMV4SMGLmJg9xzswlR6v8TxGhvFtPuzrNNN5OjDlohcU0CQBOC\nZ3P9FmLQSZiXkYq2/C8J2GQKLxiP/4myADPfGlqIrMdZT2mGyopZLHd9e1R1Hy8G\n0tYCKLH6QF4SfL8iw6kCQCV81eZ/3JthrEfsIMv9lxvTLaRrprI5Eei8Rl+cFhNH\nziv/tOUxppOn1SkHvxXni5F5dbNR9u4mjaCLDau+qIg=\n-----END RSA PRIVATE KEY-----" + }, + "name": "Crypto10", + "type": "n8n-nodes-base.crypto", + "typeVersion": 1, + "position": [ + 1220, + 900 + ], + "alwaysOutputData": true, + "id": "1c33cc3f-7124-4156-99ce-47c8d79408da" + } + ], + "connections": { + "Start": { + "main": [ + [ + { + "node": "Crypto0", + "type": "main", + "index": 0 + }, + { + "node": "Crypto4", + "type": "main", + "index": 0 + }, + { + "node": "Crypto10", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto1": { + "main": [ + [ + { + "node": "Crypto2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto2": { + "main": [ + [ + { + "node": "Crypto3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto3": { + "main": [ + [ + { + "node": "Function", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto0": { + "main": [ + [ + { + "node": "Crypto1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto4": { + "main": [ + [ + { + "node": "Crypto5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto5": { + "main": [ + [ + { + "node": "Crypto6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto6": { + "main": [ + [ + { + "node": "Crypto7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto7": { + "main": [ + [ + { + "node": "Function1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto11": { + "main": [ + [ + { + "node": "Crypto12", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto12": { + "main": [ + [ + { + "node": "Crypto13", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto13": { + "main": [ + [ + { + "node": "Crypto14", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto14": { + "main": [ + [ + { + "node": "Crypto15", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto15": { + "main": [ + [ + { + "node": "Crypto16", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto16": { + "main": [ + [ + { + "node": "Function2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Crypto10": { + "main": [ + [ + { + "node": "Crypto11", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": { + "instanceId": "8e9416f42a954d0a370d988ac3c0f916f44074a6e45189164b1a8559394a7516" + }, + "pinData": {}, + "versionId": "25a0d83c-9242-42bd-8613-6157d43d59a4", + "triggerCount": 0, + "tags": [] +} \ No newline at end of file diff --git a/test-workflows/workflows/98.json b/test-workflows/workflows/98.json new file mode 100644 index 0000000000..833074a87a --- /dev/null +++ b/test-workflows/workflows/98.json @@ -0,0 +1,165 @@ +{ + "createdAt": "2021-03-04T08:38:05.147Z", + "updatedAt": "2021-03-04T08:38:05.147Z", + "id": "98", + "name": "Disqus:Forum:get getCategories getThreads getPosts", + "active": false, + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.start", + "typeVersion": 1, + "position": [ + 250, + 300 + ], + "id": "9468a1d9-c07c-4001-804d-f308db6f79a3" + }, + { + "parameters": { + "id": "disqus-demo-page", + "additionalFields": {} + }, + "name": "Disqus", + "type": "n8n-nodes-base.disqus", + "typeVersion": 1, + "position": [ + 500, + 300 + ], + "credentials": { + "disqusApi": { + "id": "5", + "name": "Disqus token" + } + }, + "id": "8c4e3006-b4d8-4015-9eeb-5cb77b7a46aa" + }, + { + "parameters": { + "operation": "getCategories", + "id": "disqus-demo-page", + "limit": 1, + "additionalFields": { + "order": "asc" + } + }, + "name": "Disqus1", + "type": "n8n-nodes-base.disqus", + "typeVersion": 1, + "position": [ + 650, + 300 + ], + "credentials": { + "disqusApi": { + "id": "5", + "name": "Disqus token" + } + }, + "id": "f1db25d5-8f78-4f29-a4f3-d27a3571370e" + }, + { + "parameters": { + "operation": "getThreads", + "id": "disqus-demo-page", + "limit": 1, + "additionalFields": { + "order": "desc" + } + }, + "name": "Disqus2", + "type": "n8n-nodes-base.disqus", + "typeVersion": 1, + "position": [ + 800, + 300 + ], + "credentials": { + "disqusApi": { + "id": "5", + "name": "Disqus token" + } + }, + "id": "4fcd6985-5dc8-4425-b852-25824964082a" + }, + { + "parameters": { + "operation": "getPosts", + "id": "disqus-demo-page", + "limit": 1, + "additionalFields": { + "order": "desc" + } + }, + "name": "Disqus3", + "type": "n8n-nodes-base.disqus", + "typeVersion": 1, + "position": [ + 950, + 300 + ], + "credentials": { + "disqusApi": { + "id": "5", + "name": "Disqus token" + } + }, + "id": "0dfe850e-186a-4072-b722-f35e15deeb16" + } + ], + "connections": { + "Disqus2": { + "main": [ + [ + { + "node": "Disqus3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Disqus1": { + "main": [ + [ + { + "node": "Disqus2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Disqus": { + "main": [ + [ + { + "node": "Disqus1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Start": { + "main": [ + [ + { + "node": "Disqus", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "settings": {}, + "staticData": null, + "meta": null, + "pinData": null, + "versionId": null, + "triggerCount": 0, + "tags": [] +} \ No newline at end of file