{
    "EXAMPLE":{
        "documento" : "/win2/fontes/projetos/AREA_TI/NOVA API/IntegracaoGtiIot.txt",
        "rote" : "Rota que sera somada a url https://natuphitus.gtiiot.com/api/v1.1/erp/ROTA",
        "active": "quando true eh ignorado",
        "relacionaId" : true,
        "custom_send": "customizacao do envio",
        "fields":{
            "default":"valor fixo, Se nao tem ou eh zero, manda NULL",
            "dbfield":"campo de banco sempre TABELA.CAMPO",
            "para": "nome campo na api",
            "type": "Tipo",
            "ListTemplate" : "mascara",
            "desc" : "Documentacao"
        }
    },
    "config":{
        "debug"             : false,
        "throttling"        : true,
        "path_log"          : "/var/tmp/gti_iot_log.txt",
        "identifier"        : "gti_id",
        "raw_type"          : "text"
    },
    "rotes" : [
        {
                "id"            : 2
            ,   "rote"          : "product"
            ,   "_obs"          : "GTI faz upsert via POST pela identidade external_source + external_key. Depende da rota 'unit' (id 1) ja ter rodado."
            ,   "active"        : true
            ,   "relacionaId"   : true
            ,   "send"          : true
            ,   "MD5"           : true
            ,   "primaryKey"    : "TBPRODUTO.CDPRODUTO"
            ,   "table"         : "TBPRODUTO"
            ,   "methods"       : ["PATCH", "POST", "DELETE"]
            ,   "put_data"      : "body"
            ,   "control-id"    : "custom"
            ,   "where"         : [
                        "TBPRODUTO.CDEMPRESA IN (0, @empresa)"
                    ,   "TBPRODUTO.CDFILIAL IN (0, @filial)"
                    ,   "TBPRODUTO.CDTIPOMATERIAL = 'PA'"
                ]
            ,   "fields": [
                        { "dbfield": "TBPRODUTO.CDPRODUTO"                               , "para": "external_key"       , "_obs": "Chave do produto na GTI (identidade)" }
                    ,   { "default": "softdib"                                           , "para": "external_source"    , "_obs": "Origem fixa, compoe a identidade" }
                    ,   { "dbfield": "REPLACE(TBPRODUTO.DSPRODUTO, CHAR(34), CHAR(39))"  , "para": "name"               , "_obs": "Troca aspas duplas por simples sem usar aspas no SQL" }
                    ,   { "dbfield": "REPLACE(TBPRODUTO.DSCOMPLEMENTAR, CHAR(34), CHAR(39))", "para": "description"    , "_type": "text" }
                    ,   { "dbfield": "TBPRODUTO.FGSITUACAO"                              , "para": "is_active"          , "_custom": "gti_flag_ativo" }
                    ,   { "dbfield": "TBPRODUTO.FGEXCLUIDO"                              , "para": "is_deleted"         , "_custom": "gti_flag_excluido" }
                    ,   { "default": "ERP"                                               , "para": "integration_origin" }
                    ,   { "dbfield": "TBPRODUTO.NMUNIDADE"                               , "para": "unit_external_key"  , "_obs": "Precisa existir na rota unit" }
                ]
            ,   "orderBy": ["TBPRODUTO.CDPRODUTO"]
        },
        {
                "id"               : 2.1
            ,   "rote"             : "sync_products"
            ,   "handler"          : "gti_sync"
            ,   "_obs"             : "Le os produtos na GTI e cria a TBRELACIONAID dos que ja existem. Rodar antes do primeiro SEND."
            ,   "active"           : true
            ,   "use_softdib_api"  : false
            ,   "methods"          : ["GET"]
            ,   "table"            : "TBPRODUTO"
            ,   "primaryKey"       : "TBPRODUTO.CDPRODUTO"
            ,   "where"            : [
                        "TBPRODUTO.CDEMPRESA IN (0, @empresa)"
                    ,   "TBPRODUTO.CDFILIAL IN (0, @filial)"
                ]
            ,   "page_size"        : 1000
            ,   "external_sources" : ["softdib"]
        },
        {
                "id"            : 3
            ,   "rote"          : "customer"
            ,   "_obs"          : "Upsert via POST pela identidade external_source + external_key. Deve rodar antes de sales_order e production_order."
            ,   "active"        : true
            ,   "relacionaId"   : true
            ,   "send"          : true
            ,   "MD5"           : true
            ,   "primaryKey"    : "TBCLIENTE.CDCLIENTE"
            ,   "table"         : "TBCLIENTE"
            ,   "methods"       : ["POST", "DELETE"]
            ,   "put_data"      : "body"
            ,   "control-id"    : "external_key"
            ,   "where"         : [
                        "TBCLIENTE.CDEMPRESA IN (0, @empresa)"
                    ,   "TBCLIENTE.CDFILIAL IN (0, @filial)"
                ]
            ,   "fields": [
                        { "dbfield": "TBCLIENTE.CDCLIENTE"                                   , "para": "external_key"       , "_obs": "Chave do cliente na GTI (identidade)" }
                    ,   { "default": "softdib"                                               , "para": "external_source" }
                    ,   { "dbfield": "REPLACE(TBCLIENTE.NMRAZAOSOCIAL, CHAR(34), CHAR(39))"  , "para": "name"               , "_obs": "Obrigatorio na GTI" }
                    ,   { "dbfield": "REPLACE(COALESCE(NULLIF(TRIM(TBCLIENTE.NMFANTASIA), ''), TBCLIENTE.NMRAZAOSOCIAL), CHAR(34), CHAR(39))", "para": "bi_name", "_obs": "Fantasia; sem fantasia usa a razao social" }
                    ,   { "dbfield": "TBCLIENTE.FGEXCLUIDO"                                  , "para": "is_active"          , "_custom": "gti_flag_nao_excluido" }
                    ,   { "dbfield": "TBCLIENTE.FGEXCLUIDO"                                  , "para": "is_deleted"         , "_custom": "gti_flag_excluido" }
                    ,   { "default": "ERP"                                               , "para": "integration_origin" }
                    ,   { "dbfield": "TBCLIENTE.FGTIPOPESSOA + TBCLIENTE.VLCPFCNPJ"          , "para": "tax_id"             , "_custom": "gti_documento" }
                    ,   { "dbfield": "TBCLIENTE.NMEMAIL"                                     , "para": "email" }
                    ,   { "dbfield": "TBCLIENTE.VLDDD + TBCLIENTE.VLTELEFONE"                , "para": "phone"              , "_custom": "gti_telefone" }
                    ,   { "dbfield": "TBCLIENTE.NMENDERECO + TBCLIENTE.VLENDERECONUMERO + TBCLIENTE.NMCOMPLEMENTO + TBCLIENTE.NMBAIRRO + TBCLIENTE.NMCIDADE + TBCLIENTE.NMUF + TBCLIENTE.VLCEP", "para": "address", "_custom": "gti_endereco" }
                ]
            ,   "orderBy": ["TBCLIENTE.CDCLIENTE"]
        },
        {
                "id"            : 6
            ,   "rote"          : "machine"
            ,   "_obs"          : "Rota unica de maquinas. Grupo/subgrupo cadastrados uma vez na GTI e referenciados por default."
            ,   "active"        : true
            ,   "relacionaId"   : true
            ,   "send"          : true
            ,   "MD5"           : true
            ,   "table"         : "TBMAQUINAEQUIP"
            ,   "primaryKey"    : "TBMAQUINAEQUIP.CDEQPTO"
            ,   "methods"       : ["PATCH", "POST", "DELETE"]
            ,   "put_data"      : "body"
            ,   "control-id"    : "custom"
            ,   "where"         : [
                        "TBMAQUINAEQUIP.CDEMPRESA IN (0, @empresa)"
                    ,   "TBMAQUINAEQUIP.CDFILIAL IN (0, @filial)"
                ]
            ,   "fields": [
                        { "dbfield": "TBMAQUINAEQUIP.CDEQPTO"                                    , "para": "external_key" }
                    ,   { "default": "softdib"                                                   , "para": "external_source"                , "_custom": "gti_source" }
                    ,   { "dbfield": "REPLACE(TBMAQUINAEQUIP.NMDESCRICAO, CHAR(34), CHAR(39))"   , "para": "name" }
                    ,   { "dbfield": "TBMAQUINAEQUIP.CDEQPTO + ' - ' + REPLACE(TBMAQUINAEQUIP.NMDESCRICAO, CHAR(34), CHAR(39))", "para": "bi_name" }
                    ,   { "dbfield": "TBMAQUINAEQUIP.FGSITUACAO"                                 , "para": "is_active"                      , "_custom": "gti_flag_in", "active_values": ["A"], "_obs": "A confirmar: valores de ativo" }
                    ,   { "default": "false"                                                     , "para": "is_deleted" }
                    ,   { "default": "ERP"                                                       , "para": "integration_origin" }
                    ,   { "default": ""                                                          , "para": "machine_sub_group_external_key"    , "_obs": "GTI comentou que pode mandar vazio" }
                    ,   { "default": ""                                                          , "para": "machine_sub_group_external_source" , "_obs": "GTI comentou que pode mandar vazio" }
                ]
            ,   "orderBy": ["TBMAQUINAEQUIP.CDEQPTO"]
        },
        {
                "id"               : 6.1
            ,   "rote"             : "sync_machines"
            ,   "handler"          : "gti_sync"
            ,   "_obs"             : "Le as maquinas na GTI e cria a TBRELACIONAID dos que ja existem. Rodar antes do primeiro SEND."
            ,   "active"           : true
            ,   "use_softdib_api"  : false
            ,   "methods"          : ["GET"]
            ,   "table"            : "TBMAQUINAEQUIP"
            ,   "primaryKey"       : "TBMAQUINAEQUIP.CDEQPTO "
            ,   "where"            : [
                        "TBMAQUINAEQUIP.CDEMPRESA IN (0, @empresa)"
                    ,   "TBMAQUINAEQUIP.CDFILIAL IN (0, @filial)"
                ]
            ,   "page_size"        : 1000
            ,   "external_sources" : ["softdib"]
        }
    ]
}