{
  "factory": {
    "parent": "abstract-service",
    "description": "",
    "id": "abstract-service-rest",
    "label": "service,rest",
    "type": "entaxy.runtime.service",
    "category": "",
    "isAbstract": true
  },
  "entaxy.runtime.service": {
    "serviceType": "REST"
  },
  "fields": {
    "objectId": {
      "displayName": "Service Id"
    },
    "isValidate": {
      "required": false,
      "defaultValue" : false,
      "description": "Enables schema validation for the request body. Throws an exception if the request body does not comply with the specified API schema. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Rest_services.html\">Entaxy docs</a>",
      "group": "main",
      "displayName": "Schema Validation Enabled",
      "type": "Boolean"
    },
    "resultType": {
      "required": false,
      "defaultValue" : "POJO",
      "description": "Processing data format: <br/> POJO: Use to work with data in the form of Java objects; <br/> ORIGIN: Use to work with data in its original form. <br/> For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Rest_services.html\">Entaxy docs</a>",
      "displayName": "Data Format",
      "group": "main",
      "type": "String",
      "@TYPEINFO": {
        "type": "enum",
        "values": [
          "POJO",
          "ORIGIN"
        ]
      }
    },
    "address": {
      "displayName": "Address",
      "type": "String",
      "required": true,
      "group": "main",
      "description": "The service publication address. Specifies the address at which the service will be available for interaction with other system components. If the field is left blank, it will be generated automatically based on the Service Id. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Rest_services.html\">Entaxy docs</a>",
      "defaultValue": {
        "@CALCULATED": {
          "lazy": false,
          "expression": "${objectId}"
        }
      },
      "@TYPEINFO": {
        "validation": {
          "doFix": true,
          "fixRules": [
            {
              "forbid": {
                "symbols": "/",
                "start": true
              }
            }
          ]
        }
      }
    },
    "##publish": {
      "type": "Map",
      "required": true,
      "isHidden": true,
      "configurable": false,
      "defaultValue": {
        "name": {
          "@CALCULATED": {
            "expression": "${objectId}",
            "lazy": true
          }
        },
        "factory": {
          "@CALCULATED": {
            "expression": "${factoryId}",
            "lazy": false
          }
        },
        "label": {
          "@CALCULATED": {
            "expression": "${#FACTORY#.factory.label}",
            "lazy": false
          }
        },
        "scope": {
          "@CALCULATED": {
            "expression": "${scope}",
            "allowObjects": false,
            "lazy": false
          }
        }
      }
    }
  },
  "outputs": {
    "init": {
      "isDefault": true,
      "fields": {
      	"address": {},
        "isValidate": {},
        "resultType": {},
        "##publish": {}
      }
    }
  }
}
