{
  "name": "OAuth",
  "description": "An extension to hook oauth2 to http extension connectors.",
  "version": "1.1.4",
  "vendor": "Mulesoft",
  "category": "COMMUNITY",
  "xmlDsl": {
    "prefix": "oauth",
    "namespace": "http://www.mulesoft.org/schema/mule/oauth",
    "schemaLocation": "http://www.mulesoft.org/schema/mule/oauth/current/mule-oauth.xsd",
    "schemaVersion": "1.1.4",
    "xsdFileName": "mule-oauth.xsd"
  },
  "resources": [],
  "subTypes": [
    {
      "baseType": {
        "format": "java",
        "type": "@ref:org.mule.extension.http.api.request.authentication.HttpRequestAuthentication"
      },
      "subTypes": [
        {
          "format": "java",
          "type": "@ref:org.mule.extension.oauth2.api.authorizationcode.DefaultAuthorizationCodeGrantType"
        },
        {
          "format": "java",
          "type": "@ref:org.mule.extension.oauth2.api.clientcredentials.ClientCredentialsGrantType"
        }
      ]
    }
  ],
  "privilegedPackages": [],
  "privilegedArtifacts": [],
  "externalLibraries": [],
  "importedTypes": [
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.http.api.request.authentication.HttpRequestAuthentication",
        "classInformation": {
          "classname": "org.mule.extension.http.api.request.authentication.HttpRequestAuthentication",
          "hasDefaultConstructor": false,
          "isInterface": true,
          "isInstantiable": false,
          "isAbstract": true,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "HttpRequestAuthentication"
        }
      },
      "fields": []
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.http.api.request.proxy.HttpProxyConfig",
        "classInformation": {
          "classname": "org.mule.extension.http.api.request.proxy.HttpProxyConfig",
          "hasDefaultConstructor": false,
          "isInterface": true,
          "isInstantiable": false,
          "isAbstract": true,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.runtime.http.api.client.proxy.ProxyConfig"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "HttpProxyConfig"
        }
      },
      "fields": []
    }
  ],
  "configurations": [
    {
      "stereotype": {
        "type": "CONFIG",
        "namespace": "OAUTH",
        "parent": {
          "type": "MODULE_CONFIG",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [],
      "externalLibraryModels": [],
      "operations": [],
      "connectionProviders": [],
      "messageSources": [],
      "name": "config",
      "description": "Default configuration",
      "modelProperties": {}
    }
  ],
  "operations": [
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "output": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "supportsStreaming": false,
      "notifications": [],
      "nestedComponents": [],
      "errors": [],
      "stereotype": {
        "type": "PROCESSOR",
        "namespace": "MULE"
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "tokenManager",
              "description": "The token manager which holds the credentials to invalidate.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "default",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "allowedStereotypeModels": [],
              "name": "resourceOwnerId",
              "description": "The resource owner id to invalidate. This attribute is only allowed for authorization code grant type.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "invalidateOauthContext",
      "description": "Clears the oauth context for a token manager and a resource owner id.",
      "modelProperties": {},
      "kind": "operation"
    },
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "output": {
        "type": {
          "format": {
            "id": "text/plain",
            "label": "text/plain",
            "validMimeTypes": [
              "text/plain"
            ]
          },
          "type": "String"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "supportsStreaming": false,
      "notifications": [],
      "nestedComponents": [],
      "errors": [],
      "stereotype": {
        "type": "PROCESSOR",
        "namespace": "MULE"
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "tokenManager",
              "description": "The token manager which holds the access token.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "default",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "allowedStereotypeModels": [],
              "name": "resourceOwnerId",
              "description": "The resource owner id to invalidate. This attribute is only allowed for authorization code grant type.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "outputMimeType",
              "description": "The mime type of the payload that this operation outputs.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "target",
              "displayModel": {
                "displayName": "Target Variable"
              },
              "description": "The name of a variable on which the operation\u0027s output will be placed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "REQUIRED",
              "defaultValue": "#[payload]",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "targetValue",
              "displayModel": {
                "displayName": "Target Value"
              },
              "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2
          },
          "showInDsl": false,
          "name": "Output",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "retrieveAccessToken",
      "description": "Returns the access token of the token manager for the parametrized resource owner ID",
      "modelProperties": {},
      "kind": "operation"
    },
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "output": {
        "type": {
          "format": "java",
          "type": "Object",
          "annotations": {
            "typeId": "java.lang.Object",
            "classInformation": {
              "classname": "java.lang.Object",
              "hasDefaultConstructor": true,
              "isInterface": false,
              "isInstantiable": true,
              "isAbstract": false,
              "isFinal": false,
              "implementedInterfaces": [],
              "parent": "",
              "genericTypes": [],
              "isMap": false
            },
            "typeAlias": {
              "value": "Object"
            }
          },
          "fields": []
        },
        "hasDynamicType": true,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "supportsStreaming": false,
      "notifications": [],
      "nestedComponents": [],
      "errors": [],
      "stereotype": {
        "type": "PROCESSOR",
        "namespace": "MULE"
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "tokenManager",
              "description": "The token manager which holds the access token.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "default",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "allowedStereotypeModels": [],
              "name": "resourceOwnerId",
              "description": "The resource owner id to invalidate. This attribute is only allowed for authorization code grant type.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3
              },
              "allowedStereotypeModels": [],
              "name": "key",
              "description": "to look for in the elements that has been extracted after the previous OAuth dance.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "target",
              "displayModel": {
                "displayName": "Target Variable"
              },
              "description": "The name of a variable on which the operation\u0027s output will be placed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "REQUIRED",
              "defaultValue": "#[payload]",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "targetValue",
              "displayModel": {
                "displayName": "Target Value"
              },
              "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2
          },
          "showInDsl": false,
          "name": "Output",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "retrieveCustomTokenResponseParam",
      "description": "Returns the value of the parameter that was extracted during the dance from the token manager for the parametrized resource owner ID",
      "modelProperties": {},
      "kind": "operation"
    },
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "output": {
        "type": {
          "format": {
            "id": "text/plain",
            "label": "text/plain",
            "validMimeTypes": [
              "text/plain"
            ]
          },
          "type": "String"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "supportsStreaming": false,
      "notifications": [],
      "nestedComponents": [],
      "errors": [],
      "stereotype": {
        "type": "PROCESSOR",
        "namespace": "MULE"
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "tokenManager",
              "description": "The token manager which holds the access token.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "default",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "allowedStereotypeModels": [],
              "name": "resourceOwnerId",
              "description": "The resource owner id to invalidate. This attribute is only allowed for authorization code grant type.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "outputMimeType",
              "description": "The mime type of the payload that this operation outputs.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "target",
              "displayModel": {
                "displayName": "Target Variable"
              },
              "description": "The name of a variable on which the operation\u0027s output will be placed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "REQUIRED",
              "defaultValue": "#[payload]",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "targetValue",
              "displayModel": {
                "displayName": "Target Value"
              },
              "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2
          },
          "showInDsl": false,
          "name": "Output",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "retrieveExpiresIn",
      "description": "Returns the expiration of the oauth context for the parametrized resource owner ID",
      "modelProperties": {},
      "kind": "operation"
    },
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "output": {
        "type": {
          "format": {
            "id": "text/plain",
            "label": "text/plain",
            "validMimeTypes": [
              "text/plain"
            ]
          },
          "type": "String"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "supportsStreaming": false,
      "notifications": [],
      "nestedComponents": [],
      "errors": [],
      "stereotype": {
        "type": "PROCESSOR",
        "namespace": "MULE"
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "tokenManager",
              "description": "The token manager which holds the refresh token.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "default",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "allowedStereotypeModels": [],
              "name": "resourceOwnerId",
              "description": "The resource owner id to invalidate. This attribute is only allowed for authorization code grant type.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "outputMimeType",
              "description": "The mime type of the payload that this operation outputs.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "target",
              "displayModel": {
                "displayName": "Target Variable"
              },
              "description": "The name of a variable on which the operation\u0027s output will be placed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "REQUIRED",
              "defaultValue": "#[payload]",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "targetValue",
              "displayModel": {
                "displayName": "Target Value"
              },
              "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2
          },
          "showInDsl": false,
          "name": "Output",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "retrieveRefreshToken",
      "description": "Returns the refresh token of the oauth context for the parametrized resource owner ID",
      "modelProperties": {},
      "kind": "operation"
    },
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "output": {
        "type": {
          "format": {
            "id": "text/plain",
            "label": "text/plain",
            "validMimeTypes": [
              "text/plain"
            ]
          },
          "type": "String"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "supportsStreaming": false,
      "notifications": [],
      "nestedComponents": [],
      "errors": [],
      "stereotype": {
        "type": "PROCESSOR",
        "namespace": "MULE"
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "tokenManager",
              "description": "The token manager which holds the access token.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "default",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "allowedStereotypeModels": [],
              "name": "resourceOwnerId",
              "description": "The resource owner id to invalidate. This attribute is only allowed for authorization code grant type.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "outputMimeType",
              "description": "The mime type of the payload that this operation outputs.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "target",
              "displayModel": {
                "displayName": "Target Variable"
              },
              "description": "The name of a variable on which the operation\u0027s output will be placed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "REQUIRED",
              "defaultValue": "#[payload]",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "targetValue",
              "displayModel": {
                "displayName": "Target Value"
              },
              "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2
          },
          "showInDsl": false,
          "name": "Output",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "retrieveState",
      "description": "Returns the state of the oauth context for the parametrized resource owner ID",
      "modelProperties": {},
      "kind": "operation"
    }
  ],
  "functions": [],
  "constructs": [],
  "connectionProviders": [],
  "messageSources": [],
  "notifications": [],
  "errors": [
    {
      "error": "OAUTH:RETRY_EXHAUSTED",
      "parent": "MULE:RETRY_EXHAUSTED",
      "handleable": true
    },
    {
      "error": "MULE:RETRY_EXHAUSTED",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MULE:CONNECTIVITY",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "OAUTH:CONNECTIVITY",
      "parent": "MULE:CONNECTIVITY",
      "handleable": true
    },
    {
      "error": "OAUTH:CLIENT_SECURITY",
      "parent": "MULE:CLIENT_SECURITY",
      "handleable": true
    },
    {
      "error": "MULE:CLIENT_SECURITY",
      "parent": "MULE:SECURITY",
      "handleable": true
    },
    {
      "error": "MULE:SECURITY",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "OAUTH:OAUTH_CLIENT_SECURITY",
      "parent": "OAUTH:CLIENT_SECURITY",
      "handleable": true
    },
    {
      "error": "OAUTH:TOKEN_URL_FAIL",
      "parent": "OAUTH:OAUTH_CLIENT_SECURITY",
      "handleable": true
    },
    {
      "error": "OAUTH:TOKEN_NOT_FOUND",
      "parent": "OAUTH:OAUTH_CLIENT_SECURITY",
      "handleable": true
    }
  ],
  "modelProperties": {},
  "types": [
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.oauth2.api.authorizationcode.DefaultAuthorizationCodeGrantType",
        "classInformation": {
          "classname": "org.mule.extension.oauth2.api.authorizationcode.DefaultAuthorizationCodeGrantType",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "org.mule.extension.oauth2.internal.AbstractGrantType",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "authorization-code-grant-type"
        }
      },
      "fields": [
        {
          "key": {
            "name": "localCallbackConfig"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "stereotype": {
              "allowedStereotypes": [
                {
                  "type": "LISTENER_CONFIG",
                  "namespace": "HTTP",
                  "parent": {
                    "type": "MODULE_CONFIG",
                    "namespace": "MULE"
                  }
                }
              ]
            }
          }
        },
        {
          "key": {
            "name": "localCallbackConfigPath"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "localCallbackUrl"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "externalCallbackUrl",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "state"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "localAuthorizationUrlResourceOwnerId"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "localAuthorizationUrl",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "authorizationUrl",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "custom-parameters"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "classInformation": {
                "classname": "java.util.Map",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": [
                  "java.lang.String",
                  "java.lang.String"
                ],
                "isMap": true
              }
            },
            "open": {
              "type": "String"
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "resourceOwnerId"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "default",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "encodeClientCredentialsInBody"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "true",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "clientId",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "clientSecret",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "scopes"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tokenManager"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig",
              "classInformation": {
                "classname": "org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig",
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.api.lifecycle.Initialisable",
                  "org.mule.runtime.api.lifecycle.Disposable",
                  "org.mule.runtime.core.api.context.MuleContextAware"
                ],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "typeDsl": {
                "allowInlineDefinition": true,
                "allowTopLevelDefinition": true
              },
              "typeAlias": {
                "value": "token-manager-config"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "objectStore"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "org.mule.runtime.api.store.ObjectStore",
                    "extensibleType": {},
                    "typeAlias": {
                      "value": "ObjectStore"
                    },
                    "classInformation": {
                      "classname": "org.mule.runtime.api.store.ObjectStore",
                      "hasDefaultConstructor": false,
                      "isInterface": true,
                      "isInstantiable": false,
                      "isAbstract": true,
                      "isFinal": false,
                      "implementedInterfaces": [],
                      "parent": "",
                      "genericTypes": [],
                      "isMap": false
                    }
                  },
                  "fields": []
                },
                "annotations": {
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  },
                  "stereotype": {
                    "allowedStereotypes": [
                      {
                        "type": "OBJECT_STORE",
                        "namespace": "OS"
                      }
                    ]
                  }
                }
              }
            ]
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tokenUrl",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "responseAccessToken"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "#[payload.access_token]",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "responseRefreshToken"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "#[payload.refresh_token]",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "responseExpiresIn"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "#[payload.expires_in]",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "custom-parameter-extractors"
          },
          "model": {
            "type": "Array",
            "annotations": {
              "classInformation": {
                "classname": "java.util.List",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.util.Collection"
                ],
                "parent": "",
                "genericTypes": [
                  "org.mule.extension.oauth2.internal.ParameterExtractor"
                ],
                "isMap": false
              }
            },
            "item": {
              "type": "Object",
              "annotations": {
                "typeId": "org.mule.extension.oauth2.internal.ParameterExtractor",
                "classInformation": {
                  "classname": "org.mule.extension.oauth2.internal.ParameterExtractor",
                  "hasDefaultConstructor": true,
                  "isInterface": false,
                  "isInstantiable": true,
                  "isAbstract": false,
                  "isFinal": false,
                  "implementedInterfaces": [],
                  "parent": "",
                  "genericTypes": [],
                  "isMap": false
                },
                "typeAlias": {
                  "value": "ParameterExtractor"
                }
              },
              "fields": [
                {
                  "key": {
                    "name": "paramName",
                    "required": "true"
                  },
                  "model": {
                    "type": "String"
                  },
                  "annotations": {
                    "expressionSupport": {
                      "value": "SUPPORTED"
                    }
                  }
                },
                {
                  "key": {
                    "name": "value",
                    "required": "true"
                  },
                  "model": {
                    "type": "String"
                  },
                  "annotations": {
                    "expressionSupport": {
                      "value": "SUPPORTED"
                    }
                  }
                }
              ]
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "refreshTokenWhen"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "java.lang.Boolean"
            }
          },
          "annotations": {
            "default": "#[attributes.statusCode \u003d\u003d 401 or attributes.statusCode \u003d\u003d 403]",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tlsContextFactory"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
              "typeAlias": {
                "value": "Tls"
              },
              "typeDsl": {
                "allowInlineDefinition": true,
                "allowTopLevelDefinition": true
              },
              "QName": {
                "value": {
                  "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                  "localPart": "context",
                  "prefix": "tls"
                }
              }
            },
            "fields": [
              {
                "key": {
                  "name": "enabledProtocols"
                },
                "model": {
                  "type": "String"
                },
                "annotations": {
                  "description": {
                    "value": "A comma separated list of protocols enabled for this context."
                  }
                }
              },
              {
                "key": {
                  "name": "enabledCipherSuites"
                },
                "model": {
                  "type": "String"
                },
                "annotations": {
                  "description": {
                    "value": "A comma separated list of cipher suites enabled for this context."
                  }
                }
              },
              {
                "key": {
                  "name": "trust-store"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "TrustStore",
                    "description": {
                      "value": "Trust store configuration. If used client side, the trust store contains the certificates of the trusted servers. If used server side, it contains the certificates of the trusted clients."
                    }
                  },
                  "fields": [
                    {
                      "key": {
                        "name": "path"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                        },
                        "display": {
                          "displayModel": {
                            "pathModel": {
                              "type": "FILE",
                              "fileExtensions": [],
                              "acceptsUrls": false,
                              "location": "EMBEDDED"
                            }
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "password"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the trust store."
                        },
                        "layout": {
                          "layoutModel": {
                            "password": true,
                            "text": false,
                            "query": false
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "type"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "display": {
                            "displayModel": {
                              "example": "jks, jceks, pkcs12 or other store type"
                            }
                          }
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The type of store used."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "algorithm"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The algorithm used by the trust store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "insecure"
                      },
                      "model": {
                        "type": "Boolean",
                        "annotations": {
                          "default": "false"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk."
                        }
                      }
                    }
                  ]
                },
                "annotations": {
                  "parameterDsl": {
                    "allowInlineDefinition": true,
                    "allowReferences": false
                  },
                  "expressionSupport": {
                    "value": "NOT_SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "key-store"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "KeyStore",
                    "description": {
                      "value": "Key store configuration. The key store contains the keys of this server/client."
                    }
                  },
                  "fields": [
                    {
                      "key": {
                        "name": "path"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                        },
                        "display": {
                          "displayModel": {
                            "pathModel": {
                              "type": "FILE",
                              "fileExtensions": [],
                              "acceptsUrls": false,
                              "location": "EMBEDDED"
                            }
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "type"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "display": {
                            "displayModel": {
                              "example": "jks, jceks, pkcs12 or other store type"
                            }
                          }
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The type of store used."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "alias"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "keyPassword"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the private key."
                        },
                        "layout": {
                          "layoutModel": {
                            "password": true,
                            "text": false,
                            "query": false
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "password"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the key store."
                        },
                        "layout": {
                          "layoutModel": {
                            "password": true,
                            "text": false,
                            "query": false
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "algorithm"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The algorithm used by the key store."
                        }
                      }
                    }
                  ]
                },
                "annotations": {
                  "parameterDsl": {
                    "allowInlineDefinition": true,
                    "allowReferences": false
                  },
                  "expressionSupport": {
                    "value": "NOT_SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "revocation-check"
                },
                "model": {
                  "type": "Union",
                  "annotations": {
                    "typeId": "RevocationCheck"
                  },
                  "of": [
                    {
                      "type": "Object",
                      "annotations": {
                        "typeId": "standard-revocation-check",
                        "description": {
                          "value": "Uses the standard JVM certificate revocation checks, which depend on the certificate having the corresponding extension points (additional tags for CRLDP or OCSP), and the availability of revocation servers."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "onlyEndEntities"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "Only verify the last element of the certificate chain."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "preferCrls"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "Try CRL instead of OCSP first."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "noFallback"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "Do not use the secondary checking method (the one not selected before)."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "softFail"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "Avoid verification failure when the revocation server can not be reached or is busy."
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "Object",
                      "annotations": {
                        "typeId": "custom-ocsp-responder",
                        "description": {
                          "value": "Uses a custom OCSP responder for certificate revocation checks, with a specific trusted certificate for revocating other keys. This ignores extension points (additional tags for CRLDP or OCSP) present in the certificate, if any."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "url"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The URL of the OCSP responder."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "certAlias"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "Alias of the signing certificate for the OCSP response (must be in the trust store), if present."
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "Object",
                      "annotations": {
                        "typeId": "crl-file",
                        "description": {
                          "value": "Local file based certificate revocation checker, which requires a CRL file to be accessible and ignores extension points (additional tags for CRLDP and OCSP) in the certificate."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "path"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The path to the CRL file."
                            }
                          }
                        }
                      ]
                    }
                  ]
                },
                "annotations": {
                  "parameterDsl": {
                    "allowInlineDefinition": true,
                    "allowReferences": false
                  },
                  "expressionSupport": {
                    "value": "NOT_SUPPORTED"
                  }
                }
              }
            ]
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "TLS"
              }
            },
            "display": {
              "displayModel": {
                "displayName": "TLS Configuration"
              }
            }
          }
        },
        {
          "key": {
            "name": "proxyConfig"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.http.api.request.proxy.HttpProxyConfig",
              "classInformation": {
                "classname": "org.mule.extension.http.api.request.proxy.HttpProxyConfig",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.http.api.client.proxy.ProxyConfig"
                ],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "typeAlias": {
                "value": "HttpProxyConfig"
              }
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.oauth2.api.clientcredentials.ClientCredentialsGrantType",
        "classInformation": {
          "classname": "org.mule.extension.oauth2.api.clientcredentials.ClientCredentialsGrantType",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "org.mule.extension.oauth2.internal.AbstractGrantType",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "ClientCredentialsGrantType"
        }
      },
      "fields": [
        {
          "key": {
            "name": "encodeClientCredentialsInBody"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "false",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "clientId",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "clientSecret",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "scopes"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tokenManager"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig",
              "classInformation": {
                "classname": "org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig",
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.api.lifecycle.Initialisable",
                  "org.mule.runtime.api.lifecycle.Disposable",
                  "org.mule.runtime.core.api.context.MuleContextAware"
                ],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "typeDsl": {
                "allowInlineDefinition": true,
                "allowTopLevelDefinition": true
              },
              "typeAlias": {
                "value": "token-manager-config"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "objectStore"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "org.mule.runtime.api.store.ObjectStore",
                    "extensibleType": {},
                    "typeAlias": {
                      "value": "ObjectStore"
                    },
                    "classInformation": {
                      "classname": "org.mule.runtime.api.store.ObjectStore",
                      "hasDefaultConstructor": false,
                      "isInterface": true,
                      "isInstantiable": false,
                      "isAbstract": true,
                      "isFinal": false,
                      "implementedInterfaces": [],
                      "parent": "",
                      "genericTypes": [],
                      "isMap": false
                    }
                  },
                  "fields": []
                },
                "annotations": {
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  },
                  "stereotype": {
                    "allowedStereotypes": [
                      {
                        "type": "OBJECT_STORE",
                        "namespace": "OS"
                      }
                    ]
                  }
                }
              }
            ]
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tokenUrl",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "responseAccessToken"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "#[payload.access_token]",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "responseRefreshToken"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "#[payload.refresh_token]",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "responseExpiresIn"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "#[payload.expires_in]",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "custom-parameter-extractors"
          },
          "model": {
            "type": "Array",
            "annotations": {
              "classInformation": {
                "classname": "java.util.List",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.util.Collection"
                ],
                "parent": "",
                "genericTypes": [
                  "org.mule.extension.oauth2.internal.ParameterExtractor"
                ],
                "isMap": false
              }
            },
            "item": {
              "type": "Object",
              "annotations": {
                "typeId": "org.mule.extension.oauth2.internal.ParameterExtractor",
                "classInformation": {
                  "classname": "org.mule.extension.oauth2.internal.ParameterExtractor",
                  "hasDefaultConstructor": true,
                  "isInterface": false,
                  "isInstantiable": true,
                  "isAbstract": false,
                  "isFinal": false,
                  "implementedInterfaces": [],
                  "parent": "",
                  "genericTypes": [],
                  "isMap": false
                },
                "typeAlias": {
                  "value": "ParameterExtractor"
                }
              },
              "fields": [
                {
                  "key": {
                    "name": "paramName",
                    "required": "true"
                  },
                  "model": {
                    "type": "String"
                  },
                  "annotations": {
                    "expressionSupport": {
                      "value": "SUPPORTED"
                    }
                  }
                },
                {
                  "key": {
                    "name": "value",
                    "required": "true"
                  },
                  "model": {
                    "type": "String"
                  },
                  "annotations": {
                    "expressionSupport": {
                      "value": "SUPPORTED"
                    }
                  }
                }
              ]
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "refreshTokenWhen"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "java.lang.Boolean"
            }
          },
          "annotations": {
            "default": "#[attributes.statusCode \u003d\u003d 401 or attributes.statusCode \u003d\u003d 403]",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tlsContextFactory"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
              "typeAlias": {
                "value": "Tls"
              },
              "typeDsl": {
                "allowInlineDefinition": true,
                "allowTopLevelDefinition": true
              },
              "QName": {
                "value": {
                  "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                  "localPart": "context",
                  "prefix": "tls"
                }
              }
            },
            "fields": [
              {
                "key": {
                  "name": "enabledProtocols"
                },
                "model": {
                  "type": "String"
                },
                "annotations": {
                  "description": {
                    "value": "A comma separated list of protocols enabled for this context."
                  }
                }
              },
              {
                "key": {
                  "name": "enabledCipherSuites"
                },
                "model": {
                  "type": "String"
                },
                "annotations": {
                  "description": {
                    "value": "A comma separated list of cipher suites enabled for this context."
                  }
                }
              },
              {
                "key": {
                  "name": "trust-store"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "TrustStore",
                    "description": {
                      "value": "Trust store configuration. If used client side, the trust store contains the certificates of the trusted servers. If used server side, it contains the certificates of the trusted clients."
                    }
                  },
                  "fields": [
                    {
                      "key": {
                        "name": "path"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                        },
                        "display": {
                          "displayModel": {
                            "pathModel": {
                              "type": "FILE",
                              "fileExtensions": [],
                              "acceptsUrls": false,
                              "location": "EMBEDDED"
                            }
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "password"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the trust store."
                        },
                        "layout": {
                          "layoutModel": {
                            "password": true,
                            "text": false,
                            "query": false
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "type"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "display": {
                            "displayModel": {
                              "example": "jks, jceks, pkcs12 or other store type"
                            }
                          }
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The type of store used."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "algorithm"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The algorithm used by the trust store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "insecure"
                      },
                      "model": {
                        "type": "Boolean",
                        "annotations": {
                          "default": "false"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk."
                        }
                      }
                    }
                  ]
                },
                "annotations": {
                  "parameterDsl": {
                    "allowInlineDefinition": true,
                    "allowReferences": false
                  },
                  "expressionSupport": {
                    "value": "NOT_SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "key-store"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "KeyStore",
                    "description": {
                      "value": "Key store configuration. The key store contains the keys of this server/client."
                    }
                  },
                  "fields": [
                    {
                      "key": {
                        "name": "path"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                        },
                        "display": {
                          "displayModel": {
                            "pathModel": {
                              "type": "FILE",
                              "fileExtensions": [],
                              "acceptsUrls": false,
                              "location": "EMBEDDED"
                            }
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "type"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "display": {
                            "displayModel": {
                              "example": "jks, jceks, pkcs12 or other store type"
                            }
                          }
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The type of store used."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "alias"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "keyPassword"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the private key."
                        },
                        "layout": {
                          "layoutModel": {
                            "password": true,
                            "text": false,
                            "query": false
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "password"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the key store."
                        },
                        "layout": {
                          "layoutModel": {
                            "password": true,
                            "text": false,
                            "query": false
                          }
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "algorithm"
                      },
                      "model": {
                        "type": "String"
                      },
                      "annotations": {
                        "description": {
                          "value": "The algorithm used by the key store."
                        }
                      }
                    }
                  ]
                },
                "annotations": {
                  "parameterDsl": {
                    "allowInlineDefinition": true,
                    "allowReferences": false
                  },
                  "expressionSupport": {
                    "value": "NOT_SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "revocation-check"
                },
                "model": {
                  "type": "Union",
                  "annotations": {
                    "typeId": "RevocationCheck"
                  },
                  "of": [
                    {
                      "type": "Object",
                      "annotations": {
                        "typeId": "standard-revocation-check",
                        "description": {
                          "value": "Uses the standard JVM certificate revocation checks, which depend on the certificate having the corresponding extension points (additional tags for CRLDP or OCSP), and the availability of revocation servers."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "onlyEndEntities"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "Only verify the last element of the certificate chain."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "preferCrls"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "Try CRL instead of OCSP first."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "noFallback"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "Do not use the secondary checking method (the one not selected before)."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "softFail"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "Avoid verification failure when the revocation server can not be reached or is busy."
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "Object",
                      "annotations": {
                        "typeId": "custom-ocsp-responder",
                        "description": {
                          "value": "Uses a custom OCSP responder for certificate revocation checks, with a specific trusted certificate for revocating other keys. This ignores extension points (additional tags for CRLDP or OCSP) present in the certificate, if any."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "url"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The URL of the OCSP responder."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "certAlias"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "Alias of the signing certificate for the OCSP response (must be in the trust store), if present."
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "Object",
                      "annotations": {
                        "typeId": "crl-file",
                        "description": {
                          "value": "Local file based certificate revocation checker, which requires a CRL file to be accessible and ignores extension points (additional tags for CRLDP and OCSP) in the certificate."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "path"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The path to the CRL file."
                            }
                          }
                        }
                      ]
                    }
                  ]
                },
                "annotations": {
                  "parameterDsl": {
                    "allowInlineDefinition": true,
                    "allowReferences": false
                  },
                  "expressionSupport": {
                    "value": "NOT_SUPPORTED"
                  }
                }
              }
            ]
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "TLS"
              }
            },
            "display": {
              "displayModel": {
                "displayName": "TLS Configuration"
              }
            }
          }
        },
        {
          "key": {
            "name": "proxyConfig"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.http.api.request.proxy.HttpProxyConfig",
              "classInformation": {
                "classname": "org.mule.extension.http.api.request.proxy.HttpProxyConfig",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.http.api.client.proxy.ProxyConfig"
                ],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "typeAlias": {
                "value": "HttpProxyConfig"
              }
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig",
        "classInformation": {
          "classname": "org.mule.extension.oauth2.api.tokenmanager.TokenManagerConfig",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.runtime.api.lifecycle.Initialisable",
            "org.mule.runtime.api.lifecycle.Disposable",
            "org.mule.runtime.core.api.context.MuleContextAware"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeDsl": {
          "allowInlineDefinition": true,
          "allowTopLevelDefinition": true
        },
        "typeAlias": {
          "value": "token-manager-config"
        }
      },
      "fields": [
        {
          "key": {
            "name": "objectStore"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.runtime.api.store.ObjectStore",
              "extensibleType": {},
              "typeAlias": {
                "value": "ObjectStore"
              },
              "classInformation": {
                "classname": "org.mule.runtime.api.store.ObjectStore",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              }
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "stereotype": {
              "allowedStereotypes": [
                {
                  "type": "OBJECT_STORE",
                  "namespace": "OS"
                }
              ]
            }
          }
        }
      ]
    }
  ]
}
