{
    "service_id": "api-builder-examples",
    "convo_service_version": 40,
    "packages": [
        "convo-core",
        "convo-api-builder",
        "convo-wp-core"
    ],
    "contexts": [],
    "variables": [],
    "preview_variables": [],
    "entities": [],
    "intents": [],
    "blocks": [
        {
            "class": "\\Convo\\Pckg\\Core\\Elements\\SpecialRoleProcessorBlock",
            "namespace": "convo-core",
            "properties": {
                "block_id": "Api_Handler",
                "name": "Api Handler",
                "role": "api-handler",
                "processors": [
                    {
                        "class": "\\Convo\\Pckg\\Core\\Processors\\ProcessProcessorFragment",
                        "namespace": "convo-core",
                        "properties": {
                            "fragment_id": "POST_Examples",
                            "_component_id": "c9zorqfi-v0aq-sbvj-ooll-xfe0xnvedx4a"
                        }
                    },
                    {
                        "class": "\\Convo\\Pckg\\Core\\Processors\\SimpleProcessor",
                        "namespace": "convo-core",
                        "properties": {
                            "name": null,
                            "ok": [
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\SetParamElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "scope_type": "request",
                                        "parameters": "service",
                                        "properties": {
                                            "user": "${wp_get_current_user()}"
                                        },
                                        "_component_id": "mol3yycq-bao9-lbac-38y3-hmnwtidbouxk"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\IfElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "test": "${!user.exists()}",
                                        "then": [
                                            {
                                                "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiResponseElement",
                                                "namespace": "convo-api-builder",
                                                "properties": {
                                                    "status": 401,
                                                    "headers": {
                                                        "Content-Type": "application\/json"
                                                    },
                                                    "body": "{\"message\":\"Not authenitcated\"}",
                                                    "_component_id": "cnwohgyb-5jh1-cqmc-nj6y-1vvzqafu8u1w"
                                                }
                                            }
                                        ],
                                        "else_if": [],
                                        "else": [],
                                        "_component_id": "jpi6bvz6-m9tb-thu6-ygit-5b4ptdsutvou"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiResponseElement",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "status": 200,
                                        "headers": {
                                            "Content-Type": "application\/json"
                                        },
                                        "body": "${json_encode( user.data)}",
                                        "_component_id": "lce5ikue-ngok-3ual-n4sz-ymzfwpuvrabr"
                                    }
                                }
                            ],
                            "request_filters": [
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiRouteFilter",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "method": "GET",
                                        "path": "user-info",
                                        "_component_id": "eo3j9yop-sh7k-bffm-uuoh-gj31zrv88wtq"
                                    }
                                }
                            ],
                            "_component_id": "1kp9q2d9-rprd-uoim-enw5-bhcmhayzxhwv"
                        }
                    },
                    {
                        "class": "\\Convo\\Pckg\\Core\\Processors\\SimpleProcessor",
                        "namespace": "convo-core",
                        "properties": {
                            "name": "GET path variable and query parameters",
                            "ok": [
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\SetParamElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "scope_type": "request",
                                        "parameters": "service",
                                        "properties": {
                                            "resp[\"pathValue\"]": "${result.productId}",
                                            "resp[\"params\"]": "${request.psrRequest.queryParams}",
                                            "resp[\"headers\"]": "${request.psrRequest.getHeaders()}"
                                        },
                                        "_component_id": "4hbjyygq-n1lr-vw70-c68d-lsxh1z6ay4jl"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiResponseElement",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "status": 200,
                                        "headers": {
                                            "Content-Type": "application\/json"
                                        },
                                        "body": "${json_encode( resp)}",
                                        "_component_id": "fzvdr6vy-gigf-zkyn-x9l7-0hi9fb6fht70"
                                    }
                                }
                            ],
                            "request_filters": [
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiRouteFilter",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "method": "GET",
                                        "path": "\/product\/{productId}",
                                        "_component_id": "exlzijl9-2uik-8t2v-uhop-hkaczul3e0rc"
                                    }
                                }
                            ],
                            "_component_id": "pdijvhxe-xris-jdfn-kdd6-iseno3xgplr5"
                        }
                    },
                    {
                        "class": "\\Convo\\Pckg\\Core\\Processors\\SimpleProcessor",
                        "namespace": "convo-core",
                        "properties": {
                            "name": "Empty route",
                            "ok": [
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiResponseElement",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "status": 200,
                                        "headers": {
                                            "Content-Type": "application\/json"
                                        },
                                        "body": "{\"message\":\"Hello!\"}",
                                        "_component_id": "xghsykp8-cw66-jxwb-snys-7myopxk4slyr"
                                    }
                                }
                            ],
                            "request_filters": [
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiRouteFilter",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "method": "GET",
                                        "_component_id": "cmhcjdjy-v02l-tfbf-ajzn-djjfacsrusud"
                                    }
                                }
                            ],
                            "_component_id": "rzr8tpl3-nfzg-jitv-es8k-qgto71wj79ix"
                        }
                    },
                    {
                        "class": "\\Convo\\Pckg\\Core\\Processors\\SimpleProcessor",
                        "namespace": "convo-core",
                        "properties": {
                            "name": "404",
                            "ok": [
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\CommentElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "comment": "Catch all (*) other and return 404. \nThis one has to be the last!",
                                        "context": null,
                                        "_component_id": "hn5zjzfh-ke4n-hlly-9kky-qqaknrhyb3su"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiResponseElement",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "status": 404,
                                        "headers": {
                                            "Content-Type": "application\/json"
                                        },
                                        "body": "{\"message\":\"Requested resource was not found\"}",
                                        "_component_id": "8xpaitbz-gkp9-b1el-thvb-giaeamxgk9dq"
                                    }
                                }
                            ],
                            "request_filters": [
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiRouteFilter",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "method": "GET",
                                        "path": "*",
                                        "_component_id": "f4qmmnrw-wjjy-uue1-js6w-sxekbpgs3vxp"
                                    }
                                }
                            ],
                            "_component_id": "wpzl1bs1-0jge-qzp7-rczu-kblqrobbbofd"
                        }
                    }
                ],
                "_component_id": "wzcyxxpo-2psg-zfzf-4qgy-narzjqo8dvln"
            }
        }
    ],
    "fragments": [
        {
            "class": "\\Convo\\Pckg\\Core\\Processors\\ProcessorFragment",
            "namespace": "convo-core",
            "properties": {
                "fragment_id": "POST_Examples",
                "name": "POST Examples",
                "processors": [
                    {
                        "class": "\\Convo\\Pckg\\Core\\Processors\\SimpleProcessor",
                        "namespace": "convo-core",
                        "properties": {
                            "name": "POST with files",
                            "ok": [
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\SetParamElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "scope_type": "request",
                                        "parameters": "service",
                                        "properties": {
                                            "file": "${request.psrRequest.uploadedFiles['file_1']}"
                                        },
                                        "_component_id": "r7do0j5p-3yxb-qyi9-zohi-qfqgadgjxhmx"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\CommentElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "comment": "First check for the upload error",
                                        "context": null,
                                        "_component_id": "jn6wbwjd-nvqu-ftc2-zzkb-lgi1s12qg36p"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\IfElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "test": "${file.getError()}",
                                        "then": [
                                            {
                                                "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiResponseElement",
                                                "namespace": "convo-api-builder",
                                                "properties": {
                                                    "status": 400,
                                                    "headers": {
                                                        "Content-Type": "application\/json"
                                                    },
                                                    "body": "{\"message\":\"File not uploaded. Code: ${file.getError()}\"}",
                                                    "_component_id": "wkuskhk1-qug2-qnaj-m5em-7cozaieelmq7"
                                                }
                                            }
                                        ],
                                        "else_if": [],
                                        "else": [],
                                        "_component_id": "ppidbsat-yez5-zzsd-sapo-d9mt9nkcdhk0"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\SetParamElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "scope_type": "request",
                                        "parameters": "service",
                                        "properties": {
                                            "resp[\"body\"]": "${request.psrRequest.parsedBody}",
                                            "resp[\"parameters\"]": "${request.psrRequest.queryParams}",
                                            "resp[\"file\"]": "${file.getClientFilename()}"
                                        },
                                        "_component_id": "uoww6vn4-8lwk-8if8-m975-afntg1oqemzj"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\IfElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "test": "${file.getClientMediaType()==='application\/json'}",
                                        "then": [
                                            {
                                                "class": "\\Convo\\Pckg\\Core\\Elements\\CommentElement",
                                                "namespace": "convo-core",
                                                "properties": {
                                                    "comment": "Example how you can access content, in this case read JSON from the uploaded file",
                                                    "context": null,
                                                    "_component_id": "z57xknla-npua-glbc-lhm0-xth4ddd7h6dk"
                                                }
                                            },
                                            {
                                                "class": "\\Convo\\Pckg\\Core\\Elements\\SetParamElement",
                                                "namespace": "convo-core",
                                                "properties": {
                                                    "scope_type": "request",
                                                    "parameters": "service",
                                                    "properties": {
                                                        "resp[\"file_data\"]": "${json_decode( strval(file.getStream()), true)}"
                                                    },
                                                    "_component_id": "lxogh4zz-ikfi-tzif-skz6-oqh8ijrnepwl"
                                                }
                                            }
                                        ],
                                        "else_if": [],
                                        "else": [],
                                        "_component_id": "zxzkzzzr-u2lv-k2ih-9r9b-xvwxydgfxdft"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiResponseElement",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "status": 200,
                                        "headers": {
                                            "Content-Type": "application\/json"
                                        },
                                        "body": "${json_encode( resp)}",
                                        "_component_id": "tdxgn902-nkiy-v19l-ed2j-x9wimsrjfzrk"
                                    }
                                }
                            ],
                            "request_filters": [
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiRouteFilter",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "method": "POST",
                                        "path": "add-file",
                                        "_component_id": "zxzl06ol-3c4e-0uee-jsfk-q83xpehrgz82"
                                    }
                                }
                            ],
                            "_component_id": "cm6ovnow-lrn3-ndww-dlfa-mr8x0xtdjtwd"
                        }
                    },
                    {
                        "class": "\\Convo\\Pckg\\Core\\Processors\\SimpleProcessor",
                        "namespace": "convo-core",
                        "properties": {
                            "name": "POST with JSON body",
                            "ok": [
                                {
                                    "class": "\\Convo\\Pckg\\Core\\Elements\\SetParamElement",
                                    "namespace": "convo-core",
                                    "properties": {
                                        "scope_type": "request",
                                        "parameters": "service",
                                        "properties": {
                                            "resp[\"body\"]": "${request.psrRequest.parsedBody}"
                                        },
                                        "_component_id": "k5gznusd-hywo-fwcu-rtug-zcoqiekzmsuo"
                                    }
                                },
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiResponseElement",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "status": 200,
                                        "headers": {
                                            "Content-Type": "application\/json"
                                        },
                                        "body": "${json_encode( resp)}",
                                        "_component_id": "ezjzlbje-fu86-zi7h-wb8c-t2svfkq5biil"
                                    }
                                }
                            ],
                            "request_filters": [
                                {
                                    "class": "\\Convo\\Wp\\Pckg\\ApiBuilder\\ApiRouteFilter",
                                    "namespace": "convo-api-builder",
                                    "properties": {
                                        "method": "POST",
                                        "path": "add-data",
                                        "_component_id": "7ohbbjjn-ogvx-aspt-1eln-322e5of9utk7"
                                    }
                                }
                            ],
                            "_component_id": "c90bxd8g-ru2c-ptsq-iexg-jyjm0bcgeskk"
                        }
                    }
                ],
                "_component_id": "1cxszalj-zsjz-xa53-lso7-2klfryusyjnn"
            }
        }
    ],
    "time_updated": 1689770538,
    "intents_time_updated": 1689756342,
    "properties": [],
    "name": "API Builder Examples"
}