{
  "factory": {
    "id": "openapi-based-rest-service-protected",
    "displayName": "REST :: OPENAPI :: PROTECTED",
    "type": "entaxy.runtime.service",
    "description": "Protected openapi-based REST service. For more details see <a target=\"_blank\" href=\"https://docs.entaxy.ru/entaxy-core/${project.version}/core/schema/Rest_services.html\">Entaxy docs</a>",
    "isAbstract": false,
    "_parent": "openapi-based-rest-service",
    "parent": "openapi-based-rest-service-public",
    "label": "service,rest,openapi",
    "category": ""
  },
  "entaxy.runtime.service": {
    "serviceScope": "protected"
  },
  "fields": {
    "operationRouter": {
      "defaultValue": {
        "@RESOURCE": {
          "location": {
            "@CALCULATED": {
              "expression": "${#OWNER#.properties._serviceMetadata.serviceResourcesRoot}/operationRouterProtected.xml"
            }
          }
        }
      },
      "@TYPEINFO": {
        "location": "${serviceResourcesRoot}/operationRouterProtected.xml"
      }
    },
    "connectorInFactory": {
      "type": "factory",
      "required": true,
      "isHidden": true,
      "@INTERNAL": true,
      "_isRef": true,
      "_isRefByValueOnly": true,
      "@RESOURCE": {
        "endType": "String",
        "provider": "service-resources",
        "location": {
          "@CALCULATED": {
            "expression": "${#OWNER#.properties._serviceMetadata.serviceResourcesRoot}/${#OWNER#.objectId}/${#OWNER#.objectId}-connector-in.factory",
            "lazy": false
          }
        },
        "service": {
          "@CALCULATED": {
            "expression": "${#OWNER#.properties._serviceMetadata}",
            "resultType": "map",
            "blacklistContent": [
              "@RESOURCE_META"
            ],
            "lazy": false
          }
        }
      },
      "defaultValue": {
        "type": "entaxy.runtime.service",
        "factoryId": "#OWNER#",
        "outputType": "connectorInFactory",
        "scope": "public",
        "properties": {
          "service": {
            "@CALCULATED": {
              "expression": "${#OWNER_OF_TYPE:entaxy.runtime.service#.properties._serviceMetadata}",
              "resultType": "map",
              "blacklistContent": [
                "@RESOURCE_META"
              ],
              "lazy": false
            }
          },
          "serviceId": {
            "@CALCULATED": {
              "expression": "${#OWNER_OF_TYPE:entaxy.runtime.service#.objectId}",
              "resultType": "String",
              "lazy": false
            }
          },
          "serviceObjectType": "entaxy.runtime.service",
          "serviceType": {
            "@CALCULATED": {
              "expression": "${#OWNER_OF_TYPE:entaxy.runtime.service#.#FACTORY#.#TYPEINFO#.serviceType}",
              "resultType": "String",
              "lazy": false
            }
          },
          "location": {
            "@CALCULATED": {
              "lazy": false,
              "expression": "${#OWNER_OF_TYPE:entaxy.runtime.service#.properties._serviceMetadata.serviceResourcesRoot}/operationRouterConnector.xml"
            }
          }
        },
        "refConfig": {
          "isRefByValueOnly": true
        }
      }
    },
    "##headers": {
      "type": "List",
      "required": true,
      "isHidden": true,
      "@INTERNAL": true,
      "defaultValue": [
        {
          "name": "Entaxy-Dynamic-Factory-Provider",
          "type": "boolean",
          "value": true
        },
        {
          "name": "Entaxy-Dynamic-Factory-Url",
          "type": "List",
          "value": [
            {
              "@CALCULATED": {
                "expression": "entaxy-resource://service-resources/${properties._serviceMetadata.serviceResourcesRoot}/${objectId}/${objectId}-connector-in.factory",
                "lazy": false,
                "resultType": "String"
              }
            }
          ]
        }
      ]
    }
  },
  "outputs": {
    "init": {
      "fields": {
        "@IMPORT": [
          {
            "sourceFactoryId": "service-components",
            "location": "outputs.specificProtectedServiceComponents.fields",
            "prefix": ""
          }
        ],
        "authorizationType": {
          "@TYPEINFO": {
            "type": "enum",
            "values": [
              "JAAS",
              "OAUTH STAND ALONE",
              "OAUTH INTROSPECT"
            ],
            "isEmptyIncluded": false
          },
          "@UI": {
            "manageDisplayBlocksByValue": true
          }
        },
        "connectorInFactory": {},
        "##headers": {}
      }
    },
    "connectorInFactory": {
      "fields": {
        "service": {},
        "serviceId": {}
      },
      "config": {
        "@SKIP_VAULTS_LOOKUP": ""
      }
    },
    "specificProtectedComponents": {
      "scopes": [
        "private"
      ],
      "config": {
        "configurable": false,
        "@SKIP_PUBLISH": {}
      },
      "fields": {
        "serviceId": {}
      }
    }
  }
}
